From f95cb3403f98d2202343832f37b514ba48f755e2 Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期日, 07 四月 2024 23:01:24 +0800 Subject: [PATCH] 新增休息日 --- src/views/console/workstation/index.vue | 288 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 211 insertions(+), 77 deletions(-) diff --git a/src/views/console/workstation/index.vue b/src/views/console/workstation/index.vue index d113566..8dfffa3 100644 --- a/src/views/console/workstation/index.vue +++ b/src/views/console/workstation/index.vue @@ -7,65 +7,101 @@ <el-aside width="200px" v-loading="showGrouploading"> <el-container> <el-main class="nopadding"> - <el-tree ref="group" class="menu" node-key="id" :data="group" :current-node-key="''" - :highlight-current="true" :expand-on-click-node="false" - :default-expanded-keys="[1]" :filter-node-method="groupFilterNode" - @node-click="groupClick"></el-tree> + <el-tree ref="group" class="menu" node-key="id" :data="group" + :current-node-key="treeCheckKey" :highlight-current="true" + :expand-on-click-node="false" :check-on-click-node="true" + :default-expanded-keys="[1]" :render-content="renderContent" + :filter-node-method="groupFilterNode" @node-click="groupClick1"></el-tree> </el-main> </el-container> </el-aside> <el-container> <el-header> <div class="left-panel"> - <el-button type="primary" icon="el-icon-plus"></el-button> + <el-button @click="table_add" type="primary" icon="el-icon-plus"></el-button> <el-button type="danger" plain icon="el-icon-delete"></el-button> - <el-button type="primary" plain>瀵煎叆</el-button> - <el-button type="primary" plain>鎵归噺鎿嶄綔</el-button> + <!-- <el-button type="primary" plain>瀵煎叆</el-button> + <el-button type="primary" plain>鎵归噺鎿嶄綔</el-button> --> </div> <div class="right-panel"> <div class="right-panel-search"> - <el-select v-model="value" placeholder="Select" style="width: 240px"> - <el-option v-for="item in options" :key="item.value" :label="item.label" + <span>绫诲瀷</span> + <el-select v-model="type" style="width: 240px"> + <el-option v-for="item in types" :key="item.value" :label="item.label" :value="item.value" /> </el-select> - <el-select v-model="value" placeholder="Select" style="width: 240px"> - <el-option v-for="item in options" :key="item.value" :label="item.label" + <span>鐘舵��</span> + <el-select v-model="statu" style="width: 240px"> + <el-option v-for="item in status" :key="item.value" :label="item.label" :value="item.value" /> </el-select> - <el-input style="width: 240px" placeholder="璇疯緭鍏ュ伐浣嶅悕绉�/缂栧彿" clearable></el-input> - <el-button type="primary" icon="el-icon-search"></el-button> + <el-input v-model="keyWord" style="width: 240px" placeholder="璇疯緭鍏ュ伐浣嶅悕绉�/缂栧彿" clearable></el-input> + <el-button @click="search" type="primary" icon="el-icon-search"></el-button> </div> </div> </el-header> <el-main class="nopadding"> - <scTable ref="table" :apiObj="apiObj" @selection-change="selectionChange" stripe - remoteSort remoteFilter> + <div style="display: flex"> + <scTable highlight-current-row @dataChange="dataChange" @row-click="rowClick" ref="table" :params="params" :apiObj="apiObj" + @selection-change="selectionChange" stripe> <el-table-column type="selection" width="50"></el-table-column> - <el-table-column label="宸ヤ綅缂栧彿" prop="id" width="120" + <el-table-column label="宸ヤ綅缂栧彿" prop="code" width="120" sortable='custom'></el-table-column> - <el-table-column label="宸ヤ綅鍚嶇О" prop="id" width="120" + <el-table-column label="宸ヤ綅鍚嶇О" prop="name" width="120" sortable='custom'></el-table-column> - <el-table-column label="宸ヤ綅绫诲瀷" prop="id" width="120" + <el-table-column label="宸ヤ綅绫诲瀷" prop="type" width="120" sortable='custom'></el-table-column> - <el-table-column label="宸ヤ綅鏃ュ巻" prop="id" width="120" + <el-table-column label="宸ヤ綅鏃ュ巻" prop="calendarName" width="120" sortable='custom'></el-table-column> <el-table-column label="鎿嶄綔" fixed="right" align="right" width="160"> <template #default="scope"> <el-button-group> <el-button text type="primary" size="small" - @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button> - <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button> <el-popconfirm title="纭畾鍒犻櫎鍚楋紵" - @confirm="table_del(scope.row, scope.$index)"> + @confirm="table_del(scope.row, scope.$index, '0')"> <template #reference> <el-button text type="primary" size="small">鍒犻櫎</el-button> + </template> + </el-popconfirm> + <el-popconfirm title="纭畾鍋滅敤鍚楋紵" + @confirm="table_del(scope.row, scope.$index,'1')"> + <template #reference> + <el-button text type="primary" size="small">鍋滅敤</el-button> </template> </el-popconfirm> </el-button-group> </template> </el-table-column> </scTable> + <div style="margin-left: 14px" v-if="Object.keys(previewData).length > 0"> + <div class="header"> + <p class="preview-title">宸ヤ綅淇℃伅</p> + <div class="preview-content"> + <div class="img"> + <img :src="machinePng" alt=""> + </div> + <ul> + <li>宸ヤ綅缂栧彿 {{previewData.code}}</li> + <li>宸ヤ綅缁� {{previewData.groupName}}</li> + <li>宸ヤ綅鍚嶇О {{previewData.name}}</li> + <li>宸ヤ綅绫诲瀷 {{previewData.type}}</li> + <li>宸ヤ綅鏃ュ巻 {{previewData.calendarName}}</li> + <li>鐘舵�� {{previewData.status}}</li> + </ul> + </div> + <el-tabs tab-position="top" class="custom-tabs" v-model="normal"> + <el-tab-pane label="鏈哄櫒淇℃伅" name="1"> + 鏈哄櫒淇℃伅 + </el-tab-pane> + <el-tab-pane label="鎵╁睍淇℃伅" name="2"> + 鎵╁睍淇℃伅 + </el-tab-pane> + </el-tabs> + </div> + </div> + </div> + </el-main> </el-container> </el-container> @@ -77,23 +113,17 @@ <el-container> <el-main class="nopadding"> <el-tree ref="group" class="menu" node-key="id" :data="group" - :current-node-key="treeCheckKey" - :highlight-current="true" - :expand-on-click-node="false" - :check-on-click-node="true" - :default-expanded-keys="[1]" - :render-content="renderContent" - :filter-node-method="groupFilterNode" - @node-click="groupClick"></el-tree> + :current-node-key="treeCheckKey" :highlight-current="true" + :expand-on-click-node="false" :check-on-click-node="true" + :default-expanded-keys="[1]" :render-content="renderContent" + :filter-node-method="groupFilterNode" @node-click="groupClick"></el-tree> </el-main> </el-container> </el-aside> <el-container> <el-main class="" v-show="addGroupShow"> - <el-form - v-show="treeCheckedNode.id == 1" - :model="form" :rules="rules" ref="dialogForm" label-width="200px" - label-position="left"> + <el-form v-show="treeCheckedNode.id == 1" :model="form" :rules="rules" ref="dialogForm" + label-width="200px" label-position="left"> <el-form-item label="浜х嚎鏍囩" prop="groupTag"> <el-select v-model="form.groupTag" clearable placeholder="浜х嚎鏍囩" style="width: 240px"> @@ -113,7 +143,8 @@ placeholder="澶囨敞"></el-input> </el-form-item> </el-form> - <el-form v-show="group_tag.map(item => item.dictKey).includes(treeCheckedNode.groupTag) || beltline_type.map(item => item.dictKey).includes(treeCheckedNode.groupTag) || treeCheckedNode.id == 101" + <el-form + v-show="group_tag.map(item => item.dictKey).includes(treeCheckedNode.groupTag) || beltline_type.map(item => item.dictKey).includes(treeCheckedNode.groupTag) || treeCheckedNode.id == 101" :model="form" :rules="rules" ref="dialogForm" label-width="200px" label-position="left"> <el-form-item label="宸ヤ綅缁勬爣绛�" prop="groupTag"> @@ -139,7 +170,8 @@ <el-header v-show="!addGroupShow"> <div class="left-panel"> <el-button @click="addChild" type="primary" plain>鏂板涓嬬骇</el-button> - <el-button @click="deleteWorkGroup" v-show="!['1', '101'].includes(treeCheckedNode.id)" type="danger" + <el-button @click="deleteWorkGroup" + v-show="!['1', '101'].includes(treeCheckedNode.id)" type="danger" plain>鍒犻櫎</el-button> </div> </el-header> @@ -205,20 +237,58 @@ </el-tabs> </el-card> + <Dialog ref="dialog" :option="{types,status,group}"></Dialog> </el-main> </template> <script> import pmsPng from '@/assets/pms.png' +import Dialog from './Dialog.vue' +import machinePng from '@/assets/machine.png' export default { name: 'system', + components: { + Dialog + }, data() { return { + machinePng, showGrouploading: false, options: [], - activeName: '2', + activeName: '1', + normal: '1', group: [], groupFilterText: '', + apiObj: '', + params: {}, + keyWord: '', + type: '', + statu: '1', + types: [ + { + label: '鎵�鏈�', + value: '' + }, + { + label: '鏈哄櫒', + value: '0' + }, + { + label: '浜哄伐', + value: '1' + }, + ], + status: [ + { + label: '鍚敤', + value: '1' + }, + { + label: '鍋滅敤', + value: '0' + } + ], + previewData: {}, // -------- form: { groupTag: '', @@ -239,8 +309,23 @@ } }, watch: { - activeName() { - this.queryList() + activeName: { + handler(val) { + this.queryList().then(() => { + if (val == 1) { + console.log('>>>>>>>>>>>>>>', this.treeCheckedNode) + this.apiObj = this.$API.workstation.getList + this.params = { + groupId: this.treeCheckedNode.id, + keyWord: '', + status: 1, + type: '' + } + this.groupClick1(this.treeCheckedNode) + } + }) + }, + immediate: true }, treeCheckedNode: { handler(val) { @@ -257,16 +342,15 @@ this.queryList() }, methods: { - renderContent (h, {node,data}) { - console.log(node,data) + renderContent(h, { data }) { let img = data.groupTag == 'fms_beltline' - return h('span',{ + return h('span', { }, - img ? h('img', { - src: pmsPng - }, '') : '', - data.name) + img ? h('img', { + src: pmsPng + }, '') : '', + data.name) }, init() { this.$API.system.dic.getDic.get({ code: 'beltline_type' }).then(res => { @@ -277,10 +361,16 @@ }) }, - queryList(flag) { + async queryList(flag) { this.showGrouploading = true - this.$API.basicdata.getWorkstationGroup.get().then(res => { + this.treeCheckedNode = {} + this.treeCheckKey = '' + return this.$API.workstation.getWorkstationGroup.get().then(res => { if (res.code == 200) { + let data = this.formatData(res.data) + this.group = data + this.showGrouploading = false + // this.$nextTick(() => { if (!flag) { let parent = res.data.filter(item => item.parentId == 0)[0] this.treeCheckedNode = parent @@ -290,10 +380,8 @@ this.treeCheckedNode = parent this.treeCheckKey = parent.id } - - let data = this.formatData(res.data) - this.group = data - this.showGrouploading = false + // }) + } }) }, @@ -319,8 +407,8 @@ return newData }, async saveWorkstationGroup() { - const validate = await this.$refs.dialogForm.validate().catch(()=>{}) - if(!validate){ return false } + const validate = await this.$refs.dialogForm.validate().catch(() => { }) + if (!validate) { return false } if (this.addGroupShow) { let data = Object.assign({ code: "", @@ -330,26 +418,26 @@ status: 1, groupType: this.treeCheckedNode.groupType, groupCategory: this.treeCheckedNode.groupCategory - },this.form) - return this.$API.basicdata.saveWorkstationGroup.post(data).then(res => { + }, this.form) + return this.$API.workstation.saveWorkstationGroup.post(data).then(res => { console.log(res) this.queryList(true) }) } - let data = Object.assign({},this.treeCheckedNode,this.form) - this.$API.basicdata.saveWorkstationGroup.put(data).then(res => { + let data = Object.assign({}, this.treeCheckedNode, this.form) + this.$API.workstation.saveWorkstationGroup.put(data).then(res => { console.log(res) this.queryList(true) }) }, - deleteWorkGroup () { - this.$API.basicdata.deleteWorkGroup.delete({ + deleteWorkGroup() { + this.$API.workstation.deleteWorkGroup.delete({ groupId: this.treeCheckedNode.id }).then(() => { this.queryList() }) }, - addChild () { + addChild() { this.addGroupShow = true this.$refs.dialogForm.resetFields() }, @@ -357,35 +445,81 @@ }, groupClick(node) { - console.log(node) this.treeCheckedNode = node }, - table_add() { - var newRow = { - key: "", - value: "", - title: "", - isSet: true + search () { + this.groupClick1(this.treeCheckedNode) + }, + rowClick (data) { + this.previewData = data + console.log(data) + }, + groupClick1(data) { + console.log('-------', data) + var params = { + groupId: data.id, + keyWord: this.keyWord, + status: this.statu, + type: this.type, } - this.setting.push(newRow) + this.$refs.table.reload(params) + + }, + dataChange (res,data) { + + if (data.length > 0) { + console.log(data[0], '>>>>>>>>') + this.$refs.table.setCurrentRow(data[0]) + this.previewData = data[0] + }else { + this.$refs.table.setCurrentRow() + this.previewData = {} + } + }, + table_add() { + this.$refs.dialog.open() }, table_edit(row) { - if (row.isSet) { - row.isSet = false - } else { - row.isSet = true - } + this.$refs.dialog.open('edit',row) }, - table_del(row, index) { - this.setting.splice(index, 1) + table_del(row, index,type) { + this.$API.workstation.deleteWork.delete({ + type, + workstationIds:row.id + }).then(() => { + this.search() + }) }, } } </script> -<style scoped> +<style lang="scss" scoped> .show-info { list-style: none; font-size: 14px; } +.preview-title { + padding: 12px; + margin-bottom: 14px; + font-size: 16px; +} +.preview-content { + font-size: 14px; + display: flex; + align-items: center; + .img { + width: 30%; + } + ul { + list-style: none; + display: flex; + flex-wrap: wrap; + li { + width: 50%; + flex: 1 0 auto; + margin-bottom: 10px; + } + } +} </style> -- Gitblit v1.9.3