From 32d56327d6f69373ada1c3447f542ec1a39282b1 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 06 五月 2024 17:31:01 +0800 Subject: [PATCH] 合并冲突 --- src/components/view/b2-standard.vue | 101 ++++ src/components/do/b1-ins-order/add.vue | 6 src/components/tool/excel.vue | 4 src/components/tool/value-table.vue | 8 src/components/view/a5-capacity-scope.vue | 4 src/components/view/role-manage.vue | 563 ++++++++++++++-------------- src/main.js | 5 src/components/do/b1-inspect-order-plan/Inspection.vue | 12 src/components/view/a6-device-management.vue | 7 src/components/view/b1-inspection-order.vue | 19 src/components/view/person-manage.vue | 24 src/components/view/b1-expenses.vue | 405 ++++++++++--------- 12 files changed, 629 insertions(+), 529 deletions(-) diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 87de2ad..6aa10a5 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -286,13 +286,13 @@ </el-select> </template> </el-table-column> - <el-table-column prop="unit" label="鍗曚綅" align="center" min-width="100"> + <!-- <el-table-column prop="unit" label="鍗曚綅" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.unit" clearable size="small" style="width: 100%;" :disabled="active>1"> <el-option v-for="(a, i) in units" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </template> - </el-table-column> + </el-table-column> --> <!-- <el-table-column prop="isLeave" label="鏄惁鐣欐牱" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.isLeave" size="small" :disabled="active>1"> @@ -718,8 +718,6 @@ this.$message.error('璇疯緭鍏ユ牱鍝佸瀷鍙�') } else if (!this.sampleList.every(m => m.standardMethodListId)) { this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�') - } else if (!this.sampleList.every(m => m.unit)) { - this.$message.error('璇疯緭鍏ユ牱鍝佺殑鍗曚綅') } else { this.saveLoad = true this.$axios.post(this.$api.insOrder.addInsOrder, { diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 055e498..1858949 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -196,8 +196,7 @@ </el-radio-group> </div> <div class="center-box"> - <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index" - > + <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index"> <tbody> <tr v-for="(m,i) in item.arr" :key="i"> <td :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' v-for="(n,j) in m" :key="j" @@ -921,7 +920,6 @@ this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) break; case 'resValue': - console.log(this.param) this.tableList[0].lastValue = value.v.v break; case 'insResult': @@ -1034,7 +1032,7 @@ }).then(res => { if (res.code === 200 && res.data) { this.equipOptions = res.data.map(m => { - m.value = m.factoryNo + m.value = m.managementNumber m.label = m.deviceName return m }) @@ -1113,10 +1111,8 @@ }) }, saveInsContext(){ - this.$axios.post(this.$api.insOrderPlan.saveInsContext, this.param, { - headers: { - 'Content-Type': 'application/json' - } + this.$axios.post(this.$api.insOrderPlan.saveInsContext, { + param: JSON.stringify(this.param) }).then(res => { if (res.code == 201) { this.$message.error('淇濆瓨澶辫触') diff --git a/src/components/tool/excel.vue b/src/components/tool/excel.vue index eeb1f26..2c4027e 100644 --- a/src/components/tool/excel.vue +++ b/src/components/tool/excel.vue @@ -89,10 +89,10 @@ dataVerification: false, // '鏁版嵁楠岃瘉' frozenMode: false, // '鍐荤粨鏂瑰紡' currencyFormat: false, //璐у竵鏍煎紡 - percentageFormat: false, //鐧惧垎姣旀牸寮� + percentageFormat: true, //鐧惧垎姣旀牸寮� numberDecrease: true, // '鍑忓皯灏忔暟浣嶆暟' numberIncrease: true, // '澧炲姞灏忔暟浣嶆暟 - moreFormats: false, // '鏇村鏍煎紡' + moreFormats: true, // '鏇村鏍煎紡' strikethrough: false, // '鍒犻櫎绾� (Alt+Shift+5)' underline: false, // '涓嬪垝绾� (Alt+Shift+6)' italic: false, // '鏂滀綋 (Ctrl+I)' diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index 6e40efb..097a84d 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -156,7 +156,7 @@ :total="total"> </el-pagination> </div> - <el-dialog title="缂栬緫" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body> + <el-dialog title="缂栬緫" :visible.sync="upDia" :width="data.row==1?'500px':540+data.row * 200 + 'px'" append-to-body> <div class="body" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> <div v-if="data.row > 1"> <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> @@ -225,14 +225,14 @@ <el-button type="primary" @click="saveUpData" :loading="upLoad">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog title="鏂板" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body> + <el-dialog title="鏂板" :visible.sync="addDia" :width="data.row==1?'500px':540+data.row * 200 + 'px'" append-to-body> <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> <div v-if="data.row > 1"> <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> - <el-col :span="6/data.row" style="text-align: right;"><span class="required-span" + <el-col :span="6/data.row" style="text-align: right;" :offset="1"><span class="required-span" v-if="showAddReq(a.label)">* </span>{{a.value}}锛�</el-col> - <el-col :span="16/data.row" :offset="1"> + <el-col :span="16/data.row"> <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"></el-input> <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" diff --git a/src/components/view/a5-capacity-scope.vue b/src/components/view/a5-capacity-scope.vue index 9cd06e3..779a102 100644 --- a/src/components/view/a5-capacity-scope.vue +++ b/src/components/view/a5-capacity-scope.vue @@ -229,10 +229,10 @@ } }, requiredAdd: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType', - 'unit', 'method', 'price', 'manDay' + 'unit', 'method', 'price', 'manDay', 'templateId' ], requiredUp: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType', - 'unit', 'method', 'price', 'manDay' + 'unit', 'method', 'price', 'manDay', 'templateId' ] }, testObjectData: { diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue index 7e15685..813729c 100644 --- a/src/components/view/a6-device-management.vue +++ b/src/components/view/a6-device-management.vue @@ -350,7 +350,7 @@ </el-form-item> <el-form-item label="褰撳墠鐘舵��:"> <el-select v-model="formData2.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%"> - <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> + <el-option v-for="item in deviceStatusList" :key="item.id" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> @@ -552,6 +552,11 @@ category: "璁惧鐘舵��" }).then(res => { this.deviceStatusList = res.data + this.deviceStatusList.forEach(a=>{ + if(!isNaN(a.value)){ + a.value = parseInt(a.value) + } + }) this.componentData.tagField.deviceStatus.select = res.data }) this.$axios.post(this.$api.enums.selectEnumByCategory, { diff --git a/src/components/view/b1-expenses.vue b/src/components/view/b1-expenses.vue index fd35c90..be06f02 100644 --- a/src/components/view/b1-expenses.vue +++ b/src/components/view/b1-expenses.vue @@ -1,236 +1,261 @@ <style scoped> - .title { - height: 60px; - line-height: 60px; - } + .title { + height: 60px; + line-height: 60px; + } - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } - .search_thing { - display: flex; - align-items: center; - height: 50px; - } + .search_thing { + display: flex; + align-items: center; + height: 50px; + } - .search_label { - width: 120px; - font-size: 14px; - text-align: right; - } + .search_label { + width: 120px; + font-size: 14px; + text-align: right; + } - .search_input { - width: calc(100% - 120px); - } + .search_input { + width: calc(100% - 120px); + } - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; + } - .el-form-item { - margin-bottom: 16px; - } + .el-form-item { + margin-bottom: 16px; + } - >>>.el-table tbody tr:hover > td { - background-color: transparent !important; + >>>.el-table tbody tr:hover>td { + background-color: transparent !important; } </style> <template> - <div class="inspection_order"> - <div style="width: 100%;height: 100%;"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">璐圭敤缁熻</el-col> + <div class="inspection_order"> + <div style="width: 100%;height: 100%;"> + <div> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;">璐圭敤缁熻</el-col> <el-col :span="12" style="text-align: right;"> - <el-button size="small" type="primary">OA鎺ㄩ��</el-button> - </el-col> - </el-row> - </div> - <div class="search"> + <el-button size="small" type="primary">OA鎺ㄩ��</el-button> + </el-col> + </el-row> + </div> + <div class="search"> <div class="search_thing"> - <div class="search_label">鏃堕棿鑼冨洿锛�</div> - <div class="search_input"> - <el-date-picker - v-model="dates" - type="datetimerange" - range-separator="鑷�" - format="yyyy-MM-dd HH:mm:ss" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - size="small"> + <div class="search_label">鏃堕棿鑼冨洿锛�</div> + <div class="search_input"> + <el-date-picker v-model="dates" type="daterange" range-separator="鑷�" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" size="small" + @change="datesChange" :key="index2"> </el-date-picker> </div> - </div> - <div class="search_thing"> - <div class="search_label">濮旀墭浜猴細</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.insOrder.costStatistics" :componentData="componentData" - :key="upIndex" @handleWeave="handleWeave"/> - </div> - </div> + </div> + <div class="search_thing"> + <div class="search_label">濮旀墭浜猴細</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" :url="$api.insOrder.costStatistics" :componentData="componentData" :key="upIndex" + @handleWeave="handleWeave" /> + </div> + </div> <el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="70%" :modal-append-to-body="false"> - <Word style="height:70vh" v-if="claimVisible" ref="Word"/> - <span slot="footer" class="dialog-footer"> - <el-button @click="claimVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> + <Word style="height:70vh" v-if="claimVisible" ref="Word" /> + <span slot="footer" class="dialog-footer"> + <el-button @click="claimVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> </template> <script> - import ValueTable from '../tool/value-table.vue' + import ValueTable from '../tool/value-table.vue' import Word from '../tool/word.vue' - export default { - components: { - ValueTable, + export default { + components: { + ValueTable, Word, - }, - data() { - return { - componentData: { - entity: { - name: null, - orderBy: { - field: 'id,ins_sample_id', - order: 'asc' - } - }, - isIndex: true, - showSelect: false, - select: false, - highlight:false, - do: [], - linkEvent:{}, - spanConfig:{ + }, + data() { + return { + componentData: { + entity: { + name: null, + dates: null, + orderBy: { + field: 'id,ins_sample_id', + order: 'asc' + } + }, + init: false, + isIndex: true, + showSelect: false, + select: false, + highlight: false, + do: [], + linkEvent: {}, + spanConfig: { //鍚堝苟琛� - rows:[ - { - name:'createTime', - index:1 + rows: [{ + name: 'createTime', + index: 1 }, { - name:'entrustCode', - index:2 + name: 'entrustCode', + index: 2 }, { - name:'company', - index:8 + name: 'company', + index: 8 }, { - name:'name', - index:9 + name: 'name', + index: 9 }, ], // 鐗规畩鐨勫悎骞惰锛屾牴鎹甿ain鍜宺ows鐨刵ame鏉ュ悎骞� - special:{ - main:'insSampleId', - rows:[ - { - name:'sample', - index:3 + special: { + main: 'insSampleId', + rows: [{ + name: 'sample', + index: 3 }, { - name:'model', - index:4 + name: 'model', + index: 4 }, { - name:'num', - index:5 + name: 'num', + index: 5 }, { - name:'price', - index:6 + name: 'price', + index: 6 }, ] } }, - tagField: { - type: { - select: [{ - value: 0, - type: 'success', - label: '鏅��' - }, { - value: 1, - type: 'warning', - label: '浼樺厛' - }, { - value: 2, - type: 'danger', - label: '绱ф��' - }] - }, - createUser: { - select: [] - } - }, - selectField: {}, - requiredAdd: [], - requiredUp: [] - }, - entityCopy: {}, - upIndex: 0, - claimVisible:false, - dates: [] - } - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.getPower() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - handleWeave(){ + tagField: { + type: { + select: [{ + value: 0, + type: 'success', + label: '鏅��' + }, { + value: 1, + type: 'warning', + label: '浼樺厛' + }, { + value: 2, + type: 'danger', + label: '绱ф��' + }] + }, + createUser: { + select: [] + } + }, + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, + entityCopy: {}, + upIndex: 0, + claimVisible: false, + dates: [], + index2: 0 + } + }, + mounted() { + this.getDates() + this.refreshTable() + this.entityCopy = this.HaveJson(this.componentData.entity) + this.getPower() + }, + methods: { + getDates(){ + //褰撳墠鏈堢涓�澶� + var y = new Date().getFullYear(); //鑾峰彇骞翠唤 + var m = new Date().getMonth() + 1; //鑾峰彇鏈堜唤 + var d = "01"; + m = m < 10 ? "0" + m : m; //鏈堜唤琛� 0 + let startDate = [y, m, d].join("-"); + //褰撳墠鏈堟渶鍚庝竴澶� + var y = new Date().getFullYear(); //鑾峰彇骞翠唤 + var m = new Date().getMonth() + 1; //鑾峰彇鏈堜唤 + var d = new Date(y, m, 0).getDate(); //鑾峰彇褰撴湀鏈�鍚庝竴鏃� + m = m < 10 ? "0" + m : m; //鏈堜唤琛� 0 + d = d < 10 ? "0" + d : d; //鏃ユ暟琛� 0 + let endDate = [y, m, d].join("-"); + this.dates = [startDate, endDate] + this.index2++ + this.componentData.entity.dates = `["${startDate}","${endDate}"]` + }, + refreshTable() { + this.$refs['ValueTable'].selectList() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.componentData.init = true + this.getDates() + this.upIndex++ + }, + handleWeave() { this.claimVisible = true; }, - // 鏉冮檺鍒嗛厤 - getPower(radio) { - let power = JSON.parse(sessionStorage.getItem('power')) - let up = false - let del = false - let add = false - for (var i = 0; i < power.length; i++) { - if (power[i].menuMethod == 'upInsOrder') { - up = true - } - if (power[i].menuMethod == 'addInsOrder') { - add = true - } - } - if (!up) { - this.componentData.do.splice(4, 1) - } - }, - handleClose() { - this.upLoad = false; - }, - confirmClaim(){ - console.log(11111111111,this.$refs.Word.getValue()) + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + let up = false + let del = false + let add = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'upInsOrder') { + up = true + } + if (power[i].menuMethod == 'addInsOrder') { + add = true + } + } + if (!up) { + this.componentData.do.splice(4, 1) + } + }, + handleClose() { + this.upLoad = false; + }, + confirmClaim() { + console.log(11111111111, this.$refs.Word.getValue()) + }, + datesChange(val){ + if(val == null){ + return + } + this.componentData.entity.dates = JSON.stringify(val) + this.$refs['ValueTable'].selectList() } - } - } + } + } </script> diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue index 98df458..66e038b 100644 --- a/src/components/view/b1-inspection-order.vue +++ b/src/components/view/b1-inspection-order.vue @@ -92,23 +92,23 @@ v-model="componentData.entity.sampleType" @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing"> + <div class="search_label">鏍峰搧鍨嬪彿锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.sampleModel" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing"> <div class="search_label">鏍峰搧缂栧彿锛�</div> <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.sampleType" @keyup.enter.native="refreshTable()"></el-input></div> - </div> - <div class="search_thing"> - <div class="search_label">鏍峰搧鍨嬪彿锛�</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.sampleType" @keyup.enter.native="refreshTable()"></el-input></div> + v-model="componentData.entity.sampleCode" @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing"> <div class="search_label">涓嬪崟鏃堕棿锛�</div> <div class="search_input"> <el-date-picker style="width:100%" v-model="componentData.entity.createTime" - type="datetime" + type="date" size="small" format="yyyy-MM-dd" - value-format="yyyy-MM-dd" + value-format="yyyy-MM-dd HH:mm:ss" clearable placeholder="閫夋嫨鏃ユ湡"> </el-date-picker> @@ -242,6 +242,9 @@ entity: { entrustCode: null, sampleType: null, + sampleName: null, + sampleModel: null, + sampleCode: null, state: 0, orderBy: { field: 'id', diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index 093d106..9a40c74 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -142,8 +142,8 @@ <!-- </el-col> --> </el-row> <el-row class="standard_table" v-loading="tableLoad"> - <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;overflow-y: auto;" tooltip-effect="dark" - highlight-current-row @row-click="rowClick" ref="standard"> + <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;overflow-y: auto;" + tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard"> <el-table-column prop="code" label="鏍囧噯缂栧彿" show-overflow-tooltip width="180"> <template slot-scope="scope"> <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span> @@ -201,8 +201,12 @@ <el-table-column prop="price" label="鍗曚环(鍏�)" width="90" show-overflow-tooltip></el-table-column> <el-table-column prop="manHour" label="宸ユ椂(H)" width="90" show-overflow-tooltip></el-table-column> <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="deviceGroup" label="璁惧缁�" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column> + <el-table-column prop="section" label="鎿嶄綔" width="120"> + <template slot-scope="scope"> + <el-button type="text" @click="sectionUp(scope.row)">鍖洪棿璁剧疆</el-button> + </template> + </el-table-column> </el-table> </el-row> </div> @@ -271,6 +275,29 @@ <span slot="footer" class="dialog-footer"> <el-button @click="addProductDia = false">鍙� 娑�</el-button> <el-button type="primary" @click="addStandardProductDo" :loading="addLoad3">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="500px"> + <div class="body" style="padding: 5px 0;"> + <el-table :data="sectionList" border style="width: 100%" height="350px"> + <el-table-column type="index" label="搴忓彿" width="70" align="center"> + </el-table-column> + <el-table-column label="鍖洪棿" align="center"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.thing" clearable></el-input> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" width="70" align="center"> + <template slot-scope="scope"> + <el-button size="mini" type="danger" icon="el-icon-minus" circle @click="sectionList.splice(scope.$index, 1)"></el-button> + </template> + </el-table-column> + </el-table> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="sectionUpDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="sectionLoadAdd" :loading="sectionLoad">淇� 瀛�</el-button> + <el-button type="primary" @click="sectionList.push({thing: ''})" icon="el-icon-plus"></el-button> </span> </el-dialog> </div> @@ -351,7 +378,11 @@ selectField: {}, }, expandedKeys: [], - filters: [] + filters: [], + sectionUpDia: false, + sectionLoad: false, + sectionRow: null, + sectionList: [] } }, mounted() { @@ -433,10 +464,10 @@ }, deleteStandard(arr, label) { arr.forEach((item, index) => { - if(item.label == label){ + if (item.label == label) { arr.splice(index, 1); - }else{ - item.children&&this.deleteStandard(item.children, label); + } else { + item.children && this.deleteStandard(item.children, label); } }) }, @@ -458,7 +489,7 @@ category: "瀛愬疄楠屽" }).then(res => { this.factory = [] - res.data.forEach(a=>{ + res.data.forEach(a => { this.filters.push({ text: a.label, value: a.value @@ -593,14 +624,14 @@ this.$message.success('娣诲姞鎴愬姛') this.addDia = false this.list - .find(a => a.label == this.addOb.factory).children - .find(a => a.label == this.addOb.laboratory).children - .find(a => a.label == this.addOb.sampleType).children - .find(a => a.label == this.addOb.sample).children.push({ - code:'[5]', - label: this.addOb.model, - value: this.addOb.model, - }) + .find(a => a.label == this.addOb.factory).children + .find(a => a.label == this.addOb.laboratory).children + .find(a => a.label == this.addOb.sampleType).children + .find(a => a.label == this.addOb.sample).children.push({ + code: '[5]', + label: this.addOb.model, + value: this.addOb.model, + }) this.addLoad = false }).catch(e => { this.addDia = false @@ -839,6 +870,44 @@ return m }) } + }, + sectionUp(row) { + this.sectionRow = row + this.sectionUpDia = true + this.sectionList = [] + if(this.sectionRow.section!==null){ + JSON.parse(this.sectionRow.section).forEach(a=>{ + this.sectionList.push({ + thing: a + }) + }) + } + }, + sectionLoadAdd() { + let sectionList = [] + this.sectionList.forEach(a=>{ + if(a.thing!==''){ + sectionList.push(a.thing) + } + }) + this.sectionRow.section = JSON.stringify(sectionList) + this.sectionLoad = true + this.$axios.post(this.$api.standardTree.upStandardProductList, { + id: this.sectionRow.id, + section: this.sectionRow.section + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.sectionLoad = false + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + this.$message.success('宸蹭繚瀛�') + this.sectionUpDia = false + }) } } } diff --git a/src/components/view/person-manage.vue b/src/components/view/person-manage.vue index 4bb927d..5d37c93 100644 --- a/src/components/view/person-manage.vue +++ b/src/components/view/person-manage.vue @@ -35,6 +35,15 @@ padding: 20px; } </style> +<style> + .el-upload--text{ + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + } +</style> <template> <div class="person_manage"> @@ -97,6 +106,7 @@ order: 'asc' } }, + row: 2, isIndex: true, showSelect: false, select: false, @@ -137,7 +147,7 @@ select: [] } }, - cascaderField:{ + /* cascaderField:{ departId:{ tree:[] }, @@ -147,9 +157,9 @@ label:'name', checkStrictly: true } - }, - requiredAdd:['account','name','state','roleId','password','departId'], - requiredUp:['account','name','state','roleId','departId'], + }, */ + requiredAdd:['account','name','state','roleId','password'], + requiredUp:['account','name','state','roleId'], addUpload:['pictureUrl','signatureUrl'], addUploadConfig:{ accept:'.png, .jpg, .jpeg, .gif', @@ -195,10 +205,10 @@ this.$refs.ValueTable.openAddDia(this.$api.user.addUser); }, selectTreeList(){ - this.$axios.get(this.$api.department.selectDepartment).then(res => { + /* this.$axios.get(this.$api.department.selectDepartment).then(res => { this.componentData.cascaderField.departId.tree = this.handleTree(res.data[0].children) - this.$refs.ValueTable.selectList() - }) + }) */ + this.$refs.ValueTable.selectList() }, handleTree(arr){ arr.forEach(a => { diff --git a/src/components/view/role-manage.vue b/src/components/view/role-manage.vue index 9bc9e85..28c4b8d 100644 --- a/src/components/view/role-manage.vue +++ b/src/components/view/role-manage.vue @@ -1,77 +1,85 @@ <style scoped> - .title { - height: 60px; - line-height: 60px; - } + .title { + height: 60px; + line-height: 60px; + } - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } - .search_thing { - width: 350px; - display: flex; - align-items: center; - } + .search_thing { + width: 350px; + display: flex; + align-items: center; + } - .search_label { - width: 110px; - font-size: 14px; - text-align: right; - } + .search_label { + width: 110px; + font-size: 14px; + text-align: right; + } - .search_input { - width: calc(100% - 110px); - } + .search_input { + width: calc(100% - 110px); + } - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; + } </style> <template> - <div class="role_manage"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">瑙掕壊绠$悊</el-col> - <el-col :span="12" style="text-align: right;"> - <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板瑙掕壊</el-button> - </el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">瑙掕壊鍚嶇О锛�</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.name" - @keyup.enter.native="refreshTable()"></el-input></div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.user.selectRoleLists" :delUrl="$api.user.delRole" - :componentData="componentData" :key="upIndex" @upRole="upRole" @selectRole="selectRole" /> - </div> - <el-dialog :title="type" :visible.sync="addDia" width="500px" @closed="closed"> - <div style="max-height: 500px;overflow-y: auto;padding: 8px;" v-if="addDia"> - <el-row style="line-height: 40px;margin-bottom: 15px;"> - <el-col :span="8"><span class="required-span">* </span>瑙掕壊鍚�</el-col> - <el-col :span="16"> - <el-input v-model="addData.roleName" size="medium" placeholder="闇�鍞竴瑙掕壊鍚�" clearable :disabled="type=='鏌ョ湅'"></el-input> - </el-col> - </el-row> - <el-divider content-position="left">鏉冮檺鍒嗛厤</el-divider> - <el-collapse style="margin-top: 10px;"> - <el-collapse-item title="鏌ヨ"> + <div class="role_manage"> + <div> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;">瑙掕壊绠$悊</el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板瑙掕壊</el-button> + </el-col> + </el-row> + </div> + <div class="search"> + <div class="search_thing"> + <div class="search_label">瑙掕壊鍚嶇О锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.name" + @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" :url="$api.user.selectRoleLists" :delUrl="$api.user.delRole" + :componentData="componentData" :key="upIndex" @upRole="upRole" @selectRole="selectRole" /> + </div> + <el-dialog :title="type" :visible.sync="addDia" width="550px" @closed="closed"> + <div style="max-height: 500px;overflow-y: auto;padding: 10px;" v-if="addDia"> + <el-row style="line-height: 40px;margin-bottom: 20px;"> + <el-col :span="8" style="font-size: 16px;"><span class="required-span">* </span>瑙掕壊鍚�</el-col> + <el-col :span="16"> + <el-input v-model="addData.roleName" size="medium" placeholder="闇�鍞竴瑙掕壊鍚�" clearable + :disabled="type=='鏌ョ湅'"></el-input> + </el-col> + </el-row> + <el-divider content-position="left">鏉冮檺鍒嗛厤</el-divider> + <el-collapse style="margin-top: 10px;padding: 0 10px;"> + <el-collapse-item v-for="(category, ci) in menuCategroy" :key="ci"> + <template slot="title"> + <i class="el-icon-circle-plus-outline" style="margin-right: 10px;"></i>{{category}} + </template> + <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type==category"><el-checkbox + v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> + </el-collapse-item> + <!-- <el-collapse-item title="鏌ヨ"> <el-row style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='鏌ヨ'"> <el-col :span="18"> <el-checkbox :disabled="type=='鏌ョ湅'" v-model="a.isClick">{{a.remark}}</el-checkbox> @@ -80,224 +88,213 @@ <el-checkbox :disabled="type=='鏌ョ湅'" v-model="a.look">鍙湅鎴�</el-checkbox> </el-col> </el-row> - </el-collapse-item> - <el-collapse-item title="娣诲姞"> - <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='娣诲姞'"><el-checkbox - v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> - </el-collapse-item> - <el-collapse-item title="淇敼"> - <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='淇敼'"><el-checkbox - v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> - </el-collapse-item> - <el-collapse-item title="鍒犻櫎"> - <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='鍒犻櫎'"><el-checkbox - v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> - </el-collapse-item> - <el-collapse-item title="瀵煎叆"> - <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='瀵煎叆'"><el-checkbox - v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> - </el-collapse-item> - <el-collapse-item title="瀵煎嚭"> - <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='瀵煎嚭'"><el-checkbox - v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> - </el-collapse-item> - </el-collapse> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="addDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="saveAddData" :loading="addLoad" v-if="type!='鏌ョ湅'">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> + </el-collapse-item> --> + </el-collapse> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveAddData" :loading="addLoad" v-if="type!='鏌ョ湅'">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> </template> <script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - name: null, - orderBy: { - field: 'id', - order: 'asc' - } - }, - showSelect: false, - select: true, - isIndex: true, - do: [{ - font: '缂栬緫', - type: 'text', - method: 'upRole', - field: [] - }, { - id: 'delete', - font: '鍒犻櫎', - type: 'text', - method: 'doDiy', - }, { - font: '鏌ョ湅', - type: 'text', - method: 'selectRole', - }], - tagField: {}, - selectField: {} - }, - entityCopy: {}, - upIndex: 0, - addDia: false, - addLoad: false, - addData: { - roleId2: null, - roleName: null, - powers: [] - }, - menu: [], - menuCopy: [], - type: '鏂板', - addPower: true - } - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.selectMenuList() - this.getPower() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - selectMenuList() { - this.$axios.get(this.$api.user.selectMenuList).then(res => { - res.data.forEach(a => { - a.isClick = false - a.look = false - }) - this.menu = res.data - this.menuCopy = this.HaveJson(res.data) - }) - }, - upRole(row) { - this.type = '淇敼' - this.addData.roleName = row.name - this.selectPowerByRoleId(row.id) - }, - selectRole(row) { - this.type = '鏌ョ湅' - this.addData.roleName = row.name - this.selectPowerByRoleId(row.id) - }, - openAdd() { - this.type = '鏂板' - this.addDia = true - }, - saveAddData() { - if (this.addData.roleName == '' || this.addData.roleName == null) { - this.$message.error('璇峰~鍐欒鑹插悕') - return - } - this.addLoad = true - let url = '' - if (this.type == '鏂板') { - url = this.$api.user.addRole - } else { - url = this.$api.user.upRole - } - this.addData.powers = [] - this.menu.forEach(a => { - if (a.isClick) { - let str = 0 - if (a.look) { - str = 1 - } - this.addData.powers.push({ - menuMethod: a.method, - look: str - }) - } - }) - this.$axios.post(url, { - str: JSON.stringify(this.addData) - }).then(res => { - if(res.code == 201){ - if (this.type == '鏂板') { - this.$message.error('娣诲姞澶辫触') - } else { - this.$message.error('淇敼澶辫触') - } - this.addLoad = false - return - } - if (this.type == '鏂板') { - this.$message.success('娣诲姞鎴愬姛') - } else { - this.$message.success('淇敼鎴愬姛') - } - this.addLoad = false - this.addDia = false - this.refreshTable() - }).catch(e => { - this.addLoad = false - }) - }, - selectPowerByRoleId(id) { - this.$axios.post(this.$api.user.selectPowerByRoleId, { - id: id - }).then(res => { - res.data.forEach(a => { - this.menu.forEach(b => { - if (a.menuMethod == b.method) { - b.isClick = true - b.look = (a.look == 1 ? true : false) - } - }) - }) - this.addData.roleId2 = id - this.addDia = true - }) - }, - closed() { - this.addData = { - roleId2: null, - roleName: null, - powers: [] - } - this.menu = this.HaveJson(this.menuCopy) - }, - // 鏉冮檺鍒嗛厤 - getPower(){ - let power = JSON.parse(sessionStorage.getItem('power')) - let up = false - let del = false - let add = false - for (var i = 0; i < power.length; i++) { - if(power[i].menuMethod=='upRole'){ - up = true - } - if(power[i].menuMethod=='delRole'){ - del = true - } - if(power[i].menuMethod=='addRole'){ - add = true - } - } - if(!del){ - this.componentData.do.splice(1, 1) - } - if(!up){ - this.componentData.do.splice(0, 1) - } - this.addPower = add - } - } - } -</script> \ No newline at end of file + import { + set + } from 'vue' + import ValueTable from '../tool/value-table.vue' + export default { + components: { + ValueTable + }, + data() { + return { + componentData: { + entity: { + name: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + showSelect: false, + select: true, + isIndex: true, + do: [{ + font: '缂栬緫', + type: 'text', + method: 'upRole', + field: [] + }, { + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy', + }, { + font: '鏌ョ湅', + type: 'text', + method: 'selectRole', + }], + tagField: {}, + selectField: {} + }, + entityCopy: {}, + upIndex: 0, + addDia: false, + addLoad: false, + addData: { + roleId2: null, + roleName: null, + powers: [] + }, + menu: [], + menuCategroy: [], + menuCopy: [], + type: '鏂板', + addPower: true + } + }, + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity) + this.selectMenuList() + this.getPower() + }, + methods: { + refreshTable() { + this.$refs['ValueTable'].selectList() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.upIndex++ + }, + selectMenuList() { + this.$axios.get(this.$api.user.selectMenuList).then(res => { + res.data.forEach(a => { + a.isClick = false + a.look = false + }) + let set = new Set() + res.data.forEach(a => { + set.add(a.type) + }) + this.menuCategroy = set + this.menu = res.data + this.menuCopy = this.HaveJson(res.data) + }) + }, + upRole(row) { + this.type = '淇敼' + this.addData.roleName = row.name + this.selectPowerByRoleId(row.id) + }, + selectRole(row) { + this.type = '鏌ョ湅' + this.addData.roleName = row.name + this.selectPowerByRoleId(row.id) + }, + openAdd() { + this.type = '鏂板' + this.addDia = true + }, + saveAddData() { + if (this.addData.roleName == '' || this.addData.roleName == null) { + this.$message.error('璇峰~鍐欒鑹插悕') + return + } + this.addLoad = true + let url = '' + if (this.type == '鏂板') { + url = this.$api.user.addRole + } else { + url = this.$api.user.upRole + } + this.addData.powers = [] + this.menu.forEach(a => { + if (a.isClick) { + let str = 0 + if (a.look) { + str = 1 + } + this.addData.powers.push({ + menuMethod: a.method, + look: str + }) + } + }) + this.$axios.post(url, { + str: JSON.stringify(this.addData) + }).then(res => { + if (res.code == 201) { + if (this.type == '鏂板') { + this.$message.error('娣诲姞澶辫触') + } else { + this.$message.error('淇敼澶辫触') + } + this.addLoad = false + return + } + if (this.type == '鏂板') { + this.$message.success('娣诲姞鎴愬姛') + } else { + this.$message.success('淇敼鎴愬姛') + } + this.addLoad = false + this.addDia = false + this.refreshTable() + }).catch(e => { + this.addLoad = false + }) + }, + selectPowerByRoleId(id) { + this.$axios.post(this.$api.user.selectPowerByRoleId, { + id: id + }).then(res => { + res.data.forEach(a => { + this.menu.forEach(b => { + if (a.menuMethod == b.method) { + b.isClick = true + b.look = (a.look == 1 ? true : false) + } + }) + }) + this.addData.roleId2 = id + this.addDia = true + }) + }, + closed() { + this.addData = { + roleId2: null, + roleName: null, + powers: [] + } + this.menu = this.HaveJson(this.menuCopy) + }, + // 鏉冮檺鍒嗛厤 + getPower() { + let power = JSON.parse(sessionStorage.getItem('power')) + let up = false + let del = false + let add = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'upRole') { + up = true + } + if (power[i].menuMethod == 'delRole') { + del = true + } + if (power[i].menuMethod == 'addRole') { + add = true + } + } + if (!del) { + this.componentData.do.splice(1, 1) + } + if (!up) { + this.componentData.do.splice(0, 1) + } + this.addPower = add + } + } + } +</script> diff --git a/src/main.js b/src/main.js index e06060c..e0e4031 100644 --- a/src/main.js +++ b/src/main.js @@ -17,13 +17,10 @@ // const javaApi = 'http://192.168.11.249:8001';//寮� const javaApi = 'http://172.20.10.3:8001';//濮� // const javaApi = 'http://192.168.11.2:8001';//鏌� -// const javaApi = 'http://114.132.189.42:9006';//娴嬭瘯鏈� +// const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈� //鑳滀簯鏈嶅姟鍣� // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; // const javaApi = 'http://122.114.52.69:8001'; -//浜戞湇鍔″櫒 -// Vue.prototype.LOCATIONVUE = "http://114.132.189.42:39901"; -// const javaApi = 'http://114.132.189.42:9006'; Vue.prototype.HaveJson = (val) => { return JSON.parse(JSON.stringify(val)) -- Gitblit v1.9.3