From 2146654ce466348808bd11218d5a71756d03abc4 Mon Sep 17 00:00:00 2001 From: 小小儁爺 <1694218219@qq.com> Date: 星期四, 13 三月 2025 16:46:05 +0800 Subject: [PATCH] 1.打印模板修改2.新增打印次数字段 --- src/views/deviceManager/deviceList.vue | 1776 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 891 insertions(+), 885 deletions(-) diff --git a/src/views/deviceManager/deviceList.vue b/src/views/deviceManager/deviceList.vue index 946ea69..92f6245 100644 --- a/src/views/deviceManager/deviceList.vue +++ b/src/views/deviceManager/deviceList.vue @@ -1,885 +1,891 @@ -<template> - <div> - <div class="body" :style="{height:mainHeight+'px'}"> - - <div style="display: flex"> - <div style="width: 300px;margin: 10px 10px 0 0;background:#fff"> - - <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;"> - <div style="display: flex;"> - <div - style="width: 5px;height: 100%;border-radius: 5px;" - :style="{background:$store.state.settings.theme}" - /> - <div style="margin-left: 8px;">璁惧娓呭崟</div> - </div> - - <div style="margin-right:10px"> - <el-tooltip v-del-tab-index class="item" effect="dark" content="鏂板" placement="top"> - <i class="el-icon-plus" style="cursor: pointer;color: #999" @click="treeAddClick('add')" /> - </el-tooltip> - </div> - - </div> - - <el-tree - ref="treeLeftRef" - style="padding: 10px;overflow: auto" - :style="{height:(tableHeight+222)+'px'}" - :data="treeLeft" - node-key="code" - highlight-current - :props="defaultPropsLeft" - :default-expand-all="true" - :expand-on-click-node="false" - @node-click="getDeviceMangerSearch" - > - <span slot-scope="{ node, data }" class="custom-tree-node"> - <span v-if="!data.isEdit">{{ data.name }}</span> - <span v-if="!data.isEdit"> - <el-tooltip v-del-tab-index class="item" effect="dark" content="缂栬緫" placement="top"> - <i - v-if="data.code!=='-1'" - class="el-icon-edit" - style="margin-right:10px;color: #999" - @click.stop="treeEditClick(node,data,'edit')" - /> - </el-tooltip> - <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> - <i - v-if="data.code!=='-1'" - class="el-icon-delete" - style="margin-right: 4px;color: #999" - @click.stop="treeDeleteClick(node,data)" - /> - </el-tooltip> - </span> - </span> - </el-tree> - </div> - - <div - style=" width:calc(100% - 300px);" - > - <div class="bodyTopButtonGroup" style="justify-content: space-between"> - <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button> - <el-button - v-waves - type="success" - icon="el-icon-download" - @click="$router.push('./../systemSetting/dataImport?fileCode=9')" - >瀵煎叆 - </el-button> - </div> - - <div class="bodyTopFormGroup"> - <el-form - ref="form" - :model="form" - label-width="100px" - inline - style="display: flex;" - > - <div class="elForm"> - <el-form-item label="璁惧缂栫爜" style=" display: flex;"> - <el-input v-model="form.devicecode" placeholder="璇疯緭鍏�" style="width: 200px" /> - </el-form-item> - <el-form-item label="璁惧鍚嶇О" style=" display: flex;"> - <el-input v-model="form.devicename" placeholder="璇疯緭鍏�" style="width: 200px" /> - </el-form-item> - <!-- <el-form-item label="浣跨敤鐘舵��" style=" display: flex;">--> - <!-- <el-select--> - <!-- v-model="form.status"--> - <!-- style="width: 100%;"--> - <!-- placeholder="璇烽�夋嫨"--> - <!-- >--> - <!-- <el-option--> - <!-- v-for="item in statusArr"--> - <!-- :key="item.code"--> - <!-- :label="item.name"--> - <!-- :value="item.code"--> - <!-- />--> - <!-- </el-select>--> - <!-- </el-form-item>--> - <el-form-item label="鎵�灞炵粍缁�" style=" display: flex;"> - <el-cascader - ref="cascader" - v-model="form.storgcode" - :options="cascaderOptions" - filterable - :props="defaultProps" - :show-all-levels="false" - /> - </el-form-item> - <!-- <el-form-item label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> - <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> - <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> - <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> - <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> - <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> - <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - </div> - <div - class="bodySearchReset" - :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" - > - <el-button - v-waves - type="primary" - icon="el-icon-search" - @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())" - >鏌ヨ - </el-button> - <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button> - </div> - </el-form> - <div - class="bodyTopFormExpand" - style="height: 5px;" - > - <!-- <svg-icon--> - <!-- v-show="mouseHoverType==='mouseout'"--> - <!-- style="cursor: pointer"--> - <!-- :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"--> - <!-- @mouseenter="mouseHoverType=$event.type"--> - <!-- />--> - <!-- <svg-icon--> - <!-- v-show="mouseHoverType==='mouseenter'"--> - <!-- style="cursor: pointer"--> - <!-- :icon-class="!isExpandForm?'doubleDown':'doubleUp'"--> - <!-- @click="isExpandForm=!isExpandForm"--> - <!-- @mouseout="mouseHoverType=$event.type"--> - <!-- />--> - </div> - </div> - - <div class="elTableDiv"> - <el-table - ref="tableDataRef" - class="tableFixed" - :data="tableData" - :height="isExpandForm?tableHeight:(tableHeight+80)+'px'" - border - row-class-name="custom-row" - :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}" - highlight-current-row - :header-cell-style="this.$headerCellStyle" - :cell-style="this.$cellStyle" - @sort-change="sortChange" - > - <!-- prop="RowNum"--> - <el-table-column - prop="rowNum" - width="50" - fixed - label="搴忓彿" - /> - <el-table-column - prop="code" - label="璁惧缂栫爜" - sortable="custom" - /> - <el-table-column - prop="name" - label="璁惧鍚嶇О" - - sortable="custom" - /> - <el-table-column - prop="eqptype_name" - label="璁惧绫诲瀷" - sortable="custom" - /> - <el-table-column - prop="torg_name" - label="鎵�灞炵粍缁�" - sortable="custom" - /> - <el-table-column - prop="enable" - label="浣跨敤鐘舵��" - width="110" - sortable="custom" - > - <template slot-scope="{row}"> - <el-tag v-if="row.enable==='Y'" size="small" type="success">姝e父</el-tag> - <el-tag v-if="row.enable==='N'" size="small" type="danger">鍋滅敤</el-tag> - </template> - </el-table-column> - <el-table-column - label="鍒涘缓浜哄憳" - prop="lm_user" - sortable="custom" - width="110" - /> - <el-table-column - label="鍒涘缓鏃堕棿" - prop="lm_date" - sortable="custom" - width="160" - /> - - <el-table-column - label="鎿嶄綔" - width="120" - fixed="right" - > - <template slot-scope="{row}"> - <div class="operationClass"> - <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP棰勮" placement="top"> - <i - v-if="mesSetting.device" - class="el-icon-files" - style="cursor: pointer;color:#42b983;margin-right: 15px" - @click="pre(row)" - /> - </el-tooltip> - - <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top"> - <i - class="el-icon-edit-outline" - :style="{color:$store.state.settings.theme}" - @click="edit('edit',row)" - /> - </el-tooltip> - <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> - <i - class="el-icon-delete" - :style="{color:$store.state.settings.theme}" - @click="del(row)" - /> - </el-tooltip> - </div> - </template> - </el-table-column> - </el-table> - </div> - - <!--鍒嗛〉--> - <pagination - :total="total" - :page.sync="form.page" - :limit.sync="form.rows" - align="right" - layout="total,prev, pager, next,sizes,jumper" - popper-class="select_bottom" - @pagination="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())" - /> - - </div> - </div> - </div> - - <!-- 璁惧绫诲埆鏂板淇敼--> - <el-dialog - v-el-drag-dialog - :title="operation==='add'?'鏂板':'缂栬緫'" - :visible.sync="dialogClassVisible" - width="800px" - :close-on-click-modal="false" - top="15vh" - @closed="handleClassClose" - @close="handleClassClose" - > - <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px"> - <el-form-item label="璁惧绫诲瀷缂栫爜" prop="code"> - <el-input v-model="dialogClassForm.code" :disabled="operation!=='add'" style="width: 200px" /> - </el-form-item> - <el-form-item label="璁惧绫诲瀷鍚嶇О" prop="name"> - <el-input v-model="dialogClassForm.name" style="width: 200px" /> - </el-form-item> - </el-form> - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="dialogVisibleClassCancel">鍙� 娑�</el-button> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="dialogVisibleClassConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - <!-- 璁惧娓呭崟鏂板淇敼--> - <el-dialog - v-el-drag-dialog - :title="operation==='add'?'鏂板':'缂栬緫'" - :visible.sync="dialogVisible" - width="800px" - :close-on-click-modal="false" - top="15vh" - @closed="handleClose" - @close="handleClose" - > - <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px"> - <el-form-item label="璁惧缂栫爜" prop="devicecode"> - <el-input v-model="dialogForm.devicecode" :disabled="operation!=='add'" style="width: 200px" /> - </el-form-item> - <el-form-item label="璁惧鍚嶇О" prop="devicename"> - <el-input v-model="dialogForm.devicename" style="width: 200px" /> - </el-form-item> - <el-form-item label="璁惧绫诲瀷" prop="devicetypecode"> - <el-select - v-model="dialogForm.devicetypecode" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - > - <el-option - v-for="item in treeLeftArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - <el-form-item label="鎵�灞炵粍缁�" prop="storgcode"> - <el-cascader - ref="dialogCascader" - v-model="dialogForm.storgcode" - :options="cascaderOptions" - filterable - style="width: 200px;" - :props="defaultProps" - :show-all-levels="false" - /> - </el-form-item> - <el-form-item required label="鐘舵��"> - <el-radio-group v-model="dialogForm.status"> - <el-radio label="Y">姝e父</el-radio> - <el-radio label="N">鍋滅敤</el-radio> - </el-radio-group> - </el-form-item> - - </el-form> - - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="dialogVisibleConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - <!-- sop棰勮--> - <el-dialog - v-el-drag-dialog - title="璁惧SOP棰勮" - :visible.sync="SopDialogVisible" - width="800px" - :close-on-click-modal="false" - top="15vh" - @closed="handleSopClose" - @close="handleSopClose" - > - - <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px"> - <el-form-item label="璁惧SOP"> - <el-select - v-model="dialogSopForm.sop" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - @change="sopChange" - > - <el-option - v-for="item in sopArr" - :key="item.filepath" - :label="item.filename" - :value="item.filepath" - /> - </el-select> - </el-form-item> - - <el-form-item label="Sop鐗堟湰"> - <el-input v-model="dialogSopForm.v" disabled style="width: 200px" /> - </el-form-item> - </el-form> - - <el-button - v-waves - type="primary" - style="margin-left: 37px" - @click="view" - >棰� 瑙�/涓� 杞�</el-button> - - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="handleSopClose">鍙� 娑�</el-button> - <!-- <el-button--> - <!-- v-waves--> - <!-- type="primary"--> - <!-- :loading="$store.state.app.buttonIsDisabled"--> - <!-- :disabled="$store.state.app.buttonIsDisabled"--> - <!-- @click="handleSopConfirm"--> - <!-- >纭� 瀹�</el-button>--> - </div> - </span> - </el-dialog> - - </div> -</template> - -<script> -import waves from '@/directive/waves' -import Pagination from '@/components/Pagination' -import { validateCode } from '@/utils/global' -import elDragDialog from '@/directive/el-drag-dialog' -import arrayToTree from 'array-to-tree' -import { PrentOrganization } from '@/api/GeneralBasicData' -import { - AddUpdateDeviceManger, - AddUpdateDeviceType, DeleteDeviceManger, - DeleteDeviceType, - DeviceMangerSearch, DeviceSopSearch, - DeviceTypeSearch -} from '@/api/DeviceManager' - -export default { - name: 'DeviceList', - directives: { waves, elDragDialog }, - components: { - Pagination - }, - data() { - return { - mesSetting: JSON.parse(localStorage.getItem('mesSetting')), - mouseHoverType: 'mouseout', - isExpandForm: false, - mainHeight: 0, - tableHeight: 0, - operation: '', - - treeLeft: [ - { - code: '-1', - name: '鍏ㄩ儴' - } - ], // 宸︿晶鏍� - treeLeftArr: [], - defaultPropsLeft: { - children: 'children', - label: 'name' - }, - - tableData: [], - form: { - devicetype: '', - devicecode: '', - devicename: '', - status: '', - storgcode: '', - page: 1, - rows: 20, - prop: 'lm_date', // 鎺掑簭瀛楁 - order: 'desc' // 鎺掑簭瀛楁 - }, - total: 0, - - statusArr: [ - { code: '0', name: '姝e父' }, - { code: '1', name: '鍋滅敤' } - ], - defaultProps: { - checkStrictly: true, - expandTrigger: 'hover', - value: 'torg_code', - label: 'torg_name' - }, - Options: [], - cascaderOptions: [], - - dialogClassVisible: false, - dialogClassForm: { - code: '', // 璁惧绫诲瀷缂栫爜 - name: '', // 璁惧鍚嶇О鍚嶇О - OperType: ''// OperType - }, - dialogClassFormRules: { - code: [ - { required: true, validator: validateCode, trigger: ['blur', 'change'] } - ], - name: [ - { required: true, message: '璇疯緭璁惧绫诲瀷鍚嶇О', trigger: ['blur', 'change'] } - ] - }, - - dialogVisible: false, - dialogForm: { - devicecode: '', // 璁惧缂栫爜 - devicename: '', // 璁惧鍚嶇О - devicetypecode: '', // 璁惧绫诲瀷缂栫爜 - storgcode: [], // 缁勭粐缂栫爜 - status: 'Y', // 浣跨敤鐘舵��: 姝e父(Y)鍋滅敤(N) - OperType: '' // 鎿嶄綔绫诲瀷 - }, - dialogFormRules: { - devicecode: [ - { required: true, validator: validateCode, trigger: ['blur', 'change'] } - ], - devicename: [ - { required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: ['blur', 'change'] } - ], - devicetypecode: [ - { required: true, message: '璇烽�夋嫨璁惧绫诲瀷', trigger: ['blur', 'change'] } - ], - storgcode: [ - { required: true, message: '璇烽�夋嫨鎵�灞炵粍缁�', trigger: ['blur', 'change'] } - ] - }, - - SopDialogVisible: false, - dialogSopForm: { // 璁惧SOP琛ㄥ崟 - sop: '', - v: '' - }, - sopArr: [] - - } - }, - - activated() { window.addEventListener('resize', this.getHeight) this.getHeight() }, created() { - - }, - mounted() { - window.addEventListener('resize', this.getHeight) - this.getHeight() - - this.getDeviceTypeSearch() - this.getPrentOrganization() - }, - methods: { - // 寮瑰嚭妗嗗叧闂� - handleSopClose() { - this.SopDialogVisible = false - this.dialogSopForm = { // 璁惧SOP琛ㄥ崟 - sop: '', - v: '' - } - }, - // 棰勮 - view() { - window.open(process.env.VUE_APP_BASE_API_FILE + this.dialogSopForm.sop) - }, - // sop棰勮 - async pre(row) { - const data = { - eqptypecode: row.eqptype_code, - eqpcode: row.code - } - const { data: res } = await DeviceSopSearch(data) - this.sopArr = res - - this.SopDialogVisible = true - }, - sopChange(val) { - this.dialogSopForm.v = this.sopArr.find(i => i.filepath === val).version - }, - async getDeviceTypeSearch() { - const res = await DeviceTypeSearch() - res.data.forEach(i => { - i.idparent = i.idparent ? i.idparent : '-1' - }) - this.treeLeftArr = res.data - this.treeLeftArr.forEach(e => { - e.name = e.code + ' ' + e.name - }) - this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), { - parentProperty: 'idparent', - customID: 'code', - childrenProperty: 'children' - }) - - this.$nextTick(() => { - this.$refs.treeLeftRef.setCurrentKey('-1') - this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) - }) - }, - async getDeviceMangerSearch(node) { - this.form.storgcode = this.form.storgcode ? this.$refs.cascader.checkedValue[this.$refs.cascader.checkedValue.length - 1] : '' - this.form.devicetype = node.code !== '-1' ? node.code : '' - const res = await DeviceMangerSearch(this.form) - - this.tableData = res.data - this.total = res.count - }, - // 缁勭粐鏋舵瀯绾ц仈閫夋嫨鍣� - async getPrentOrganization() { - const { data: res } = await PrentOrganization() - this.Options = res - this.cascaderOptions = arrayToTree(res, { - parentProperty: 'parent_id', - customID: 'torg_code', - childrenProperty: 'children' - }) - }, - // 鑾峰彇椤甸潰楂樺害 - getHeight() { - this.$nextTick(() => { - this.mainHeight = window.innerHeight - 85 - this.tableHeight = this.mainHeight - 280 - this.$refs.tableDataRef.doLayout() - }) - }, - sortChange({ column, prop, order }) { - if (order === 'descending') { - order = 'desc' - } else if (order === 'ascending') { - order = 'asc' - } else { - order = 'desc' - } - this.form.order = order - this.form.prop = prop - this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) - }, - // 鏂板鎸夐挳 - add(operation) { - this.operation = operation - this.dialogVisible = true - this.dialogForm.OperType = 'Add' - }, - // 淇敼鎸夐挳 - async edit(operation, row) { - this.operation = operation - this.dialogVisible = true - this.dialogForm.OperType = 'Update' - - this.$nextTick(() => { - this.dialogForm.devicecode = row.code - this.dialogForm.devicename = row.name - this.dialogForm.status = row.enable - this.dialogForm.devicetypecode = row.eqptype_code - this.dialogForm.storgcode = this.findParent([], row.torg_code, this.cascaderOptions).reverse() - }) - }, - // parents:鐢ㄤ簬杩斿洖鐨勬暟缁勶紝childNode:瑕佹煡璇㈢殑鑺傜偣锛宼reeData锛歫son鏍戝舰鏁版嵁 - findParent(parents, childNode, treeData) { - // console.log(parents, childNode, treeData, 2) - for (let i = 0; i < treeData.length; i++) { - // 鐖惰妭鐐规煡璇㈡潯浠� - if (treeData[i].torg_code === childNode) { - // 濡傛灉鎵惧埌缁撴灉,淇濆瓨褰撳墠鑺傜偣 - parents.push(treeData[i].torg_code) - // 鐢ㄥ綋鍓嶈妭鐐瑰啀鍘诲師鏁版嵁鏌ユ壘褰撳墠鑺傜偣鐨勭埗鑺傜偣 - this.findParent(parents, treeData[i].parent_id, this.cascaderOptions) - break - } else { - if (treeData[i].children instanceof Array) { - // 娌℃壘鍒帮紝閬嶅巻璇ヨ妭鐐圭殑瀛愯妭鐐� - this.findParent(parents, childNode, treeData[i].children) - } - } - } - return parents - }, - del(row) { - this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - DeleteDeviceManger({ devicecode: row.code }).then(res => { - if (res.code === '200') { - this.$notify.success('鍒犻櫎鎴愬姛!') - this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) - } - }) - }).catch(() => { - this.$notify.info('宸插彇娑堝垹闄�') - }) - }, - reset() { - // this.form.storgcode = '' - this.form.devicecode = '' - this.form.devicename = '' - this.form.status = '' - this.form.devicetype = '' - this.$refs.cascader.checkedValue = [] - this.$refs.treeLeftRef.setCurrentKey('-1') - this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) - }, - // 瀵硅瘽妗嗗叧闂簨浠� - handleClose() { - this.dialogForm.devicecode = '' - this.dialogForm.devicename = '' - // this.dialogForm.storgcode = [] - this.dialogForm.devicetypecode = '' - this.dialogForm.status = 'Y' - this.$refs.dialogCascader.checkedValue = '' - this.$refs.dialogForm.clearValidate() - }, - // 瀵硅瘽妗嗗彇娑� - dialogVisibleCancel() { - this.dialogVisible = false - }, - // 瀵硅瘽妗嗙‘璁� - dialogVisibleConfirm() { - this.$refs.dialogForm.validate(valid => { - if (valid) { - this.dialogForm.storgcode = this.$refs.dialogCascader.checkedValue[this.$refs.dialogCascader.checkedValue.length - 1] - this.$store.state.app.buttonIsDisabled = true - AddUpdateDeviceManger(this.dialogForm).then(res => { - if (res.code === '200') { - this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') - this.dialogVisible = false - this.$store.state.app.buttonIsDisabled = false - this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') - } - }) - } - }) - }, - treeEditClick(node, data, operation) { - this.dialogClassForm.code = data.code - this.dialogClassForm.name = data.name.split(' ')[1] - this.dialogClassForm.OperType = 'Update' - this.operation = operation - this.dialogClassVisible = true - }, - treeDeleteClick(node, data) { - this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - DeleteDeviceType({ devicetypecode: data.code }).then(res => { - if (res.code === '200') { - this.$notify.success('鍒犻櫎鎴愬姛!') - this.getDeviceTypeSearch() - } - }) - }).catch(() => { - this.$notify.info('宸插彇娑堝垹闄�') - }) - }, - treeAddClick(operation) { - this.operation = operation - this.dialogClassVisible = true - this.dialogClassForm.OperType = 'Add' - }, - - handleClassClose() { - this.dialogClassForm.code = '' - this.dialogClassForm.name = '' - this.$refs.dialogClassForm.clearValidate() - }, - dialogVisibleClassCancel() { - this.dialogClassVisible = false - }, - dialogVisibleClassConfirm() { - this.$refs.dialogClassForm.validate(valid => { - if (valid) { - const data = [{ - code: this.dialogClassForm.code, - name: this.dialogClassForm.name, - group: '', - description: '' - }] - AddUpdateDeviceType(data, this.dialogClassForm.OperType) - .then(res => { - if (res.code === '200') { - this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') - this.dialogClassVisible = false - this.$store.state.app.buttonIsDisabled = false - this.getDeviceTypeSearch() - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') - } - }) - } - }) - }, - unittypcodeChange(val) { - console.log(val) - - this.dialogForm.unitcode = '' - this.dialogForm.unitsubcode = '' - this.dialogForm.idSubUnitByReport = '' - this.dialogForm.idUnitByStock = '' - this.dialogForm.idUnitByPurchase = '' - this.dialogForm.idUnitBySale = '' - this.dialogForm.idunitbymanufacture = '' - // this.$refs.dialogForm.clearValidate() - // this.$forceUpdate() - }, - unitcodeChange(val, type) { - console.log(val) - - if (type === '1') { - // this.dialogForm.unitcode = val - this.dialogForm.unitsubcode = '' - this.dialogForm.idSubUnitByReport = '' - - const unitname = this.unitcodeSingleArr.find(i => i.unitcode === val).unitname - - this.dialogForm.idUnitByStock = unitname - this.dialogForm.idUnitByPurchase = unitname - this.dialogForm.idUnitBySale = unitname - this.dialogForm.idunitbymanufacture = unitname - } - - if (type === '0') { - const t = this.unitcodeGroupArr.find(i => i.unitcode === val).children - - this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1') - this.idUnitBvStockArr = t - - const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode - this.dialogForm.unitsubcode = mainUnitCode - this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode - - this.dialogForm.idUnitByStock = mainUnitCode - this.dialogForm.idUnitByPurchase = mainUnitCode - this.dialogForm.idUnitBySale = mainUnitCode - this.dialogForm.idunitbymanufacture = mainUnitCode - } - } - } -} -</script> - -<style scoped lang="scss"> -.custom-tree-node { - flex: 1; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - padding-right: 8px; -} - -//::v-deep .el-checkbox__label { -// width: 55px; -//} -// -.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover { - color: #000 !important; -} -</style> +<template> + <div> + <div class="body" :style="{height:mainHeight+'px'}"> + + <div style="display: flex"> + <div style="width: 300px;margin: 10px 10px 0 0;background:#fff"> + + <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;"> + <div style="display: flex;"> + <div + style="width: 5px;height: 100%;border-radius: 5px;" + :style="{background:$store.state.settings.theme}" + /> + <div style="margin-left: 8px;">璁惧娓呭崟</div> + </div> + + <div style="margin-right:10px"> + <el-tooltip v-del-tab-index class="item" effect="dark" content="鏂板" placement="top"> + <i class="el-icon-plus" style="cursor: pointer;color: #999" @click="treeAddClick('add')" /> + </el-tooltip> + </div> + + </div> + + <el-tree + ref="treeLeftRef" + style="padding: 10px;overflow: auto" + :style="{height:(tableHeight+222)+'px'}" + :data="treeLeft" + node-key="code" + highlight-current + :props="defaultPropsLeft" + :default-expand-all="true" + :expand-on-click-node="false" + @node-click="getDeviceMangerSearch" + > + <span slot-scope="{ node, data }" class="custom-tree-node"> + <span v-if="!data.isEdit">{{ data.name }}</span> + <span v-if="!data.isEdit"> + <el-tooltip v-del-tab-index class="item" effect="dark" content="缂栬緫" placement="top"> + <i + v-if="data.code!=='-1'" + class="el-icon-edit" + style="margin-right:10px;color: #999" + @click.stop="treeEditClick(node,data,'edit')" + /> + </el-tooltip> + <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> + <i + v-if="data.code!=='-1'" + class="el-icon-delete" + style="margin-right: 4px;color: #999" + @click.stop="treeDeleteClick(node,data)" + /> + </el-tooltip> + </span> + </span> + </el-tree> + </div> + + <div + style=" width:calc(100% - 300px);" + > + <div class="bodyTopButtonGroup" style="justify-content: space-between"> + <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button> + <el-button + v-waves + type="success" + icon="el-icon-download" + @click="$router.push('./../systemSetting/dataImport?fileCode=9')" + >瀵煎叆 + </el-button> + </div> + + <div class="bodyTopFormGroup"> + <el-form + ref="form" + :model="form" + label-width="100px" + inline + style="display: flex;" + > + <div class="elForm"> + <el-form-item label="璁惧缂栫爜" style=" display: flex;"> + <el-input v-model="form.devicecode" placeholder="璇疯緭鍏�" style="width: 200px" /> + </el-form-item> + <el-form-item label="璁惧鍚嶇О" style=" display: flex;"> + <el-input v-model="form.devicename" placeholder="璇疯緭鍏�" style="width: 200px" /> + </el-form-item> + <!-- <el-form-item label="浣跨敤鐘舵��" style=" display: flex;">--> + <!-- <el-select--> + <!-- v-model="form.status"--> + <!-- style="width: 100%;"--> + <!-- placeholder="璇烽�夋嫨"--> + <!-- >--> + <!-- <el-option--> + <!-- v-for="item in statusArr"--> + <!-- :key="item.code"--> + <!-- :label="item.name"--> + <!-- :value="item.code"--> + <!-- />--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <el-form-item label="鎵�灞炵粍缁�" style=" display: flex;"> + <el-cascader + ref="cascader" + v-model="form.storgcode" + :options="cascaderOptions" + filterable + :props="defaultProps" + :show-all-levels="false" + /> + </el-form-item> + <!-- <el-form-item label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> + <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> + <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> + <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> + <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> + <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> + <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + </div> + <div + class="bodySearchReset" + :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" + > + <el-button + v-waves + type="primary" + icon="el-icon-search" + @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())" + >鏌ヨ + </el-button> + <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button> + </div> + </el-form> + <div + class="bodyTopFormExpand" + style="height: 5px;" + > + <!-- <svg-icon--> + <!-- v-show="mouseHoverType==='mouseout'"--> + <!-- style="cursor: pointer"--> + <!-- :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"--> + <!-- @mouseenter="mouseHoverType=$event.type"--> + <!-- />--> + <!-- <svg-icon--> + <!-- v-show="mouseHoverType==='mouseenter'"--> + <!-- style="cursor: pointer"--> + <!-- :icon-class="!isExpandForm?'doubleDown':'doubleUp'"--> + <!-- @click="isExpandForm=!isExpandForm"--> + <!-- @mouseout="mouseHoverType=$event.type"--> + <!-- />--> + </div> + </div> + + <div class="elTableDiv"> + <el-table + ref="tableDataRef" + class="tableFixed" + :data="tableData" + :height="isExpandForm?tableHeight:(tableHeight+80)+'px'" + border + row-class-name="custom-row" + :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}" + highlight-current-row + :header-cell-style="this.$headerCellStyle" + :cell-style="this.$cellStyle" + @sort-change="sortChange" + > + <!-- prop="RowNum"--> + <el-table-column + prop="rowNum" + width="50" + fixed + label="搴忓彿" + /> + <el-table-column + prop="code" + label="璁惧缂栫爜" + sortable="custom" + /> + <el-table-column + prop="name" + label="璁惧鍚嶇О" + + sortable="custom" + /> + <el-table-column + prop="eqptype_name" + label="璁惧绫诲瀷" + sortable="custom" + /> + <el-table-column + prop="torg_name" + label="鎵�灞炵粍缁�" + sortable="custom" + /> + <el-table-column + prop="enable" + label="浣跨敤鐘舵��" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + <el-tag v-if="row.enable==='Y'" size="small" type="success">姝e父</el-tag> + <el-tag v-if="row.enable==='N'" size="small" type="danger">鍋滅敤</el-tag> + </template> + </el-table-column> + <el-table-column + label="鍒涘缓浜哄憳" + prop="lm_user" + sortable="custom" + width="110" + /> + <el-table-column + label="鍒涘缓鏃堕棿" + prop="lm_date" + sortable="custom" + width="160" + /> + + <el-table-column + label="鎿嶄綔" + width="120" + fixed="right" + > + <template slot-scope="{row}"> + <div class="operationClass"> + <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP棰勮" placement="top"> + <i + v-if="mesSetting.device" + class="el-icon-files" + style="cursor: pointer;color:#42b983;margin-right: 15px" + @click="pre(row)" + /> + </el-tooltip> + + <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top"> + <i + class="el-icon-edit-outline" + :style="{color:$store.state.settings.theme}" + @click="edit('edit',row)" + /> + </el-tooltip> + <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> + <i + class="el-icon-delete" + :style="{color:$store.state.settings.theme}" + @click="del(row)" + /> + </el-tooltip> + </div> + </template> + </el-table-column> + </el-table> + </div> + + <!--鍒嗛〉--> + <pagination + :total="total" + :page.sync="form.page" + :limit.sync="form.rows" + align="right" + layout="total,prev, pager, next,sizes,jumper" + popper-class="select_bottom" + @pagination="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())" + /> + + </div> + </div> + </div> + + <!-- 璁惧绫诲埆鏂板淇敼--> + <el-dialog + v-el-drag-dialog + :title="operation==='add'?'鏂板':'缂栬緫'" + :visible.sync="dialogClassVisible" + width="800px" + :close-on-click-modal="false" + top="15vh" + @closed="handleClassClose" + @close="handleClassClose" + > + <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px"> + <el-form-item label="璁惧绫诲瀷缂栫爜" prop="code"> + <el-input v-model="dialogClassForm.code" :disabled="operation!=='add'" style="width: 200px" /> + </el-form-item> + <el-form-item label="璁惧绫诲瀷鍚嶇О" prop="name"> + <el-input v-model="dialogClassForm.name" style="width: 200px" /> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="dialogVisibleClassCancel">鍙� 娑�</el-button> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="dialogVisibleClassConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + <!-- 璁惧娓呭崟鏂板淇敼--> + <el-dialog + v-el-drag-dialog + :title="operation==='add'?'鏂板':'缂栬緫'" + :visible.sync="dialogVisible" + width="800px" + :close-on-click-modal="false" + top="15vh" + @closed="handleClose" + @close="handleClose" + > + <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px"> + <el-form-item label="璁惧缂栫爜" prop="devicecode"> + <el-input v-model="dialogForm.devicecode" :disabled="operation!=='add'" style="width: 200px" /> + </el-form-item> + <el-form-item label="璁惧鍚嶇О" prop="devicename"> + <el-input v-model="dialogForm.devicename" style="width: 200px" /> + </el-form-item> + <el-form-item label="璁惧绫诲瀷" prop="devicetypecode"> + <el-select + v-model="dialogForm.devicetypecode" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + > + <el-option + v-for="item in treeLeftArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + <el-form-item label="鎵�灞炵粍缁�" prop="storgcode"> + <el-cascader + ref="dialogCascader" + v-model="dialogForm.storgcode" + :options="cascaderOptions" + filterable + style="width: 200px;" + :props="defaultProps" + :show-all-levels="false" + /> + </el-form-item> + <el-form-item required label="鐘舵��"> + <el-radio-group v-model="dialogForm.status"> + <el-radio label="Y">姝e父</el-radio> + <el-radio label="N">鍋滅敤</el-radio> + </el-radio-group> + </el-form-item> + + </el-form> + + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="dialogVisibleConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + <!-- sop棰勮--> + <el-dialog + v-el-drag-dialog + title="璁惧SOP棰勮" + :visible.sync="SopDialogVisible" + width="800px" + :close-on-click-modal="false" + top="15vh" + @closed="handleSopClose" + @close="handleSopClose" + > + + <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px"> + <el-form-item label="璁惧SOP"> + <el-select + v-model="dialogSopForm.sop" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + @change="sopChange" + > + <el-option + v-for="item in sopArr" + :key="item.filepath" + :label="item.filename" + :value="item.filepath" + /> + </el-select> + </el-form-item> + + <el-form-item label="Sop鐗堟湰"> + <el-input v-model="dialogSopForm.v" disabled style="width: 200px" /> + </el-form-item> + </el-form> + + <el-button + v-waves + type="primary" + style="margin-left: 37px" + @click="view" + >棰� 瑙�/涓� 杞�</el-button> + + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="handleSopClose">鍙� 娑�</el-button> + <!-- <el-button--> + <!-- v-waves--> + <!-- type="primary"--> + <!-- :loading="$store.state.app.buttonIsDisabled"--> + <!-- :disabled="$store.state.app.buttonIsDisabled"--> + <!-- @click="handleSopConfirm"--> + <!-- >纭� 瀹�</el-button>--> + </div> + </span> + </el-dialog> + + </div> +</template> + +<script> +import waves from '@/directive/waves' +import Pagination from '@/components/Pagination' +import { validateCode } from '@/utils/global' +import elDragDialog from '@/directive/el-drag-dialog' +import arrayToTree from 'array-to-tree' +import { PrentOrganization } from '@/api/GeneralBasicData' +import { + AddUpdateDeviceManger, + AddUpdateDeviceType, DeleteDeviceManger, + DeleteDeviceType, + DeviceMangerSearch, DeviceSopSearch, + DeviceTypeSearch +} from '@/api/DeviceManager' + +export default { + name: 'DeviceList', + directives: { waves, elDragDialog }, + components: { + Pagination + }, + data() { + return { + mesSetting: JSON.parse(localStorage.getItem('mesSetting')), + mouseHoverType: 'mouseout', + isExpandForm: false, + mainHeight: 0, + tableHeight: 0, + operation: '', + + treeLeft: [ + { + code: '-1', + name: '鍏ㄩ儴' + } + ], // 宸︿晶鏍� + treeLeftArr: [], + defaultPropsLeft: { + children: 'children', + label: 'name' + }, + + tableData: [], + form: { + devicetype: '', + devicecode: '', + devicename: '', + status: '', + storgcode: '', + page: 1, + rows: 20, + prop: 'lm_date', // 鎺掑簭瀛楁 + order: 'desc' // 鎺掑簭瀛楁 + }, + total: 0, + + statusArr: [ + { code: '0', name: '姝e父' }, + { code: '1', name: '鍋滅敤' } + ], + defaultProps: { + checkStrictly: true, + expandTrigger: 'hover', + value: 'torg_code', + label: 'torg_name' + }, + Options: [], + cascaderOptions: [], + + dialogClassVisible: false, + dialogClassForm: { + code: '', // 璁惧绫诲瀷缂栫爜 + name: '', // 璁惧鍚嶇О鍚嶇О + OperType: ''// OperType + }, + dialogClassFormRules: { + code: [ + { required: true, validator: validateCode, trigger: ['blur', 'change'] } + ], + name: [ + { required: true, message: '璇疯緭璁惧绫诲瀷鍚嶇О', trigger: ['blur', 'change'] } + ] + }, + + dialogVisible: false, + dialogForm: { + devicecode: '', // 璁惧缂栫爜 + devicename: '', // 璁惧鍚嶇О + devicetypecode: '', // 璁惧绫诲瀷缂栫爜 + storgcode: [], // 缁勭粐缂栫爜 + status: 'Y', // 浣跨敤鐘舵��: 姝e父(Y)鍋滅敤(N) + OperType: '' // 鎿嶄綔绫诲瀷 + }, + dialogFormRules: { + devicecode: [ + { required: true, validator: validateCode, trigger: ['blur', 'change'] } + ], + devicename: [ + { required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: ['blur', 'change'] } + ], + devicetypecode: [ + { required: true, message: '璇烽�夋嫨璁惧绫诲瀷', trigger: ['blur', 'change'] } + ], + storgcode: [ + { required: true, message: '璇烽�夋嫨鎵�灞炵粍缁�', trigger: ['blur', 'change'] } + ] + }, + + SopDialogVisible: false, + dialogSopForm: { // 璁惧SOP琛ㄥ崟 + sop: '', + v: '' + }, + sopArr: [] + + } + }, + + activated() { + window.addEventListener('resize', this.getHeight) + this.getHeight() + this.getDeviceTypeSearch() + this.getPrentOrganization() + }, + created() { + + }, + mounted() { + window.addEventListener('resize', this.getHeight) + this.getHeight() + + this.getDeviceTypeSearch() + this.getPrentOrganization() + }, + methods: { + // 寮瑰嚭妗嗗叧闂� + handleSopClose() { + this.SopDialogVisible = false + this.dialogSopForm = { // 璁惧SOP琛ㄥ崟 + sop: '', + v: '' + } + }, + // 棰勮 + view() { + window.open(process.env.VUE_APP_BASE_API_FILE + this.dialogSopForm.sop) + }, + // sop棰勮 + async pre(row) { + const data = { + eqptypecode: row.eqptype_code, + eqpcode: row.code + } + const { data: res } = await DeviceSopSearch(data) + this.sopArr = res + + this.SopDialogVisible = true + }, + sopChange(val) { + this.dialogSopForm.v = this.sopArr.find(i => i.filepath === val).version + }, + async getDeviceTypeSearch() { + const res = await DeviceTypeSearch() + res.data.forEach(i => { + i.idparent = i.idparent ? i.idparent : '-1' + }) + this.treeLeftArr = res.data + this.treeLeftArr.forEach(e => { + e.name = e.code + ' ' + e.name + }) + this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), { + parentProperty: 'idparent', + customID: 'code', + childrenProperty: 'children' + }) + + this.$nextTick(() => { + this.$refs.treeLeftRef.setCurrentKey('-1') + this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) + }) + }, + async getDeviceMangerSearch(node) { + this.form.storgcode = this.form.storgcode ? this.$refs.cascader.checkedValue[this.$refs.cascader.checkedValue.length - 1] : '' + this.form.devicetype = node.code !== '-1' ? node.code : '' + const res = await DeviceMangerSearch(this.form) + + this.tableData = res.data + this.total = res.count + }, + // 缁勭粐鏋舵瀯绾ц仈閫夋嫨鍣� + async getPrentOrganization() { + const { data: res } = await PrentOrganization() + this.Options = res + this.cascaderOptions = arrayToTree(res, { + parentProperty: 'parent_id', + customID: 'torg_code', + childrenProperty: 'children' + }) + }, + // 鑾峰彇椤甸潰楂樺害 + getHeight() { + this.$nextTick(() => { + this.mainHeight = window.innerHeight - 85 + this.tableHeight = this.mainHeight - 280 + this.$refs.tableDataRef.doLayout() + }) + }, + sortChange({ column, prop, order }) { + if (order === 'descending') { + order = 'desc' + } else if (order === 'ascending') { + order = 'asc' + } else { + order = 'desc' + } + this.form.order = order + this.form.prop = prop + this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) + }, + // 鏂板鎸夐挳 + add(operation) { + this.operation = operation + this.dialogVisible = true + this.dialogForm.OperType = 'Add' + }, + // 淇敼鎸夐挳 + async edit(operation, row) { + this.operation = operation + this.dialogVisible = true + this.dialogForm.OperType = 'Update' + + this.$nextTick(() => { + this.dialogForm.devicecode = row.code + this.dialogForm.devicename = row.name + this.dialogForm.status = row.enable + this.dialogForm.devicetypecode = row.eqptype_code + this.dialogForm.storgcode = this.findParent([], row.torg_code, this.cascaderOptions).reverse() + }) + }, + // parents:鐢ㄤ簬杩斿洖鐨勬暟缁勶紝childNode:瑕佹煡璇㈢殑鑺傜偣锛宼reeData锛歫son鏍戝舰鏁版嵁 + findParent(parents, childNode, treeData) { + // console.log(parents, childNode, treeData, 2) + for (let i = 0; i < treeData.length; i++) { + // 鐖惰妭鐐规煡璇㈡潯浠� + if (treeData[i].torg_code === childNode) { + // 濡傛灉鎵惧埌缁撴灉,淇濆瓨褰撳墠鑺傜偣 + parents.push(treeData[i].torg_code) + // 鐢ㄥ綋鍓嶈妭鐐瑰啀鍘诲師鏁版嵁鏌ユ壘褰撳墠鑺傜偣鐨勭埗鑺傜偣 + this.findParent(parents, treeData[i].parent_id, this.cascaderOptions) + break + } else { + if (treeData[i].children instanceof Array) { + // 娌℃壘鍒帮紝閬嶅巻璇ヨ妭鐐圭殑瀛愯妭鐐� + this.findParent(parents, childNode, treeData[i].children) + } + } + } + return parents + }, + del(row) { + this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + DeleteDeviceManger({ devicecode: row.code }).then(res => { + if (res.code === '200') { + this.$notify.success('鍒犻櫎鎴愬姛!') + this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) + } + }) + }).catch(() => { + this.$notify.info('宸插彇娑堝垹闄�') + }) + }, + reset() { + // this.form.storgcode = '' + this.form.devicecode = '' + this.form.devicename = '' + this.form.status = '' + this.form.devicetype = '' + this.$refs.cascader.checkedValue = [] + this.$refs.treeLeftRef.setCurrentKey('-1') + this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) + }, + // 瀵硅瘽妗嗗叧闂簨浠� + handleClose() { + this.dialogForm.devicecode = '' + this.dialogForm.devicename = '' + // this.dialogForm.storgcode = [] + this.dialogForm.devicetypecode = '' + this.dialogForm.status = 'Y' + this.$refs.dialogCascader.checkedValue = '' + this.$refs.dialogForm.clearValidate() + }, + // 瀵硅瘽妗嗗彇娑� + dialogVisibleCancel() { + this.dialogVisible = false + }, + // 瀵硅瘽妗嗙‘璁� + dialogVisibleConfirm() { + this.$refs.dialogForm.validate(valid => { + if (valid) { + this.dialogForm.storgcode = this.$refs.dialogCascader.checkedValue[this.$refs.dialogCascader.checkedValue.length - 1] + this.$store.state.app.buttonIsDisabled = true + AddUpdateDeviceManger(this.dialogForm).then(res => { + if (res.code === '200') { + this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') + this.dialogVisible = false + this.$store.state.app.buttonIsDisabled = false + this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode()) + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') + } + }) + } + }) + }, + treeEditClick(node, data, operation) { + this.dialogClassForm.code = data.code + this.dialogClassForm.name = data.name.split(' ')[1] + this.dialogClassForm.OperType = 'Update' + this.operation = operation + this.dialogClassVisible = true + }, + treeDeleteClick(node, data) { + this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + DeleteDeviceType({ devicetypecode: data.code }).then(res => { + if (res.code === '200') { + this.$notify.success('鍒犻櫎鎴愬姛!') + this.getDeviceTypeSearch() + } + }) + }).catch(() => { + this.$notify.info('宸插彇娑堝垹闄�') + }) + }, + treeAddClick(operation) { + this.operation = operation + this.dialogClassVisible = true + this.dialogClassForm.OperType = 'Add' + }, + + handleClassClose() { + this.dialogClassForm.code = '' + this.dialogClassForm.name = '' + this.$refs.dialogClassForm.clearValidate() + }, + dialogVisibleClassCancel() { + this.dialogClassVisible = false + }, + dialogVisibleClassConfirm() { + this.$refs.dialogClassForm.validate(valid => { + if (valid) { + const data = [{ + code: this.dialogClassForm.code, + name: this.dialogClassForm.name, + group: '', + description: '' + }] + AddUpdateDeviceType(data, this.dialogClassForm.OperType) + .then(res => { + if (res.code === '200') { + this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') + this.dialogClassVisible = false + this.$store.state.app.buttonIsDisabled = false + this.getDeviceTypeSearch() + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') + } + }) + } + }) + }, + unittypcodeChange(val) { + console.log(val) + + this.dialogForm.unitcode = '' + this.dialogForm.unitsubcode = '' + this.dialogForm.idSubUnitByReport = '' + this.dialogForm.idUnitByStock = '' + this.dialogForm.idUnitByPurchase = '' + this.dialogForm.idUnitBySale = '' + this.dialogForm.idunitbymanufacture = '' + // this.$refs.dialogForm.clearValidate() + // this.$forceUpdate() + }, + unitcodeChange(val, type) { + console.log(val) + + if (type === '1') { + // this.dialogForm.unitcode = val + this.dialogForm.unitsubcode = '' + this.dialogForm.idSubUnitByReport = '' + + const unitname = this.unitcodeSingleArr.find(i => i.unitcode === val).unitname + + this.dialogForm.idUnitByStock = unitname + this.dialogForm.idUnitByPurchase = unitname + this.dialogForm.idUnitBySale = unitname + this.dialogForm.idunitbymanufacture = unitname + } + + if (type === '0') { + const t = this.unitcodeGroupArr.find(i => i.unitcode === val).children + + this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1') + this.idUnitBvStockArr = t + + const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode + this.dialogForm.unitsubcode = mainUnitCode + this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode + + this.dialogForm.idUnitByStock = mainUnitCode + this.dialogForm.idUnitByPurchase = mainUnitCode + this.dialogForm.idUnitBySale = mainUnitCode + this.dialogForm.idunitbymanufacture = mainUnitCode + } + } + } +} +</script> + +<style scoped lang="scss"> +.custom-tree-node { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; + padding-right: 8px; +} + +//::v-deep .el-checkbox__label { +// width: 55px; +//} +// +.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover { + color: #000 !important; +} +</style> -- Gitblit v1.9.3