Преглед на файлове

2022-10-21 add:设备型号

1. 增加设备型号菜单
2. 对接联调设备型号接口、 新增、删除、编辑
moccus преди 2 години
родител
ревизия
e4fe6c4a85

+ 23 - 1
src/api/station.js

@@ -123,6 +123,25 @@ const newtreeTreels=(data)=>{
       method:"get"
   })
 }
+const equipmentmodel =(data)=>{
+  return request({
+      url:`/equipmentmodel/listByPage?name=${encodeURIComponent(data.name)}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addEquipmentmodel =(pairs)=>{
+  return request({
+      url:`/equipmentmodel/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteEquipmentmodel =(data)=>{
+  return request({
+      url:`/equipmentmodel/remove-manufacturer/${data.id}`,
+      method:"delete",
+  })
+}
 export default {
   companys,
   addCompanys,
@@ -142,5 +161,8 @@ export default {
   windturbine,
   addWindturbine,
   deleteWindturbine,
-  newtreeTreels
+  newtreeTreels,
+	equipmentmodel,
+	addEquipmentmodel,
+	deleteEquipmentmodel
 };

+ 7 - 0
src/router/index.js

@@ -115,6 +115,13 @@ export const asyncRoutes = [
           import('@/views/stationConfiguration/windterbin/index'),
         meta: { title: '风机管理' },
       },
+			{
+        path: 'equipmentmodel',
+        name: 'equipmentmodel',
+        component: () =>
+          import('@/views/stationConfiguration/equipmentmodel/index'),
+        meta: { title: '设备型号' },
+      },
     ],
   },
   {

+ 178 - 0
src/views/stationConfiguration/equipmentmodel/components/TableEdit.vue

@@ -0,0 +1,178 @@
+<template>
+	<el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
+		<el-form ref="form" :model="form" :rules="rules">
+			<div class="lists">
+				<el-form-item label="id" prop="id">
+					<el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+				</el-form-item>
+				<el-form-item label="编码" prop="code">
+					<el-input class="inputs" v-model.trim="form.code" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="名称" prop="name">
+					<el-input class="inputs" v-model="form.name" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="描述" prop="description">
+					<el-input class="inputs" v-model="form.description" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="容量" prop="powerProduction">
+					<el-input class="inputs" v-model.trim="form.powerProduction" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="厂商编号" prop="windTurbineManufactureId">
+					<el-input class="inputs" v-model.trim="form.windTurbineManufactureId" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="图片" prop="photo">
+					<el-input class="inputs" v-model="form.photo" autocomplete="off">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="传输总发电量单位" prop="unit">
+					<el-input class="inputs" v-model.trim="form.unit" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="切入风速" prop="cutinWindSpeed">
+					<el-input class="inputs" v-model="form.cutinWindSpeed" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="额定风速" prop="ratedWindSpeed">
+					<el-input class="inputs" v-model.trim="form.ratedWindSpeed" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="切出风速" prop="cutoutWindSpeed">
+					<el-input class="inputs" v-model="form.cutoutWindSpeed" autocomplete="off">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="叶片切入面积" prop="sweptArea">
+					<el-input class="inputs" v-model.trim="form.sweptArea" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="设备类别" prop="equipmentCategory">
+					<el-input class="inputs" v-model="form.equipmentCategory" autocomplete="off">
+					</el-input>
+				</el-form-item>
+			</div>
+		</el-form>
+		<div slot="footer" class="dialog-footer">
+			<el-button @click="close">取 消</el-button>
+			<el-button type="primary" @click="save">确 定</el-button>
+		</div>
+	</el-dialog>
+</template>
+
+<script>
+import api from '@/api/station'
+import dayjs from "dayjs";
+export default {
+	name: 'TableEdit',
+	props: {
+		options: {
+			type: Array,
+			default: []
+		},
+		stationList: {
+			type: Array,
+			default: []
+		},
+	},
+	data() {
+		return {
+			form: {
+				id: '',
+				code: '',
+				name: '',
+				description: '',
+				powerProduction: '',
+				windTurbineManufactureId: '',
+				photo: '',
+				unit: '',
+				cutinWindSpeed: '',
+				ratedWindSpeed: '',
+				cutoutWindSpeed: '',
+				sweptArea: '',
+				equipmentCategory: '',
+			},
+			rules: {
+				id: [{ required: true, trigger: 'blur', message: '请输入' }],
+				code: [{ required: true, trigger: 'blur', message: '请输入' }],
+				name: [{ required: true, trigger: 'blur', message: '请输入' }],
+				description: [{ required: true, trigger: 'blur', message: '请输入' }],
+				powerProduction: [{ required: true, trigger: 'blur', message: '请输入' }],
+				windTurbineManufactureId: [{ required: true, trigger: 'blur', message: '请输入' }],
+				photo: [{ required: true, trigger: 'blur', message: '请输入' }],
+				unit: [{ required: true, trigger: 'blur', message: '请输入' }],
+				cutinWindSpeed: [{ required: true, trigger: 'blur', message: '请输入' }],
+				ratedWindSpeed: [{ required: true, trigger: 'blur', message: '请输入' }],
+				cutoutWindSpeed: [{ required: true, trigger: 'blur', message: '请输入' }],
+				sweptArea: [{ required: true, trigger: 'blur', message: '请输入' }],
+				equipmentCategory: [{ required: true, trigger: 'blur', message: '请输入' }],
+			},
+			title: '',
+			dialogFormVisible: false,
+			idAdd: true,
+		}
+	},
+	created() { },
+	methods: {
+		showEdit(row) {
+			if (!row) {
+				this.title = '添加'
+				this.idAdd = true
+			} else {
+				this.title = '编辑'
+				this.idAdd = false
+				this.form = Object.assign({}, row)
+			}
+			this.dialogFormVisible = true
+		},
+		close() {
+			this.$refs['form'].resetFields()
+			this.form = this.$options.data().form
+			this.dialogFormVisible = false
+			this.$emit('fetch-data')
+		},
+		save() {
+			this.$refs['form'].validate(async (valid) => {
+				if (valid) {
+					api.addEquipmentmodel(this.form).then(res => {
+						if (res.data) {
+							this.$message({
+								type: 'success',
+								message: '添加成功!'
+							});
+							this.$emit('save-success');
+							this.dialogFormVisible = false
+						}
+					})
+				} else {
+					return false
+				}
+			})
+		},
+		handleChange() {
+		},
+		onBlur(val, param) {
+			if (typeof (this.form[param]) !== 'number') {
+				this.form[param] = val.replace(/[^0-9]/ig, "")
+			}
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+	width: 200px;
+}
+
+.lists {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+}
+</style>

+ 247 - 0
src/views/stationConfiguration/equipmentmodel/index.vue

@@ -0,0 +1,247 @@
+<template>
+	<div class="table-container">
+		<vab-query-form>
+			<div class="title">
+				<div class="left">
+					<div class="left-item">
+						<div style="width: 70px;">名称:</div>
+						<el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
+					</div>
+					<el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+						查询
+					</el-button>
+				</div>
+				<div class="right">
+					<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+						添加
+					</el-button>
+					<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+						删除
+					</el-button>
+					<UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
+					<ExportExcel :exportList="exportExcel" :useType="'export'" partsName="设备型号"></ExportExcel>
+					<ExportExcel :exportList="templateExcel" :useType="'template'" partsName="设备型号模板"></ExportExcel>
+				</div>
+			</div>
+			<el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
+				:height="height" @selection-change="setSelectRows">
+				<el-table-column show-overflow-tooltip type="selection" width="40"></el-table-column>
+				<el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="编码" prop="code" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="名称" prop="name" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="描述" prop="description" align="center" sortable></el-table-column>
+
+				<el-table-column show-overflow-tooltip label="容量" prop="powerProduction" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="厂商编号" prop="windTurbineManufactureId" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="图片" prop="photo" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="传输总发电量单位" prop="unit" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="切入风速" prop="cutinWindSpeed" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="额定风速" prop="ratedWindSpeed" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="切出风速" prop="cutoutWindSpeed" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="叶片切入面积" prop="sweptArea" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="设备类别" prop="equipmentCategory" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
+					<template #default="{ row }">
+						<el-button type="text" @click="handleEdit(row)">编辑</el-button>
+						<el-button type="text" @click="handleDelete(row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+				:page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+				@size-change="handleSizeChange"></el-pagination>
+			<table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
+		</vab-query-form>
+	</div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import api from '@/api/station'
+import TableEdit from './components/TableEdit'
+export default {
+	components: {
+		UploadExcel,
+		ExportExcel,
+		TableEdit,
+	},
+	data() {
+		return {
+			fuzzyQuery_name: '',
+			listLoading: true,
+			list: [],
+			options: [],
+			exportExcel: [],
+			templateExcel: [],
+			elementLoadingText: '正在加载...',
+			selectRows: '',
+			layout: 'total, sizes, prev, pager, next, jumper',
+			total: 0,
+			background: true,
+			exportList: [],
+			queryForm: {
+				pageNo: 1,
+				pageSize: 20,
+			},
+			stationList: [],
+			selectValue: ''
+		};
+	},
+	computed: {
+		height() {
+			return this.$baseTableHeight() + 50
+		},
+	},
+	created() {
+		// this.getStation()
+		this.fetchData()
+	},
+	methods: {
+		getMyExcelData(val) {
+			val.forEach(item => {
+				api.addEquipmentmodel(item).then(res => {
+					if (res.code == 200) {
+						this.$message({
+							type: 'success',
+							message: '添加成功!'
+						});
+						this.fetchData()
+					}
+				})
+			})
+		},
+		getStation() {
+			api.windpowerstationList({
+				id: '',
+				name: '',
+				companyid: '',
+				pageNum: 1,
+				pageSize: 1000,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.stationList = res.data.records
+				}
+			})
+		},
+		fetchData() {
+			api.equipmentmodel({
+				name: this.fuzzyQuery_name,
+				pageNum: this.queryForm.pageNo,
+				pageSize: this.queryForm.pageSize,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.total = res.data.total
+					this.list = res.data.records
+					this.templateExcel = [
+						{
+							id: '',
+							code: '',
+							name: '',
+							description: '',
+							powerProduction: '',
+							windTurbineManufactureId: '',
+							photo: '',
+							unit: '',
+							cutinWindSpeed: '',
+							ratedWindSpeed: '',
+							cutoutWindSpeed: '',
+							sweptArea: '',
+							equipmentCategory: '',
+						}
+					]
+					// 导出
+					let exportExcel = []
+					res.data.records.forEach(item => {
+						exportExcel.push({
+							id: item.id,
+							code: item.code,
+							name: item.name,
+							description: item.description,
+							powerProduction: item.powerProduction,
+							windTurbineManufactureId: item.windTurbineManufactureId,
+							photo: item.photo,
+							unit: item.unit,
+							cutinWindSpeed: item.cutinWindSpeed,
+							ratedWindSpeed: item.ratedWindSpeed,
+							cutoutWindSpeed: item.cutoutWindSpeed,
+							sweptArea: item.sweptArea,
+							equipmentCategory: item.equipmentCategory,
+						})
+					})
+					this.exportExcel = exportExcel
+				}
+			})
+		},
+		handleSizeChange(val) {
+			this.queryForm.pageSize = val
+			this.fetchData()
+		},
+		handleCurrentChange(val) {
+			this.queryForm.pageNo = val
+			this.fetchData()
+		},
+		handleAdd() {
+			this.$refs['edit'].showEdit()
+		},
+		handleEdit(row) {
+			this.$refs['edit'].showEdit(row)
+		},
+		handleDelete(row) {
+			if (row.id || this.selectRows.length > 0) {
+				this.$baseConfirm('你确定要删除吗', null, async () => {
+					let ids = ''
+					if (this.selectRows.length > 0) {
+						ids = this.selectRows.map((item) => item.id).join()
+					}
+					api.deleteEquipmentmodel({
+						id: row.id || ids
+					}).then(res => {
+						if (res.data) {
+							this.$baseMessage('删除成功', 'success')
+							this.fetchData()
+						}
+					})
+				})
+			} else {
+				this.$baseMessage('未选中任何行', 'error')
+				return false
+			}
+		},
+		setSelectRows(val) {
+			this.selectRows = val
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.title {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+	margin-bottom: 20px;
+}
+
+.left {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+
+	.left-item {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		margin-right: 10px;
+	}
+}
+</style>