From 17f0e644be8c98b547f6994a7e827d328e7b532e Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期四, 11 一月 2024 17:28:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/equipment/equipment/index.vue | 4 src/views/quality/packageinspect/packageInspect-form.vue | 74 ++ vue.config.js | 6 src/api/quality/packageInspectTemp.js | 68 +++ src/views/technology/routing/routing-form.vue | 12 src/views/common/processinspect-part.vue | 258 ++++++++++++ src/views/plan/manufacturingorder/productorder-form.vue | 118 +++++ src/views/quality/Packaging_ledger/index.vue | 150 +++--- src/views/quality/processInspect/processInspect-form.vue | 19 src/views/plan/productionschedul/index.vue | 62 +- src/views/quality/packageInspectTemplate/inspect-detail.vue | 256 ++++++++++++ src/api/plan/manufacturingorder.js | 9 src/views/quality/packageInspectTemplate/index.vue | 211 ++++++++++ 13 files changed, 1,104 insertions(+), 143 deletions(-) diff --git a/src/api/plan/manufacturingorder.js b/src/api/plan/manufacturingorder.js index e9b8d5d..ffa8ee1 100644 --- a/src/api/plan/manufacturingorder.js +++ b/src/api/plan/manufacturingorder.js @@ -24,6 +24,15 @@ data: obj }) } + +export function changeOrder(obj) { + return request({ + url: '/mes/plan/manufacturingOrder/changeOrder', + method: 'post', + data: obj + }) +} + export function refreshIfsOrderNo(obj) { return request({ url: '/mes/plan/manufacturingOrder/refreshIfsOrderNo', diff --git a/src/api/quality/packageInspectTemp.js b/src/api/quality/packageInspectTemp.js new file mode 100644 index 0000000..ebed63a --- /dev/null +++ b/src/api/quality/packageInspectTemp.js @@ -0,0 +1,68 @@ +import request from '@/router/axios' + +export function getList(query){ + return request({ + url: '/mes/qualityPackageInspectTemp/page', + method: 'get', + params: query + }) +} + +export function getInspectList(id){ + return request({ + url: '/mes/qualityPackageInspectTemp/pageInspect/'+id, + method: 'get', + }) +} + +export function getAllTemplateByEnable(){ + return request({ + url: '/mes/qualityPackageInspectTemp/getAllTemplateByEnable', + method: 'get', + }) +} + +export function addTemplate(data){ + return request({ + url: '/mes/qualityPackageInspectTemp/addTemplate', + method: 'post', + params: data + }) +} + +export function updateTemplate(data){ + return request({ + url: '/mes/qualityPackageInspectTemp/updateTemplate', + method: 'post', + params: data + }) +} +export function addInspect(data){ + return request({ + url: '/mes/qualityPackageInspectTemp/addInspect', + method: 'post', + params: data + }) +} + +export function updateInspect(data){ + return request({ + url: '/mes/qualityPackageInspectTemp/updateInspect', + method: 'post', + params: data + }) +} + +export function delTemplate(id){ + return request({ + url: '/mes/qualityPackageInspectTemp/deleteTemplate/'+id, + method: 'post', + }) +} + +export function deleteInspect(id){ + return request({ + url: '/mes/qualityPackageInspectTemp/deleteInspect/'+id, + method: 'post', + }) +} diff --git a/src/views/common/processinspect-part.vue b/src/views/common/processinspect-part.vue new file mode 100644 index 0000000..f7f7ade --- /dev/null +++ b/src/views/common/processinspect-part.vue @@ -0,0 +1,258 @@ +<template> + <div class="body"> + <el-dialog + v-diadrag + width="60%" + title="鎶ユ淇℃伅" + top="5vh" + :visible.sync="innerVisible" + append-to-body + @close="$emit('update:currshowlist', false)" + :show="currshowlist" + class="part-dialog" + id="rawMaterial-part-dialog" + > + <ttable + :table="table" + @handleSelectionChange="handleSelectionChange" + @currentChange="handleCurrentChange" + :uploadInfo="uploadInfo" + :prelang="prelang" + :options="options" + :bottomOffset="150" + :ajaxFun="ajaxFun" + :paramObj="paramObj" + :isShowPagination="false" + ref="rawPartTable" + > + <template #toolbar></template> + </ttable> + + <div slot="footer" class="dialog-footer"> + <el-button @click="innerVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveSelectRow">纭� 瀹�</el-button> + </div> + </el-dialog> + </div> + </template> + <script> + import ttable from '@/views/common/ztt-table' + import { chooseIFS } from '@/api/quality/rawMaterial' + export default { + props: { + currshowlist: { + type: Boolean, + default: false + }, + paramObj: { + type: Object, + default: () => { + return {} + } + }, + multiSelect: { + type: Boolean, + default: false + }, + parentSelectedObj: { + type: Object, + default: null + }, + parentSelectedIndex: { + type: Number, + default: null + } + }, + data() { + return { + ajaxFun: chooseIFS, + innerVisible: false, + currentRow: null, + multipleSelection: [], + uploadInfo: { + // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl + isShow: false, + url: '' + }, + prelang: 'operation', + options: { + height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾 + stripe: true, // 鏄惁涓烘枒椹汗 table + highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈 + border: true, // 鏄惁鏈夌旱鍚戣竟妗� + lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 + fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� + multiSelect: false, // + seqNo: true, + isGeneralSearch: false, + isRefresh: false, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 + isShowHide: false, // 鏄惁鏄剧ず鏄惧奖鎸夐挳 + isSearch: false, // 楂樼骇鏌ヨ鎸夐挳 + defaultOrderBy: { column: 'formTime', direction: 'desc' } + }, + table: { + total: 0, + currentPage: 1, + pageSize: 20, + data: [], + // 鏍囬 + column: [ + { + minWidth: '100', + prop: 'message', + label: 'message', + isTrue: false, + }, + { + minWidth: '100', + prop: 'code', + label: '闆朵欢鍙�', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'projectName', + label: '椤圭洰鍚嶇О', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '100', + prop: 'name', + label: '鍘熸潗鏂欏悕绉�', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '100', + prop: 'formTime', + label: '鏉ユ枡鏃ユ湡', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '100', + prop: 'specs', + label: '瑙勬牸鍨嬪彿', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '100', + prop: 'unit', + label: '鍗曚綅', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '100', + prop: 'supplier', + label: '渚涘簲鍟�', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '100', + prop: 'number', + label: '鏁伴噺', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + ], + }, + } + }, + components: { + ttable + }, + created(){ + + }, + mounted() { + console.log(this.currshowlist,"寮�"); + }, + // props:['currentRow'], + methods: { + getData() { + if (this.$refs.rawPartTable !== undefined) { + this.$refs.rawPartTable.getDataList() + } + }, + saveSelectRow() { + if (this.multiSelect) { + this.$emit('handleSelectionChange', this.multipleSelection) + } else { + this.$emit( + 'listenToPartEvent', + this.currentRow, + this.parentSelectedObj, + this.parentSelectedIndex + ) + } + this.innerVisible = false + this.$parent.costPlannedAmountChange(this.currentRow) + }, + handleCurrentChange(row) { + this.currentRow = row + }, + handleSelectionChange(val) { + // 澶氳閫変腑 + this.multipleSelection = val + }, + }, + watch: { + currshowlist() { + console.log(this.currshowlist,"寮�锛�"); + this.innerVisible = this.currshowlist + if (this.currshowlist) { + this.$nextTick(() => { + // this.table.data=[] + this.getData() + }) + } + } + }, + } + </script> + <style> + .part-dialog .el-dialog__header { + padding: 10px 20px 10px; + } + .part-dialog .el-dialog__header .el-dialog__headerbtn { + top: 10px; + } + .part-dialog .el-dialog__body { + padding: 5px 20px; + } + + .part-dialog .el-dialog__footer { + padding: 5px 20px 10px; + } + + .part-dialog .el-dialog__body .avue-crud__pagination { + margin-top: 0px; + margin-bottom: 5px; + } + /* @media screen and (max-width: 800px) { + .el-dialog { + height: 600px !important; + } + } */ + </style> + \ No newline at end of file diff --git a/src/views/equipment/equipment/index.vue b/src/views/equipment/equipment/index.vue index 20afc4b..f795fdf 100644 --- a/src/views/equipment/equipment/index.vue +++ b/src/views/equipment/equipment/index.vue @@ -306,7 +306,7 @@ printable: 'printRaw',//椤甸潰 type: "html",//鏂囨。绫诲瀷 maxWidth:450, - targetStyles:['*'], + targetStyles:['*'], style: `@page { margin:0; padding: 0; @@ -329,7 +329,7 @@ pullEquipFun(){ this.table.toolbar.find((e) => e.text === '鍚屾').loading = true pullEquip().then(res=>{ - this.$message.success(res.data.data.msg) + this.$message.success(res.data.msg) this.table.toolbar.find((e) => e.text === '鍚屾').loading = false }).catch(error=>{ this.$message.error("鍚屾澶辫触",error) diff --git a/src/views/plan/manufacturingorder/productorder-form.vue b/src/views/plan/manufacturingorder/productorder-form.vue index 081be95..0fb9e74 100644 --- a/src/views/plan/manufacturingorder/productorder-form.vue +++ b/src/views/plan/manufacturingorder/productorder-form.vue @@ -265,11 +265,22 @@ </el-form-item> </el-col> </el-row> - <el-row> <el-col :span="24" class="productorder-operates-col"> - <el-card class="productorder-operates"> - <el-table + <el-card class="productorder-operates" > + <el-row> + <el-col :span="2" class="frame1">搴忓彿 + </el-col> + <el-col :span="4" class="frame1">宸ュ簭鍙� + </el-col> + <el-col :span="5" class="frame1">宸ュ簭鎻忚堪 + </el-col> + <el-col :span="9" class="frame1">闆朵欢 + </el-col> + <el-col :span="3" class="frame1">鎿嶄綔 + </el-col> + </el-row> + <!-- <el-table ref="operationTable" :data="operations" style="width: 100%;" @@ -317,10 +328,56 @@ </el-button> </template> </el-table-column> - </el-table> + </el-table> --> + <zttdraggable + :forceFallback="true" + :list="operations" + :animation="200" + fallbackClass="fallbackStyle" + ghostClass="item_ghost" + @end="dragEnd" + > + <div + :class="{ dragItem: true, active: x.active }" + v-for="(x, i) in operations" + :key="i" + > + <!-- <div class="dragBody"> + <div class="info">{{ x.operationNo }}</div> + <div class="info">{{ x.operationName }}</div> + <div class="info">{{ x.partName }}</div> + </div> --> + <el-row> + <el-col :span="2" class="frame">{{ i+1 }} + </el-col> + <el-col :span="4" class="frame">{{ x.operationNo }} + </el-col> + <el-col :span="5" class="frame">{{ x.operationName }} + </el-col> + <el-col :span="9" class="frame">{{ x.partName }} + </el-col> + <el-col :span="3" class="frame"> + <el-button + type="text" + size="mini" + @click="openOrderOperation(x)" + >缂栬緫 + </el-button> + </el-col> + </el-row> + </div> + </zttdraggable> </el-card> </el-col> </el-row> + + + + + + + + </el-col> <el-col :span="16"> <el-tabs type="card" ref="paramTabs"> @@ -926,7 +983,27 @@ /> </div> </template> -<style> +<style lang="scss"> +.frame{ + display: flex; + justify-content: center; + align-items: center; + height: 100px; + // border-width: 1px; + // border-color: rgb(129, 129, 129); + // border-style: solid; + font-size: 15px; +} +.frame1{ + display: flex; + justify-content: center; + align-items: center; + height: 50px; + // border-width: 1px; + // border-color: rgb(129, 129, 129); + // border-style: solid; + font-size: 15px; +} .productorder-basic { background-color: #fff; height: 150px; @@ -965,6 +1042,7 @@ .productorder-operates { height: 605px; border: 1px solid #ddd; + overflow: auto; } .productorder-params-template { @@ -1016,7 +1094,8 @@ addRoutingTemplateParamLedForOrder, updateMoBom, delMoBom, - bomSelectChange + bomSelectChange, + changeOrder, } from '@/api/plan/manufacturingorder' import { qryMoSamplingRule, delMoSamplingRule } from '@/api/plan/mosamplingrule' import { @@ -1046,7 +1125,7 @@ import spotCheckRule from './orderSpotCheckRule' import spotCheckRuleEdit from './orderSpotCheckRuleEdit' import { mapGetters } from 'vuex' - +import zttdraggable from 'vuedraggable' export default { components: { CustomerOrder, @@ -1062,7 +1141,8 @@ operationDialog, insertOperationDialog, spotCheckRule, - spotCheckRuleEdit + spotCheckRuleEdit, + zttdraggable }, data() { @@ -1332,6 +1412,28 @@ } }, methods: { + dragEnd(e){ + this.operations.forEach((e, i) => { + e.index = i + 1 + e.operationOrder = i+1 + }) + console.log(this.operations,"鎷栨嫿缁撴潫kk"); + this.dragEndstart() + }, + dragEndstart(){ + let data = this.operations.map(el =>{ + return { + id:el.id, + operationOrder:el.operationOrder, + } + }) + console.log(data,"id"); + changeOrder(data).then((res) =>{ + console.log(res,"鍥炶皟"); + }).catch(error => { + console.error(error) + }); + }, getSysParam(paramKey) { getSysParam(paramKey).then((response) => { var paramVal = response.data.data diff --git a/src/views/plan/productionschedul/index.vue b/src/views/plan/productionschedul/index.vue index e762066..4f05a4f 100644 --- a/src/views/plan/productionschedul/index.vue +++ b/src/views/plan/productionschedul/index.vue @@ -10,37 +10,37 @@ <div> <el-button @click="tagFinished" size="mini" round type="success">鏍囪宸插畬鎴�</el-button> <el-button size="mini" round type="primary" - v-if="permissions.plan_productionschedul_edit_line" + v-if="permissions.plan_productionschedul_edit_line" @click="openEditDialog">缂栬緫鏃堕棿绾�</el-button> <el-tooltip content="鍒锋柊"> <el-button circle icon="el-icon-refresh" @click="getDataList"></el-button> </el-tooltip> </div> </div> - <avue-crud + <avue-crud class="unfinished-crud" - :data="tableData" - ref="crud" - :option="option" - :span-method="spanMethod" + :data="tableData" + ref="crud" + :option="option" + :span-method="spanMethod" @refresh-change="getDataList" @current-change="handleCurrentChange" @size-change="handleSizeChange" - :page="page" + :page="page" @selection-change="selectionRow" :table-loading="loading"> <template #menu="{ row, index }"> - <el-button - v-if="permissions.plan_productionschedul_edit" - type="text" - icon="el-icon-edit" - size="small" + <el-button + v-if="permissions.plan_productionschedul_edit" + type="text" + icon="el-icon-edit" + size="small" @click="editHandle(row, index)">缂栬緫</el-button> - <el-button - v-if="permissions.plan_productionschedul_del" - type="text" - icon="el-icon-delete" - size="small" + <el-button + v-if="permissions.plan_productionschedul_del" + type="text" + icon="el-icon-delete" + size="small" @click="deleteHandle(row, index)">鍒犻櫎</el-button> </template> </avue-crud> @@ -51,23 +51,23 @@ <div style="display:flex;height:36px;justify-content: space-between;align-items:center;"> <div><span style="color:#34BD66;font-weight: bold;">宸插畬鎴�</span></div> </div> - <avue-crud + <avue-crud class="finished-crud" - :data="finishedTableData" - ref="finished" - :option="finishedOption" - :span-method="spanMethod" + :data="finishedTableData" + ref="finished" + :option="finishedOption" + :span-method="spanMethod" @refresh-change="getFinishedData" @current-change="handleCurrentChange" @size-change="handleSizeChange" - :page="finishedPage" + :page="finishedPage" @selection-change="selectionFinishedRow"> <!-- <template #menu="{ row, index }"> - <el-button - v-if="permissions.plan_productionschedul_del" - type="text" - icon="el-icon-delete" - size="small" + <el-button + v-if="permissions.plan_productionschedul_del" + type="text" + icon="el-icon-delete" + size="small" @click="deleteHandle(row, index)">鍒犻櫎</el-button> </template> --> </avue-crud> @@ -129,7 +129,7 @@ style="width:100%" v-model="item.planTime" value-format="yyyy-MM-dd HH:mm:ss" - type="datetime" + type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿"> </el-date-picker> </el-col> @@ -143,7 +143,7 @@ style="width:100%" v-model="item.actualTime" value-format="yyyy-MM-dd HH:mm:ss" - type="datetime" + type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿"> </el-date-picker> </el-col> @@ -454,7 +454,7 @@ }, { prop: 'contractNo', span: [] - }, + }, { prop: 'orderTime', span: [] diff --git a/src/views/quality/Packaging_ledger/index.vue b/src/views/quality/Packaging_ledger/index.vue index 2230d2d..9427849 100644 --- a/src/views/quality/Packaging_ledger/index.vue +++ b/src/views/quality/Packaging_ledger/index.vue @@ -33,7 +33,7 @@ </el-col> <el-col :span="2"> <el-button - v-if="permissions.quality_packaging_ledger_info_save" + v-if="!isCheck && permissions.quality_packaging_ledger_info_add" style="float: right; padding: 3px 0" type="text" @click="addpreserve" @@ -52,75 +52,75 @@ </el-row> </div> <el-table - :data="testStandardParams" - id="testStandardParamTable" - ref="testStandardParam" + :data="testStandardParams" + id="testStandardParamTable" + ref="testStandardParam" - highlight-current-row - height="700" - style="width: 100%" - class="l-mes-table" - border - stripe - > - <el-table-column - type ="index" - label="搴忓彿" - align="center" - width="50" - /> - <el-table-column - label="浜у搧" - prop="product" - show-overflow-tooltip - align="center" - /> - <el-table-column - label="浜у搧缂栧彿" - prop="productNo" - show-overflow-tooltip - align="center" - > - </el-table-column> - <el-table-column - label="鎵规鍙�" - prop="outBatchNo" - show-overflow-tooltip - align="center" - > - </el-table-column> - <el-table-column - label="瑙勬牸鍨嬪彿" - prop="specs" - show-overflow-tooltip - align="center" - > - </el-table-column> - <el-table-column - label="鍗曚綅" - prop="unit" - show-overflow-tooltip - align="center" - > - </el-table-column> - <el-table-column - label="鏁伴噺" - prop="number" - align="center" - show-overflow-tooltip - width="80" - ></el-table-column> - <el-table-column - v-if="permissions.quality_packaging_ledger_info_operate" - fixed="right" - label="鎿嶄綔" - align="center" - width="80"> - <template slot-scope="scope"> - <el-button type="text" @click="deleteadd(scope.row)" icon="el-icon-delete" size="small">鍒犻櫎</el-button> - </template> - </el-table-column> - </el-table> + highlight-current-row + height="700" + style="width: 100%" + class="l-mes-table" + border + stripe + > + <el-table-column + type ="index" + label="搴忓彿" + align="center" + width="50" + /> + <el-table-column + label="浜у搧" + prop="product" + show-overflow-tooltip + align="center" + /> + <el-table-column + label="浜у搧缂栧彿" + prop="productNo" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鎵规鍙�" + prop="outBatchNo" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="瑙勬牸鍨嬪彿" + prop="specs" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鍗曚綅" + prop="unit" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鏁伴噺" + prop="number" + align="center" + show-overflow-tooltip + width="80" + ></el-table-column> + <el-table-column + v-if="permissions.quality_packaging_ledger_info_operate" + fixed="right" + label="鎿嶄綔" + align="center" + width="80"> + <template slot-scope="scope"> + <el-button type="text" @click="deleteadd(scope.row)" icon="el-icon-delete" size="small">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> </el-card> </el-col> </el-row> @@ -184,6 +184,7 @@ isCheck: false, dataway:{}, goid:'', + datalist:[], testStandardParams: [], packageBoxId:{}, prelang: 'operation', @@ -435,18 +436,21 @@ } }, preserve(datalist){ - this.testStandardParams = datalist + this.testStandardParams = this.testStandardParams.concat(datalist); + console.log(this.testStandardParams,"---------start"); + this.datalist = datalist }, //鍙宠竟淇濆瓨 addpreserve(){ - this.testStandardParams.forEach(el => { + this.datalist.forEach(el => { el.packageBoxId =this.goid }); - console.log(this.testStandardParams); + console.log(this.datalist); // return - saveList(this.testStandardParams).then((res) =>{ + saveList(this.datalist).then((res) =>{ if(res.status===200){ this.$message.success('淇濆瓨鎴愬姛') + this.datalist = null this.rightquery() } }).catch(error=>{ diff --git a/src/views/quality/packageInspectTemplate/index.vue b/src/views/quality/packageInspectTemplate/index.vue new file mode 100644 index 0000000..b562360 --- /dev/null +++ b/src/views/quality/packageInspectTemplate/index.vue @@ -0,0 +1,211 @@ +<template> + <div> + <basic-container> + <avue-crud + :data="list" + style="width:98%" + :option="option" + :page="page" + @row-save="saveTemplate" + @current-change="currentChange" + @size-change="sizeChange"> + <template slot="state" slot-scope="scope"> + <el-tag :type="scope.row.state ? 'success':'danger'">{{scope.row.state ? '鍚敤':'绂佺敤'}}</el-tag> + </template> + <template slot="stateForm" slot-scope="scope"> + <el-switch + v-model="scope.row.state" + active-color="#13ce66" + :active-value="true" + :inactive-value="false"> + </el-switch> + </template> + <template #menu="{size,row,index}"> + <el-button class="menu-button" :size="size" @click="showInspectDialog(size,row,index)" type="text" icon="el-icon-set-up">妫�楠岄」</el-button> + <el-button class="menu-button" :size="size" @click="updateTemplate(size,row,index)" type="text" icon="el-icon-edit">缂栬緫</el-button> + <el-button class="menu-button" :size="size" @click="deleteTemplate(size,row,index)" type="text" icon="el-icon-delete">鍒犻櫎</el-button> + </template> + </avue-crud> + </basic-container> + <el-dialog + title="缂栬緫妯℃澘淇℃伅" + :visible.sync="updateDialog" + width="40%"> + <el-form :model="updateData" label-width="100px" :inline="true" + label-position="right" ref="updateTemplate" :rules="updateRules"> + <el-form-item label="妯℃澘鍚嶇О" prop="templateName"> + <el-input v-model="updateData.templateName" placeholder="璇疯緭鍏ユā鏉垮悕绉�"></el-input> + </el-form-item> + <el-form-item label="鏄惁鍚敤" prop="state"> + <el-switch + v-model="updateData.state" + active-color="#13ce66" + :active-value="true" + :inactive-value="false"> + </el-switch> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" icon="el-icon-circle-plus-outline" @click="confirmUpdate">淇� 瀛�</el-button> + <el-button icon="el-icon-remove-outline" @click="updateDialog = false">鍙� 娑�</el-button> + </span> + </el-dialog> + <inspectDetail v-if="isShow" :paramObj="paramObj" :currshowlist.sync="showDetail"></inspectDetail> + </div> +</template> +<script> +import inspectDetail from './inspect-detail' +import {getList,addTemplate,updateTemplate,delTemplate} from '@/api/quality/packageInspectTemp' +export default { + data(){ + return { + isShow: false, + paramObj:{ + id: null, + }, + showDetail: false, + updateData:{ + templateName: null, + state: null, + }, + updateRules:{ + templateName:[{required:true,message:'璇疯緭鍏ユā鏉垮悕绉�',trigger:'blur'}] + }, + updateDialog: false, + list: [], + page:{ + currentPage: 1, + pageSize: 20, + total: 0 + }, + option: { + dialogWidth: '40%', + menu: true, + addBtn: true, + editBtn: false, + delBtn: false, + border: true, + index: true, + height: 400, + indexLabel: '搴忓彿', + align: 'center', + refreshBtn: false, + columnBtn: false, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H + headerAlign: 'center', + column: [{ + label: '妯℃澘鍚嶇О', + prop: 'templateName', + overHidden: true, + rules:[{required:true,message:'妯℃澘鍚嶇О涓嶈兘涓虹┖',trigger:'blur'}] + }, { + label: '鏄惁鍚敤', + prop: 'state', + overHidden: true, + slot: true, + formslot: true, + value: true, + }] + } + } + }, + created(){ + this.getDataList() + }, + components:{ + inspectDetail + }, + methods:{ + deleteTemplate(size,row,index){ + const _than = this + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユā鏉�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + delTemplate(row.id).then(res=>{ + if(res.status===200){ + _than.$message.success("鍒犻櫎鎴愬姛") + _than.getDataList() + } + }).catch(error=>{ + console.error(error) + }) + }).catch(() => {}); + }, + showInspectDialog(size,row,index){ + this.paramObj.id = row.id + this.isShow = true + this.$nextTick(()=>{ + this.showDetail = true + }) + }, + updateTemplate(size,row,index){ + console.log(row); + this.updateData = JSON.parse(JSON.stringify(row)) + this.updateDialog =true + }, + confirmUpdate(){ + const _than = this + this.$refs.updateTemplate.validate(valid=>{ + if(valid){ + let data = { + id:this.updateData.id, + templateName:this.updateData.templateName, + state:this.updateData.state + } + updateTemplate(data).then(res=>{ + if(res.status===200){ + _than.$message.success("鏇存柊鎴愬姛") + _than.getDataList() + _than.updateDialog = false + } + }).catch(error=>{ + console.error(error) + }) + } + }) + }, + saveTemplate(row, done, loading){ + addTemplate(row).then(res=>{ + if(res.status===200){ + this.$message.success("娣诲姞鎴愬姛") + this.getDataList() + } + }).catch(error=>{ + console.error(error) + }) + setTimeout(()=>{ + done() + },1000) + }, + sizeChange(pageSize) { + this.page.pageSize = pageSize; + this.getList(); + }, + currentChange(currentPage) { + this.page.currentPage = currentPage; + this.getList(); + }, + getDataList() { + getList({ + current: this.page.currentPage, + size: this.page.pageSize, + templateType: '0' + }).then(res=>{ + if(res.status===200){ + this.list = res.data.data.records + this.page.total = res.data.data.total + } + }).catch(error=>{ + console.error(error) + }) + }, + } +} +</script> + +<style scoped> +.menu-button{ + margin: 0px 5px; +} +</style> diff --git a/src/views/quality/packageInspectTemplate/inspect-detail.vue b/src/views/quality/packageInspectTemplate/inspect-detail.vue new file mode 100644 index 0000000..1e9988a --- /dev/null +++ b/src/views/quality/packageInspectTemplate/inspect-detail.vue @@ -0,0 +1,256 @@ +<template> + <div> + <el-dialog + title="妫�楠岄」绠$悊" + top="5vh" + :visible.sync="inspectDialog" + @close="$emit('update:currshowlist', false)" + :show="currshowlist" + width="80%"> + <avue-crud + ref="inspectDetail" + :data="dataList" + :option="option" + @row-save="addInspectHandler" + @row-del="delInspectHandler" + :page="page"> + <template #menu="{size,row,index}"> + <el-button v-if="row.children!=null" class="menu-button" :size="size" @click="addChildren(size,row,index)" type="text" icon="el-icon-circle-plus-outline">娣诲姞瀛愰」鐩�</el-button> + <el-button v-if="row.children==null" class="menu-button" :size="size" @click="showUpdateDialog(size,row,index)" type="text" icon="el-icon-edit">缂栬緫</el-button> + <el-button v-if="row.children==null" class="menu-button" :size="size" @click="delInspectHandler(size,row,index)" type="text" icon="el-icon-delete">鍒犻櫎</el-button> + </template> + </avue-crud> + </el-dialog> + <el-dialog + title="缂栬緫" + :visible.sync="updateVisible" + width="50%"> + <el-form :model="editForm" label-position="right" label-width="100px" ref="editForm"> + <el-form-item label="妫�楠岄」" prop="inspectName" :rules="{required:true,message:'妫�楠岄」涓嶈兘涓虹┖',trigger:'blur'}"> + <el-input + disabled + placeholder="璇疯緭鍏ユ楠岄」鐩悕绉�" + type="textarea" + v-model="editForm.inspectName" + :rows="2" /> + </el-form-item> + <el-form-item label="妫�楠屾爣鍑�" prop="inspectRequired" :rules="{required:true,message:'妫�楠屾爣鍑嗕笉鑳戒负绌�',trigger:'blur'}"> + <el-input + placeholder="璇疯緭鍏ユ楠屾爣鍑�" + type="textarea" + v-model="editForm.inspectRequired" + :rows="2" /> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="updateVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="updateInspectHandler">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog + title="娣诲姞瀛愰」鐩�" + :visible.sync="addChildrenVisible" + width="50%"> + <el-form :model="addChildrenForm" label-position="right" + label-width="100px" ref="addChildrenForm"> + <el-form-item label="妫�楠岄」" prop="inspectName"> + <el-input + placeholder="璇疯緭鍏ユ楠岄」鐩悕绉�" + type="textarea" + disabled + v-model="addChildrenForm.inspectName" + :rows="2" /> + </el-form-item> + <el-form-item label="妫�楠屾爣鍑�" prop="inspectRequired" :rules="{required:true,message:'妫�楠屾爣鍑嗕笉鑳戒负绌�',trigger:'blur'}"> + <el-input + placeholder="璇疯緭鍏ユ楠屾爣鍑�" + type="textarea" + v-model="addChildrenForm.inspectRequired" + :rows="2" /> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="addChildrenVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addInspectHandler">纭� 瀹�</el-button> + </span> + </el-dialog> +</div> +</template> + +<script> +import {getInspectList,addInspect,updateInspect,deleteInspect} from '@/api/quality/packageInspectTemp' +export default { + props: { + currshowlist: { + type: Boolean, + default: false + }, + paramObj: { + type: Object, + default: ()=>{ + return null + } + } + }, + watch: { + updateVisible(newVal){ + if(!newVal){ + this.$refs.editForm.resetFields() + } + }, + addChildrenVisible(newVal){ + if(!newVal){ + this.$refs.addChildrenForm.resetFields() + } + }, + currshowlist() { + this.inspectDialog = this.currshowlist + if (this.currshowlist) { + this.$nextTick(() => { + this.getData() + }) + } + } + }, + data(){ + return { + addChildrenVisible: false, + addChildrenForm: { + inspectName: null, + inspectRequired: null, + }, + editForm: { + inspectName: null, + inspectRequired: null, + }, + updateVisible: false, + inspectDialog: false, + dataList: [], + page:{ + currentPage: 1, + pageSize: 20, + total: 0 + }, + option: { + rowKey: 'id', + rowParentKey: 'id', + defaultExpandAll: true, + dialogWidth: '60%', + menu: true, + addBtn: true, + editBtn: false, + delBtn: false, + border: true, + index: true, + height: 350, + indexLabel: '搴忓彿', + align: 'center', + refreshBtn: false, + columnBtn: false, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H + headerAlign: 'center', + column: [{ + label: '妫�楠岄」', + prop: 'inspectName', + overHidden: true, + formslot: true, + }, { + label: '妫�楠屾爣鍑�', + prop: 'inspectRequired', + overHidden: true, + formslot: true, + }] + }, + } + }, + methods:{ + addChildren(size,row,index){ + console.log(row); + this.addChildrenForm.inspectName = row.inspectName + this.addChildrenVisible = true + }, + delInspectHandler(size,row,index){ + const _than = this + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ楠岄」, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteInspect(row.id).then(res=>{ + if(res.status===200){ + _than.$message.success("鍒犻櫎鎴愬姛") + _than.getData() + } + }).catch(error=>{ + console.error(error) + }) + }).catch(() => {}); + }, + showUpdateDialog(size,row,index){ + this.editForm = { + id: row.id, + inspectName: row.templateName, + inspectRequired: row.inspectRequired + } + this.updateVisible = true + }, + updateInspectHandler(){ + this.$refs.editForm.validate(valid=>{ + if(valid){ + updateInspect(this.editForm).then(res=>{ + if(res.status===200){ + this.$message.success("淇敼鎴愬姛") + this.getData() + this.updateVisible = false + } + }).catch(error=>{ + console.error(error) + }) + } + }) + }, + addInspectHandler(){ + const _than = this + this.$refs.addChildrenForm.validate(valid=>{ + if(valid){ + let obj = { + parentId: this.paramObj.id, + ...this.addChildrenForm + } + addInspect(obj).then(res=>{ + if(res.status===200){ + _than.getData() + _than.$message.success("娣诲姞鎴愬姛") + _than.addChildrenVisible = false + } + }).catch(error=>{ + console.error(error) + }) + } + }) + }, + getData(){ + getInspectList(this.paramObj.id).then(res=>{ + if(res.status===200){ + let dataList = res.data.data.records + dataList.forEach(ele=>{ + ele.id = Math.random() + }) + this.dataList = dataList + this.page.total = res.data.data.total + } + }).catch(error=>{ + console.error(error) + }) + }, + } +} +</script> + +<style scope> +.avue-crud__pagination { + position: relative; + padding: 0px 0 0px 20px; + text-align: right; + z-index: 10; +} +</style> diff --git a/src/views/quality/packageinspect/packageInspect-form.vue b/src/views/quality/packageinspect/packageInspect-form.vue index 5e46efd..5d87540 100644 --- a/src/views/quality/packageinspect/packageInspect-form.vue +++ b/src/views/quality/packageinspect/packageInspect-form.vue @@ -68,11 +68,10 @@ <el-col :span="12" style="text-align: right;"> <el-dropdown @command="handleCommand" v-if="!isShow && resultVal==null"> <el-button size="mini" style="margin-right: 10px;" type="primary" > - 鍒囨崲榛樿妫�楠岄」<i class="el-icon-arrow-down el-icon--right"></i> + 鍒囨崲妫�楠岄」妯℃澘<i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-dropdown-menu slot="dropdown"> - <el-dropdown-item command="1">妫�楠岄」鐩�1</el-dropdown-item> - <el-dropdown-item divided command="2">妫�楠岄」鐩�2</el-dropdown-item> + <el-dropdown-item :key="index" v-for="(item,index) in inspectMoulds" :command="item.father">{{item.father}}</el-dropdown-item> </el-dropdown-menu> </el-dropdown> <el-button v-if="resultVal=='' || resultVal==null" size="mini" @click="clickAddLine()">娣诲姞妫�楠岄」鐩�</el-button> @@ -124,6 +123,7 @@ <el-select style="width:100%" :disabled="resultVal!=null" @change="changeResult" v-model="scope.row.result" v-if="!scope.row.children"> <el-option label="鍚堟牸" value="鍚堟牸"></el-option> <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�"></el-option> + <el-option label="涓嶉�傜敤" value="涓嶉�傜敤"></el-option> </el-select> </template> </el-table-column> @@ -194,6 +194,7 @@ updatePackageInspectById, getCustomer, } from '@/api/quality/packageInspect' +import {getAllTemplateByEnable} from '@/api/quality/packageInspectTemp' import {inspect1,inspect2} from '@/const/defaultPackageInspect' export default { computed:{ @@ -202,6 +203,7 @@ }, data(){ return{ + inspectMoulds: [], isShow: false, submitData: { id:null, @@ -253,7 +255,10 @@ this.resultVal=val } } + this.getAllInspect() this.init() + this.checkShowState() + }, watch:{ dialogVisible(newVal){ @@ -263,15 +268,34 @@ } }, methods:{ + checkShowState(){ + let num = 0 + this.list.forEach(ele=>{ + if(ele.children){ + ele.children.forEach(c=>{ + if(c.pid){ + num++ + } + }) + } + }) + this.isShow = num==0 + }, + getAllInspect(){ + getAllTemplateByEnable().then(res=>{ + if(res.status===200){ + this.inspectMoulds = res.data.data + } + }).catch(error=>{ + console.error(error) + }) + }, handleCommand(command) { - switch(command){ - case "1": - this.init(inspect1) - break; - case "2": - this.init(inspect2) - break; - } + this.inspectMoulds.forEach(ele=>{ + if(ele.father==command){ + this.init(ele.children) + } + }) }, changeResult(){ let result = '' @@ -433,7 +457,27 @@ _than.list = [] let userNameList = [] if(dataList){ - _than.list = JSON.parse(JSON.stringify(dataList)) + let tempList = [] + dataList.forEach(ele=>{ + let obj = { + randomId: Math.random(), + name: ele.inspectName, + children: [] + } + if(ele.children){ + ele.children.forEach(e=>{ + obj.children.push({ + required: e.inspectRequired, + randomId: Math.random(), + isEdit: false, + note: '', + result: '' + }) + }) + } + tempList.push(obj) + }) + _than.list = tempList } data.packageInsProductS.forEach(item => { if (item.children) { @@ -462,9 +506,9 @@ _than.list.push(ele) } }) - let find1 = this.list.find(ele=>ele.name===inspect1[0].name&&ele.isEdit) !=undefined; - let find2 = this.list.find(ele=>ele.name===inspect2[0].name&&ele.isEdit) !=undefined; - this.isShow = find1||find2 + // let find1 = this.list.find(ele=>ele.name===inspect1[0].name&&ele.isEdit) !=undefined; + // let find2 = this.list.find(ele=>ele.name===inspect2[0].name&&ele.isEdit) !=undefined; + // this.isShow = find1||find2 _than.conclusionTable = [{ packageNo: data.packageNo, userName: Array.from(new Set(userNameList)).join(','), diff --git a/src/views/quality/processInspect/processInspect-form.vue b/src/views/quality/processInspect/processInspect-form.vue index 7695830..d0d066d 100644 --- a/src/views/quality/processInspect/processInspect-form.vue +++ b/src/views/quality/processInspect/processInspect-form.vue @@ -27,6 +27,11 @@ <el-form-item label="杞﹂棿璁㈠崟鍙�" prop="moNo"> <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null" v-model="processInspectVo.moNo" placeholder="璇疯緭鍏ヨ溅闂磋鍗曞彿" autocomplete="off" > + <!-- <el-button + slot="append" + icon="el-icon-search" + :disabled="resultVal!=null" + @click="queryCode"></el-button> --> <el-button slot="append" icon="el-icon-full-screen" @@ -251,6 +256,7 @@ <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button> </span> </el-dialog> + <processPart :paramObj="paramObj" :currshowlist.sync="workshop" /> </div> </template> @@ -263,15 +269,17 @@ updateProcessInsProduct, updateProcessInspectsById, } from '@/api/quality/processInspect' +import processPart from '@/views/common/processinspect-part' import { selectDevice } from '@/api/quality/processInspect' import qrCodeApp from '@/views/common/qrCodeApp' import { validatePositiveInteger } from '@/util/validate' export default { components:{ - qrCodeApp + qrCodeApp,processPart }, data() { return { + paramObj:{}, qrcode: false, row: null, proIndex: 0, @@ -291,6 +299,7 @@ resultVal: null, technologyList: [], deviceList: [], + workshop:false,//杞﹂棿寮圭獥 hasChildren: true, optionsSamplename: [], // 娣诲姞鍒� @@ -335,6 +344,14 @@ this.init() }, methods: { + queryCode(){ + console.log("llll"); + this.workshop = true + console.log(this.workshop); + // this.paramObj = { + // code: this.dataForm.code + // } + }, cancelCodeDialog(){ this.qrcode = false }, diff --git a/src/views/technology/routing/routing-form.vue b/src/views/technology/routing/routing-form.vue index 2f5c33a..f467d9f 100644 --- a/src/views/technology/routing/routing-form.vue +++ b/src/views/technology/routing/routing-form.vue @@ -136,16 +136,8 @@ '--dragitemwidth': '250px' }" > - <div - :style="{ - width: 265 * dataForm.operations.length - 15 + 'px' - }" - > - <div - class="dragHead" - v-for="x in dataForm.operations.length" - :key="x" - > + <div :style="{ width: 265 * dataForm.operations.length - 15 + 'px' }"> + <div class="dragHead" v-for="x in dataForm.operations.length" :key="x" > <div class="idx">{{ x }}</div> </div> <zttdraggable diff --git a/vue.config.js b/vue.config.js index b3ee465..bdb8870 100644 --- a/vue.config.js +++ b/vue.config.js @@ -4,10 +4,10 @@ */ -// const url = 'http://192.168.2.7:9999' -//const url = 'https://ztms-mes.chinaztt.cn/' +const url = 'http://192.168.2.7:9999' +// const url = 'https://ztms-mes.chinaztt.cn/' - const url = 'http://localhost:9999' +// const url = 'http://localhost:9999' const localUrl = 'http://localhost:8089' -- Gitblit v1.9.3