From 6963bf915d1e6e22ea1501e15a13cc0215c590c5 Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期四, 06 六月 2024 00:29:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/do/b1-ins-order/add.vue | 110 ++++++ src/util/file.js | 20 + static/js/menu.js | 6 src/components/view/person-manage.vue | 2 src/assets/api/controller.js | 6 src/components/view/a6-waste-handover.vue | 272 ++++++++++++++++++ src/components/view/a6-external-personnel-management.vue | 126 ++++++++ src/view/notice.vue | 4 src/main.js | 6 src/components/do/b1-inspect-order-plan/Inspection.vue | 171 +++++++++++ src/components/do/b3-work-time-management/work-time-management.vue | 1 src/components/do/b3-work-time-management/work-time-statistics.vue | 30 + src/components/do/b1-ins-order/fiberoptic-config.vue | 2 src/components/view/a6-device-management.vue | 2 src/components/view/a6-standard-material-list.vue | 138 +++++++++ 15 files changed, 870 insertions(+), 26 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index e4d62e7..2f5338c 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -180,6 +180,11 @@ submitPlan: "/insOrderPlan/submitPlan", //妫�楠屼换鍔℃彁浜� inspectionOrderDetailsTaskSwitching: "/insOrderPlan/inspectionOrderDetailsTaskSwitching", // 妫�楠屽崟璇︽儏-浠诲姟鍒囨崲 getInsProduct: "/insOrderPlan/getInsProduct", // 鑾峰彇妫�楠岄」鐩拰妯℃澘鍐呭 + getFileList: "/insOrderPlan/getFileList", // 鏌ョ湅妫�楠屽崟涓嬬殑闄勪欢鍒楄〃 + delfile: "/insOrderPlan/delfile", // 闄勪欢鍒犻櫎 + uploadFile: "/insOrderPlan/uploadFile", // 闄勪欢涓婁紶 + downFile: "/insOrderPlan/downFile", // 闄勪欢涓嬭浇 + checkSubmitPlan: "/insOrderPlan/checkSubmitPlan", // 鏍¢獙妫�楠屼换鍔℃彁浜� } const systemLog = { @@ -341,4 +346,5 @@ const auxiliaryOriginalHours = { selectAuxiliaryOriginalHours: "/auxiliaryOriginalHours/selectAuxiliaryOriginalHours", //鏌ヨ鍘熷宸ユ椂 + exportOriginalHours: "/auxiliaryOriginalHours/exportOriginalHours", //瀵煎嚭鍘熷宸ユ椂 } diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index f712e9b..82e3105 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -281,6 +281,12 @@ v-model="addObj.remark" :readonly="active>1"></el-input> </div> </el-col> + <el-col class="search_thing" :span="6" v-if="active==1"> + <div class="search_label">RTS锛�</div> + <div class="search_input"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="RTS"></el-input> + </div> + </el-col> </el-row> </div> <div v-show="!configShow"> @@ -631,6 +637,8 @@ bsm1Val: null, bsm1Dia: false, total:0, + RTS:'', + totalArr:[] } }, watch: { @@ -726,6 +734,37 @@ this.addObj.companyId = selects.id this.selectUserDia = false }, + handleAsk(ask){ + let code = [">","<","=","锛�","锛�","鈮�","鈮�","卤"]; + if(ask.includes('RTS')){ + if(ask.includes('&')){ + // 澶氫釜鏉′欢 + let arr0 = ask.split('&') + let arr1 = [] + arr0.forEach(m=>{ + let index = code.findIndex(b=>m.includes(b)) + if(index>-1){ + let arr = m.split(code[index]).filter(b=>!!b) + let num = eval(this.replaceAll(arr[0],'RTS', this.RTS)) + m = code[index] + ''+ num + arr1.push(m) + } + }) + return arr1.join('&') + }else{ + // 鍗曚釜鏉′欢 + let index = code.findIndex(b=>ask.includes(b)) + if(index>-1){ + let arr = ask.split(code[index]).filter(b=>!!b) + let num = eval(this.replaceAll(arr[0],'RTS', this.RTS)) + return code[index] + ''+ num + } + } + } + }, + replaceAll(str, find, replace) { + return str.replace(new RegExp(find, 'g'), replace); + }, save() { if (!this.addObj.companyId) { this.$message.error('鏈�夋嫨瀹㈡埛鍗曚綅') @@ -749,11 +788,68 @@ this.$message.error('璇疯緭鍏ユ牱鍝佸瀷鍙�') } else if (!this.sampleList.every(m => m.standardMethodListId)) { this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�') + }else if (this.totalArr.find(a=>a.ask.includes('RTS'))&&!this.RTS) { + this.$message.error('璇疯緭鍏TS') } else { + let sampleList = this.HaveJson(this.sampleList) + let isRTS = this.totalArr.find(a=>a.ask.includes('RTS')) + if(isRTS){ + sampleList.forEach(item=>{ + if(item.insProduct&&item.insProduct.length>0){ + item.insProduct.forEach(a=>{ + let ask = this.handleAsk(a.ask) + if(ask){ + a.ask = ask + } + }) + } + // 鍏夌氦甯﹂」鐩� + if(item.bushing&&item.bushing.length>0){ + item.bushing.forEach(a=>{ + if(a.fiber&&a.fiber.length>0){ + a.fiber.forEach(b=>{ + if(b.productList&&b.productList.length>0){ + b.productList.forEach(c=>{ + let ask = this.handleAsk(c.ask) + if(ask){ + c.ask = ask + } + }) + } + }) + } + if(a.fibers&&a.fibers.length>0){ + a.fibers.forEach(b=>{ + if(b.productList&&b.productList.length>0){ + b.productList.forEach(c=>{ + let ask = this.handleAsk(c.ask) + if(ask){ + c.ask = ask + } + }) + } + if(b.fiber&&b.fiber.length>0){ + b.fiber.forEach(c=>{ + if(c.productList&&c.productList.length>0){ + c.productList.forEach(d=>{ + let ask = this.handleAsk(d.ask) + if(ask){ + d.ask = ask + } + }) + } + }) + } + }) + } + }) + } + }) + } this.saveLoad = true this.$axios.post(this.$api.insOrder.addInsOrder, { insOrder: this.addObj, - list: JSON.stringify(this.sampleList.map(a => { + list: JSON.stringify(sampleList.map(a => { a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ( '-' + a.modelNum)) return a @@ -1352,12 +1448,12 @@ done() }, getTotal(){ - let arr = [] + this.totalArr = [] this.total = 0; this.sampleList.forEach(item=>{ if(item.insProduct&&item.insProduct.length>0){ item.insProduct.forEach(a=>{ - arr.push(a) + this.totalArr.push(a) }) } if(item.bushing&&item.bushing.length>0){ @@ -1366,7 +1462,7 @@ a.fiber.forEach(b=>{ if(b.productList&&b.productList.length>0){ b.productList.forEach(c=>{ - arr.push(c) + this.totalArr.push(c) }) } }) @@ -1375,14 +1471,14 @@ a.fibers.forEach(b=>{ if(b.productList&&b.productList.length>0){ b.productList.forEach(c=>{ - arr.push(c) + this.totalArr.push(c) }) } if(b.fiber&&b.fiber.length>0){ b.fiber.forEach(c=>{ if(c.productList&&c.productList.length>0){ c.productList.forEach(d=>{ - arr.push(d) + this.totalArr.push(d) }) } }) @@ -1393,7 +1489,7 @@ } }) let mySet = new Set(); - let arr0 = arr.filter(item=>{ + let arr0 = this.totalArr.filter(item=>{ if(item.state == 1){ let num1= mySet.size if(item.manHourGroup===''||!item.manHourGroup){ diff --git a/src/components/do/b1-ins-order/fiberoptic-config.vue b/src/components/do/b1-ins-order/fiberoptic-config.vue index 4066118..c20a16e 100644 --- a/src/components/do/b1-ins-order/fiberoptic-config.vue +++ b/src/components/do/b1-ins-order/fiberoptic-config.vue @@ -289,7 +289,7 @@ } }) this.models = this.models.replace(',', '') - this.packageInfo.ismiers = this.models.split(',').every(e=>(e.indexOf('d')>-1||e.indexOf('D'))) + this.packageInfo.ismiers = this.models.split(',').every(e=>(e.indexOf('d')>-1||e.indexOf('D')>-1)) if(this.sample[0].bushing === undefined || this.sample[0].bushing === null){ this.bushing = [] }else{ diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 13d3872..e245b0e 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -320,6 +320,19 @@ </tbody> </table> </div> + <el-upload :action="action" + :data="{ + orderId:id + }" + v-show="state==1" + :on-success="handleSuccessUp" :show-file-list="false" + accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" :on-change="beforeUpload" + :on-error="onError" ref='upload'> + <el-button size="small" type="primary" :loading="upLoading">闄勪欢涓婁紶</el-button></el-upload> + <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList" + :componentData="componentData0" + :delUrl="$api.insOrderPlan.delfile" + :key="upIndex" style="height: 100%;margin-top: 16px;"/> </div> <el-drawer title="鍏夌氦鍒囨崲" :visible.sync="fiberOpticVisible" :size="500"> <el-table class="el-table" ref="fiberOpticTable" :data="fiberOptic" height="100%" tooltip-effect="dark" border @@ -422,6 +435,7 @@ <script> import ValueTable from '../../tool/value-table.vue' + import file from '../../../util/file' export default { props: ['sonLaboratory', 'orderId', 'state'], components: { @@ -457,6 +471,53 @@ insState: { select: [] }, + }, + currentId: '', + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, + componentData0: { + entity: { + insOrderId:'' + }, + isIndex: true, + showSelect: false, + select: false, + selectMethod: '', + sort: false, + init:false, + do: [ + { + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy', + disabFun: (row, index) => { + return this.state!=1 + } + }, { + id: 'handleDown', + font: '涓嬭浇', + type: 'text', + method: 'handleDown' + }, + ], + isPage: false, + linkEvent: {}, + tagField: { + type:{ + select:[ + { + value: 1, + label: '鍥剧墖' + }, + { + value: 2, + label: '鏂囦欢' + } + ] + } }, currentId: '', selectField: {}, @@ -499,8 +560,19 @@ currentFiberOptic:null,//褰撳墠鍏夌氦 currentBushing:null,//褰撳墠濂楃 tableLoading:false, + upLoading:false } }, + computed: { + headers() { + return { + 'token': sessionStorage.getItem('token') + } + }, + action() { + return this.javaApi + this.$api.insOrderPlan.uploadFile + } + }, created() { this.componentData.entity.sonLaboratory = this.sonLaboratory; this.id = this.orderId; @@ -521,6 +593,8 @@ laboratory: this.sonLaboratory }).then(async res => { this.insOrder = res.data.insOrder; + this.componentData0.entity.insOrderId = val; + this.$refs.fileList.selectList() this.urgentList.forEach(m => { if (m.value == this.insOrder.type) { this.insOrder.typeName = m.label @@ -1414,20 +1488,67 @@ } this.addVerifyDia = false this.submitLoading = true; - this.$axios.post(this.$api.insOrderPlan.submitPlan, { + this.$axios.post(this.$api.insOrderPlan.checkSubmitPlan, { orderId: this.orderId, laboratory: this.sonLaboratory, - verifyUser: this.verifyUser }).then(res => { if (res.code === 200) { - this.$message.success("鎿嶄綔鎴愬姛") - this.$emit('goback') + console.log(res.data) + if(!res.data||res.data.length==0){ + this.$axios.post(this.$api.insOrderPlan.submitPlan, { + orderId: this.orderId, + laboratory: this.sonLaboratory, + verifyUser: this.verifyUser + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + } + this.submitLoading = false; + }).catch(error => { + console.error(error) + this.submitLoading = false; + }) + }else{ + let newData = [] + const h = this.$createElement + for (let i in res.data) { + const lastChar = res.data[i].slice(-1); + if(lastChar=='-'){ + res.data[i] = res.data[i].slice(0, -1); + } + newData.push(h('p', {style: 'font-size: 12px;'}, (Number(i)+1)+'銆�'+res.data[i])) + } + newData.push(h('p', { style: 'font-size: 16px;color:#000;margin-top:12px' },'浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�')) + this.$confirm('鎻愮ず',{ + title:'鎻愮ず', + message: h('div', null, newData), + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "" + }).then(() => { + this.$axios.post(this.$api.insOrderPlan.submitPlan, { + orderId: this.orderId, + laboratory: this.sonLaboratory, + verifyUser: this.verifyUser + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + } + }).catch(error => { + console.error(error) + }) + }).catch(() => {}) + } + } this.submitLoading = false; }).catch(error => { console.error(error) this.submitLoading = false; }) + return }, saveInsContext() { this.$axios.post(this.$api.insOrderPlan.saveInsContext, { @@ -1515,6 +1636,48 @@ } }) this.getTableLists() + }, + handleSuccessUp(response, ) { + this.upLoading = false; + if (response.code == 200) { + this.$message.success('涓婁紶鎴愬姛'); + this.$refs.fileList.selectList() + } + }, + beforeUpload(file) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + this.upLoading = true; + return true; + } + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + handleDown(row){ + this.$axios.post(this.$api.insOrderPlan.downFile, { + id: row.id, + }).then(res => { + if (res.code === 200) { + let url = ''; + if(res.data.type==1){ + url = this.javaApi+'/img/'+res.data.url + file.downloadIamge(url,row.fileName) + }else{ + url = this.javaApi+'/word/'+res.data.url + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + } + } + }).catch(error => { + + }) } } } diff --git a/src/components/do/b3-work-time-management/work-time-management.vue b/src/components/do/b3-work-time-management/work-time-management.vue index b36de84..86d3e07 100644 --- a/src/components/do/b3-work-time-management/work-time-management.vue +++ b/src/components/do/b3-work-time-management/work-time-management.vue @@ -333,6 +333,7 @@ requiredAdd: [], requiredUp: [] }, + addFileVisible:false, entityCopy1: {}, upIndex1:100, weekList:[ diff --git a/src/components/do/b3-work-time-management/work-time-statistics.vue b/src/components/do/b3-work-time-management/work-time-statistics.vue index 8ffa444..380987a 100644 --- a/src/components/do/b3-work-time-management/work-time-statistics.vue +++ b/src/components/do/b3-work-time-management/work-time-statistics.vue @@ -10,7 +10,8 @@ format="yyyy-MM" value-format="yyyy-MM" placeholder="閫夋嫨鏈�" size="small" style="width: 100%;" - :clearable="false"> + :clearable="false" + @change="refreshTable()"> </el-date-picker> </div> </div> @@ -39,8 +40,8 @@ <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> </div> <div class="search_thing"> - <el-button size="small" type="primary" @click="handleDown" v-show="currentTable == 'value0'">瀵� 鍑�</el-button> - <el-button size="small" type="primary" @click="handleUp" v-show="currentTable == 'value1'">瀵� 鍏�</el-button> + <el-button size="small" type="primary" @click="handleDown" v-show="currentTable == 'value0'" :loading="outLoading">瀵� 鍑�</el-button> + <el-button size="small" type="primary" @click="handleUp" v-show="currentTable == 'value1'">瀵� 鍏�</el-button> </div> </div> <el-radio-group v-model="currentTable" size="small" :key="'111'" style="margin-top: 10px;"> @@ -55,7 +56,7 @@ <ValueTable ref="ValueTable0" v-if="currentTable == 'value0'" :url="$api.auxiliaryOriginalHours.selectAuxiliaryOriginalHours" - :componentData="componentData" :downUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :key="upIndex" /> + :componentData="componentData" :key="upIndex" /> <ValueTable ref="ValueTable1" v-if="currentTable == 'value1'" :url="$api.auxiliaryCorrectionHours.selectAuxiliaryCorrectionHours" @@ -130,7 +131,8 @@ upIndex1:100, weekList:[], personList:[], - currentTable:'value0' + currentTable:'value0', + outLoading:false } }, mounted(){ @@ -185,7 +187,23 @@ }) }, handleDown(){ - this.$refs.ValueTable0.downFile(false) + // this.$refs.ValueTable0.downFile(false) + let entity = {...this.entity} + entity.month = entity.month.split('-')[0]+'-'+entity.month.split('-')[1] + this.outLoading = true + this.$axios.get(this.$api.auxiliaryOriginalHours.exportOriginalHours,{ + params:entity, + },{responseType: "blob"}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/octet-stream' }); + console.log(blob) + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = entity.month+'宸ユ椂缁熻琛�.xlsx'; + link.click(); + }) }, handleUp(){ this.$refs.ValueTable1.openUpload() diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue index a44150a..dfe4981 100644 --- a/src/components/view/a6-device-management.vue +++ b/src/components/view/a6-device-management.vue @@ -750,7 +750,7 @@ delete this.formData.updateTime delete this.formData.createUser delete this.formData.updateUser - this.formData.insProductIds = this.formData.insProductIds.join() + this.formData.insProductIds = this.formData.insProductIds?this.formData.insProductIds.join():'' this.upLoad = true; this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.formData, { headers: { diff --git a/src/components/view/a6-external-personnel-management.vue b/src/components/view/a6-external-personnel-management.vue new file mode 100644 index 0000000..bb062f6 --- /dev/null +++ b/src/components/view/a6-external-personnel-management.vue @@ -0,0 +1,126 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + .search_thing { + display: flex; + align-items: center; + height: 50px; + } + .search_label { + width: 80px; + font-size: 14px; + text-align: right; + } + + .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; + } + +</style> +<template> + <div class="below-standard-main"> + <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="medium" type="primary" @click="$refs['ValueTable'].openAddDia('鏂板鎺ュ彛')" v-if="addPower">鏂� 澧�</el-button> + <el-button size="medium" @click="$refs['ValueTable'].openDownDia()">瀵� 鍑�</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="componentData.entity.sample" + format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" + type="date" + size="small" + @change="refreshTable()" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </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.unPass.pageInsUnPass" :componentData="componentData" + :key="upIndex" /> + </div> + </div> + </div> +</template> + +<script> + import ValueTable from '../tool/value-table.vue' +export default { + components: { + ValueTable, + }, + data() { + return { + componentData: { + entity: { + sample: null, + model: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [], + tagField: [], + selectField: [], + requiredAdd: [], + requiredUp: [] + }, + entityCopy: {}, + upIndex: 0, + stateList: [], + addPower:true, + } + }, + 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++ + }, + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + }, + } +} +</script> diff --git a/src/components/view/a6-standard-material-list.vue b/src/components/view/a6-standard-material-list.vue new file mode 100644 index 0000000..d5d3526 --- /dev/null +++ b/src/components/view/a6-standard-material-list.vue @@ -0,0 +1,138 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + .search_thing { + display: flex; + align-items: center; + height: 50px; + } + .search_label { + width: 120px; + font-size: 14px; + text-align: right; + } + + .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; + } + +</style> +<template> + <div class="below-standard-main"> + <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="medium" type="primary" @click="$refs['ValueTable'].openAddDia('鏂板鎺ュ彛')" v-if="addPower">鏂� 澧�</el-button> + <el-button size="medium" @click="$refs['ValueTable'].openDownDia()">瀵� 鍑�</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.model" + @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.sample" + @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.unPass.pageInsUnPass" :componentData="componentData" + :key="upIndex" /> + </div> + </div> + </div> +</template> + +<script> + import ValueTable from '../tool/value-table.vue' +export default { + components: { + ValueTable, + }, + data() { + return { + componentData: { + entity: { + sample: null, + model: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [ + { + id: 'update', + font: '缂栬緫', + type: 'text', + method: 'doDiy', + field:['createUserName','updateUserName'] + },{ + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy' + } + ], + tagField: [], + selectField: [], + requiredAdd: ['model','sample',], + requiredUp: [] + }, + entityCopy: {}, + upIndex: 0, + stateList: [], + addPower:true, + } + }, + 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++ + }, + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + }, + } +} +</script> diff --git a/src/components/view/a6-waste-handover.vue b/src/components/view/a6-waste-handover.vue new file mode 100644 index 0000000..0f996e3 --- /dev/null +++ b/src/components/view/a6-waste-handover.vue @@ -0,0 +1,272 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + .search_thing { + display: flex; + align-items: center; + height: 50px; + } + .search_label { + width: 100px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 120px); + } + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + padding: 20px; + } + .standard-main{ + overflow-y: auto; + scrollbar-width: none; + } + +</style> +<template> + <div class="standard-main"> + <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="medium" type="primary" @click="$refs['ValueTable'].openAddDia('鏂板鎺ュ彛')" v-if="addPower">鏂� 澧�</el-button> + <el-button size="medium" type="primary" @click="openAddDetail" v-if="addPower">鏂板鏄庣粏</el-button> + <el-button size="medium" @click="$refs['ValueTable'].openDownDia()">瀵� 鍑�</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="componentData.entity.sample" + format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" + type="date" + size="small" + @change="refreshTable()" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </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"> + <el-table + :data="tableData" + style="width: 100%;margin-bottom: 10px;" + height="200px"> + <el-table-column + prop="value0" + label="鏂囦欢缂栫爜" + width="180"> + </el-table-column> + <el-table-column + prop="value1" + label="NO:" + width="180"> + </el-table-column> + <el-table-column + prop="value2" + label="褰曞叆鏃ユ湡"> + </el-table-column> + <el-table-column + prop="value3" + label="褰曞叆浜�"> + </el-table-column> + <el-table-column + prop="value4" + label="鏇存柊浜�"> + </el-table-column> + <el-table-column + prop="value5" + label="鏇存柊鏃堕棿"> + </el-table-column> + </el-table> + <ValueTable ref="ValueTable" :url="$api.unPass.pageInsUnPass" :componentData="componentData" + :key="upIndex" style="height: 400px;" /> + </div> + </div> + <el-dialog title="鏄庣粏鏂板" :visible.sync="addDetailVisible" width="400px"> + <div class="body" style="max-height: 60vh;"> + <el-row> + <el-col class="search_thing" :span="22"> + <div class="search_label"><span class="required-span">* </span>鍚嶇О锛�</div> + <div class="search_input"> + <el-input v-model="form.value0" size="small" placeholder="璇疯緭鍏�"></el-input> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label"><span class="required-span">* </span>浣撶Н锛�</div> + <div class="search_input"> + <el-input v-model="form.value1" size="small" placeholder="璇疯緭鍏�"></el-input> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label">閫佸鐞嗘棩鏈燂細</div> + <div class="search_input"> + <el-date-picker + v-model="form.value2" + type="date" + size="small" + format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="閫夋嫨鏃ユ湡" + style="width: 100%;"> + </el-date-picker> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label">绉讳氦浜猴細</div> + <div class="search_input"> + <el-select v-model="form.value3" placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option + v-for="item in personList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label">鎺ユ敹浜猴細</div> + <div class="search_input"> + <el-select v-model="form.value3" placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option + v-for="item in personList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label">鎺ユ敹鍗曚綅锛�</div> + <div class="search_input"> + <el-select v-model="form.value3" placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option + v-for="item in compList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </el-col> + </el-row> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="noDialogVisible=false,tell=''">鍙� 娑�</el-button> + <el-button type="primary" @click="addDetail" :loading="addDetailLoading">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + </div> +</template> + +<script> + import ValueTable from '../tool/value-table.vue' +export default { + components: { + ValueTable, + }, + data() { + return { + componentData: { + entity: { + sample: null, + model: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [ + { + id: 'update', + font: '缂栬緫', + type: 'text', + method: 'doDiy', + field:['createUserName','updateUserName'] + },{ + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy' + } + ], + tagField: [], + selectField: [], + requiredAdd: ['model','sample',], + requiredUp: [] + }, + tableData:[], + entityCopy: {}, + upIndex: 0, + stateList: [], + addPower:true, + addDetailLoading:false, + addDetailVisible:false, + form:{}, + personList:[], + compList:[] + } + }, + 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++ + }, + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + }, + openAddDetail(){ + this.form = {} + this.addDetailVisible = true + }, + addDetail(){ + if(!this.form.value0){ + this.$message.error('璇疯緭鍏ュ悕绉�') + return + } + if(!this.form.value0){ + this.$message.error('浣撶Н') + return + } + this.addDetailLoading = true + } + } +} +</script> diff --git a/src/components/view/person-manage.vue b/src/components/view/person-manage.vue index 57075db..5c39a75 100644 --- a/src/components/view/person-manage.vue +++ b/src/components/view/person-manage.vue @@ -289,7 +289,7 @@ type: 'text', method: 'doDiy', field: ['roleName', '瑙掕壊=roleId', '瀵嗙爜=password', - '濮撳悕EN=nameEn', '骞撮緞=age', '閭=email', '鍗曚綅=company', '绛惧悕=pictureUrl', '涓汉鐓х墖=signatureUrl' + '濮撳悕EN=nameEn', '骞撮緞=age', '閭=email', '鍗曚綅=company', '绛惧悕=signatureUrl', '涓汉鐓х墖=pictureUrl' ] }], tagField: { diff --git a/src/main.js b/src/main.js index 72b15e5..18e552a 100644 --- a/src/main.js +++ b/src/main.js @@ -68,7 +68,11 @@ axios.interceptors.response.use(res => { if(res.data.code === 201){ - Message.error(res.data.message) + Message({ + type: 'error', + dangerouslyUseHTMLString: true, + message: `${res.data.message}` + }) } return res.data }, async function(err) { diff --git a/src/util/file.js b/src/util/file.js index 3757902..c3a3e7b 100644 --- a/src/util/file.js +++ b/src/util/file.js @@ -38,4 +38,24 @@ }) return await xhrPromise }, + downloadIamge(imgsrc, name) {//涓嬭浇鍥剧墖鍦板潃鍜屽浘鐗囧悕 + var image = new Image(); + // 瑙e喅璺ㄥ煙 Canvas 姹℃煋闂 + image.setAttribute("crossOrigin", "anonymous"); + image.onload = function() { + var canvas = document.createElement("canvas"); + canvas.width = image.width; + canvas.height = image.height; + var context = canvas.getContext("2d"); + context.drawImage(image, 0, 0, image.width, image.height); + var url = canvas.toDataURL("image/png"); //寰楀埌鍥剧墖鐨刡ase64缂栫爜鏁版嵁 + + var a = document.createElement("a"); // 鐢熸垚涓�涓猘鍏冪礌 + var event = new MouseEvent("click"); // 鍒涘缓涓�涓崟鍑讳簨浠� + a.download = name || "photo"; // 璁剧疆鍥剧墖鍚嶇О + a.href = url; // 灏嗙敓鎴愮殑URL璁剧疆涓篴.href灞炴�� + a.dispatchEvent(event); // 瑙﹀彂a鐨勫崟鍑讳簨浠� + }; + image.src = imgsrc; + } }; diff --git a/src/view/notice.vue b/src/view/notice.vue index c4beade..00bc85e 100644 --- a/src/view/notice.vue +++ b/src/view/notice.vue @@ -11,9 +11,9 @@ class="notice-content-item" v-for="(m,i) in list" :key="i" - :class="{readStyle:!m.viewStatus}" + :class="{readStyle:m.viewStatus}" @click="goNoticeDetail(m)"> - <img :src="`../../static/img/notice-${m.viewStatus?0:1}-${m.messageType}.svg`" alt="" style="margin-right: 6px;"> + <img :src="`../../static/img/notice-${m.viewStatus?1:0}-${m.messageType}.svg`" alt="" style="margin-right: 6px;"> <div class="notice-content-item-left"> <p>{{ m.theme }}</p> <p style="width: 100%;display: flex;align-items: center;justify-content: space-between;"> diff --git a/static/js/menu.js b/static/js/menu.js index 9c1cba6..024fc74 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -368,7 +368,7 @@ }, { v: "澶栨潵浜哄憳绠$悊", i: "font icon-erjidaohang", - u: "", + u: "a6-external-personnel-management", g: "6.3 璁炬柦鍜岀幆澧冩潯浠�", p: "" }, { @@ -404,7 +404,7 @@ }, { v: "搴熺墿澶勭悊浜ゆ帴璁板綍", i: "font icon-erjidaohang", - u: "", + u: "a6-waste-handover", g: "6.3 璁炬柦鍜岀幆澧冩潯浠�", p: "" }, { @@ -500,7 +500,7 @@ }, { v: "鏍囧噯鐗╄川娓呭崟", i: "font icon-erjidaohang", - u: "", + u: "a6-standard-material-list", g: "6.5 璁¢噺婧簮鎬�", p: "" }, { -- Gitblit v1.9.3