From 28c12d92c6844cdb5a8aa5079ce601674ea21a5f Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 05 三月 2024 18:41:41 +0800 Subject: [PATCH] 运维点位添加 --- src/views/system/point/index.vue | 192 +++++++++++++++++++++++++++++++++++++---------- 1 files changed, 150 insertions(+), 42 deletions(-) diff --git a/src/views/system/point/index.vue b/src/views/system/point/index.vue index a0aa54e..8f50e49 100644 --- a/src/views/system/point/index.vue +++ b/src/views/system/point/index.vue @@ -122,30 +122,71 @@ /> <!-- 娣诲姞鎴栦慨鏀硅繍缁寸偣浣嶅璇濇 --> - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body> + <el-form ref="form" :model="tempForm" :rules="rules" label-width="120px"> <el-form-item label="鐐逛綅鍚嶇О" prop="pointName"> - <el-input v-model="form.pointName" placeholder="璇疯緭鍏ョ偣浣嶅悕绉�" /> + <el-input v-model="tempForm.pointName" placeholder="璇疯緭鍏ョ偣浣嶅悕绉�" /> </el-form-item> - <el-form-item label="鐐逛綅寮�濮嬫椂闂�" prop="startTime"> - <el-date-picker clearable - v-model="form.startTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨鐐逛綅寮�濮嬫椂闂�"> + <el-form-item label="杩愮淮鍗曚綅" prop="unitId"> + <el-select v-model="tempForm.unitId" placeholder="杩愮淮鍗曚綅"> + <el-option + v-for="item in unitList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鐐逛綅鏃跺尯" prop="timezone"> + <el-date-picker + @change="dateChange" + v-model="tempForm.timezone" + type="daterange" + align="right" + unlink-panels + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > </el-date-picker> </el-form-item> - <el-form-item label="鐐逛綅缁撴潫鏃堕棿" prop="endTime"> - <el-date-picker clearable - v-model="form.endTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨鐐逛綅缁撴潫鏃堕棿"> - </el-date-picker> + <el-form-item> + <div style="display: flex;flex-direction: row-reverse"> + <el-button @click="nextAdd" type="primary" plain>缁х画娣诲姞</el-button> + </div> </el-form-item> - <el-form-item label="澶囨敞" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" /> - </el-form-item> + <div class="point-row" v-for="(point,index) in tempFormList"> + <div class="row-item"> + <el-input :disabled="editingIndex!==index" v-model="point.pointName" placeholder="鐐逛綅鍚嶇О"></el-input> + </div> + <div class="row-item"> + <el-select :disabled="editingIndex!==index" v-model="point.unitId" placeholder="杩愮淮鍗曚綅"> + <el-option + v-for="item in unitList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> + </el-select> + </div> + <div class="row-item"> + <el-date-picker + :disabled="editingIndex!==index" + v-model="point.timezone" + type="daterange" + align="right" + unlink-panels + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + </div> + <div class="row-item"> + <el-button v-show="editingIndex!==index" @click="editPointItem(index)" type="danger" size="small" plain>淇敼</el-button> + <el-button v-show="editingIndex===index" @click="editFinishItem(index)" type="success" size="small" plain>瀹屾垚</el-button> + </div> + </div> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> @@ -156,12 +197,15 @@ </template> <script> -import { listPoint, getPoint, delPoint, addPoint, updatePoint } from "@/api/platform/point"; +import { listPoint, getPoint, delPoint, addPoint, addPointBatch, updatePoint } from "@/api/platform/point"; +import { unitSelect } from "@/api/platform/unit"; export default { name: "Point", data() { return { + // 姝e湪淇敼绗嚑涓� + editingIndex: null, // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -180,6 +224,10 @@ title: "", // 鏄惁鏄剧ず寮瑰嚭灞� open: false, + // 杩愮淮鍗曚綅 + unitList: [], + // 杩愮淮鏃跺尯 + timezone:[], // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, @@ -192,16 +240,19 @@ }, // 琛ㄥ崟鍙傛暟 form: {}, + // 鎵归噺琛ㄥ崟鍐呭 + formList:[], + // 涓存椂琛ㄥ崟鏁版嵁 + tempForm: {}, + // 涓存椂琛ㄥ崟鏁版嵁鍒楄〃 + tempFormList: [], // 琛ㄥ崟鏍¢獙 rules: { pointName: [ { required: true, message: "鐐逛綅鍚嶇О涓嶈兘涓虹┖", trigger: "blur" } ], - startTime: [ - { required: true, message: "鐐逛綅寮�濮嬫椂闂翠笉鑳戒负绌�", trigger: "blur" } - ], - endTime: [ - { required: true, message: "鐐逛綅缁撴潫鏃堕棿涓嶈兘涓虹┖", trigger: "blur" } + timezone: [ + { required: true, message: "鐐逛綅鏃跺尯涓嶈兘涓虹┖", trigger: "blur" } ], unitId: [ { required: true, message: "杩愮淮鍗曚綅涓嶈兘涓虹┖", trigger: "change" } @@ -211,13 +262,48 @@ }, created() { this.getList(); + this.getUnitSelect(); }, methods: { + // 鐐逛綅椤逛慨鏀瑰畬鎴� + editFinishItem(index) { + this.editingIndex = null; + let form = this.tempFormList[index]; + form.startTime = form.timezone[0]; + form.endTime = form.timezone[1]; + this.formList[index] = form; + }, + // 鐐逛綅椤逛慨鏀� + editPointItem(index) { + if (this.editingIndex !== index && this.editingIndex !== null) { + this.$modal.msgWarning("璇峰厛瀹屾垚涓婁竴涓慨鏀�"); + } else { + this.editingIndex = index; + this.tempFormList[index] = this.formList[index]; + } + }, + // 鏃堕棿閫夋嫨鍙戠敓鍙樺寲 + dateChange() { + this.tempForm.startTime = this.tempForm.timezone[0]; + this.tempForm.endTime = this.tempForm.timezone[1]; + }, + // 缁х画娣诲姞鐐逛綅 + nextAdd() { + this.formList.push(this.tempForm); + this.tempFormList.push(this.tempForm); + this.tempForm = {}; + }, + getUnitSelect() { + // 杩愮淮鍗曚綅涓嬫媺鍒楄〃 + unitSelect().then((res) => { + this.unitList = res.data; + }) + }, /** 鏌ヨ杩愮淮鐐逛綅鍒楄〃 */ getList() { this.loading = true; listPoint(this.queryParams).then(response => { - this.pointList = response.rows; + this.pointList = response.data; this.total = response.total; this.loading = false; }); @@ -277,23 +363,30 @@ }, /** 鎻愪氦鎸夐挳 */ submitForm() { - this.$refs["form"].validate(valid => { - if (valid) { - if (this.form.id != null) { - updatePoint(this.form).then(response => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addPoint(this.form).then(response => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } + if (this.formList.length > 0) { + // 鎵归噺澧炲姞 + if (this.formList.every(item => !item.hasOwnProperty("id"))) { + addPointBatch(this.formList).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); } - }); + }else { + if (this.form.id != null) { + updatePoint(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addPoint(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } }, /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { @@ -314,3 +407,18 @@ } }; </script> + +<style scoped> +.point-row { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} +.row-item { + margin-right: 5px; +} +.row-item:nth-last-child { + margin-right: 0; +} +</style> -- Gitblit v1.8.0