From 20cd11a0ef3348a8664dd799da40989c58db7df1 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期三, 19 二月 2025 15:18:13 +0800 Subject: [PATCH] 1.成品下单页面迁移 --- src/api/business/productOrder.js | 83 src/components/Table/lims-table.vue | 10 src/views/business/productOrder/components/printDialog.vue | 352 ++++ package.json | 1 src/views/business/productOrder/components/add.vue | 3195 ++++++++++++++++++++++++++++++++++++ src/views/business/productOrder/index.vue | 1320 +++++++++++++++ src/router/index.js | 17 src/views/business/materialOrder/index.vue | 5 src/views/business/productOrder/components/addInspectionDia.vue | 213 ++ 9 files changed, 5,190 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 01b2967..fb5655f 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", "vue-meta": "2.4.0", + "vue-qr": "^4.0.9", "vue-router": "3.4.9", "vuedraggable": "2.24.3", "vuex": "3.6.0" diff --git a/src/api/business/productOrder.js b/src/api/business/productOrder.js new file mode 100644 index 0000000..674e9c9 --- /dev/null +++ b/src/api/business/productOrder.js @@ -0,0 +1,83 @@ +// 鎴愬搧涓嬪崟椤甸潰鐩稿叧鎺ュ彛 +import request from '@/utils/request' + +// 鏌ヨ鎴愬搧涓嬪崟鍒楄〃 +export function selectInsOrderParameter(query) { + return request({ + url: '/insOrder/selectInsOrderParameter', + method: 'get', + params: query + }) +} +// 淇敼鎴愬搧濮旀墭缂栧彿 +export function updateOrderEntrustCode(query) { + return request({ + url: '/insOrder/updateOrderEntrustCode', + method: 'post', + data: query + }) +} +// 鎴愬搧妫�楠屽崟鍏ㄩ儴淇℃伅瀵煎嚭 +export function rawAllInsOrderExport(query) { + return request({ + url: '/insOrder/rawAllInsOrderExport', + method: 'post', + data: query + }) +} +// 灏嗗緟妫�楠岀殑鐨勬挙閿�杩涜鏇存敼 +export function updateInspected(query) { + return request({ + url: '/insOrder/updateInspected', + method: 'post', + data: query + }) +} +// 鎾ら攢瀹℃牳閫氳繃 +export function checkUpdate(query) { + return request({ + url: '/insOrder/checkUpdate', + method: 'post', + data: query + }) +} +// 鏌ヨ璁㈠崟鎬诲叡棰勮鏃堕棿 +export function selectOrderManDay(query) { + return request({ + url: '/insOrder/selectOrderManDay', + method: 'get', + params: query + }) +} +// 浠诲姟浜ゆ帴 +export function upPlanUser2(query) { + return request({ + url: '/insOrderPlan/upPlanUser2', + method: 'post', + data: query + }) +} +// 妫�楠屼笅鍙� +export function upInsOrder(query) { + return request({ + url: '/insOrder/upInsOrder', + method: 'post', + data: query + }) +} +// 灏嗗緟瀹℃牳鏇存柊鎴愭挙閿�鐘舵�� +export function updateStatus(query) { + return request({ + url: '/insOrder/updateStatus', + method: 'post', + data: query + }) +} +// 灏嗗緟瀹℃牳鏇存柊鎴愭挙閿�鐘舵�� +export function delInsOrder(query) { + return request({ + url: '/insOrder/delInsOrder', + method: 'delete', + data: query + }) +} diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue index c9c9bd5..77fad98 100644 --- a/src/components/Table/lims-table.vue +++ b/src/components/Table/lims-table.vue @@ -43,7 +43,7 @@ show-overflow-tooltip :sortable="item.sortable ? true : false" :type="item.type" - :width="item.width" + :width="item.dataType === 'action'? getWidth(item.operation) : item.width" align="center" > <!-- <div class="123" v-if="item.type == ''"> --> @@ -344,6 +344,14 @@ }, methods: { + getWidth(row) { + let count = 0 + console.log('row---', row) + row.forEach(a => { + count += a.name.length + }) + return count * 15 + 40 + 'px' + }, iconFn(row) { if (row.name === "缂栬緫" || row.name === "淇敼") { return "el-icon-edit"; diff --git a/src/router/index.js b/src/router/index.js index bf11864..0795a32 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -110,6 +110,23 @@ ], }, { + // 鎴愬搧涓嬪崟 + path: "/productOrder", + component: Layout, + hidden: true, + permissions: ["productOrder:order"], + children: [ + { + // 鎴愬搧涓嬪崟璇︽儏 + path: "add", + component: () => + import("@/views/business/productOrder/components/add.vue"), + name: "add", + meta: { title: "鎴愬搧涓嬪崟璇︽儏", activeMenu: "/business/materialOrder" }, + }, + ], + }, + { // 妫�楠屼换鍔� path: "/inspectionTask", component: Layout, diff --git a/src/views/business/materialOrder/index.vue b/src/views/business/materialOrder/index.vue index 9e9601b..44e6eb4 100644 --- a/src/views/business/materialOrder/index.vue +++ b/src/views/business/materialOrder/index.vue @@ -260,7 +260,6 @@ dataType: 'action', fixed: 'right', label: '鎿嶄綔', - width: '170px', operation: [ { name: '涓嬪崟', @@ -330,7 +329,6 @@ dataType: 'action', fixed: 'right', label: '鎿嶄綔', - width: '140px', operation: [ { name: '鏁版嵁鏌ョ湅', @@ -404,7 +402,6 @@ dataType: 'action', fixed: 'right', label: '鎿嶄綔', - width: '420px', operation: [ { name: '瀛e害妫�楠�', @@ -518,7 +515,6 @@ dataType: 'action', fixed: 'right', label: '鎿嶄綔', - width: '140px', operation: [ { name: '鏁版嵁鏌ョ湅', @@ -585,7 +581,6 @@ dataType: 'action', fixed: 'right', label: '鎿嶄綔', - width: '250px', operation: [ { name: '瀛e害妫�楠�', diff --git a/src/views/business/productOrder/components/add.vue b/src/views/business/productOrder/components/add.vue new file mode 100644 index 0000000..ddc6a68 --- /dev/null +++ b/src/views/business/productOrder/components/add.vue @@ -0,0 +1,3195 @@ +<template> + <div class="app-container"> + <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow&&!auxiliaryShow"> + <div style="display: flex;justify-content: space-between;align-items:center;"> + <div> + 濮旀墭鍗曚俊鎭� + </div> + <div> + <el-cascader + v-model="addObj.quarterItemId" + :disabled="active>1" + :options="quarterItemOptions" + size="small" + style="width: 380px" + @change="handleChange" + @focus="getQuarterOnOrder"></el-cascader> + <el-select v-show="active==1" v-model="template" placeholder="涓嬪崟妯℃澘" size="small" + @change="selectInsOrderTemplateById"> + <el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id"> + <span style="float: left">{{ a.name }}</span> + <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" + @click.stop="handleDelete(a)"></i> + </el-option> + </el-select> + <el-button v-show="active==1" size="small" @click="templateDia=true"> + <span style="color: #3A7BFA;">淇濆瓨妯℃澘</span> + </el-button> + <el-button v-if="active==1&&addObj.sampleType!=undefined&&(addObj.sampleType.indexOf('鐢电紗')>-1 ||addObj.sampleType.indexOf('缁煎悎')>-1)" size="small" type="primary" @click="openCableConfig">鐢电紗閰嶇疆</el-button> + <el-button v-if="active==1&&addObj.sampleType!=undefined&&addObj.sampleType.indexOf('鐢电紗')>-1" size="small" type="primary" @click="openAuxiliaryCore">杈呭姪绾胯姱閰嶇疆</el-button> + <el-button v-if="active==1" size="small" type="primary" @click="openEquipConfig">瀛愭牱鍝侀厤缃�</el-button> + <el-button v-if="addObj.sampleType==='鍏夌紗'" size="small" type="primary" @click="openConfig">鍏夌氦閰嶇疆</el-button> + <el-button v-show="active==1||(tabIndex==4&&active==2)" :loading="saveLoad" size="small" type="primary" @click="save">鎻愪氦</el-button> + <!-- 瀹℃牳 --> + <el-button v-show="active==3&&addObj.companyId" :disabled="saveLoad" :loading="saveLoad" size="small" + @click="upInsOrderOfState(2)">涓嶉�氳繃</el-button> + <el-button v-show="active==3&&addObj.companyId" :loading="saveLoad" size="small" type="primary" + @click="upInsOrderOfState(1)">閫氳繃</el-button> + <el-button size="small" @click="$parent.playOrder(0)"> + <span style="color: #3A7BFA;">杩斿洖</span> + </el-button> + </div> + </div> + </div> + <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow&&!auxiliaryShow" class="container"> + <div class="search"> + <el-row> + <el-col :span="6" class="search_thing"> + <div class="search_label">濮旀墭缂栧彿锛�</div> + <div class="search_input"> + <el-input v-model="addObj.entrustCode" disabled placeholder="绯荤粺鐢熸垚" size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>妫�楠岀被鍒細</div> + <div class="search_input"> + <el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> + <el-option v-for="(a, ai) in orderType" :key="ai" :label="a.label" :value="a.value"></el-option> + </el-select> + </div> + </el-col> + <el-col :span="6" class="search_thing" > + <div class="search_label"><span class="required-span">* </span>鍒跺崟浜猴細</div> + <div class="search_input"> + <el-input v-model="addObj.custom" clearable disabled size="small"></el-input> + <!-- <el-input disabled size="small" v-model="addObj.custom"> + <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true" + :disabled="active>1"></el-button></template> + </el-input> --> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>濮旀墭鍗曚綅锛�</div> + <div class="search_input"> + <!-- <el-input size="small" placeholder="鈫愰�夋嫨濮旀墭瀹㈡埛" clearable disabled v-model="addObj.company"></el-input> --> + <el-input v-model="addObj.company" disabled placeholder="閫夋嫨濮旀墭鍗曚綅" size="small"> + <template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" + @click="selectUserDia = true"></el-button></template> + </el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鑱旂郴鏂瑰紡锛�</div> + <div class="search_input"> + <el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="閫夋嫨濮旀墭瀹㈡埛" size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>绱ф�ョ▼搴︼細</div> + <div class="search_input"> + <el-select v-model="addObj.type" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> + <el-option v-for="(a, ai) in type" :key="ai" :label="a.label" :value="a.value"></el-option> + </el-select> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鏍峰搧鍚嶇О锛�</div> + <div class="search_input"> + <el-input v-model="addObj.sample" disabled size="small"> + <template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" + @click="selectStandardTree = true"></el-button></template> + </el-input> + </div> + </el-col> + <!-- <el-col class="search_thing" :span="6"> + <div class="search_label"><span class="required-span">* </span>鏍峰搧绫诲瀷锛�</div> + <div class="search_input"> + <el-input size="small" clearable disabled v-model="addObj.sampleType"></el-input> + </div> + </el-col> --> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鏍峰搧鏁伴噺锛�</div> + <div class="search_input"> + <el-input-number v-model="addObj.sampleNum" :disabled="active>1" :max="100" :min="1" :precision="0" + size="small" style="width: 65%;" @change="addStandardTree"></el-input-number> + </div> + </el-col> + <!-- <el-col class="search_thing" :span="6"> + <div class="search_label">鏍峰搧鍗曚綅锛�</div> + <div class="search_input"> + <el-select v-model="addObj.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> + </div> + </el-col> --> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鏍峰搧鐘舵�侊細</div> + <div class="search_input"> + <el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small" style="width: 100%;"> + <el-option v-for="(a,ai) in sampleStatusList" :key="ai" :label="a.label" :value="a.value"></el-option> + </el-select> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鎶芥鏁伴噺锛�</div> + <div class="search_input"> + <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鏉ユ牱鏂瑰紡锛�</div> + <div class="search_input"> + <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small" style="width: 100%;"> + <el-option v-for="(a,ai) in formType" :key="ai" :label="a.label" :value="a.value"></el-option> + </el-select> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label">鎶ュ憡鍙戦�佹柟寮忥細</div> + <div class="search_input"> + <el-radio-group v-model="addObj.send" :disabled="active>1&&tabIndex!=4"> + <el-radio :label="1">鑷彇</el-radio> + <el-radio :label="0">鍏朵粬</el-radio> + </el-radio-group> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label">鏍峰搧澶勭悊鏂瑰紡锛�</div> + <div class="search_input"> + <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4"> + <el-radio :label="0">濮旀墭鍗曚綅鍙栧洖</el-radio> + <el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio> + </el-radio-group> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鐢熶骇鍗曚綅锛�</div> + <div class="search_input"> + <el-input v-model="addObj.production" :disabled="active>1&&tabIndex!=4" clearable placeholder="璇疯緭鍏�" + size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鐢熶骇鍗曚綅EN锛�</div> + <div class="search_input"> + <el-input v-model="addObj.productionEn" :disabled="active>1&&tabIndex!=4" clearable placeholder="璇疯緭鍏�" + size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label">鏄惁鐣欐牱锛�</div> + <div class="search_input"> + <el-radio-group v-model="addObj.isLeave" :disabled="active>1&&tabIndex!=4"> + <el-radio :label="0">涓嶇暀鏍�</el-radio> + <el-radio :label="1">鐣欐牱</el-radio> + </el-radio-group> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label">濮旀墭浜猴細</div> + <div class="search_input"> + <el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing"> + <div class="search_label">濮旀墭浜鸿嫳鏂囷細</div> + <div class="search_input"> + <el-input v-model="addObj.prepareUserEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing" style="align-items: flex-start;margin: 8px 0;"> + <div class="search_label">澶囨敞锛�</div> + <div class="search_input"> + <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable + size="small" type="textarea"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing" style="align-items: flex-start;margin: 8px 0;"> + <div class="search_label">澶囨敞鑻辨枃锛�</div> + <div class="search_input"> + <el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable + size="small" type="textarea"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing" style="align-items: flex-start;margin: 8px 0;"> + <div class="search_label">鏍峰搧鍚嶇О锛�</div> + <div class="search_input"> + <el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable + size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing" style="align-items: flex-start;margin: 8px 0;"> + <div class="search_label">鏍峰搧鍚嶇О鑻辨枃锛�</div> + <div class="search_input"> + <el-input v-model="addObj.sampleViewEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable + size="small"></el-input> + </div> + </el-col> + <el-col :span="6" class="search_thing" style="align-items: flex-start;margin: 8px 0;"> + <div class="search_label">濮旀墭浜哄伐鍙凤細</div> + <div class="search_input"> + <el-input v-model="addObj.prepareCode" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable + size="small"></el-input> + </div> + </el-col> + </el-row> + </div> + <div> + <div style="display: flex;flex-direction: row;justify-content: space-between;padding: 5px 0;"> + <div v-if="active==1" style="display: flex;background: transparent;"> + <div class="search_thing"> + <div class="search_label">鏍峰搧鍨嬪彿锛�</div> + <div class="search_input"> + <el-select v-model="model" :placeholder="active>1 ? '' : '璇疯緭鍏�'" + allow-create clearable default-first-option filterable + size="small" + @change="changeModel"> + <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <div class="search_thing"> + <div class="search_label">妫�楠屾爣鍑嗭細</div> + <div class="search_input"> + <el-select v-model="standardMethodListId" :loading="methodLoad" + :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable size="small" + @change="changeStandardMethodListId" @focus="methodFocus"> + <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> + </el-option> + </el-select> + </div> + </div> + </div> + <div class="search_thing"> + <span style="width: 150px;font-size: 14px;text-align: right;">鐗规畩鏍囧噯锛�</span> + <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable + size="small"></el-input> + <el-button v-show="active==1" size="small" style="margin-left: 10px" + type="primary" @click="editSpecial">缂栬緫</el-button> + </div> + </div> + <el-table ref="sampleTable" :data="sampleList" border class="el-table sampleTable" highlight-current-row + max-height="400px" tooltip-effect="dark" @selection-change="selectSample" @row-click="rowClick"> + <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="60"></el-table-column> + <el-table-column align="center" label="搴忓彿" type="index" width="65"></el-table-column> + <el-table-column align="center" label="鏍峰搧鍚嶇О" min-width="100" prop="sample"> + <template slot-scope="scope"> + <el-input v-model="scope.row.sample" :disabled="active>1" clearable size="small"></el-input> + </template> + </el-table-column> + <el-table-column align="center" label="鏍峰搧缂栧彿" min-width="100" prop="sampleCode"> + <template slot-scope="scope"> + <el-input v-model="scope.row.sampleCode" :disabled="active>1" clearable placeholder="涓嶅~鍐欏垯绯荤粺鑷姩鐢熸垚" + size="small"></el-input> + </template> + </el-table-column> + <el-table-column align="center" label="鏍峰搧鍨嬪彿" min-width="60" prop="model"> + <template slot-scope="scope"> + <el-select v-model="scope.row.model" :disabled="active>1" allow-create default-first-option filterable + placeholder="鏍峰搧鍨嬪彿" size="small" style="width: 100%;" @change="handleChangeModel"> + <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column v-if="!(active>1)" align="center" label="鑺暟" prop="cores" width="130"> + <template slot-scope="scope"> + <el-input v-model="scope.row.cores" clearable placeholder="闈炲繀濉�" size="small" + @input="spliceString(scope.row, scope.row.standardMethodListId, 'cores')"></el-input> + </template> + </el-table-column> + <el-table-column v-if="!(active>1)" align="center" label="鍨嬪彿鍙傛暟" prop="modelNum" width="110"> + <template slot-scope="scope"> + <el-input v-model="scope.row.modelNum" clearable placeholder="闈炲繀濉�" size="small" + @input="methodChange(scope.row.standardMethodListId, scope.row, 'splice')"></el-input> + </template> + </el-table-column> + <el-table-column v-if="!(active>1)" align="center" label="鏈�缁堟牱鍝佸瀷鍙�" prop="endModels" width="160"> + <template slot-scope="scope"> + <el-input v-model="scope.row.endModels" clearable placeholder="闈炲繀濉�" size="small"></el-input> + </template> + </el-table-column> + <el-table-column align="center" label="妫�楠屾爣鍑�" min-width="100" prop="standardMethodListId"> + <template slot-scope="scope"> + <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1" + :loading="methodLoad" :readonly="active>1" clearable placeholder="妫�楠屾爣鍑�" + size="small" style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus"> + <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column v-if="!(active>1)" align="center" label="瀵间綋鏉愯川" prop="conductorMaterial" width="100"> + <template slot-scope="scope"> + <el-input v-model="scope.row.conductorMaterial" clearable placeholder="闈炲繀濉�" size="small" + @input="spliceString(scope.row, scope.row.standardMethodListId)"></el-input> + </template> + </el-table-column> + <el-table-column v-if="!(active>1)" align="center" label="瀵间綋绫诲瀷" prop="conductorType" width="100"> + <template slot-scope="scope"> + <el-input v-model="scope.row.conductorType" clearable placeholder="闈炲繀濉�" size="small" + @input="spliceString(scope.row, scope.row.standardMethodListId)"></el-input> + </template> + </el-table-column> + </el-table> + <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" border class="el-table" + max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" + @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> + <el-table-column v-if="active==1" :selectable="selectable0" type="selection" width="65"></el-table-column> + <el-table-column label="妫�楠岄」鍒嗙被" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> + <el-table-column label="妫�楠岄」" min-width="140" prop="inspectionItem" show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>妫�楠岄」</span> + <el-input + v-if="active==1" + v-model="inspectionItem" + placeholder="璇疯緭鍏�" + size="mini" + @input="searchFilterList"/> + </div> + </template> + </el-table-column> + <el-table-column label="妫�楠岄」瀛愰」" min-width="140" prop="inspectionItemSubclass" + show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>妫�楠岄」瀛愰」</span> + <el-input + v-if="active==1" + v-model="inspectionItemSubclass" + placeholder="璇疯緭鍏�" + size="mini" + @input="searchFilterList"/> + </div> + </template> + </el-table-column> + <el-table-column label="瑕佹眰鍊�" min-width="220px" prop="ask"> + <template slot-scope="scope"> + <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="瑕佹眰鍊�" + size="small" type="textarea" + @change="e=>requestChange(e,scope.row,'ask')"></el-input> + <span v-else> + <template >{{ scope.row.ask }}</template> + </span> + </template> + </el-table-column> + <el-table-column label="瑕佹眰鎻忚堪" min-width="220px" prop="tell"> + <template slot-scope="scope"> + <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="瑕佹眰鎻忚堪" + size="small" type="textarea" + @change="e=>requestChange(e,scope.row,'tell')"></el-input> + <span v-else> + <template >{{ scope.row.tell }}</template> + </span> + </template> + </el-table-column> + <el-table-column label="鏉′欢" min-width="140" prop="radius" show-overflow-tooltip> + <template slot-scope="scope"> + <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="鏉′欢" + size="small" type="textarea" + @change="e=>requestChange(e,scope.row,'radius')"> + </el-input> +<!-- <el-select v-else-if="scope.row.inspectionItem.includes('楂樻俯鍘嬪姏璇曢獙') && (active==1||tabIndex==4)" v-model="scope.row.radius" clearable--> +<!-- placeholder="鏉′欢"--> +<!-- size="small" @change="e=>requestChange(e,scope.row,'radius')">--> +<!-- <el-option v-for="(a,i) in JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option>--> +<!-- </el-select>--> + <span v-else>{{scope.row.radius}}</span> + </template> + </el-table-column> + <el-table-column label="璇曢獙鏂规硶" min-width="120" prop="methodS" show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>璇曢獙鏂规硶</span> + <el-input + v-if="active==1" + v-model="methodS" + placeholder="璇疯緭鍏�" + size="mini" + @input="searchFilterList"/> + </div> + </template> + </el-table-column> + <el-table-column label="璁¢噺鍗曚綅" prop="unit" show-overflow-tooltip width="100"></el-table-column> + <el-table-column label="鍗曚环" prop="price" show-overflow-tooltip width="100"></el-table-column> + <!-- <el-table-column prop="manDay" label="棰勮鏃堕棿(澶�)" width="120" show-overflow-tooltip></el-table-column> + <el-table-column prop="manHour" 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 label="鍖洪棿" min-width="120" prop="section" show-overflow-tooltip></el-table-column> + <el-table-column :filter-method="filterHandler" :filters="filters" label="瀛愬疄楠屽" min-width="130" prop="sonLaboratory" + show-overflow-tooltip></el-table-column> + <el-table-column v-if="isSpecial&&active==1" + fixed="right" + label="鎿嶄綔" + width="100"> + <template slot-scope="scope"> + <el-button v-if="!scope.row.repetitionTag" size="small" type="text" @click="addProductList(productList,scope.row,scope.$index)">鎻掑叆琛�</el-button> + <el-button v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + </div> + </div> + <el-dialog :visible.sync="selectUserDia" title="閫夋嫨鍗曚綅" width="70%"> + <div v-if="selectUserDia" class="body" style="height: 60vh;"> + <ValueTable ref="ValueTable2" :componentData="componentData2" :url="$api.user.selectCustomPageList" /> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="selectUserDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="selectUser">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :visible.sync="selectStandardTree" title="閫夋嫨鏍峰搧" width="500px"> + <div v-if="selectStandardTree" v-loading="selectStandardTreeLoading" class="body" style="height: 60vh;overflow-y: auto;user-select: none;"> + <el-row> + <el-col :span="24"> + <el-input v-model="search" clearable placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" size="small" + style="margin-bottom: 5px;" suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter" + @keyup.enter.native="searchFilter"></el-input> + </el-col> + </el-row> + <el-tree ref="tree" :data="list" :default-expanded-keys="expandedKeys" :filter-node-method="filterNode" + :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" @node-click="handleNodeClick" + @node-expand="nodeOpen" @node-collapse="nodeClose" @dblclick.native="activeStandardTree"> + <div slot-scope="{ node, data }" class="custom-tree-node"> + <el-row> + <el-col :span="24"> + <span><i + :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i> + {{ data.code }} {{ data.label }}</span> + </el-col> + </el-row> + </div> + </el-tree> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="selectStandardTree = false">鍙� 娑�</el-button> + <el-button type="primary" @click="activeStandardTree">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :visible.sync="templateDia" title="淇濆瓨妯℃澘" width="400px"> + <div v-if="templateDia" class="body" style="display: flex;align-items: center;"> + <div class="search_label" style="width: 90px;"><span class="required-span">* </span>妯℃澘鍚嶇О锛�</div> + <div class="search_input"> + <el-input v-model="templateName" clearable size="small"></el-input> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="templateDia = false">鍙� 娑�</el-button> + <el-button :loading="templateLoading" type="primary" @click="addTemplateDia">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="issuedDialogVisible" + title="妫�楠屼笅鍙�" width="400px"> + <div class="body" style="max-height: 60vh;"> + <el-row> + <el-col :span="22" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>绾﹀畾鏃堕棿锛�</div> + <div class="search_input"> + <el-date-picker v-model="distributeData.appointed" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" + style="width: 100%;" type="date" value-format="yyyy-MM-dd"> + </el-date-picker> + </div> + </el-col> + <el-col :span="22" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>鎸囨淳浜哄憳锛�</div> + <div class="search_input"> + <el-select v-model="distributeData.userId" filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;" @change="changeUser"> + <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 v-if="distributeData.userId" :span="22" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>璇曢獙瀹わ細</div> + <div class="search_input"> + <el-select v-model="distributeData.sonLaboratory" filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="item in sonLaboratoryList" :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="issuedDialogVisible=false;$parent.playOrder(0)">鍙� 娑�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitForm2">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <el-dialog :visible.sync="noDialogVisible" title="涓嶉�氳繃鍘熷洜" width="400px"> + <div class="body" style="max-height: 60vh;"> + <el-row> + <el-col :span="22" class="search_thing"> + <div class="search_label"><span class="required-span">* </span>涓嶉�氳繃鍘熷洜锛�</div> + <div class="search_input"> + <el-input v-model="tell" placeholder="璇疯緭鍏ヤ笉閫氳繃鍘熷洜" size="small"></el-input> + </div> + </el-col> + </el-row> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="noDialogVisible=false,tell=''">鍙� 娑�</el-button> + <el-button :loading="noLoading" type="primary" @click="submitTell">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <fiberOpticConfig v-if="configShow && examine==0" :active="active" :currentId="currentId" :inspectionItemST='inspectionItemST' @saveFiberopticConfig="getTotal()" /> + <fiberOpticConfigTwo v-if="configShow && examine==1" :active="active" :currentId="currentId" /> + <!--瀛愭牱鍝侀厤缃�--> + <equipConfig v-if="equipConfigShow" :active="active" :currentId="currentId" /> + <!--鐢电紗閰嶇疆--> + <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/> + <!--杈呭姪绾胯姱閰嶇疆--> + <auxiliary-wire-core v-if="auxiliaryShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd2="goBackAdd2"></auxiliary-wire-core> + <!--鐗规畩鍊煎鐞嗘--> + <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" + :visible.sync="bsm1DiaAll" + min-width="400px" + title="妫�娴嬪埌鐗规畩椤癸紝璇蜂綔鍑轰互涓嬮�夋嫨"> + <div v-for="(item, index) in bsm1DiaList" :key="item.id" class="body" style="max-height: 60vh;"> + <span>{{item.inspectionItem}}</span> + <el-row v-if="item.bsm1"> + <el-col :span="24" class="search_thing" style="height: initial;margin: 5px 0;"> + <div class="search_label" style="width: 80px;"><span class="required-span">* </span>閫夐」锛�</div> + <div class="search_input"> + <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)"> + <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio> + </el-radio-group> + </div> + </el-col> + <el-col :span="24" class="search_thing" style="height: initial;margin: 5px 0;"> + <div class="search_label" style="width: 80px;">瑕佹眰鍊硷細</div> + <div class="search_input"> + <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)"> + <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" + :label="a">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio> + </el-radio-group> + </div> + </el-col> + </el-row> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button :loading="saveLoad" type="primary" @click="save1">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" + :show-close="false" :visible.sync="bsm3Dia" + title="鍖洪棿鍊煎~鍐�" width="800px"> + <el-table + :data="editTable" + height="80vh" style="width: 100%"> + <!-- inspectionItemList --> + <el-table-column + label="妫�楠岄」" + prop="inspectionItemList" + width="180"> + </el-table-column> + <el-table-column + label="鏍峰搧缂栧彿" + prop="sampleCode" + width="180"> + </el-table-column> + <el-table-column + label="鏍峰搧鍨嬪彿" + prop="model" + width="180"> + </el-table-column> + <el-table-column + label="璇嗗埆绗﹀彿" + prop="symbolItem"> + </el-table-column> + <el-table-column + label="璇嗗埆绗﹀��" + prop="value"> + <template slot-scope="scope"> + <el-input v-model="scope.row.value" placeholder="璇疯緭鍏�" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input> + </template> + </el-table-column> + </el-table> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="bsm3Dia=false">鍙� 娑�</el-button> + <el-button :loading="saveLoad" type="primary" @click="save0">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <el-dialog :before-close="beforeCirculateShowClose" :close-on-click-modal="false" :close-on-press-escape="false" + :show-close="false" :visible.sync="circulateShow" + title="娓╁害寰幆瑕佹眰濉啓" width="900px"> + <div class="search" style="display: flex;background: transparent;"> + <div class="search_thing"> + <div class="search_label">淇濇俯鏃堕棿锛�</div> + <div class="search_input"> + <el-input v-model="circulateForm.entrustTime" placeholder="" size="small" type="number"></el-input> + </div> + </div> + <div class="search_thing"> + <div class="search_label">寰幆娆℃暟锛�</div> + <div class="search_input"> + <el-input v-model="circulateForm.entrustNum" placeholder="" size="small" type="number"></el-input> + </div> + </div> + <div class="search_thing"> + <div class="search_label">娓╁害鐐癸細</div> + <div class="search_input"> + <el-input v-model="circulateForm.entrustPoint" placeholder="" size="small" type="number" @blur="changeTemperatureData"></el-input> + </div> + </div> + </div> + <div class="circulateTable"> + <div class="opticalProject"> + <div style="line-height: 30px;">鍏夌氦椤圭洰</div> + <el-divider></el-divider> + <div> + <el-table + ref="multipleTable" + :cell-style="{'text-align':'center'}" + :data="opticalProject" + :header-cell-style="{'text-align':'center'}" + border + style="width: 100%" + tooltip-effect="dark" + @select="selectOpticalProject" + @row-click="rowClickOptical" + @select-all="selectAllOptical" + @selection-change="handleSelectionChange"> + <el-table-column + type="selection" + width="55"> + </el-table-column> + <el-table-column label="鍏夌氦椤圭洰" prop="value" show-overflow-tooltip></el-table-column> + </el-table> + </div> + </div> + <div class="temperatureList"> + <div class="temperatureListTitle"> + <span>娓╁害鐐归泦鍚�</span> + <span> + <el-button size="mini" type="primary" @click="addTemperatureData">鏂板</el-button> + <el-button size="mini" @click="deleteTemperatureData">鍒犻櫎</el-button> + </span> + </div> + <el-divider></el-divider> + <el-table + :cell-style="{'text-align':'center'}" + :data="temperatureData" + :header-cell-style="{'text-align':'center'}" + border + style="width: 100%"> + <el-table-column label="娓╁害鐐�(鈩�)" prop="date" width="120px"> + <template slot-scope="scope"> + <el-input v-model="scope.row.temperaturePoint" clearable placeholder="璇疯緭鍏�" size="small" @change="changeTemperature"></el-input> + </template> + </el-table-column> + <el-table-column label="瑕佹眰(dB/Km)" prop="name"> + <template slot-scope="scope"> + <span>x</span> + <el-select v-model="scope.row.askSymbol" placeholder="璇烽�夋嫨" size="small" style="width: 120px" @change="changeTemperature"> + <el-option v-for="item in temperatureDataList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + <el-input v-model="scope.row.askNum" clearable placeholder="璇疯緭鍏�" size="small" style="width: 120px" @change="changeTemperature"></el-input> + </template> + </el-table-column> + </el-table> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="cleanSpliceData">鍙栨秷</el-button> + <el-button type="primary" @click="spliceData">淇濆瓨</el-button> + </span> + </el-dialog> + <el-dialog :before-close="beforeCirculateShowClose" :close-on-click-modal="false" :close-on-press-escape="false" + :show-close="false" :visible.sync="singleVerticalCombustionShow" + title="鍗曟牴鍨傜洿鐕冪儳妫�娴嬫鏁板~鍐�" width="900px"> + <div>111</div> + <span slot="footer" class="dialog-footer"> + <el-button @click="cleanSpliceData">鍙栨秷</el-button> + <el-button type="primary" @click="spliceData">淇濆瓨</el-button> + </span> + </el-dialog> + <!-- 鐢靛姏璇曢獙瀹�---娓╁崌璇曢獙/鐑惊鐜� --> + <el-dialog :before-close="temperatureShowClose" :close-on-click-modal="false" + :close-on-press-escape="false" :show-close="false" + :title="temperatureTitle" :visible.sync="temperatureShow" width="260px"> + <div> + <div v-if="isShowInput" style="margin-bottom: 6px"> + <span>寰幆娆℃暟:</span> + <!-- <el-input size="small" type="number" v-model="temperatureTestNum" style="width: 120px"></el-input> --> + <el-input-number v-model="temperatureTestNum" :max="1000000" :min="2" label="" size="small"></el-input-number> + </div> + <el-checkbox-group v-model="temperatureTest" style="display: flex;flex-direction: column;" @change="handleTemperatureTestChange"> + <el-checkbox v-for="item in temperatureList" :key="item" :label="item" style="margin-bottom: 6px">{{item}}</el-checkbox> + </el-checkbox-group> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="cleanTemperatureTest">鍙栨秷</el-button> + <el-button type="primary" @click="spliceTemperatureTest">淇濆瓨</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +// import ValueTable from '../../tool/value-table.vue' +// import fiberOpticConfig from './fiberoptic-config.vue' +// import fiberOpticConfigTwo from './fiberoptic-config-two.vue' +// import equipConfig from './equip-config.vue' +// import cableConfig from './cable-config.vue' +// import Vue from 'vue' +// import {iuCharts} from "../../../util/echarts"; +// import AuxiliaryWireCore from "./auxiliaryWireCore.vue"; + +export default { + components: { + // AuxiliaryWireCore, + // ValueTable, + // fiberOpticConfig, + // fiberOpticConfigTwo, + // equipConfig, + // cableConfig + }, + props: { + currentId: { + type: Number, + default: () => 0 + }, + tabIndex:{ + type: Number, + default: () => 0 + } + }, + data() { + return { + examine: '', + active: '', + inspectionItemST: null, + sampleSelectionList: [],//鏍峰搧琛ㄦ牸閫変腑鏁版嵁 + editTable:[], + template: null, + templates: [], + addObj: { + entrustCode: null, + custom: null, + company: null, + userId: null, + type: '0', + code: null, + appointed: null, + remark: null, // 澶囨敞 + remarkEn: null, // 澶囨敞鑻辨枃 + sample: null, + factory: null, + laboratory: null, + sampleType: null, + sampleNum: 1, + unit: null, + model: null, + method: null, + phone: null, + processing: 1, + isLeave: 0, + orderType: null, + send: 1, + formType: '閫佹', // 鏉ユ牱鏂瑰紡 + sampleStatus: 'In good condition', // 鏍峰搧鐘舵�� + testQuantity: '', // 鏍峰搧鐘舵�� + production: null, + productionEn: null, + companyId: null, + prepareUser:null, // 濮旀墭浜� + prepareUserEn:null, // 濮旀墭浜鸿嫳鏂� + prepareCode: '', // 濮旀墭浜哄伐鍙� + quarterItemId: '', + sampleView: '', // 鏍峰搧鍚嶇О锛堟姤鍛婂睍绀哄瓧娈碉級 + sampleViewEn: '', // 鏍峰搧鍚嶇О鑻辨枃锛堟姤鍛婂睍绀哄瓧娈碉級 + }, + sample: { + sampleCode: null, + laboratory: null, + factory: null, + sampleType: null, + sample: null, + model: null, + modelNum: null, + sampleNum: 1, + isLeave: 0, + unit: null + }, + type: [], + selectUserDia: false, + componentData2: { + entity: { + orderBy: { + field: 'id', + order: 'desc' + } + }, + isIndex: true, + showSelect: true, + select: false, + do: [], + tagField: { + state: { + select: [{ + value: 1, + type: 'success', + label: '鍚敤' + }, { + value: 0, + type: 'danger', + label: '鍋滅敤' + }] + } + }, + selectField: {}, + }, + selectStandardTree: false, + search: null, + list: [], + selectStandardTreeLoading: false, + selectTree: null, + sampleViewEn: null, + expandedKeys: [], + sampleList: [], + sampleIds: [], + methodList: [], + addSampleDia: false, + count: 1, + productList: [], + productList0: [], + bsm1DiaList: [], + productIds: [], + productListSelected: [], + getProductLoad: false, + saveLoad: false, + templateDia: false, + templateLoading: false, + templateName: '', + issuedDialogVisible: false, + distributeData: { + appointed: '', + userId: '', + sonLaboratory:'' + }, + personList: [], + upLoad: false, + units: [], + models: [], + methods: [], + methodLoad: false, + noDialogVisible: false, + tell: '', + noLoading: false, + orderType: [], + filters: [], + formType: [], + configShow: false, + currentMethod: null, + isAskOnlyRead: false, + sampleId: null, + bsmRow: null, + bsm1: false, + bsm1Val: null, + bsm1DiaAll: false, + equipConfigShow: false, + cableConfigShow: false, + auxiliaryShow: false, + bsm2: false, + bsm2Val: null, + bsm2Dia: false, + bsm2Val2: [], + bsm2Val3: [], + bsmRow3: null, + bsm3Val: null, + bsm3Dia: false, + // total: 0, + RTS: '', + totalArr: [], + model: null, + standardMethodListId: null, + symbolList:['RTS'], + inspectionItem:null, + inspectionItemSubclass:null, + methodS:null, + circulateShow:false, + circulateForm:{ + entrustTime: '', + entrustNum: '', + entrustPoint: '' + }, + singleVerticalCombustionShow: false, + isBsm2Val2:false, + opticalProject: [], // 娓╁害寰幆寮规鍏夌氦椤圭洰鍒楄〃 + opticalProjectList: [], // 娓╁害寰幆寮规鍏夌氦椤圭洰閫変腑鐨勬暟缁� + temperatureData: [], // 娓╁害寰幆寮规娓╁害鐐归泦鍚堝垪琛� + temperatureDataList: [ + {label: '<', value: '<'}, + {label: '鈮�', value: '鈮�'}, + {label: '=', value: '='}, + {label: '鈮�', value: '鈮�'}, + {label: '>', value: '>'}, + ], + temperatureShow: false, // 娓╁崌璇曢獙妫�楠岄」寮规 + temperatureTest: [], + temperatureList: [], + temperatureEngList: [], + temperatureTitle: '', + temperatureTestNum: '', + isShowInput: false, + temId: '', + sonLaboratoryList:[], + selectiveEcho: [], // 妫�楠屼笅鍗曠殑鏃跺�欏嬀閫夋楠岄」鐩�,濡傛灉浣跨敤绛涢�夋彁浜ゆ樉绀烘楠岄」鐩负绌� 鍥炴樉鍒楄〃 + sampleStatusList: [], // 鏍峰搧鐘舵�佷笅鎷夋鏁版嵁 + quarterItemOptions: [], // 鏌ヨ瀛e害淇℃伅 + specialStandardMethod: '', + isSpecial: false, + userList: [], + } + }, + watch: { + sampleList() { + this.addObj.method = null + this.productList = [] + }, + productList: { + deep: true, + handler(val) { + if (val && val.length > 0) { + let arr = []; + val.forEach(item => { + if (item.sonLaboratory && !arr.find(a => a.value == item.sonLaboratory)) { + arr.push({ + text: item.sonLaboratory, + value: item.sonLaboratory + }) + } + }) + this.filters = arr + } + } + }, + productListSelected: { + deep: true, + handler(val) { + if(val.length>0){ + for(let i =0 ; i< val.length; i++){ + if(val[i].inspectionItem.includes('鏉惧绠�')){ + this.inspectionItemST = 1 + break; + }else{ + this.inspectionItemST = 0 + } + } + }else{ + this.inspectionItemST = 0 + } + } + }, + sampleList: { + deep: true, + handler(val) { + this.getTotal() + } + }, + 'addObj.sample'(val) { + this.model = null + this.standardMethodListId = null + }, + 'addObj.sampleNum'(val) { + this.model = null + this.standardMethodListId = null + }, + tabIndex(val){ + if(val==4&&this.active==2){ + this.isSpecial = true + }else{ + this.isSpecial = false + } + } + }, + mounted() { + this.active = this.$route.query.active + this.examine = this.$route.query.examine + this.selectEnumByCategoryForType() + this.getUserNow() + this.selectStandardTreeList() + // this.selectInsOrderTemplate() + this.getAuthorizedPerson(); + this.selectEnumByCategoryForUnit() + this.selectStandardMethods() + this.selectEnumByCategoryForOrderType() + // this.selectEnumByCategoryForSonLaboratory() + this.selectEnumByCategoryForSampleForm() // 鏉ユ牱鏂瑰紡瀛楀吀 + this.selectSampleStatus() // 鏍峰搧鐘舵�佸瓧鍏� + // this.getUserList() + this.getPrepareUser() // 澶嶅埗褰撳墠璐﹀彿浜轰负濮旀墭浜� + if (this.active != 1) { + // 鏌ョ湅/瀹℃牳娴佺▼ + // 璇锋眰鎺ュ彛锛屽洖鏄炬暟鎹� + this.$axios.post(this.$api.insOrder.getInsOrder, { + orderId: this.currentId + }).then(res => { + this.addObj = { + ...res.data.insOrder + }; + this.addObj.type = String(this.addObj.type) + this.sampleList = this.HaveJson(res.data.sampleProduct); + this.specialStandardMethod = this.sampleList[0].specialStandardMethod + this.getProNum() + this.addObj.sampleNum = this.sampleList.length + this.$nextTick(() => { + this.$refs.sampleTable.doLayout() + if (this.addObj.sampleNum > 0) { + this.$refs.sampleTable.setCurrentRow(this.sampleList[0], true) + this.rowClick(this.sampleList[0]) + } + }) + }) + } + if(this.tabIndex==4&&this.active==2){ + this.isSpecial = true + }else{ + this.isSpecial = false + } + }, + methods: { + getPrepareUser () { + this.addObj.prepareUser = JSON.parse(localStorage.getItem("user")).name; + this.addObj.prepareUserEn = JSON.parse(localStorage.getItem("user")).nameEn + this.addObj.prepareCode = JSON.parse(localStorage.getItem("user")).account + }, + getUserList(){ + this.$axios.post(this.$api.user.selectUserList, { + page: {current: -1, size: -1,}, + entity: {name: null} + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + return + } + this.userList = res.data.body.records + }) + }, + // 缂栬緫瑕佹眰鍊艰〃鏍� + editSpecial () { + this.isSpecial = true + }, + getQuarterOnOrder () { + this.$axios.get(this.$api.finishProductSpotCheck.getQuarterOnOrder).then(res => { + if (res.code === 200) { + console.log('res----', res) + this.quarterItemOptions = res.data + } + }) + }, + handleChange () { + + }, + //鐗规畩鍊煎~鍐欏鐞� + inputValueHandler(row,index){ + if(row){ + const nextIndex = index+1 + for (let i = nextIndex; i < this.editTable.length; i++) { + const element = this.editTable[i]; + if(element.model==row.model&&row.symbolItem==element.symbolItem){ + this.editTable[i].value = row.value + } + } + } + }, + spliceData () { + if (!this.circulateForm.entrustNum || !this.circulateForm.entrustTime || !this.circulateForm.entrustPoint || this.opticalProjectList.length === 0 || this.temperatureData.length === 0) { + this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + return + } + // 鎷兼帴瑕佹眰鍊糰sk + const opticalProjectList = JSON.parse(JSON.stringify(this.opticalProjectList)) + opticalProjectList.forEach(o => { + o.temperatureData.forEach(t => { + if (!t.temperaturePoint || !t.askSymbol || !t.askNum) { + throw this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + } + }) + if (!o.temperatureData.some(item => item.temperaturePoint == '20')) { + throw this.$message.error(`${o.value + '娉㈤暱娌℃湁閰嶇疆20鈩冩俯搴︾偣'}`) + } + }) + let entrustTime = this.circulateForm.entrustTime + let entrustNum = this.circulateForm.entrustNum + let opticalProjectList2 = JSON.parse(JSON.stringify(this.opticalProjectList)) + let askArr = [] + let opticalProjectArr = [] + opticalProjectList.forEach(o => { + opticalProjectArr.push(o.value) + o.temperatureData.unshift({temperaturePoint: 20}) + o.temperatureData.forEach(t => { + if (!t.askSymbol) { + const askObj = t.temperaturePoint + '鈩�(甯告俯)' + ',' + o.value + ',' + null + askArr.push(askObj) + } else { + const askObj = t.temperaturePoint + '鈩�' + ',' + o.value + ',' + t.askSymbol + t.askNum + askArr.push(askObj) + } + }) + }) + askArr.push(this.circulateForm.entrustNum) + const ask = askArr.join(';') + // 鎷兼帴瑕佹眰鎻忚堪tell + let askNum = [] + let temperaturePointList = [] + let temperaturePointList2 = [] + entrustTime = entrustTime + 'h' + entrustNum = entrustNum + '娆�' + opticalProjectList2.forEach(o => { + o.temperatureData.forEach(t => { + t.temperaturePoint = t.temperaturePoint + '鈩�' + temperaturePointList2.push(t.temperaturePoint) + temperaturePointList.push(t.temperaturePoint) + askNum.push(t.askSymbol + t.askNum + 'dB/Km') + }) + }) + temperaturePointList = Array.from(new Set(temperaturePointList)) + temperaturePointList2 = Array.from(new Set(temperaturePointList2)) + temperaturePointList2.unshift(20 + '鈩�(甯告俯)') + let additionArr = [] + askNum.forEach(a => { + additionArr.push(temperaturePointList.join(',') + a) + }) + additionArr = Array.from(new Set(additionArr)) + const tell = '娓╁害鑼冨洿:' + temperaturePointList2.join(',') + ';' + '淇濇俯鏃堕棿:' + entrustTime + ';' + '寰幆娆℃暟:' + + entrustNum + ';' + '鍏夌氦(' + opticalProjectArr.join(',') + ')' + '闄勫姞琛板噺缁濆鍊�:' + additionArr.join(';') + this.productList.forEach(item => { + if (item.inspectionItem === '娓╁害寰幆') { + item.ask = ask + item.tell = tell + } + }) + this.circulateShow = false + this.changeProductList0() + this.currentMethod.insProduct = this.productList0 + this.getProNum() + }, + spliceTemperatureTest () { + if (this.temperatureTest.length === 0) { + this.$message.error('璇烽�夋嫨') + return + } + let askStr = '' + let askArr1 = [] + let askArr2 = '' + let ask = '' + let index = '' + this.temperatureTest.map(val => { + index = this.temperatureEngList.findIndex(item => item.label === val) + if (index > -1) { + askStr = val + ',' + this.temperatureEngList[index].value + } + askArr1.push(askStr) + }) + + if (this.temperatureTitle === '娓╁崌璇曢獙瑕佹眰濉啓') { + askArr2 = askArr1.join(';') + ask = askArr2 + ';1' + } else { + if (!this.temperatureTestNum) { + this.$message.error('璇峰~鍐欏惊鐜鏁�') + return + } + askArr2 = askArr1.join(';') + ask = askArr2 + ';' + this.temperatureTestNum + } + this.productList.forEach(item => { + if (item.id === this.temId) { + item.ask = ask + item.tell = ask + } + }) + this.temperatureShow = false + }, + temperatureShowClose () { + if (this.temperatureTitle === '鐑惊鐜姹傚~鍐�' && !this.temperatureTestNum) { + this.$message.error('璇峰~鍐欏惊鐜鏁�') + return + } + if (this.temperatureTest.length === 0) { + this.$message.error('璇烽�夋嫨') + return + } + this.spliceTemperatureTest() + }, + cleanTemperatureTest () { + this.temperatureTest = [] + this.temperatureTestNum = '' + this.temperatureShow = false + }, + cleanSpliceData () { + this.circulateForm.entrustNum = null + this.circulateForm.entrustTime = null + this.circulateForm.entrustPoint = null + this.opticalProjectList = [] + this.$refs.multipleTable.clearSelection() + this.temperatureData = [] + this.circulateShow = false + }, + beforeCirculateShowClose () { + if (!this.circulateForm.entrustNum || !this.circulateForm.entrustTime || !this.circulateForm.entrustPoint || this.opticalProjectList.length === 0 || this.temperatureData.length === 0) { + this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + return + } + // 鎷兼帴瑕佹眰鍊糰sk + const opticalProjectList = JSON.parse(JSON.stringify(this.opticalProjectList)) + opticalProjectList.forEach(o => { + o.temperatureData.forEach(t => { + if (!t.temperaturePoint || !t.askSymbol || !t.askNum) { + throw this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + } + }) + if (!o.temperatureData.some(item => item.temperaturePoint == '20')) { + throw this.$message.error(`${o.value + '娉㈤暱娌℃湁閰嶇疆20鈩冩俯搴︾偣'}`) + } + }) + this.spliceData() + }, + + handleTemperatureTestChange (value) { + }, + handleSelectionChange(val) { + this.opticalProjectList = val; + }, + selectAllOptical (val) { + if (val.length > 0) { + if (val[val.length-1].temperatureData) { + this.temperatureData = this.HaveJson(val.temperatureData) + } else { + this.temperatureData = [] + } + } else { + this.temperatureData = [] + } + this.circulateForm.entrustPoint = this.temperatureData.length + }, + selectOpticalProject (val) { + if (val.temperatureData) { + this.temperatureData = this.HaveJson(val.temperatureData) + } else { + this.temperatureData = [] + } + this.circulateForm.entrustPoint = this.temperatureData.length + }, + rowClickOptical (val) { + const index = this.opticalProjectList.findIndex(item => item.value === val.value) + if (index > -1 && val.temperatureData) { + this.temperatureData = this.HaveJson(val.temperatureData) + } + this.circulateForm.entrustPoint = this.temperatureData.length + }, + changeTemperature () { + this.opticalProjectList.forEach(item => { + item.temperatureData = this.HaveJson(this.temperatureData) + }) + }, + addTemperatureData () { + const obj = {} + this.temperatureData.push(obj) + this.circulateForm.entrustPoint = this.temperatureData.length + }, + deleteTemperatureData () { + if (this.temperatureData.length > 0) { + this.temperatureData = this.temperatureData.slice(0,-1) + } + this.circulateForm.entrustPoint = this.temperatureData.length + }, + changeTemperatureData () { + const length = this.temperatureData.length + const entrustPoint = Number(this.circulateForm.entrustPoint) + if (entrustPoint > length) { + for (let i = 0; i < (entrustPoint - length); i++) { + const obj = {} + this.temperatureData.push(obj) + } + } else if (entrustPoint < length) { + const deleteNum = length - entrustPoint + this.temperatureData = this.temperatureData.slice(0,-deleteNum) + } + }, + changeProductList0(){ + this.productList0.forEach(a=>{ + let obj = this.productList.find(m => { + if(a.repetitionTag){ + return m.id === a.id&&m.repetitionTag == a.repetitionTag + }else{ + return m.id === a.id&&!m.repetitionTag + } + }) + + if(obj){ + a.state = obj.state + a.section = obj.section + a.ask = obj.ask + a.manHour = obj.manHour + a.price = obj.price + a.tell = obj.tell + a.radius = obj.radius + } + if(a.state == 0&&a.bsmRow){ + a = this.HaveJson(a.bsmRow) + } + }) + }, + searchFilterList () { + const vtw = { + inspectionItem: this.inspectionItem, // 妫�楠岄」 + inspectionItemSubclass: this.inspectionItemSubclass, // 妫�楠岄」瀛愰」 + methodS: this.methodS, // 璇曢獙鏂规硶 + } + const isHaveValue = Object.values(vtw).some(item => { + return item + }) + this.changeProductList0() + if (isHaveValue) { + for(let i in vtw) { + if (vtw[i]) { + this.productList = this.productList0.filter((item) => { + return item[i] && item[i].includes(vtw[i]) + }) + } + } + this.$nextTick(()=>{ + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }) + } else { + // 娌℃湁鏌ヨ鏉′欢鏃舵覆鏌撴墍鏈夋暟鎹� + this.productList = this.productList0 + this.$nextTick(()=>{ + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }) + } + }, + getAuthorizedPerson() { + this.$axios.get(this.$api.user.selectQualityUserList).then(res => { + let data = [] + res.data.forEach(a => { + data.push({ + label: a.name, + value: a.id + }) + }) + this.personList = data + }) + }, + selectEnumByCategoryForType() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "绱ф�ョ▼搴�" + }).then(res => { + this.type = res.data + }) + }, + selectUser() { + let selects = this.$refs.ValueTable2.multipleSelection + if (selects.length == 0) { + this.$message.error('鏈�夋嫨鏁版嵁') + return + } + this.addObj.company = selects.company + this.addObj.code = selects.code + this.addObj.companyId = selects.id + this.selectUserDia = false + if(this.active==1){ + // TODO + this.selectInsOrderTemplate() + } + }, + containsValue(str) { + if(str){ + let symbolItem = '' + this.symbolList.some(value =>{ + if(str.includes(value)){ + symbolItem = value + return true + } + }) + return symbolItem + } + }, + handleAsk(ask,symbolItem, value) { + try{ + let code = [">", "<", "=", "锛�", "锛�", "鈮�", "鈮�", "卤"]; + let code2 = ['+', '*', '/', '-'] + 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], symbolItem, value)) + m = code[index] + '' + num + arr1.push(m) + } + }) + return arr1.join('&') + } else if (ask.includes('锝�') || ask.includes('~')) { + let arr0 = [] + if (ask.includes('锝�')) { + arr0 = ask.split('锝�') + } else { + arr0 = ask.split('~') + } + // 澶氫釜鏉′欢 + let arr1 = [] + arr0.forEach(m => { + m = m.replace(symbolItem, value) + const index = code2.findIndex(b => m.includes(b)) + if (index > -1) { + m = eval(m) + } + 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], symbolItem, value)) + return code[index] + '' + num + } + } + }catch(e){} + }, + handleTell(tell,symbolItem, value){ + try{ + let num = this.replaceAll(tell, symbolItem, value) + return num + }catch(e){} + }, + replaceAll(str,find,value) { + if (str === undefined) { + return str + } + return str.replaceAll(find, value); + }, + save() { + if (!this.addObj.companyId) { + this.$message.error('鏈�夋嫨瀹㈡埛鍗曚綅') + return + } + if (!this.addObj.type) { + this.$message.error('鏈�夋嫨绱ф�ョ▼搴�') + } else if (!this.addObj.formType) { + this.$message.error('璇疯緭鍏ユ潵鏍锋柟寮�') + } else if (!this.addObj.sampleStatus) { + this.$message.error('璇烽�夋嫨鏍峰搧鐘舵��') + } else if (!this.addObj.testQuantity) { + this.$message.error('璇峰~鍐欐娊妫�鏁伴噺') + } else if (!this.addObj.orderType) { + this.$message.error('璇烽�夋嫨妫�楠岀被鍒�') + } else if (!this.addObj.production) { + this.$message.error('璇疯緭鍏ョ敓浜у崟浣�') + } else if (!this.addObj.productionEn) { + this.$message.error('璇疯緭鍏ョ敓浜у崟浣岴N') + } else if (this.sampleList.length < 1) { + this.$message.error('璇锋坊鍔犱竴涓牱鍝�') + } else if (!this.sampleList.every(m => m.sample)) { + this.$message.error('璇疯緭鍏ユ牱鍝佸悕绉�') + } else if (!this.sampleList.every(m => m.model)) { + this.$message.error('璇疯緭鍏ユ牱鍝佸瀷鍙�') + } else if (!this.sampleList.every(m => m.standardMethodListId)) { + this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�') + } else { + let isHaveBushing = '' + this.sampleList.forEach(item => { + if (!item.bushing || item.bushing.length === 0) { + isHaveBushing = false + } + item.specialStandardMethod = this.specialStandardMethod + }) + try { + this.sampleList.forEach(item => { + if (item.insulating){ + let sampleListArr = [] + let insulatingArr = [] + // 鏈夌數缂嗛厤缃椂锛屾瘮杈冪數缂嗛厤缃殑妫�楠岄」鏄惁涓庡闈㈤噸澶� + item.insProduct.filter(a => a.state == 1).forEach(obj => { + sampleListArr.push(obj.id) + }) + item.insulating.insProduct.filter(a => a.state == 1).forEach(obj => { + insulatingArr.push(obj.id) + }) + const sameLength = sampleListArr.filter(id => insulatingArr.indexOf(id) > -1).length + if (sameLength > 0) { + this.$message.error('妫�楠岄」涓庣數缂嗛厤缃楠岄」涓嶈兘閲嶅') + } + throw sameLength > 0 + } + }) + } catch (e) { + console.log('e---', e) + if (e === true) throw e + } + let sampleList = this.HaveJson(this.sampleList) + sampleList.forEach(a => { + if (a.endModels) { + a.model = a.endModels + } + a.insProduct = a.insProduct.filter(b=>b.state === 1) + }) + let projectNum = this.totalArr.filter(a => a.state == 1).length + if(projectNum==0){ + this.$confirm('妫�楠岄」鐩负绌猴紝鏄惁纭鎻愪氦?', "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.saveMethod(sampleList) + }).catch(() => {}) + }else{ + let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b=>a.ask.includes(b)) && a.state == 1) + if (isRTS) { + this.editTable = this.handleData(sampleList,this.containsValue, 0) + this.editTable.forEach(item => { + item.value = item.modelNum + }) + this.bsm3Dia = true; + return + } + this.saveMethod(sampleList) + } + } + }, + /** + * 鏍¢獙濮旀墭瑕佹眰鐨勬楠岄」鐨勮姹傛弿杩板拰瑕佹眰鍊� + * + */ + checkRequiredValueAndRemark(data){ + //杩囨护瑕佹眰鍊间腑鍖呭惈鏁板瓧鐨勬墠鏍¢獙 + let filterData = data.filter(d=>/[0-9]/.test(d.ask)) + if(filterData.length===0){ + return false + } + let isTrue = true + try{ + filterData.forEach(ele=>{ + //瑕佹眰鍊煎拰瑕佹眰鎻忚堪涓嶈兘涓虹┖ + if(!ele.ask || !ele.tell){ + isTrue = false + }else{ + //鍒ゆ柇锛堚墹,鈮�,>,<,=锛夎繖鍑犵鎯呭喌 + //鍒ゆ柇瑕佹眰鍊间腑鐨勬暟瀛楁槸鍚﹀寘鍚湪瑕佹眰鎻忚堪涓� + if(['鈮�','鈮�','>','<','='].includes(ele.ask[0])){ + const askVal = ele.ask.substring(1,ele.ask.length) + if(isNaN(askVal) || ele.tell.indexOf(askVal)<0){ + isTrue = false + } + } + //鍒ゆ柇鑼冨洿(10-25),瑕佹眰鍊煎繀椤绘槸- + if(ele.ask.indexOf('-')>0 && ele.ask.length>1){ + //瑕佹眰鎻忚堪鐨剘鍜岃姹傚�肩殑-锛岀瓑鏁� + let tell = ele.tell + if(ele.tell.indexOf('~')>0 || ele.tell.indexOf('锛�') || ele.tell.indexOf('锛�')){ + tell = tell.replace('~','-') + tell = tell.replace('锛�','(') + tell = tell.replace('锛�',')') + } + const splits = ele.ask.split('-') + //婊¤冻鏍煎紡瑕佹眰锛屽苟涓斾袱涓兘鏄暟瀛� + if(splits.length==2 && !isNaN(splits[0]) && !isNaN(splits[1])){ + /** + * 鍒ゆ柇鎯呭喌 + * 1.瑕佹眰鎻忚堪涓庤姹傛弿杩扮浉鍚� + * 2.瑕佹眰鎻忚堪鍖呭惈瑕佹眰鍊� + * 3.瑕佹眰鎻忚堪涓�3N-10N杩欑鎯呭喌 + * 4.瑕佹眰鎻忚堪涓�10卤5杩欑鎯呭喌 + * 5. + */ + let min = Math.min(...splits) + let max = Math.max(...splits) + if(min==max){ + isTrue = false + } + //瑕佹眰鎻忚堪涓笉鍖呭惈卤浠ュ強鍖洪棿鐨勬暟瀛楋紝鍒欒繑鍥瀎alse + if(tell.indexOf('卤')<0&&tell.indexOf('-')<0){ + isTrue = false + }else if(ele.tell.indexOf('-')==0){ + isTrue = false + }else if(tell.indexOf('-')>0){ + if(tell.indexOf('卤')>0){ + ////鏍¢獙瑕佹眰鎻忚堪涓�(10-15)卤5杩欑鍐欐硶鐨勬儏鍐� + const num = tell.split('卤')[1] + const startIndex = tell.indexOf('(') + const endIndex = tell.indexOf(')') + if(startIndex>-1 && endIndex>0 ){ + const str = tell.substring(startIndex,endIndex) + if(str && str.indexOf('-')>0){ + let strList = str.split('-') + const minNum = Number(strList[0]-num) + const maxNum = Number(strList[1]+num) + if(minNum>min || maxNum<max){ + isTrue = false + } + } + }else{ + //鏍¢獙瑕佹眰鎻忚堪涓�10卤5杩欑鍐欐硶鐨勬儏鍐� + let splitNums = ele.tell.split('卤') + if(splitNums.length<2){ + isTrue = false + }else{ + let minTell = Number(splitNums[0])-Number(splitNums[1]) + let maxTell = Number(splitNums[0])+Number(splitNums[1]) + if(minTell!=min || maxTell!=max){ + isTrue = false + } + } + } + }else{ + const splitTells = tell.split('-') + if(splitTells[0].indexOf(min)<0 || splitTells[1].indexOf(max)<0){ + isTrue = false + } + } + } + }else{ + isTrue = false + } + } + // else if(ele.ask.indexOf('&')>0 && ele.ask.length>1){ + // //鍒ゆ柇 + // } + } + }) + }catch(error){ + console.log(error); + isTrue = false + } + return isTrue + }, + save0(){ + if(this.editTable.every(m=>m.value)){ + let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1) + sampleList.forEach(a => { + if (a.endModels) { + a.model = a.endModels + } + a.insProduct = a.insProduct.filter(b=>b.state === 1) + }) + this.saveMethod(sampleList) + }else{ + this.$message.error('璇峰~鍐欒瘑鍒鍊�') + } + }, + handleData(sampleList,calBack,type){ + let editTable = [] + sampleList.forEach(item => { + let obj = { + sampleCode:item.sampleCode, + model:item.model, + symbolList:[], + sampleId:item.id, + modelNum:item.modelNum, + } + if (item.insProduct && item.insProduct.length > 0) { + item.insProduct.forEach(a => { + if (a.state == 1) { + if(type==0){ + let str = calBack(a.ask) + str&&obj.symbolList.push({ + symbolItem:str, + inspectionItem:a.inspectionItem, + }) + }else if(type==1){ + let arr = this.editTable.filter(b => b.sampleId == item.id) + for (var i=0;i<arr.length;i++){ + if(a.ask){ + if(a.ask.includes(arr[i].symbolItem)){ + let ask = calBack(a.ask, arr[i].symbolItem,arr[i].value) + if (ask) { + a.ask = ask + } + let tell = this.handleAsk(a.tell, arr[i].symbolItem,arr[i].value) + if (tell) { + a.tell = tell + } + } + }else{ + this.$message.error('瑕佹眰鍊间负绌猴紝闇�瑕佸幓鏍囧噯搴撶淮鎶わ紒') + } + } + // arr.forEach(f => { + // if(a.ask){ + // if(a.ask.includes(f.symbolItem)){ + // let ask = calBack(a.ask, f.symbolItem,f.value) + // if (ask) { + // a.ask = ask + // } + // let tell = this.handleTell(a.tell, f.symbolItem,f.value) + // if (tell) { + // a.tell = tell + // } + // } + // }else{} + // }) + } + } + }) + } + // 鍏夌氦甯﹂」鐩� + 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 => { + if (c.state == 1) { + if(type==0){ + let str = calBack(c.ask) + str&&obj.symbolList.push({ + symbolItem:str, + inspectionItem:c.inspectionItem, + }) + }else if(type==1){ + let arr = this.editTable.filter(b => b.sampleId == item.id) + arr.forEach(f => { + if(c.ask.includes(f.symbolItem)){ + let ask = calBack(c.ask, f.symbolItem,f.value) + if (ask) { + c.ask = ask + } + let tell = this.handleTell(c.tell, f.symbolItem,f.value) + if (tell) { + c.tell = tell + } + } + }) + } + } + }) + } + }) + } + if (a.fibers && a.fibers.length > 0) { + a.fibers.forEach(b => { + if (b.productList && b.productList.length > 0) { + b.productList.forEach(c => { + if (c.state == 1) { + if(type==0){ + let str = calBack(c.ask) + str&&obj.symbolList.push({ + symbolItem:str, + inspectionItem:c.inspectionItem, + }) + }else if(type==1){ + // let ask = calBack(c.ask, c.rts) + // if (ask && c.state == 1) { + // c.ask = csk + // } + let arr = this.editTable.filter(b => b.sampleId == item.id) + arr.forEach(f => { + if(c.ask.includes(f.symbolItem)){ + let ask = calBack(c.ask, f.symbolItem,f.value) + if (ask) { + c.ask = ask + } + let tell = this.handleTell(c.tell, f.symbolItem,f.value) + if (tell) { + c.tell = tell + } + } + }) + } + } + }) + } + if (b.fiber && b.fiber.length > 0) { + b.fiber.forEach(c => { + if (c.productList && c.productList.length > 0) { + c.productList.forEach(d => { + if (d.state == 1) { + if(type==0){ + let str = calBack(d.ask) + str&&obj.symbolList.push({ + symbolItem:str, + inspectionItem:d.inspectionItem, + }) + }else if(type==1){ + // let ask = calBack(d.ask, d.rts) + // if (ask && d.state == 1) { + // d.ask = ask + // } + let arr = this.editTable.filter(b => b.sampleId == item.id) + arr.forEach(f => { + if(d.ask.includes(f.symbolItem)){ + let ask = calBack(d.ask, f.symbolItem,f.value) + if (ask) { + d.ask = ask + } + let tell = this.handleTell(d.tell, f.symbolItem,f.value) + if (tell) { + d.tell = tell + } + } + }) + } + } + }) + } + }) + } + }) + } + }) + } + if(type==0){ + editTable.push(obj) + } + }) + if(type==0){ + editTable.forEach(a => { + a.symbolList.forEach(b => { + let arr = a.symbolList.filter(c => c.symbolItem == b.symbolItem); + b.inspectionItemList = arr.map(c => c.inspectionItem).join(',') + }) + }) + editTable.forEach(a => { + let mySet = new Set(); + a.symbolList = a.symbolList.filter(b =>{ + let num0 = mySet.size; + mySet.add(b.symbolItem); + let num1 = mySet.size; + if(num0!=num1){ + return true; + }else{ + return false + } + }) + }) + let editTableNew = [] + editTable.forEach(a => { + a.symbolList.forEach(b => { + let obj = { + sampleCode:a.sampleCode, + model:a.model, + symbolItem:b.symbolItem, + sampleId:a.sampleId, + value:null, + inspectionItemList:b.inspectionItemList, + modelNum:a.modelNum, + } + editTableNew.push(obj) + }) + }) + return editTableNew + }else{ + return sampleList + } + }, + saveMethod(sampleList){ + console.log('sampleList----', sampleList) + this.saveLoad = true + if (this.addObj.quarterItemId) { + this.addObj.quarterItemId = this.addObj.quarterItemId[1] + } + + if(this.tabIndex==4&&this.active==2){ + // 閫�鍥炲悗鎻愪氦 + this.$axios.post(this.$api.insOrder.updateInsOrder, { + insOrder: this.addObj, + sampleProduct: sampleList, + },{ + headers: { + 'Content-Type': 'application/json' + }, + noQs:true + }).then(res => { + this.saveLoad = false + if (res.code == 201) return + this.$message.success('宸叉彁浜�') + this.bsm3Dia = false; + this.$parent.playOrder(0) + }).catch(e=>{ + this.saveLoad = false + }) + }else{ + // 甯歌鎻愪氦 + this.$axios.post(this.$api.insOrder.addInsOrder, { + str: JSON.stringify({ + insOrder: this.addObj, + list: JSON.stringify(sampleList), + pairing: JSON.stringify(this.bsm2Val2) + }) + }).then(res => { + this.saveLoad = false + if (res.code == 201) return + this.$message.success('宸叉彁浜�') + this.bsm3Dia = false; + this.$parent.playOrder(0) + }).catch(e=>{ + this.saveLoad = false + }) + } + + }, + upInsOrderOfState(state) { + if (state == 1) { + this.saveLoad = true + this.$axios.post(this.$api.insOrder.upInsOrderOfState, { + state, + id: this.currentId, + companyId:this.addObj.companyId, + laboratory:this.addObj.laboratory, + company: this.addObj.company + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.saveLoad = false + if (res.code == 201) return + this.$message.success('鎻愪氦鎴愬姛') + // this.$parent.multipleSelection = [{id: this.currentId}] + // this.$parent.print() + // 濡傛灉绱ф�ョ▼搴︿负绱ф�ワ紝闇�瑕佺洿鎺ヤ笅鍙戜汉鍛� + // if (this.addObj.type == 2) { + // this.issuedDialogVisible = true; + // this.$axios.post(this.$api.insOrder.selectOrderManDay, { + // id: this.currentId + // }).then(ress => { + // this.distributeData.orderId = this.currentId + // this.distributeData.appointed = ress.data + // }) + // } else { + // this.$parent.playOrder(0) + // } + this.$axios.post(this.$api.insOrder.selectOrderManDay, { + id: this.currentId + }).then(ress => { + this.distributeData.orderId = this.currentId + this.distributeData.appointed = ress.data + }) + setTimeout(() => { + this.issuedDialogVisible = true; + }, 1000) + }) + } else { + // 涓嶉�氳繃 + this.noDialogVisible = true + } + }, + // 涓嬪彂 + submitForm2() { + if (this.distributeData.appointed == null || this.distributeData.appointed == '') { + this.$message.error('绾﹀畾鏃堕棿鏈~鍐�') + return + } + if (this.distributeData.userId == null || this.distributeData.userId == '') { + this.$message.error('鎸囨淳浜哄憳鏈~鍐�') + return + } + if (this.distributeData.userId&&(this.distributeData.sonLaboratory== null ||this.distributeData.sonLaboratory== '')) { + this.$message.error('璇曢獙瀹ゆ湭濉啓') + return + } + this.upLoad = true; + this.$axios.post(this.$api.insOrder.upInsOrder, { + orderId: this.distributeData.orderId, + appointed: this.distributeData.appointed, + userId: this.distributeData.userId, + sonLaboratory:this.distributeData.sonLaboratory + }).then(res => { + if (res.code === 201) { + this.upLoad = false + return + } + this.$message.success('鎻愪氦鎴愬姛') + this.upLoad = false + this.issuedDialogVisible = false + this.$parent.playOrder(0) + }).catch(e => { + this.$message.error('鎻愪氦澶辫触') + this.upLoad = false + }) + }, + getUserNow() { + this.$axios.get(this.$api.user.getUserNow).then(res => { + let selects = res.data + if (selects == null) return + this.addObj.userId = selects.id + this.addObj.company = selects.company + this.addObj.custom = selects.name + this.addObj.code = selects.code + this.addObj.phone = selects.phone + this.addObj.companyId = selects.departId + this.addObj.production = '涓ぉ绉戞妧瑁呭鐢电紗鏈夐檺鍏徃' + this.addObj.productionEn = 'Zhongtian Technology Industrial Wire&Cable System CO.,LTD' + if(this.active==1){ + this.selectInsOrderTemplate() + } + }) + }, + getProNum() { + this.sampleSelectionList.forEach((m, i) => { + Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) + }) + this.$refs.sampleTable.doLayout() + }, + searchFilter() { + this.$refs.tree.filter(this.search) + }, + nodeOpen(data, node, el) { + $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') + if (node.data.code === '[3]') { + this.sampleViewEn = data.sampleTypeEn + } else if (node.data.code === '[4]') { + this.sampleViewEn = data.sampleEn + } + }, + nodeClose(data, node, el) { + $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder') + }, + handleNodeClick(val, node, el) { + this.selectTree = '' + this.models = val.children + this.getNodeParent(node) + let flag = false + if (node.level == 3) { + if(node.data.children.length>0){ + node.data.children.forEach(a => { + let key = Object.keys(a) + if(!key.includes('level')) { + flag = true + } + }) + + } + } + if (node.data.code === '[3]') { + this.sampleViewEn = val.sampleTypeEn + } else if (node.data.code === '[4]') { + console.log('node.data---', node.data) + if (node.data.children!==null && node.data.children.length>0) { + this.sampleViewEn = val.sampleEn + } + } + this.selectTree = this.selectTree.replace(' - ', '') + if(flag) { + this.selectTree = ' - - ' + this.selectTree + } + let data = this.selectTree.split(' - ') + let data2 = '' + for (let index = data.length - 1; index >= 0; index--) { + data2 += " - " + data[index] + } + this.selectTree = data2.replace(' - ', '') + }, + getNodeParent(val) { + if (val.parent != null) { + if (val.data.children === null) { + this.selectTree += ' - ' + val.label + ' - ' + '' + } else { + this.selectTree += ' - ' + val.label + } + this.getNodeParent(val.parent) + } + }, + selectStandardTreeList() { + this.selectStandardTreeLoading = true + this.$axios.get(this.$api.standardTree.selectStandardTreeList2).then(res => { + this.list = res.data + this.list.forEach(a => { + this.expandedKeys.push(a.label) + }) + this.selectStandardTreeLoading=false + }) + }, + filterNode(value, data) { + if (!value) return true; + return data.label.indexOf(value) !== -1; + }, + activeStandardTree() { + let trees = this.selectTree.split(" - ") + if (trees.length < 3) { + this.$message.error('鏈�夋嫨瀵硅薄') + return + } + this.addObj.factory = trees[0] + this.addObj.laboratory = trees[1] + this.addObj.sampleType = trees[2] + if (trees[3] === undefined || trees[3] === '' || trees[3] === '- ') { + this.addObj.sample = trees[2] + } else { + this.addObj.sample = trees[3] + } + this.addObj.sampleView = this.addObj.sample + this.addObj.sampleViewEn = this.sampleViewEn + this.addObj.model = (trees[4] == undefined ? null : trees[4]) + this.selectStandardTree = false + this.sampleList = [] + for (var i = 0; i < this.addObj.sampleNum; i++) { + this.sample.joinName = null + this.sample.joinModel = null + this.sample.joinNum = 1 + this.sample.sample = this.addObj.sample + this.sample.model = this.addObj.model + this.sample.unit = this.addObj.unit + this.sample.standardMethodListId = null + this.sample.insProduct = [] + this.sample.id = this.count + this.sample.childSampleList = [] + this.sample.insulating = null + this.sample.sheath = null + this.sampleList.push(this.HaveJson(this.sample)) + this.count++ + } + this.$refs.sampleTable.doLayout() + // this.selectsStandardMethodByFLSSM() + }, + selectsStandardMethodByFLSSM() { + this.methodLoad = true + this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { + tree: this.selectTree + }).then(res => { + this.methodLoad = false + try { + if (res.data.standardMethodList.length == 0 && this.selectTree.split('-').length == 5) { + let arr = this.selectTree.split('-') + let arr0 = arr.slice(0, arr.length - 1) + let selectTree = arr0.join('-').substring(0, arr0.join('-').length - 1) + this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { + tree: selectTree + }).then(ress => { + this.methods = ress.data.standardMethodList + }) + } else { + this.methods = res.data.standardMethodList + } + } catch (e) {} + }) + }, + addStandardTree() { + if (this.selectTree == null) return + this.sampleList = [] + this.productList = [] + for (var i = 0; i < this.addObj.sampleNum; i++) { + this.sample.joinName = null + this.sample.joinModel = null + this.sample.joinNum = 1 + this.sample.sample = this.addObj.sample + this.sample.model = this.addObj.model + this.sample.unit = this.addObj.unit + this.sample.standardMethodListId = null + this.sample.insProduct = [] + this.sample.id = parseInt(i+1) + this.sample.childSampleList = [] + this.sample.insulating = null + this.sample.sheath = null + this.sampleList.push(this.HaveJson(this.sample)) + // this.count++ + } + this.computationalPairing(this.sampleList.length) + this.bsm2Val2 = this.HaveJson(this.bsm2Val3) + }, + selectSample(val) { + this.sampleIds = [] + val.forEach(a => { + this.sampleIds.push(a.id) + }) + this.sampleSelectionList = val + }, + delSample() { + this.sampleIds.forEach(a => { + for (var i = 0; i < this.sampleList.length; i++) { + if (this.sampleList[i].id == a) { + this.sampleList.splice(i, 1) + i -= 1 + break + } + } + }) + this.$refs.sampleTable.doLayout() + }, + selectProduct(val) { + this.productListSelected = val + this.productIds = [] + val.forEach(a => { + this.productIds.push(a.id) + }) + }, + rowClick(row, column, event) { + this.currentMethod = row + let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId) + if (obj && obj.code == '鎶�鏈姹�') { + this.isAskOnlyRead = true + } else { + this.isAskOnlyRead = false + } + this.sampleId = row.id + if (this.active !== 1) { + this.sampleIds = [] + this.sampleSelectionList.forEach(ele=>{ + if(ele.id == row.id){ + this.sampleIds.push(row.id) + } + }) + } + this.productList = row.insProduct + this.productList0 = JSON.parse(JSON.stringify(this.productList)) + setTimeout(() => { + this.productList.forEach(a => { + if (a.state == 1) { + this.toggleSelection(a) + }else{ + this.$refs.productTable.toggleRowSelection(a, false); + } + }) + }, 200) + }, + toggleSelection(row) { + this.$refs.productTable.toggleRowSelection(row, true); + }, + selectOne(selection, row) { + this.bsm1DiaList = [] + row.state = row.state == 1 ? 0 : 1 + if(row.section === null) { + row.section = "" + } + if (row.sectionCopy === undefined && row.section) { + if (row.section.indexOf('[') > -1) { + this.$set(row, 'sectionCopy', row.section) + } + } + if (row.ask.includes('[')) { + this.$set(row, 'askCopy', row.ask) + } + if (row.tell.includes('[')) { + this.$set(row, 'tellCopy', row.tell) + } + // if (row.manHour.includes('[')) { + // this.$set(row, 'manHourCopy', row.manHour) + // } + // if (row.price.includes('[')) { + // this.$set(row, 'priceCopy', row.price) + // } + let arr = this.productList.filter(m=>m.state==1&&row.sectionCopy&&row.sectionCopy.includes(m.sectionCopy)&&m.ask&&m.sectionCopy.indexOf('[')==-1) + if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.sectionCopy !== undefined && row.state === 1&&arr.length==0) { + if (row.sectionCopy.indexOf('[') > -1) { + row.bsmRow = this.HaveJson(row) + } + row.bsm1 = true + this.bsm1DiaList.push(row) + this.bsm1DiaAll = true + } else if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.state === 0&&arr.length==0) { + row.bsm1 = false + }else if(arr.length>0){ + try{ + row.bsmRow = this.HaveJson(row) + let sectionCopy = arr[0].sectionCopy + let arr0 = JSON.parse(row.sectionCopy) + let arr1 = JSON.parse(row.ask) + // let arr2 = JSON.parse(row.manHour) + // let arr3 = JSON.parse(row.price) + let arr4 = JSON.parse(row.tell) + let index = arr0.indexOf(sectionCopy) + row.sectionCopy = sectionCopy + row.ask = arr1[index] + // row.manHour = arr2[index] + // row.price = arr3[index] + row.tell = arr4[index] + } catch(e) {} + } + this.sampleList.forEach(item => { + if (this.sampleIds.indexOf(item.id) > -1||this.currentMethod.id==item.id) { + item.insProduct.forEach(m => { + if (m.id == row.id) { + m.state = row.state; + } + }) + } + }) + this.productList.forEach(item => { + if (item.id == row.id) { + item.state = row.state; + } + }) + this.changeProductList0() + this.currentMethod.insProduct = this.productList0 + this.getProNum() + }, + searchProject () { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鍏夌氦椤圭洰" + }).then(res => { + this.opticalProject = res.data + }) + }, + permute(nums) { + const result = []; + + function backtrack(temp, nums) { + if (temp.length === 2) { + result.push([...temp]); + return; + } + for (let i = 0; i < nums.length; i++) { + if (temp.includes(nums[i])) continue; + // 閬垮厤閲嶅鏁板瓧 + if (temp.length > 0 && nums[i] < temp[temp.length - 1]) continue; // 瑙勫畾椤哄簭锛岄伩鍏嶉噸澶嶇粍鍚� + temp.push(nums[i]); + backtrack(temp, nums); + temp.pop(); + } + } + backtrack([], nums); + return result; + }, + computationalPairing(n) { + const nums = []; + for (let i = 1; i <= n; i++) { + nums.push(i); + } + this.bsm2Val3 = this.HaveJson(this.permute(nums)) + }, + tableRowClassName({ + row, + rowIndex + }) { + if (row.state === 0) { + return ''; + } + return 'warning-row'; + }, + selectInsOrderTemplate() { + this.$axios.get(this.$api.insOrder.selectInsOrderTemplate+'?company='+this.addObj.company).then(res => { + if (res.code == 201) return + this.templates = res.data + }) + }, + // 鍒犻櫎妯℃澘--璋冪敤鎺ュ彛 + handleDelete(row) { + this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.$axios.post(this.$api.insOrder.delInsOrderTemplate, { + id: row.id + }).then(res => { + if (res.code === 201) { + return + } + this.$message.success('鍒犻櫎鎴愬姛') + this.selectInsOrderTemplate() + }).catch(e => { + this.$message.error('鍒犻櫎澶辫触') + }) + }).catch(() => {}) + }, + // 淇濆瓨妯℃澘 + addTemplateDia() { + if (this.templateName) { + this.templateLoading = true; + this.$axios.post(this.$api.insOrder.addInsOrderTemplate, { + name: this.templateName, + thing: JSON.stringify({ + addObj: this.addObj, + sampleList: this.sampleList, + selectTree:this.selectTree + }) + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) return + this.templateLoading = false; + this.templateDia = false; + this.$message.success('淇濆瓨鎴愬姛') + this.selectInsOrderTemplate() + this.templateName = '' + }) + } else { + this.$message.error('璇峰~鍐欐ā鏉垮悕绉�') + } + }, + // 鏌ヨ妯℃澘 + selectInsOrderTemplateById(e) { + this.$axios.post(this.$api.insOrder.selectInsOrderTemplateById + '?id=' + e).then(res => { + if (res.code == 201) return + let obj = JSON.parse(res.data) + //鍒跺崟浜鸿缃负褰撳墠鐧诲綍鐢ㄦ埛 + let user = JSON.parse(localStorage.getItem('user')) + obj.addObj.custom = user.name + obj.addObj.userId = user.userId + this.addObj = obj.addObj; + this.sampleList = obj.sampleList; + this.selectTree = obj.selectTree + }) + }, + delSampleAndProduct() { + this.sampleList.splice(scope.$index, 1) + this.productList = [] + }, + selectEnumByCategoryForUnit() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鍗曚綅" + }).then(res => { + this.units = res.data + }) + }, + selectEnumByCategoryForOrderType() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "妫�楠岀被鍒�" + }).then(res => { + this.orderType = res.data + if (res.data.length > 0) { + this.addObj.orderType = res.data[0].value + } + }) + }, + selectEnumByCategoryForSampleForm() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鏉ユ牱鏂瑰紡" + }).then(res => { + this.formType = res.data + if (this.formType.length > 0) { + this.addObj.formType = this.formType[0].value + } + }) + }, + selectSampleStatus() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鏍峰搧鐘舵��" + }).then(res => { + this.sampleStatusList = res.data + if (this.sampleStatusList.length > 0) { + this.addObj.sampleStatus = this.sampleStatusList[0].value + } + }) + }, + spliceString (row, val, type) { + if (type === 'cores') { + const index = this.sampleList.findIndex(item => item.id === row.id) + if (index > -1) { + if (this.sampleList[index].modelNum) { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + ' ' + this.sampleList[index].cores + '*' + this.sampleList[index].modelNum) + } else { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + ' ' + this.sampleList[index].cores) + } + if (this.sampleList[index].modelNum && !this.sampleList[index].cores) { + this.$set(this.sampleList[index], 'endModels',this.sampleList[index].model + ' ' + this.sampleList[index].modelNum) + } + } + } + this.getProductLoad = true + let selectTreeList = this.selectTree.split(" - ") + this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model) + this.$axios.post(this.$api.standardTree.selectStandardProductList, { + model: this.addObj.model?this.addObj.model:row.model, + modelNum: row.modelNum, + standardMethodListId: val, + factory: selectTreeList.join(" - "), + cores: row.cores, + conductorMaterial: row.conductorMaterial, + conductorType: row.conductorType, + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + res.data.forEach(a => { + a.state = 0 + }) + row.insProduct = this.HaveJson(res.data) + this.getProductLoad = false + this.productList = row.insProduct + this.productList0 = JSON.parse(JSON.stringify(this.productList)) + this.$refs.sampleTable.setCurrentRow(row) + setTimeout(() => { + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }, 200) + }) + }, + methodChange(val, row, type) { + if (type === 'splice') { + const index = this.sampleList.findIndex(item => item.id === row.id) + if (index > -1) { + if (this.sampleList[index].cores) { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + ' ' + this.sampleList[index].cores + '*' + this.sampleList[index].modelNum) + } else { + if (this.sampleList[index].modelNum) { + const index2 = this.sampleList[index].modelNum.indexOf('脳') + if (index2 === 0) { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + this.sampleList[index].modelNum) + } else if (index2 === -1) { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + ' ' + this.sampleList[index].modelNum) + } else { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].modelNum + this.sampleList[index].model) + } + } else { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + ((this.sampleList[index].modelNum == null || this.sampleList[index].modelNum == '' || this.sampleList[index].modelNum == 'null') ? '' : (' ' + this.sampleList[index].modelNum))) + } + } + if (!this.sampleList[index].modelNum && this.sampleList[index].cores) { + this.$set(this.sampleList[index], 'endModels', this.sampleList[index].model + ' ' + this.sampleList[index].cores) + } + } + } + if (val === null || val === '') return + this.currentMethod = row + let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId) + if (obj && obj.code == '鎶�鏈姹�') { + this.isAskOnlyRead = true + } else { + this.isAskOnlyRead = false + } + this.getProductLoad = true + let selectTreeList = this.selectTree.split(" - ") + this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model) + this.$axios.post(this.$api.standardTree.selectStandardProductList, { + model: this.addObj.model?this.addObj.model:row.model, + modelNum: row.modelNum, + standardMethodListId: val, + cores: row.cores, + factory: selectTreeList.join(" - "), + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + res.data.forEach(a => { + a.state = 0 + }) + row.insProduct = this.HaveJson(res.data) + this.getProductLoad = false + this.productList = row.insProduct + this.productList0 = JSON.parse(JSON.stringify(this.productList)) + this.$refs.sampleTable.setCurrentRow(row) + setTimeout(() => { + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }, 200) + }) + this.searchProject() + this.searchTemList() + }, + searchTemList () { + this.temperatureList = [] + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鐢靛姏娓╁害寰幆妫�楠�" + }).then(res => { + if (res.data.length > 0) { + this.temperatureEngList = res.data + res.data.forEach(item => { + this.temperatureList.push(item.label) + }) + } + }) + }, + changeModel() { + this.sampleList.forEach(a => { + let obj = this.sampleIds.find(b => b == a.id) + if (obj) { + a.model = this.model + } + }) + }, + changeStandardMethodListId() { + this.sampleList.forEach(a => { + let obj = this.sampleIds.find(b => b == a.id) + if (obj) { + a.standardMethodListId = this.standardMethodListId + this.methodChange(this.standardMethodListId, a) + } + }) + }, + methodFocus() { + this.selectsStandardMethodByFLSSM() + }, + handleChangeModel(e) { + this.productList = [] + let num = this.selectTree.split('-').length; + if (num != 5) { + this.selectTree = this.selectTree + ' - ' + e + } else { + let arr = this.selectTree.split('-') + let arr0 = arr.slice(0, arr.length - 1) + this.selectTree = arr0.join('-') + '- ' + e + } + }, + // 瑕佹眰鍊煎彉鍖栨椂 + requestChange(e, row,type) { + //this.currentMethod 褰撳墠鏍峰搧id + this.sampleList.forEach(item=>{ + if(item.id == this.currentMethod.id){ + item.insProduct.forEach(i=>{ + if(i.id == row.id){ + if(row.repetitionTag){ + if(row.repetitionTag==i.repetitionTag){ + i[type] = e + } + }else{ + if(!i.repetitionTag){ + i[type] = e + } + } + } + }) + } + }) + }, + selectStandardMethods() { + this.$axios.get(this.$api.standardTree.selectStandardMethodEnum).then(res => { + this.methods = res.data + }) + }, + selectable() { + if (this.active > 1) { + return false + } else { + return true + } + }, + selectable0(row,index) { + if (this.active > 1||row.repetitionTag) { + return false + } else { + return true + } + }, + handleAll(e) { + if (e.length > 0) { + this.productList.map(m => { + if(e.find(a=>a.id == m.id)){ + m.state = 1 + } + return m + }) + } else { + this.productList.map(m => { + m.state = 0 + return m + }) + } + this.bsmRow3 = []; + this.bsm1DiaList = [] + this.productList.forEach(p => { + if (p.sectionCopy === undefined && p.section) { + if (p.section.indexOf('[') > -1) { + this.$set(p, 'sectionCopy', p.section) + } + } + if (p.ask.includes('[')) { + this.$set(p, 'askCopy', p.ask) + } + if (p.tell.includes('[')) { + this.$set(p, 'tellCopy', p.tell) + } + // if (p.manHour.includes('[')) { + // this.$set(p, 'manHourCopy', p.manHour) + // } + // if (p.price.includes('[')) { + // this.$set(p, 'priceCopy', p.price) + // } + if (p.bsm === '1' && p.sectionCopy !== '' && p.sectionCopy !== null && p.sectionCopy !== undefined && p.state === 1) { + if (p.sectionCopy.indexOf('[') > -1) { + p.bsmRow = this.HaveJson(p) + } + p.bsm1 = true + this.bsm1DiaList.push(p) + this.bsm1DiaAll = true + } else if (p.bsm === '1' && p.sectionCopy !== '' && p.sectionCopy !== null && p.state === 0) { + p.bsm1 = false + } + }) + if (e.length > 0) { + this.sampleList.map(item => { + if (this.sampleIds.indexOf(item.id) > -1||this.currentMethod.id==item.id) { + item.insProduct.map(m => { + m.state = 1 + return m; + }) + } + return item + }) + } else { + this.sampleList.map(item => { + if (this.sampleIds.indexOf(item.id) > -1||this.currentMethod.id==item.id) { + item.insProduct.map(m => { + m.state = 0 + return m; + }) + } + return item + }) + } + this.productList.forEach(item => { + if (item.id == row.id) { + item.state = row.state; + } + }) + this.changeProductList0() + this.currentMethod.insProduct = this.productList0 + this.getProNum() + this.$nextTick(() => { + this.$refs.productTable.doLayout() + }) + }, + submitTell() { + if (!this.tell) { + this.$message.error('璇疯緭鍏ヤ笉閫氳繃鍘熷洜') + return + } + this.noLoading = true; + this.$axios.post(this.$api.insOrder.upInsOrderOfState, { + state: 2, + id: this.currentId, + tell: this.tell + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.noLoading = false; + this.tell = ''; + if (res.code == 201) return + this.$message.success('鎻愪氦鎴愬姛') + this.issuedDialogVisible = false; + this.$parent.playOrder(0) + }) + }, + selectEnumByCategoryForSonLaboratory() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "瀛愬疄楠屽" + }).then(res => { + this.factory = [] + res.data.forEach(a => { + this.filters.push({ + text: a.label, + value: a.value + }) + }) + }) + }, + filterHandler(value, row, column) { + const property = column['property']; + return row[property] === value; + }, + openConfig() { + if (this.active === 1) { + if (this.sampleIds.length === 0) { + this.$message.error("鏈�夋嫨鏍峰搧") + return + } + this.configShow = true + } else { + if (this.sampleId === null) { + this.$message.error('鏈�変腑鏍峰搧') + return + } + this.sampleIds = [this.sampleId] + this.$axios.post(this.$api.insBushing.selectBushingBySampleId, { + sampleId: this.sampleId + }).then(res => { + if (res.data.length === 0) { + this.$message.error('璇ユ牱鍝佹病鏈夐厤缃厜绾�') + return + } + for (var i in this.sampleList) { + if (this.sampleList[i].id = this.sampleId) { + this.sampleList[i].bushing = res.data + break + } + } + this.configShow = true + }) + } + }, + openEquipConfig() { + if (this.active === 1) { + if (this.sampleIds.length === 0) { + this.$message.error("鏈�夋嫨鏍峰搧") + return + } + this.equipConfigShow = true + } else { + if (this.sampleId === null) { + this.$message.error('鏈�変腑鏍峰搧') + return + } + // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, { + // sampleId: this.sampleId + // }).then(res => { + // if (res.data.length === 0) { + // this.$message.error('璇ユ牱鍝佹病鏈夐厤缃厜绾�') + // return + // } + // for (var i in this.sampleList) { + // if (this.sampleList[i].id = this.sampleId) { + // this.sampleList[i].bushing = res.data + // break + // } + // } + // this.configShow = true + // }) + } + }, + areObjectsValuesEqual (objects, property) { + if (!objects || objects.length === 0) return false; + const firstValue = objects[0][property]; + return objects.every(obj => obj[property] === firstValue); + }, + // 杈呭姪绾胯姱閰嶇疆 + openAuxiliaryCore () { + if (this.active === 1) { + if (this.sampleIds.length === 0) { + this.$message.error("鏈�夋嫨鏍峰搧") + } else if (this.sampleIds.length === 1) { + if (!this.sampleSelectionList[0].standardMethodListId) { + this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�") + return + } + this.auxiliaryShow = true + } else { + // 鍚屾椂閰嶇疆澶氫釜鏍峰搧鐨勭數缂嗛厤缃椂蹇呴』閫夋嫨鐩稿悓鐨勬楠屾爣鍑� + if (!this.sampleSelectionList.every(value => value.standardMethodListId)) { + this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�") + } else { + if (!this.areObjectsValuesEqual(this.sampleSelectionList, 'standardMethodListId')) { + this.$message.error("璇烽�夋嫨鐩稿悓鐨勬楠屾爣鍑�") + return + } + this.auxiliaryShow = true + } + } + } else { + if (this.sampleId === null) { + this.$message.error('鏈�変腑鏍峰搧') + } + } + }, + openCableConfig() { + if (this.active === 1) { + if (this.sampleIds.length === 0) { + this.$message.error("鏈�夋嫨鏍峰搧") + } else if (this.sampleIds.length === 1) { + if (!this.sampleSelectionList[0].standardMethodListId) { + this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�") + return + } + this.cableConfigShow = true + } else { + // 鍚屾椂閰嶇疆澶氫釜鏍峰搧鐨勭數缂嗛厤缃椂蹇呴』閫夋嫨鐩稿悓鐨勬楠屾爣鍑� + if (!this.sampleSelectionList.every(value => value.standardMethodListId)) { + this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�") + } else { + if (!this.areObjectsValuesEqual(this.sampleSelectionList, 'standardMethodListId')) { + this.$message.error("璇烽�夋嫨鐩稿悓鐨勬楠屾爣鍑�") + return + } + this.cableConfigShow = true + } + } + } else { + if (this.sampleId === null) { + this.$message.error('鏈�変腑鏍峰搧') + } + } + }, + goBackAdd () { + this.cableConfigShow = false + }, + goBackAdd2 () { + this.auxiliaryShow = false + }, + // 鍏ㄩ�夌壒娈婂�煎鐞嗘閫夋嫨瑕佹眰鍊肩殑鍥炶皟 + upBsmAll (item) { + const i = this.bsm1DiaList.findIndex(obj => obj.id === item.id) + if (i > -1) { + // 鎵惧埌鐩稿簲鐨勬楠岄」璧嬪�� + this.bsm1DiaList[i].bsm1Val = item.bsm1Val + let sections = this.bsm1DiaList[i].bsmRow.sectionCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.sectionCopy); + let asks = this.bsm1DiaList[i].bsmRow.askCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.askCopy); + let tells = this.bsm1DiaList[i].bsmRow.tellCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.tellCopy); + // let manHours = this.bsm1DiaList[i].bsmRow.manHourCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.manHourCopy); + // let prices = this.bsm1DiaList[i].bsmRow.priceCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.priceCopy); + for (var a in sections) { + if (this.bsm1DiaList[i].bsm1Val === sections[a]) { + this.productList.forEach(p => { + // 灏嗛�夋嫨濂界殑瑕佹眰鍊艰祴鍊煎埌鍒楄〃閲� + if (p.id === this.bsm1DiaList[i].bsmRow.id) { + p.section = sections[a] + p.ask = asks[a] + p.tell = tells[a] + // p.manHour = manHours[a] + // p.price = prices[a] + } + }) + break + } + } + } + this.changeProductList0() + this.currentMethod.insProduct = this.productList0 + }, + save1 () { + if (this.bsm1DiaList.length > 0) { + this.bsm1DiaList.forEach(item => { + if (!item.bsm1Val) { + throw this.$message.error('鐗规畩椤圭洰蹇呴』澶勭悊') + } + }) + } + this.bsm1DiaAll = false + }, + beforeClose(done) { + if (this.bsm1DiaList.length > 0) { + this.bsm1DiaList.forEach(item => { + if (!item.bsm1Val) { + throw this.$message.error('鐗规畩椤圭洰蹇呴』澶勭悊') + } + }) + } + done() + }, + beforeClose0(done) { + if (!this.bsm3Val) { + this.$message.error('RST蹇呴』濉啓') + return + } else { + if (Array.isArray(this.bsmRow3)) { + this.bsmRow3.forEach(item => { + item.rts = this.bsm3Val + }) + } else { + this.bsmRow3.rts = this.bsm3Val + } + } + done() + }, + getTotal() { + this.totalArr = [] + // this.total = 0; + this.sampleList.forEach(item => { + if (item.insProduct && item.insProduct.length > 0) { + item.insProduct.forEach(a => { + this.totalArr.push(a) + }) + } + 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 => { + this.totalArr.push(c) + }) + } + }) + } + if (a.fibers && a.fibers.length > 0) { + a.fibers.forEach(b => { + if (b.productList && b.productList.length > 0) { + b.productList.forEach(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 => { + this.totalArr.push(d) + }) + } + }) + } + }) + } + }) + } + }) + let mySet = new Set(); + let arr0 = this.totalArr.filter(item => { + if (item.state == 1) { + let num1 = mySet.size + if (item.manHourGroup === '' || !item.manHourGroup) { + return true + } else { + mySet.add(item.manHourGroup) + let num2 = mySet.size + if (num2 > num1) { + return true + } else { + return false + } + } + } + }) + // arr0.forEach(item => { + // this.total += Number(item.price) + // }) + let arr1 = this.totalArr.filter(item => item.state == 1) + let mySet0 = new Set(); + this.sonLaboratoryList = [] + arr1.forEach(item => { + let num1 = mySet0.size + mySet0.add(item.sonLaboratory) + let num2 = mySet0.size + if(num2>num1){ + this.sonLaboratoryList.push({ + label:item.sonLaboratory, + value:item.sonLaboratory, + }) + } + }) + }, + bsm2Up(val) { + let list = [] + for (let a = 1; a < this.bsm2Val3.length + 1; a++) { + list.push(a) + } + let set = new Set() + let size1 = set.length + while (set.size < val) { + set.add(Math.ceil(Math.random() * this.bsm2Val3.length)) + } + this.bsm2Val2 = [] + for (let a of set) { + this.bsm2Val2.push(this.HaveJson(this.bsm2Val3[a - 1])) + } + }, + changeUser(){ + if(this.sonLaboratoryList.length>0){ + this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value + } + }, + addProductList(productList,row,index){ + let list = productList.filter(m=>{ + if(m.id==row.id){ + m.delete = false + } + return m.id==row.id + }) + let num = list.length + let obj = this.HaveJson(row) + obj.repetitionTag = num + obj.delete = true + productList.splice(index+num,0,obj) + this.addProductList0(row,index) + }, + addProductList0(row,index){ + let list = this.productList0.filter(m=>{ + if(m.id==row.id){ + m.delete = false + } + return m.id==row.id + }) + let num = list.length + let obj = this.HaveJson(row) + obj.repetitionTag = num + obj.delete = true + this.productList0.splice(index+num,0,obj) + }, + deleteProductList(index,list){ + if(list[index-1]&&list[index-1].repetitionTag){ + list[index-1].delete=true + } + list.splice(index,1) + this.deleteProductList0(index) + }, + deleteProductList0(index){ + if(this.productList0[index-1]&&this.productList0[index-1].repetitionTag){ + this.productList0[index-1].delete=true + } + this.productList0.splice(index,1) + } + } + } +</script> + +<style scoped> +.ins_order_add { + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} + +.ins_order_add::-webkit-scrollbar { + width: 0; +} +.circulateTable { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.opticalProject { + width: 38%; +} +.temperatureList { + width: 60%; +} +.temperatureListTitle { + display: flex; + flex-direction: row; + justify-content: space-between; + line-height: 30px; +} +</style> +<style scoped> +.ins_order_add .el-input-group__append, +.el-input-group__prepend { + padding: 0 10px; +} + +.ins_order_add .el-tree-node__content { + height: 32px; + font-size: 14px; + border-radius: 2px; +} + +.ins_order_add .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { + color: #3A7BFA; +} + +.ins_order_add .has-gutter .el-table__cell .cell { + line-height: 30px; + background-color: #fafafa; +} + +.ins_order_add .has-gutter .el-table__cell { + background-color: #fafafa !important; +} + +.ins_order_add .el-table__row .cell { + font-size: 12px; +} + +.ins_order_add .el-table .warning-row .cell { + color: #3A7BFA; +} + +.ins_order_add .el-select .is-disabled { + background: transparent !important; +} + +.ins_order_add .el-select .is-disabled .el-input__inner { + background: transparent !important; +} +</style> diff --git a/src/views/business/productOrder/components/addInspectionDia.vue b/src/views/business/productOrder/components/addInspectionDia.vue new file mode 100644 index 0000000..3872bff --- /dev/null +++ b/src/views/business/productOrder/components/addInspectionDia.vue @@ -0,0 +1,213 @@ +<template> + <div> + <el-dialog + :close-on-click-modal="false" + :close-on-press-escape="false" + :visible.sync="dialogVisible" + title="娣诲姞妫�楠岄」" + width="80%"> + <el-table ref="sampleTable" :data="sampleList" border class="el-table sampleTable" highlight-current-row + max-height="400px" tooltip-effect="dark"> + <el-table-column align="center" label="搴忓彿" type="index" width="65"></el-table-column> + <el-table-column align="center" label="鏍峰搧鍚嶇О" min-width="100" prop="sample"> + <template slot-scope="scope"> + <el-input v-model="scope.row.sample" clearable disabled size="small"></el-input> + </template> + </el-table-column> + <el-table-column align="center" label="鏍峰搧缂栧彿" min-width="100" prop="sampleCode"> + <template slot-scope="scope"> + <el-input v-model="scope.row.sampleCode" clearable disabled placeholder="涓嶅~鍐欏垯绯荤粺鑷姩鐢熸垚" + size="small"></el-input> + </template> + </el-table-column> + <el-table-column align="center" label="鏍峰搧鍨嬪彿" min-width="60" prop="model"> + <template slot-scope="scope"> + <el-input v-model="scope.row.model" clearable disabled placeholder="涓嶅~鍐欏垯绯荤粺鑷姩鐢熸垚" + size="small"></el-input> + </template> + </el-table-column> + <el-table-column align="center" label="妫�楠屾爣鍑�" min-width="100" prop="standardMethodListId"> + <template slot-scope="scope"> + <el-input v-model="scope.row.standardMethodListId" clearable disabled placeholder="涓嶅~鍐欏垯绯荤粺鑷姩鐢熸垚" + size="small"></el-input> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="120"> + <template #default="{ row }"> + <el-button size="small" type="text" @click="openAddItemDia(row)">娣诲姞</el-button> + </template> + </el-table-column> + </el-table> + </el-dialog> + <el-dialog + :close-on-click-modal="false" + :close-on-press-escape="false" + :visible.sync="itemDialogVisible" + title="娣诲姞妫�楠岄」" + width="90%"> + <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" border class="el-table" + max-height="700px" style="margin-bottom: 10px;" tooltip-effect="dark" + @selection-change="selectProduct"> + <el-table-column type="selection" width="65"></el-table-column> + <el-table-column label="妫�楠岄」鍒嗙被" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> + <el-table-column label="妫�楠岄」" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column> + <el-table-column label="妫�楠岄」瀛愰」" min-width="140" prop="inspectionItemSubclass" show-overflow-tooltip></el-table-column> + <el-table-column label="瑕佹眰鍊�" min-width="220px" prop="ask"> + <template slot-scope="scope"> + <el-input v-if="active==1&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="瑕佹眰鍊�" + size="small" type="textarea"></el-input> + <span v-else> + <template >{{ scope.row.ask }}</template> + </span> + </template> + </el-table-column> + <el-table-column label="瑕佹眰鎻忚堪" min-width="220px" prop="tell"> + <template slot-scope="scope"> + <el-input v-if="active==1" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="瑕佹眰鎻忚堪" + size="small" type="textarea"></el-input> + <span v-else> + <template >{{ scope.row.tell }}</template> + </span> + </template> + </el-table-column> + <el-table-column label="鏉′欢" min-width="140" prop="radius" show-overflow-tooltip> + <template slot-scope="scope"> + <el-input v-if="active==1&&!scope.row.inspectionItem.includes('楂樻俯鍘嬪姏璇曢獙')" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="鏉′欢" + size="small" type="textarea"> + </el-input> + <el-select v-else-if="scope.row.inspectionItem.includes('楂樻俯鍘嬪姏璇曢獙') && active==1" v-model="scope.row.radius" clearable + placeholder="鏉′欢" + size="small"> + <el-option v-for="(a,i) in JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option> + </el-select> + <span v-else>{{scope.row.radius}}</span> + </template> + </el-table-column> + <el-table-column label="绾胯姱" min-width="120" prop="cableTag" show-overflow-tooltip> + <template slot-scope="scope"> + <el-input v-if="active==1" v-model="scope.row.cableTag" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="绾胯姱" + size="small" type="textarea"></el-input> + </template> + </el-table-column> + <el-table-column label="璇曢獙鏂规硶" min-width="120" prop="methodS" show-overflow-tooltip></el-table-column> + <el-table-column label="璁¢噺鍗曚綅" prop="unit" show-overflow-tooltip width="100"></el-table-column> + <el-table-column label="鍗曚环" prop="price" show-overflow-tooltip width="100"></el-table-column> + <el-table-column label="鍖洪棿" min-width="120" prop="section" show-overflow-tooltip></el-table-column> + <el-table-column :filter-method="filterHandler" :filters="filters" label="瀛愬疄楠屽" min-width="130" prop="sonLaboratory" + show-overflow-tooltip></el-table-column> + </el-table> + <span slot="footer" class="dialog-footer"> + <el-button @click="itemDialogVisible = false">鍙� 娑�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitList">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +export default { + name: "addInspectionDia", + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {}, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + dialogVisible: false, + itemDialogVisible: false, + getProductLoad: false, + sampleList: [], // 妫�楠屾爣鍑嗚〃鏍兼暟鎹� + productList: [], // 妫�楠岄」琛ㄦ牸鏁版嵁 + productListSelected: [], // 閫夋嫨鐨勬楠岄」琛ㄦ牸 + active: 1, + methodS:null, + id:null, + filters: [], + upLoad: false, + } + }, + mounted() { + + }, + // 鏂规硶闆嗗悎 + methods: { + getDataList(row) { + this.dialogVisible = true + this.$axios.get(this.$api.insOrder.getSampleByOrderId + '?insOrderId=' + row.id).then(res => { + if (res.code === 201) { + return + } + this.sampleList = res.data + }) + }, + openAddItemDia (row) { + this.itemDialogVisible = true + this.getProductLoad = true + this.id=row.id + this.$axios.get(this.$api.insOrder.getProductTreeBySampleId + '?insSampleId=' + row.id).then(res => { + this.getProductLoad = false + if (res.code === 201) { + return + } + this.productList = res.data + }).catch(err => { + this.getProductLoad = false + }) + }, + selectProduct(val) { + val.forEach((item) => { + item.state = 1 + }) + const index = this.productList.findIndex(obj => obj.id === val.id) + if (index > -1) { + this.productList[index].state = 1 + } + this.productListSelected = val + }, + submitList () { + this.$confirm('纭娣诲姞姝ゆ楠岄」?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.upLoad = true + this.$axios.post(this.$api.insOrder.addOmitOrderProduct,{insProductBindingList:this.productListSelected,insSampleId:this.id}, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + } ).then(res => { + this.upLoad = false + if (res.code === 201) { + return + } + this.$message.success('娣诲姞鎴愬姛锛�') + this.itemDialogVisible = false + }).catch(err => { + this.upLoad = false + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + tableRowClassName({row, rowIndex}) { + if (row.state === 0) { + return ''; + } + return 'warning-row'; + }, + filterHandler(value, row, column) { + const property = column['property']; + return row[property] === value; + }, + }, +} +</script> + +<style scoped> +.ins_order_add .el-table .warning-row .cell { + color: #3A7BFA; +} +</style> diff --git a/src/views/business/productOrder/components/printDialog.vue b/src/views/business/productOrder/components/printDialog.vue new file mode 100644 index 0000000..e031081 --- /dev/null +++ b/src/views/business/productOrder/components/printDialog.vue @@ -0,0 +1,352 @@ +<template> + <div> + <el-dialog :visible.sync="isShow" title="鏍囩鎵撳嵃" top="5vh" width="600px" @close="$emit('closePrintDialog')"> + <div style="width:100%;height: 400px;overflow-y: auto;text-align: left"> + <div class="dia_body"> + <el-checkbox + v-model="checkAll" + :indeterminate="isIndeterminate" + style="margin: 10px 5px;" + @change="handleCheckAllChange">鍏ㄩ��</el-checkbox> + <el-checkbox-group v-model="checkIndexList" @change="changePrintCode()"> + <el-card v-for="(item, i) in barcodeData" :key="i" class="box-card" style="margin-bottom: 15px; font-size: 16px !important;"> + <el-checkbox :key="i" :label="i" style="position: relative;top:0;left:10px"><br></el-checkbox> + <div> + <div class="titleH1" style="text-align: center; margin-bottom: 2px;font-size: 16px">妫�娴嬩腑蹇冩牱鍝佹爣璇嗗崱</div> + <div style="text-align: center;"> + <barcode :displayValue="false" :height="34" :value="item.barcode" :width="2"></barcode> + </div> + <div style="margin-left: 20px;text-align: left"> + <div class="item"> + <span class="full-title">鏍峰搧鍚嶇О</span>: + <span class="info">{{ item.sampleView }}</span> + </div> + <div class="item"> + <span class="full-title">鐢熶骇鍗曚綅</span>: + <span class="info">{{ item.production }}</span> + </div> + <div class="item2"> + <span class="full-title">瑙勬牸鍨嬪彿</span>: + <span class="info">{{ item.sampleModel }}</span> + </div> + <div class="item"> + <span class="full-title">濮旀墭鏃ユ湡</span>: + <span class="info">{{ item.sendTime }}</span> + </div> + <div class="item"> + <span class="full-title">濮旀墭浜�</span>: + <span class="info2">{{ item.prepareUser }}</span> + <span class="full-title">妫�娴嬬紪鍙�</span>: + <span class="info">{{ item.entrustCode }}</span> + </div> + <div class="item"> + <span class="full-title">鏍峰搧鏁伴噺</span>: + <span class="info2">{{ item.testQuantity }}</span> + </div> + <div style="font-weight: bold;display: flex;align-items: center;"> + <span class="full-title">鏍峰搧鐘舵��</span>: + <el-radio-group v-model="item.insState" v-removeAriaHidden style="margin-top: 7px;margin-left: 4px;"> + <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">寰呮</el-radio> + <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">鍦ㄦ</el-radio> + <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">宸叉</el-radio> + </el-radio-group> + <span> + <el-radio v-model="item.isLeave" + :label="true" + size="small" style="margin-left: 14px;margin-top: 3px;" @click.native.prevent="changeIsLeave(item)">鐣欐牱</el-radio> + </span> + </div> + </div> + </div> + </el-card> + </el-checkbox-group> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="$emit('closePrintDialog')">鍙� 娑�</el-button> + <el-button type="primary" @click="submitPrint">鎵� 鍗�</el-button> + </el-row> + </span> + </el-dialog> + <div class="el-dialog-body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;"> + <div id="printOrder" ref="printOrder" class="printOrder"> + <el-card v-for="(item, i) in checkDataList" :key="i" class="box-card" style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> + <div> + <div class="titleH1" style="text-align: center;margin-bottom: 1px">妫�娴嬩腑蹇冩牱鍝佹爣璇嗗崱</div> + <div style="text-align: center;"> + <barcode :displayValue="false" :height="22" :value="item.barcode" :width="1.6"></barcode> + </div> + <div style="margin-left: 12px;text-align: left"> + <div class="item"> + <span class="full-title4">鏍峰搧鍚嶇О:</span> + <span class="info4">{{ item.sampleView }}</span> + </div> + <div class="item"> + <span class="full-title2">鐢熶骇鍗曚綅</span>: + <span class="info">{{ item.production }}</span> + </div> + <div class="item2"> + <span class="full-title4">瑙勬牸鍨嬪彿:</span> + <span class="info4">{{ item.sampleModel }}</span> + </div> + <div class="item"> + <span class="full-title2">濮旀墭鏃ユ湡</span>: + <span class="info">{{ item.sendTime }}</span> + </div> + <div class="item"> + <span class="full-title2">濮旀墭浜�</span>: + <span class="info3">{{ item.prepareUser }}</span> + <span class="full-title2">妫�娴嬬紪鍙�</span>: + <span class="info">{{ item.entrustCode }}</span> + </div> + <div class="item"> + <span class="full-title2">鏍峰搧鏁伴噺</span>: + <span class="info3">{{ item.testQuantity }}</span> + </div> + <div> + <span class="full-title2">鏍峰搧鐘舵��</span>: + <span style="white-space: nowrap;margin-left: 2px"> + 寰呮<span v-if="item.insState!==0" class="scor"></span><span v-if="item.insState===0" class="checked">鈭�</span> + 鍦ㄦ<span v-if="item.insState!==1" class="scor"></span><span v-if="item.insState===1" class="checked">鈭�</span> + 宸叉<span v-if="item.insState!==2" class="scor"></span><span v-if="item.insState===2" class="checked">鈭�</span> + 鐣欐牱<span v-if="!item.isLeave" class="scor"></span><span v-if="item.isLeave" class="checked">鈭�</span> + </span> + </div> + </div> + </div> + </el-card> + </div> + </div> + </div> +</template> + +<script> +import PrintJS from "print-js"; + +export default { + name: "printDialog", + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {}, + props: { + printDialog: { + type: Boolean, + default: () => false + }, + }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + isShow: this.printDialog, + loadPint: false, + isIndeterminate: false, // 澶氶�夋鏍峰紡 + checkAll: false, + checkIndexList: [], // 閫夋嫨瑕佹墦鍗扮殑鏁版嵁 + barcodeData: [], + printLoading: false, + checkDataList: [] + } + }, + // 鏂规硶闆嗗悎 + methods: { + // 鑾峰彇瑕佹墦鍗扮殑鏁版嵁 + getLabelPrinting(selection) { + try { + this.loadPint = true; + let ids = [] + selection.map(m => { + ids.push(m.id) + }) + this.$axios.post(this.$api.insOrder.labelOrderPrinting, { + ids: ids + }, { + headers: { + 'Content-Type': 'application/json' + }, + noQs: true + }).then(res => { + if (res.code === 200 && res.data.length > 0) { + res.data.forEach(item => { + console.log('item---', item) + item.sendTime = item.sendTime && item.sendTime.substring(0, 10) + item.sampleNumber = item.qtyArrived + item.buyUnitMeas + this.$set(item, 'barcode', item.entrustCode) + this.$set(item, 'isLeave', item.insState === '2') + }) + this.barcodeData = res.data + } + }) + } catch (e) { + console.log('鑾峰彇瑕佹墦鍗扮殑鏁版嵁---', e) + } + + }, + changeIsLeave(item) { + const index = this.barcodeData.findIndex(val => val.entrustCode === item.entrustCode) + if (index > -1) { + this.barcodeData[index].isLeave = !this.barcodeData[index].isLeave + } + }, + // 鍏ㄩ�夊閫夋鍥炶皟 + handleCheckAllChange(val) { + if (val) { + for (var i = 0; i < this.barcodeData.length; i++) { + this.checkIndexList.push(i) + } + this.checkDataList = this.barcodeData + } else { + this.checkIndexList = [] + this.checkDataList = [] + } + this.isIndeterminate = false; + }, + changeType(type) { + type = type === '1' ? '0' : '1' + }, + //閫夋嫨瑕佹墦鍗扮殑浜岀淮鐮� + changePrintCode() { + let indexList = this.checkIndexList + let arr = [] + indexList.forEach(i => { + if (i !== undefined) { + arr.push(this.barcodeData[i]) + } + }) + console.log('arr---', arr) + this.checkDataList = arr + }, + // 鎻愪氦鎵撳嵃 + submitPrint() { + if (this.checkDataList.length < 1) { + this.$message.warning("璇烽�夋嫨瑕佹墦鍗扮殑鏉″舰鐮�") + return + } + this.printDialogVisible = false; + PrintJS({ + targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� + printable: 'printOrder',//椤甸潰 + type: "html",//鏂囨。绫诲瀷 + maxWidth: 360, + header: '', + style: + `@page { + margin: 0.4cm; + margin-right: 0.4cm; + margin-top: 0.4cm; + margin-bottom: 0.4cm; + padding-bottom: 0px; + size: 400px 75px collapse; + } + html{ + zoom:100%; + + } + @media print{ + width: 400px; + height: 75px; + margin:0; + }`, + onPrintDialogClose: this.erexcel = false, + font_size: '0.29cm', + }); + }, + }, + watch: { + printDialog(newVal) { + if (!newVal) { + this.barcodeData = [] + this.checkIndexList = [] + this.checkDataList = [] + this.isIndeterminate = true; + } + } + }, +} +</script> + +<style scoped> +.item { + margin-bottom: 4px; +} + +.item2 { + margin-bottom: 8px; + vertical-align: top; +} + +.full-title { + display: inline-block; + width: 80px; + text-align-last: justify; +} + +.full-title2 { + display: inline-block; + width: 50px; + text-align-last: justify; +} + +.full-title4 { + display: inline-block; + width: 53px; + text-align-last: justify; + vertical-align: top; +} + +.info { + margin-left: 2px; +} + +.info2 { + margin-left: 2px; + margin-right: 30px; + width: 80px; + display: inline-block; +} + +.info3 { + margin-left: 2px; + margin-right: 8px; + width: 44px; + display: inline-block; +} + +.info4 { + display: inline-block; + margin-left: 2px; + white-space: normal; + width: 260px; +} + +.checkboxInfo { + display: inline-block; + margin-left: 10px; +} + +.scor { + width: 0.06cm; + height: 0.06cm; + border-radius: 1px; + border: 1px solid #000; + display: inline-block; + margin-right: 14px; + margin-left: 4px; +} + +.checked { + margin-right: 14px; + margin-left: 4px; +} + +>>> .el-checkbox { + margin-right: 10px; +} + +>>> .el-card { + border: none; +} + +>>> .el-card__body { + padding: 4px 2px 6px 14px; +} +</style> diff --git a/src/views/business/productOrder/index.vue b/src/views/business/productOrder/index.vue new file mode 100644 index 0000000..d562f24 --- /dev/null +++ b/src/views/business/productOrder/index.vue @@ -0,0 +1,1320 @@ +<template> + <div class="app-container"> + <div class="search"> + <el-form :model="entity" ref="entity" size="small" :inline="true"> + <el-form-item label="濮旀墭缂栧彿" prop="entrustCode"> + <el-input v-model="entity.entrustCode" clearable placeholder="璇疯緭鍏�" + size="small" + @keyup.enter.native="refreshTable"> + </el-input> + </el-form-item> + <el-form-item label="鏍峰搧鍚嶇О" prop="sampleName"> + <el-input v-model="entity.partNo" clearable placeholder="璇疯緭鍏�" size="small" + @keyup.enter.native="refreshTable"></el-input> + </el-form-item> + <el-form-item label="鏍峰搧鍨嬪彿" prop="sampleModel"> + <el-input v-model="entity.sampleModel" clearable placeholder="璇疯緭鍏�" + size="small" @keyup.enter.native="refreshTable()"></el-input> + </el-form-item> + <el-form-item> + <el-button :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'鏇村':'鏀惰捣'}}</el-button> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </el-form-item> + <el-form-item label="鏍峰搧缂栧彿" prop="sampleCode" v-if="more"> + <el-input v-model="entity.sampleCode" clearable placeholder="璇疯緭鍏�" size="small" + @keyup.enter.native="refreshTable"> + </el-input> + </el-form-item> + <el-form-item label="涓嬪崟鏃堕棿" prop="createTime" v-if="more"> + <el-date-picker v-model="entity.createTime" clearable + format="yyyy-MM-dd" + placeholder="閫夋嫨鏃ユ湡" + size="small" + style="width:100%" + type="date" + value-format="yyyy-MM-dd HH:mm:ss"> + </el-date-picker> + </el-form-item> + <el-form-item label="濮旀墭浜�" prop="prepareUser" v-if="more"> + <el-input v-model="entity.prepareUser" clearable placeholder="璇疯緭鍏�" size="small" + @keyup.enter.native="refreshTable"> + </el-input> + </el-form-item> + <el-form-item label="濮旀墭鍗曚綅" prop="company" v-if="more"> + <el-input v-model="entity.company" clearable placeholder="璇疯緭鍏�" size="small" + @keyup.enter.native="refreshTable"> + </el-input> + </el-form-item> + </el-form> + </div> + <div class="table-tab"> + <div> + <ul class="tab"> + <li v-for="(m,i) in tabList" :key="i+'afgh'" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> + </ul> + </div> + <div> + <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 6" size="small" @click="downLoad">瀵煎嚭</el-button> + <el-button v-if="tabIndex === 1" size="small" type="primary" @click="openAddIns">娣诲姞妫�楠岄」</el-button> + <el-button size="small" type="primary" @click="openPrint">鏍囩鎵撳嵃</el-button> + <el-button size="small" type="primary" @click="playOrder(1)">涓嬪崟</el-button> + </div> + </div> + <div class="table"> + <lims-table :tableData="tableData" :column="column" + :isSelection="true" :handleSelectionChange="selectMethod" + @pagination="pagination" :height="'calc(100vh - 290px)'" key="tableData" + :page="page" :tableLoading="tableLoading"></lims-table> + </div> + <div> + <!-- 瀹℃牳 --> + <el-dialog :before-close="handleClose" :visible.sync="verifyDialogVisible" title="涓嬪崟瀹℃牳" width="30%"> + <p v-if="!isPass" style="font-size:16px;color:#333333">濮旀墭缂栧彿<span + style="color:#34BD66">ZTMS2023071001</span>鐨勪俊鎭槸鍚﹂�氳繃</p> + <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> + <el-form-item label="璇疯緭鍏ユ牱鍝佸簱浣嶅彿锛�"> + <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-row v-if="!isPass"> + <el-button @click="handleClose">閫� 鍥�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitForm">閫� 杩�</el-button> + </el-row> + <el-row v-else> + <el-button @click="handleClose">杩� 鍥�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitForm">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <!-- 鎾ら攢 --> + <el-dialog :before-close="handleClose" :visible.sync="quashDialogVisible" title="涓嬪崟鎾ら攢" width="30%"> + <p v-if="!isQuash" style="font-size:16px;color:#333333">濮旀墭缂栧彿<span + style="color:#34BD66">{{this.insOrderRow.entrustCode}}</span>鐨勪俊鎭槸鍚︽挙閿�</p> + <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> + <el-form-item label="璇疯緭鍏ユ挙閿�鍘熷洜锛�"> + <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-row v-if="!isQuash"> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitForm">纭� 瀹�</el-button> + </el-row> + <el-row v-else> + <el-button @click="handleClose">杩� 鍥�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitForm">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <!-- 涓嬪彂 --> + <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="妫�楠屽垎閰�" width="400px"> + <div class="body" style="max-height: 60vh;"> + <el-row> + <el-col class="search_thing" style="width: 95%;"> + <div class="search_label"><span class="required-span">* </span>绾﹀畾鏃堕棿锛�</div> + <div class="search_input"> + <el-date-picker v-model="distributeData.appointed" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" + style="width: 100%;" type="date" value-format="yyyy-MM-dd"> + </el-date-picker> + </div> + </el-col> + <el-col class="search_thing" style="width: 95%;"> + <div class="search_label"><span class="required-span">* </span>鎸囨淳浜哄憳锛�</div> + <div class="search_input"> + <el-select v-model="distributeData.userId" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;" @change="changeUser"> + <el-option v-for="(item,i) in personList" :key="i+'gbnm.'" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </el-col> + <el-col class="search_thing" style="width: 95%;"> + <div class="search_label"><span class="required-span" >* </span>璇曢獙瀹わ細</div> + <div class="search_input"> + <el-select v-model="distributeData.sonLaboratory" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="(item,i) in sonLaboratoryList" :key="i+'oooo'" :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="handleClose2">鍙� 娑�</el-button> + <el-button :loading="upLoad" type="primary" @click="submitForm2">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%"> + <div v-if="dataDialogVisible" style="height: 70vh;overflow-y: auto;"> + <ValueTable ref="ValueTableDataLook" :componentData="componentDataDataLook" :rowKey="'insProductId'" + :url="$api.insOrder.selectSampleAndProductByOrderId"/> + </div> + </el-dialog> + <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢鏌ョ湅" width="80%"> + <div v-if="filesDialogVisible" style="height: 70vh;overflow-y: auto;"> + <ValueTable :key="upIndex" ref="fileList" + :componentData="componentData0" + :url="$api.insOrderPlan.getFileList" + class="value-table"/> + </div> + </el-dialog> + <el-dialog :title="deleteTilte" :visible.sync="deleteDialogVisible" width="80%"> + <div v-if="deleteDialogVisible" style="height: 70vh;overflow-y: auto;"> + <ValueTable ref="ValueTableDataDelete" :componentData="componentDataDelete" + :isColumnWidth="true" :url="$api.insOrder.selectNoProducts+'?orderId='+orderId+'&ids='+this.revocationInsProductIds"/> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="handleNo">{{deleteTilte=='鎾ら攢'?'鍙� 娑�':'涓嶉�氳繃'}}</el-button> + <el-button :loading="printLoading" type="primary" @click="submitDelete">{{deleteTilte=='鎾ら攢'?'纭� 瀹�':'閫� 杩�'}}</el-button> + </el-row> + </span> + </el-dialog> + </div> + <div> +<!-- <Add v-if="active<4" :active="active" :currentId="currentId" :examine = "examine" :tabIndex="tabIndex" />--> + </div> + <el-dialog :visible.sync="printDialogVisible" title="鏍囩鎵撳嵃" top="5vh" width="40%"> + <div v-loading="loadPint" style="width:100%;height: 400px;overflow-y: auto;"> + <div class="dia_body"> + <el-checkbox + v-model="checkAll" + :indeterminate="isIndeterminate" + style="margin: 10px 5px;" + @change="handleCheckAllChange">鍏ㄩ��</el-checkbox> + <el-checkbox-group v-model="checkIndexList" @change="changePrintCode()"> + <el-card v-for="(item, i) in qrData" :key="i+'wwwww'" class="box-card" style="margin-bottom: 15px; font-size: 16px !important;"> + <el-checkbox :key="i" :label="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox> + <div> + <el-row style="font-size: 14px;padding-left: 20px;"> + <el-col style="font-weight: bold;">{{ item.pName }}</el-col> + </el-row> + <div style="display: flex;"> + <div> + <el-col :offset="4" :span="8"> + <vueQr :margin="2" :size="140" :text="JSON.stringify(item.sampleCode)"></vueQr> + </el-col> + </div> + <div style="margin-left: 50px;width: 100%;"> + <el-row> + <el-col style="font-weight: bold;font-size: 14px;"><span>鏍峰搧缂栧彿: </span>{{ item.sampleCode }}</el-col> + </el-row> + <el-row style="margin-top: 1px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>濮旀墭鍗曞彿: </span>{{ item.code }}</el-col> + </el-row> + <el-row style="margin-top: 1px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>瑙勬牸鍨嬪彿: </span>{{ item.model }}</el-col> + </el-row> + <el-row style="margin-top: 1px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>鏍峰搧鍚嶇О: </span>{{ item.sample }}</el-col> + </el-row> + <el-row class="ellipsis-multiline" style="margin-top: 1px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>妫�娴嬮」鐩�: </span>{{ item.item }}</el-col> + </el-row> + <el-row style="margin-top: 3px;font-size: 14px;"> + <el-col style="font-weight: bold;display: flex;align-items: center;"><span>鏍峰搧鐘舵��: </span> + <el-radio-group :value="item.insState" disabled style="margin-top: 7px;margin-left: 4px;"> + <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">寰呮</el-radio> + <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">鍦ㄦ</el-radio> + <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">宸叉</el-radio> + </el-radio-group><el-radio v-model="item.isLeave" :label="1" disabled style="font-weight: bold;margin-top: 7px;">鐣欐牱</el-radio></el-col> + </el-row> + </div> + </div> + </div> + </el-card> + </el-checkbox-group> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="printDialogVisible=false">鍙� 娑�</el-button> + <el-button :loading="printLoading" type="primary" @click="submitPrint">鎵� 鍗�</el-button> + </el-row> + </span> + </el-dialog> + <div class="el-dialog__body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> + <div id="printMOrder" ref="printMOrder" class="printMOrder"> + <el-card v-for="(item, i) in checkDataList" :key="i+'uuuuu'" class="box-card" style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> + <div style="display: flex;"> + <div> + <el-col :offset="2" :span="10"> + <vueQr :margin="2" :size="60" :text="JSON.stringify(item.sampleCode)"></vueQr> + </el-col> + </div> + <div style="margin-left: 0.32cm;line-height: 0.22cm;"> + <el-row> + <el-col class="single-line-ellipsis" style="font-size: 0.20cm;width: 4cm;"><span>鏍峰搧缂栧彿: </span>{{ item.sampleCode }}</el-col> + </el-row> + <el-row style="font-size: 0.20cm;"> + <el-col><span>濮旀墭鍗曞彿: </span>{{ item.code }}</el-col> + </el-row> + <el-row style="font-size: 0.20cm;"> + <el-col><span>瑙勬牸鍨嬪彿: </span>{{ item.model }}</el-col> + </el-row> + <el-row style="font-size: 0.20cm;"> + <el-col ><span>鏍峰搧鍚嶇О: </span>{{ item.sample }}</el-col> + </el-row> + <el-row style="font-size: 0.20cm;width: 4cm;"> + <el-col class="ellipsis-multiline"><span>妫�娴嬮」鐩�: </span>{{ item.item }}</el-col> + </el-row> + <el-row style="margin-top: 0.01cm;font-size: 0.20cm;"> + <el-col style="display: flex;align-items: center;"><span>鏍峰搧鐘舵��: + </span> + <span style="white-space: nowrap;"><span v-if="item.insState==0">鈭�</span><span v-if="item.insState!=0" class="scor"></span>寰呮 + <span v-if="item.insState==1">鈭�</span><span v-if="item.insState!=1" class="scor"></span>鍦ㄦ + <span v-if="item.insState==2">鈭�</span><span v-if="item.insState!=2" class="scor"></span>宸叉 + <span v-if="item.isLeave==1">鈭�</span><span v-if="item.isLeave!=1" class="scor"></span>鐣欐牱</span> + <!-- <el-radio-group :value="item.insState" style="margin-top: 3px;margin-left: 1px;" disabled> + <el-radio :label="0" style="margin-right: 3px;font-size: 6px;">寰呮</el-radio> + <el-radio :label="1" style="margin-right: 3px;font-size: 6px;">鍦ㄦ</el-radio> + <el-radio :label="2" style="margin-right: 3px;font-size: 6px;">宸叉</el-radio> + </el-radio-group><el-radio :label="1" style="margin-top: 3px;font-size: 8px;" v-model="item.isLeave" disabled>鐣欐牱</el-radio> --> + </el-col> + </el-row> + </div> + </div> + </el-card> + </div> + </div> + <!-- 淇敼濮旀墭缂栧彿寮规 --> + <el-dialog :visible.sync="entrustCodeVisible" title="鎻愮ず" width="30%"> + <el-input v-model="entrustCodeInfo.entrustCode"></el-input> + <span slot="footer" class="dialog-footer"> + <el-button @click="entrustCodeVisible = false">鍙� 娑�</el-button> + <el-button :loading="submitCodeLoading" type="primary" @click="submitCode">纭� 瀹�</el-button> + </span> + </el-dialog> + <!--鏍囩鎵撳嵃寮规--> + <print-dialog v-if="printDialog" ref="printDialog" + :printDialog="printDialog" + @closePrintDialog="closePrintDialog"></print-dialog> + <!--娣诲姞閬楁紡妫�楠岄」寮规--> + <add-inspection-dia v-if="addInspectionDia" ref="addInspectionDia"></add-inspection-dia> +<!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"--> +<!-- :sonLaboratory="sonLaboratory" :state="state"--> +<!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>--> + </div> +</template> + +<script> +import vueQr from 'vue-qr' +import PrintJS from 'print-js' +import file from "@/utils/file"; +import PrintDialog from "@/views/business/productOrder/components/printDialog.vue"; +import AddInspectionDia from "@/views/business/productOrder/components/addInspectionDia.vue"; +import limsTable from "@/components/Table/lims-table.vue"; +import {getWarehouseSubmit} from "@/api/business/materialInspection"; +import { + checkUpdate, delInsOrder, + rawAllInsOrderExport, + selectInsOrderParameter, selectOrderManDay, + updateInspected, + updateOrderEntrustCode, updateStatus, upInsOrder, upPlanUser2 +} from "@/api/business/productOrder"; +import {Message} from "element-ui"; +import {selectUserCondition} from "@/api/performance/class"; +import {downFile} from "@/api/business/rawMaterialOrder"; +// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; +export default { + components: { + limsTable, + AddInspectionDia, + PrintDialog, + vueQr + }, + data() { + return { + entity: { + orderType: '', + state: '', + }, + tableData: [], + tableLoading: false, + column: [ + {label: '濮旀墭缂栧彿', prop: 'entrustCode'}, + {label: '濮旀墭鍗曚綅', prop: 'company'}, + {label: '鏍峰搧鍚嶇О', prop: 'sampleName'}, + {label: '鏍峰搧鍨嬪彿', prop: 'sampleModel'}, + {label: '鏍峰搧鏁伴噺', prop: 'sampleNum'}, + {label: '妫�楠屼汉', prop: 'testingName'}, + { + dataType: 'tag', + label: '绱ф�ョ▼搴�', + prop: 'type', + formatData: (params) => { + if (params == 0) { + return '鏅��' + } else if (params == 1) { + return '浼樺厛' + } else { + return '绱ф��' + } + }, + formatType: (params) => { + if (params == 0) { + return 'success' + } else if (params == 1) { + return 'warning' + } else { + return 'danger' + } + } + }, + {label: '澶囨敞', prop: 'remark'}, + {label: '妫�楠岃繘搴�%', prop: 'insProgress'}, + {label: '绾﹀畾鏃堕棿', prop: 'appointed'}, + { + dataType: 'tag', + label: '妫�楠岀粨鏋�', + prop: 'insResult', + formatData: (params) => { + if (params == 1) { + return '鍚堟牸' + } else if (params == 0) { + return '涓嶅悎鏍�' + } else if (params == 3) { + return '涓嶅垽瀹�' + } else { + return '' + } + }, + formatType: (params) => { + if (params == 1) { + return 'success' + } else if (params == 0) { + return 'danger' + } else if (params == 3) { + return '' + } else { + return '' + } + } + }, + {label: '涓嬪崟鏃堕棿', prop: 'createTime'}, + {label: '涓嬪彂鏃堕棿', prop: 'sendTime'}, + {label: '閫�鍥炵悊鐢�', prop: 'tell'}, + {label: '濮旀墭浜�', prop: 'prepareUser'}, + { + dataType: 'action', + fixed: 'right', + label: '鎿嶄綔', + operation: [ + { + name: '鏁版嵁鏌ョ湅', + type: 'text', + clickFun: (row) => { + this.handleDataLook(row); + }, + disabled: (row, index) => { + return row.state != 1 && row.state != 4 + }, + showHide: (row) => { + return this.tabIndex === 1 || this.tabIndex === 2 || this.tabIndex === 3 || this.tabIndex === 6 + } + }, + { + name: '闄勪欢鏌ョ湅', + type: 'text', + clickFun: (row) => { + this.handleFileLook(row); + }, + disabled: (row, index) => { + return row.state != 1 && row.state != 4 + }, + showHide: (row) => { + return this.tabIndex === 1 || this.tabIndex === 2 || this.tabIndex === 3 || this.tabIndex === 6 + } + }, + { + name: '鎶ュ憡涓嬭浇', + type: 'text', + clickFun: (row) => { + this.download(row); + }, + disabled: (row, index) => { + return row.state != 4 || row.reportId == null + }, + showHide: (row) => { + return this.tabIndex === 2 || this.tabIndex === 3 || this.tabIndex === 6 + } + }, + { + name: '瀹℃牳', + type: 'text', + clickFun: (row) => { + this.handleVerify(row); + }, + disabled: (row, index) => { + return row.state != 0 + }, + showHide: (row) => { + return this.tabIndex === 0 + } + }, + { + name: '鎾ら攢', + type: 'text', + clickFun: (row) => { + this.handlEquash(row); + }, + disabled: (row, index) => { + return row.state != 1 && row.state != 0 + }, + showHide: (row) => { + return this.tabIndex === 0 || this.tabIndex === 1 + } + }, + { + name: '鎾ら攢瀹℃牳', + type: 'text', + clickFun: (row) => { + this.handlEquashCheck(row); + }, + disabled: (row, index) => { + return (row.state != 1 && row.state != 0)||(this.tabIndex!=1)||row.isRevocation!=1 + }, + showHide: (row) => { + return this.tabIndex === 1 + } + }, + { + name: '鍒嗛厤', + type: 'text', + clickFun: (row) => { + this.handleIssued(row); + }, + disabled: (row, index) => { + return row.state != 1 || !!row.assign + }, + showHide: (row) => { + return this.tabIndex === 1 + } + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.handleDelete(row); + }, + showHide: (row) => { + return this.tabIndex === 4 || this.tabIndex === 5 + } + }, + ] + } + ], + page: { + total:0, + size:10, + current:1 + }, + state:0,// 0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0,3鏁版嵁鏌ョ湅 + InspectionKey: 1, + inspectorList: [],//妫�楠屼汉鍛樺垪琛� + sonLaboratory: null,// 0:濮旀墭锛�1锛氬師鏉愭枡 + typeSource: null,// 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟 + deleteTilte:'鎾ら攢', + examine: null, + deleteList:[], + loadPint:false, + checkAll: false, + isIndeterminate: true, + printLoading:false, + printDialogVisible:false, + //鏄惁瀹℃牳閫氳繃 true鏄� false涓嶆槸 + isPass: false, + //鏄惁瀹℃牳鎾ら攢 true鏄� false涓嶆槸 + isQuash: false, + verifyDialogVisible: false, + quashDialogVisible: false, + issuedDialogVisible: false, + dataDialogVisible: false, // 鏁版嵁鏌ョ湅寮规 + filesDialogVisible: false, // 闄勪欢鏌ョ湅寮规 + formData: {}, + formData0: {}, + formData1: {}, + distributeData: { + orderId: '', + sampleId: '', + appointed: '', + userId: '', + sonLaboratory:'' + }, + entrustCodeVisible: false, // 淇敼濮旀墭缂栧彿寮规 + entrustCodeInfo: {}, + submitCodeLoading: false, + // 浜哄憳鍒楄〃 + personList: [], + orderId:'', + revocationInsProductIds:'', + componentDataDataLook: { + entity: { + id: 0, + orderBy: { + field: 'sampleCode', + order: 'asc' + } + }, + isIndex: false, + showSelect: false, + select: false, + do: [], + tagField: { + insState: { + select: [] + }, + insResult: { + select: [{ + value: 1, + label: '鍚堟牸', + type: 'success' + },{ + value: 0, + label: '涓嶅悎鏍�', + type: 'danger' + },{ + value: 3, + label: '涓嶅垽瀹�', + type: '' + }] + } + }, + selectField: {}, + spanConfig:{ + rows:[ + { + name:'sampleCode', + index:0 + }, + { + name:'sample', + index:1 + }, + { + name:'model', + index:6 + } + ] + }, + requiredAdd: [], + requiredUp: [] + }, + componentData0: { + entity: { + insOrderId:'' + }, + isIndex: true, + showSelect: false, + select: false, + sort: false, + init:false, + do: [ + { + id: 'parent', + font: '涓嬭浇', + type: 'text', + method: 'handleDown' + } + ], + isPage: false, + linkEvent: {}, + tagField: { + type:{ + select:[ + { + value: 1, + label: '鍥剧墖' + }, + { + value: 2, + label: '鏂囦欢' + } + ] + } + }, + currentId: '', + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, + componentDataDelete: { + entity: { + // orderId: '', + // orderBy: { + // field: 'sampleCode', + // order: 'asc' + // } + }, + isPage:true, + isIndex: false, + showSelect: true, + select: true, + selectMethod: 'selectDelete', + do: [], + tagField: { + insState: { + select: [] + }, + insResult: { + select: [{ + value: 1, + label: '鍚堟牸', + type: 'success' + },{ + value: 0, + label: '涓嶅悎鏍�', + type: 'danger' + }] + } + }, + selectField: {}, + spanConfig:{}, + requiredAdd: [], + requiredUp: [] + }, + deleteDialogVisible:false, + upLoad: false, + tabList: [ + { + label: '寰呭鏍�', + value: 0 + }, { + label: '寰呮楠�', + value: 1 + }, + { + label: '濮旀墭宸叉', + value: 4 + }, + { + label: '鎶芥牱宸叉', + value: 4 + }, + { + label: '閫�鍥�', + value: 2 + }, + { + label: '鎾ら攢', + value: 3 + }, + { + label: '鍏ㄩ儴', + value: -2 + } + ], + tabIndex: 0, + active: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝4锛氬厜绾ら厤缃�,榛樿涓�0 + currentId: null, + more:false, + insOrderRow:{}, + checkIndexList:[], + checkDataList:[ + { + sampleCode:'11111' + } + ], + qrData:[], + multipleSelection:[], + sonLaboratoryList:[], + printDialog: false, + addInspectionDia: false + } + }, + watch:{ + printDialogVisible(newVal){ + if(!newVal){ + this.qrData = [] + this.checkIndexList = [] + this.checkDataList = [] + this.isIndeterminate = true; + } + } + }, + mounted() { + this.refreshTable() + this.getAuthorizedPerson() + }, + methods: { + // 鏌ヨ鍒楄〃鏁版嵁 + refreshTable() { + if (this.tabIndex !== 2 && this.tabIndex !==3) { + this.entity.orderType = '' + } else { + if (this.tabIndex === 2) { + this.entity.orderType = 'Customer-ordered test' + } else { + this.entity.orderType = '鎶芥' + } + } + const params = {...this.entity, state: this.tabList[this.tabIndex].value} + this.tableLoading = true + selectInsOrderParameter(params).then(res => { + this.tableLoading = false + if (res.code === 200) { + this.tableData = res.data.records + this.page.total = res.data.total + } + }).catch(err => { + this.tableLoading = false + }) + }, + refresh() { + this.resetForm('entity') + this.refreshTable() + }, + pagination (page) { + this.page.size = page.limit + this.refreshTable() + }, + // 鎵撳紑淇敼濮旀墭缂栧彿寮规 + changeEntrustCode (row) { + this.entrustCodeVisible = true + this.entrustCodeInfo = {...row} + }, + // 鎻愪氦淇敼濮旀墭缂栧彿 + submitCode () { + this.submitCodeLoading = true + updateOrderEntrustCode({ + id: this.entrustCodeInfo.id, + entrustCode: this.entrustCodeInfo.entrustCode, + }).then(res => { + if (res.code === 200) { + this.entrustCodeVisible = false + this.refreshTable() + this.$message.success('淇敼鎴愬姛') + } + this.submitCodeLoading = false + }).catch((err) => { + this.submitCodeLoading = false + }) + }, + selectMethod(val){ + this.multipleSelection = val + }, + //閫夋嫨瑕佹墦鍗扮殑浜岀淮鐮� + changePrintCode(){ + let indexList = this.checkIndexList + let arr = [] + indexList.forEach(i=>{ + arr.push(this.qrData[i]) + }) + this.checkDataList = arr + }, + //鍏ㄩ�� + handleCheckAllChange(val) { + if(val){ + for(var i=0;i<this.qrData.length;i++){ + this.checkIndexList.push(i) + } + this.checkDataList = this.qrData + }else{ + this.checkIndexList = [] + this.checkDataList = [] + } + this.isIndeterminate = false; + }, + submitPrint(){ + if(this.checkDataList.length < 1){ + this.$message.warning("璇烽�夋嫨瑕佹墦鍗扮殑浜岀淮鐮�") + return + } + this.printDialogVisible = false; + PrintJS({ + printable: 'printMOrder',//椤甸潰 + type: "html",//鏂囨。绫诲瀷 + maxWidth:360, + style: `@page { + margin:0; + size: 400px 75px collapse; + margin-top:3px; + &:first-of-type{ + margin-top:0 !important; + } + } + html{ + zoom:100%; + } + @media print{ + width: 400px; + height: 75px; + margin:0; + }`, + onPrintDialogClose: this.erexcel=false, + targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� + font_size: '0.20cm', + }); + }, + // 鎵撳紑娣诲姞妫�楠岄」寮规 + openAddIns () { + if (this.multipleSelection.length === 0) { + this.$message.warning('璇烽�夋嫨闇�瑕佹坊鍔犳楠岄」鐨勬暟鎹�') + return + } + if (this.multipleSelection.length > 1) { + this.$message.warning('鍙兘閫夋嫨涓�鏉℃暟鎹�') + return + } + this.addInspectionDia = true + this.$nextTick(() => { + this.$refs.addInspectionDia.getDataList(this.multipleSelection[0]) + }) + }, + // 瀵煎嚭璁板綍 + downLoad () { + rawAllInsOrderExport({...this.entity, responseType: "blob"}).then(res => { + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/octet-stream' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '濮旀墭妫�娴嬩俊鎭鍑�' + '.xlsx'; + link.click(); + }).catch(err => { + console.log('err---', err); + }) + }, + // 鎵撳紑鏍囩鎵撳嵃寮规 + openPrint () { + if (this.multipleSelection.length > 0) { + this.printDialog = true + this.$nextTick(() => { + let selection = this.multipleSelection + this.$refs.printDialog.getLabelPrinting(selection) + }) + } else { + this.$message.error('璇烽�夋嫨闇�瑕佹墦鍗扮殑鏁版嵁') + } + }, + // 鍏抽棴鏍囩鎵撳嵃寮规 + closePrintDialog () { + this.printDialog = false + }, + // 鑾峰彇鎸囨淳浜哄憳涓嬫媺鍒楄〃 + getAuthorizedPerson() { + selectUserCondition({type: 1}).then(res => { + let data = [] + res.data.forEach(a => { + data.push({ + label: a.name, + value: a.id + }) + }) + this.personList = data + }) + }, + handleClose() { + this.verifyDialogVisible = false; + this.quashDialogVisible = false; + this.issuedDialogVisible = false; + this.dataDialogVisible = false; + this.upLoad = false; + }, + handleClose2() { + this.verifyDialogVisible = false; + this.quashDialogVisible = false; + this.issuedDialogVisible = false; + this.dataDialogVisible = false; + this.upLoad = false; + }, + // 璇︽儏 + selectAllByOne(row) { + this.active = 2; + // console.log(row); + // //鎵撳紑寮规 + // this.dialogVisible = true; + // //row = 鐐瑰嚮瀵瑰簲琛屽�� + // //澶嶅埗缁檉ormData + // this.formData = this.HaveJson(row); + this.currentId = row.id + this.examine = 1 + }, + // 鏁版嵁鏌ョ湅 + handleDataLook(row) { + this.componentDataDataLook.entity.id = row.id + this.dataDialogVisible = true; + }, + // 闄勪欢鏌ョ湅 + handleFileLook (row) { + this.componentData0.entity.insOrderId = row.id; + this.filesDialogVisible = true + this.$nextTick(() => { + this.$refs.fileList.selectList() + }) + }, + // 闄勪欢涓嬭浇 + handleDown(row){ + downFile({ + id: row.id, + }).then(res => { + if (res.code === 200) { + let url = ''; + if(res.data.type==1){ + url = this.javaApi+'/img/'+res.data.fileUrl + file.downloadIamge(url,row.fileName) + }else{ + url = this.javaApi+'/word/'+res.data.fileUrl + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + } + } + }).catch(error => { + + }) + }, + // 涓嬭浇鎶ュ憡 + download(row) { + let url = row.urlS?row.urlS:row.url; + if(url){ + url = url.split('.')[0]+'.pdf' + const link = document.createElement('a'); + link.href = this.javaApi + url; + link.target = '_blank'; + document.body.appendChild(link); + link.click(); + } + }, + // 瀹℃牳 + handleVerify(row) { + // this.verifyDialogVisible = true; + this.active = 3; + this.currentId = row.id + this.examine = 1 + }, + // 鎾ら攢 + handlEquash(row) { + if(this.tabIndex!=1){ + this.quashDialogVisible = true; + this.insOrderRow=row + }else{ + // this.componentDataDelete.entity.orderId = row.id + this.orderId = row.id + this.revocationInsProductIds = '' + this.componentDataDelete.showSelect= true + this.componentDataDelete.select= true + this.deleteTilte = '鎾ら攢' + this.deleteDialogVisible = true; + } + }, + selectDelete(arr){ + this.deleteList = arr; + }, + submitDelete(){ + if(this.deleteTilte=='鎾ら攢'){ + if(this.deleteList.length==0){ + this.$message.error('璇烽�夋嫨瑕佹挙閿�鐨勯」') + return + } + let ids = this.deleteList.map(m=>m.id).join(',') + this.printLoading = true; + updateInspected({ids: ids,orderId: this.orderId}).then(res=>{ + if (res.code===200){ + this.printLoading=false + this.deleteDialogVisible=false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + }else{ + checkUpdate({orderId: this.orderId, state: 1}).then(res=>{ + if (res.code===200){ + this.printLoading=false + this.deleteDialogVisible=false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + } + }, + handlEquashCheck(row){ + // this.componentDataDelete.entity.orderId = row.id + this.orderId = row.id + this.revocationInsProductIds = row.revocationInsProductIds + this.componentDataDelete.showSelect= false + this.componentDataDelete.select= false + this.deleteTilte = '鎾ら攢瀹℃牳' + this.deleteDialogVisible = true; + }, + handleNo(){ + if(this.deleteTilte=='鎾ら攢'){ + this.deleteDialogVisible=false + }else{ + checkUpdate({orderId: this.orderId, state: 0}).then(res=>{ + if (res.code===200){ + this.printLoading=false + this.deleteDialogVisible=false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + } + }, + // 涓嬪彂 + handleIssued(row) { + this.issuedDialogVisible = true; + selectOrderManDay({ + id: row.id + }).then(res => { + this.distributeData.orderId = row.id + this.distributeData.sampleId = row.sampleId + this.distributeData.appointed = res.data + this.distributeData.type = row.type + }) + upPlanUser2({ + orderId:row.id, + }).then(res => { + if (res.code === 200&&res.data.length>0) { + this.sonLaboratoryList = []; + res.data.forEach(m=>{ + this.sonLaboratoryList.push({ + value:m, + label:m + }) + }) + } + }) + }, + submitForm2() { + if (this.distributeData.appointed == null || this.distributeData.appointed == '') { + this.$message.error('绾﹀畾鏃堕棿鏈~鍐�') + return + } + // + if(this.distributeData.userId==null||this.distributeData.userId==''){ + this.$message.error('鎸囨淳浜哄憳鏈~鍐�') + return + } + if(this.distributeData.userId&&(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory=='')){ + this.$message.error('璇曢獙瀹ゆ湭濉啓') + return + } + this.upLoad = true; + upInsOrder({ + orderId: this.distributeData.orderId, + sampleId: this.distributeData.sampleId, + appointed: this.distributeData.appointed, + userId: this.distributeData.userId, + sonLaboratory:this.distributeData.sonLaboratory, + }).then(res => { + if (res.code === 201) { + this.upLoad = false + return + } + this.$message.success('淇敼鎴愬姛') + this.upLoad = false + this.issuedDialogVisible = false + this.refreshTable() + }).catch(e => { + this.$message.error('淇敼澶辫触') + this.upLoad = false + }) + }, + submitForm() { + this.upLoad = true; + if (this.tabIndex==1){ + updateInspected({id: this.insOrderRow.id}).then(res=>{ + if (res.code===200){ + this.upLoad=false + this.quashDialogVisible=false + this.refreshTable() + this.$message.success("鏇存柊鎴愬姛") + } + }) + }else{ + updateStatus({id: this.insOrderRow.id}).then(res=>{ + if (res.code===200){ + this.upLoad = false + this.quashDialogVisible = false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + } + let authorizedPerson = this.formData.authorizedPerson.length > 0 ? this.formData.authorizedPerson.join(',') : '' + delete this.formData.createTime + delete this.formData.updateTime + delete this.formData.createUser + delete this.formData.updateUser + this.formData.authorizedPerson = authorizedPerson + }, + // 涓嬪崟 + playOrder(num) { + this.$router.push({ path: "/productOrder/add", query: {examine: 0,active: num} }); + }, + handleTab(m, i) { + this.tabIndex = i; + this.refreshTable() + }, + // 鏌ョ湅妫�楠屾暟鎹� + viewInspectInfo (row) { + //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃 + let inspectorList = [] + if(row.userName){ + inspectorList = row.userName.split(',') + } + let user = JSON.parse(localStorage.getItem('user')) + if(user){ + inspectorList.push(user.name) + } + this.inspectorList = inspectorList + this.sonLaboratory = row.sonLaboratory + this.state = 3; + this.typeSource = row.typeSource + this.orderId = row.id + }, + goback() { + this.state = 0 + this.refreshTable('page') + }, + // 鍒锋柊椤甸潰 + refreshView () { + this.InspectionKey++ + }, + changeUser(){ + if(this.sonLaboratoryList.length>0){ + this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value + } + }, + handleDelete(row){ + this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + delInsOrder({insOrderId: row.id}).then(res => { + this.$message.success('鍒犻櫎鎴愬姛') + this.refreshTable() + }).catch(e => { + this.$message.error('鍒犻櫎澶辫触') + }) + }).catch(() => {}) + } + } +} +</script> +<style scoped> +.table-tab { + display: flex; + justify-content: space-between; + align-items: center; +} +.tab { + list-style-type: none; + display: flex; + margin-bottom: 12px; + margin-top: 0; + padding-left: 0; +} + +.tab li { + line-height: 24px; + padding: 6px 14px; + font-size: 14px; + color: #333333; + border: 1px solid #EEEEEE; + cursor: pointer; +} + +.tab li:nth-child(1) { + border-radius: 8px 0 0 8px; +} + +.tab li:nth-child(7) { + border-radius: 0 8px 8px 0; +} + +.tab li.active { + border-color: #3A7BFA; + color: #3A7BFA; +} +.box-card >>>.el-radio__inner { + border-radius: 2px !important; +} +.box-card >>>.el-radio__input.is-checked .el-radio__inner::after { + content: ''; + width: 8px; + height: 3px; + border: 1px solid white; + border-top: transparent; + border-right: transparent; + text-align: center; + display: block; + position: absolute; + top: 3px; + left: 2px; + transform: rotate(-45deg); + border-radius: 0px; + background: none; +} +>>>.el-radio__label{ + color: #000 !important; +} +.el-dialog__body >>>.el-radio__label{ + font-size: 8px; +} +.el-dialog__body >>>.el-radio__input.is-checked .el-radio__inner::after { + content: ''; + width: 4px; + height: 3px; + border: 1px solid #000; + border-top: transparent; + border-right: transparent; + text-align: center; + display: block; + position: absolute; + top: 1px; + left: 2px; + transform: rotate(-45deg); + border-radius: 0px; + background: none; +} +>>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ + background: #3A7BFA; +} +.el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ + background: transparent; +} +.el-dialog__body >>>.el-radio__inner{ + width: 8px !important; + height: 8px !important; +} +.el-dialog__body >>>.el-radio__label{ + padding-left: 2px !important; +} +.el-dialog__body >>>.el-card__body{ + padding: 0 !important; +} +.el-dialog__body >>>.el-card { + border: none; +} +.el-dialog__body >>>.el-radio__input.is-disabled .el-radio__inner{ + border-color: #000 !important; +} +.el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ + border: none !important; +} +.scor{ + width: 0.01cm; + height: 0.01cm; + border-radius: 1px; + border: 1px solid #000; + display: inline-block; +} +.ellipsis-multiline { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + word-wrap: break-word; + max-height: 3.0em; /* 楂樺害涓哄瓧浣撳ぇ灏忕殑涓ゅ�� */ + line-height: 1.5em; /* 琛岄珮 */ + height: 3.0em; /* 楂樺害涓鸿楂樼殑涓ゅ�� */ +} +</style> -- Gitblit v1.9.3