From ae8b90c76912a7796b7c23c78f1a59bac434457d Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 14 十月 2024 13:37:15 +0800 Subject: [PATCH] 完成普通项目的项目检验 --- src/components/do/b1-ins-order/add.vue | 488 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 366 insertions(+), 122 deletions(-) diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 28aeca3..0744bff 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -185,18 +185,13 @@ <div class="search_label"><span class="required-span">* </span>鍒跺崟浜猴細</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="addObj.custom"></el-input> - <!-- <el-input readonly 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 class="search_thing" :span="6"> <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 readonly size="small" v-model="addObj.company" placeholder="閫夋嫨濮旀墭鍗曚綅"> - <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true" + <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true,createState=1" :disabled="active>1"></el-button></template> </el-input> </div> @@ -205,6 +200,14 @@ <div class="search_label"><span class="required-span">* </span>鑱旂郴鏂瑰紡锛�</div> <div class="search_input"> <el-input size="small" placeholder="閫夋嫨濮旀墭瀹㈡埛" clearable :readonly="active>1" v-model="addObj.phone"></el-input> + </div> + </el-col> + <el-col class="search_thing" :span="6" v-if="addObj.orderType=='C'"> + <div class="search_label"><span class="required-span">* </span>涓嬪崟鑷筹細</div> + <div class="search_input"> + <el-select size="small" style="width: 100%;" clearable v-model="addObj.departmentLimsId" :disabled="active>1" placeholder="閮ㄩ棬"> + <el-option v-for="(a, ai) in deaprtEnum" :key="ai" :value="a.id" :label="a.name"></el-option> + </el-select> </div> </el-col> <el-col class="search_thing" :span="6"> @@ -246,14 +249,29 @@ </div> </el-col> --> <el-col class="search_thing" :span="6"> - <div class="search_label"><span class="required-span">* </span>鏉ユ牱鏂瑰紡锛�</div> + <div class="search_label"><span class="required-span">* </span>璁㈠崟绫诲瀷锛�</div> <div class="search_input"> <el-select v-model="addObj.formType" size="small" :disabled="active>1" 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 class="search_thing" :span="6"> + <el-col class="search_thing" :span="6" v-if="addObj.formType==='鍏朵粬鎴愬搧'"> + <div class="search_label">闆朵欢鍙凤細</div> + <div class="search_input"> + <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.partNo" + :readonly="active>1"></el-input> + </div> + </el-col> + <el-col class="search_thing" :span="6" v-if="addObj.formType!='鍏朵粬鎴愬搧'&&addObj.formType"> + <div class="search_label"><span class="required-span">* </span>閫氱煡鑷虫牱鏈哄憳锛�</div> + <div class="search_input"> + <el-select v-model="addObj.issueUser" size="small" :disabled="active>1" style="width: 100%;"> + <el-option v-for="(a,ai) in personList" :key="ai" :label="a.label" :value="a.value"></el-option> + </el-select> + </div> + </el-col> + <!-- <el-col class="search_thing" :span="6"> <div class="search_label">鎶ュ憡鍙戦�佹柟寮忥細</div> <div class="search_input"> <el-radio-group v-model="addObj.send"> @@ -261,8 +279,8 @@ <el-radio :label="0">鍏朵粬</el-radio> </el-radio-group> </div> - </el-col> - <el-col class="search_thing" :span="6"> + </el-col> --> + <!-- <el-col class="search_thing" :span="6"> <div class="search_label">鏍峰搧澶勭悊鏂瑰紡锛�</div> <div class="search_input"> <el-radio-group v-model="addObj.processing"> @@ -270,7 +288,7 @@ <el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio> </el-radio-group> </div> - </el-col> + </el-col> --> <el-col class="search_thing" :span="6"> <div class="search_label">宸ョ▼鍚嶇О锛�</div> <div class="search_input"> @@ -288,8 +306,12 @@ <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" placeholder="璇疯緭鍏�" clearable v-model="addObj.production" - :readonly="active>1"></el-input> + <!-- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addObj.production" + :readonly="active>1"></el-input> --> + <el-input size="small" v-model="addObj.production" placeholder="閫夋嫨鐢熶骇鍗曚綅" :readonly="active>1"> + <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true,createState=2" + :disabled="active>1"></el-button></template> + </el-input> </div> </el-col> <el-col class="search_thing" :span="6"> @@ -299,7 +321,7 @@ :readonly="active>1"></el-input> </div> </el-col> - <el-col class="search_thing" :span="6"> + <!-- <el-col class="search_thing" :span="6"> <div class="search_label">鏄惁鐣欐牱锛�</div> <div class="search_input"> <el-radio-group v-model="addObj.isLeave"> @@ -307,26 +329,69 @@ <el-radio :label="1">鐣欐牱</el-radio> </el-radio-group> </div> - </el-col> + </el-col> --> <el-col class="search_thing" :span="6"> <div class="search_label" style="width: 175px;">鏄惁娑夊強閰嶅鏍峰搧锛�</div> <div class="search_input" style="width: calc(100% - 175px);"> - <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()"> + <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()" :disabled="active>1"> <el-radio :label="1">鏄�</el-radio> <el-radio :label="0">鍚�</el-radio> </el-radio-group> </div> </el-col> - <el-col class="search_thing" :span="6"> + <!-- <el-col class="search_thing" :span="6"> <div class="search_label">OTC璁㈠崟鍙凤細</div> <div class="search_input"> <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input> </div> - </el-col> + </el-col> --> <el-col class="search_thing" :span="6"> <div class="search_label">濮旀墭浜猴細</div> <div class="search_input"> <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.prepareUser" :readonly="active>1"></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-date-picker + v-model="addObj.appointed" + :disabled="active>1" + type="date" + placeholder="閫夋嫨鏃ユ湡" + size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> + </el-date-picker> + </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-date-picker + v-model="addObj.issueTime" + :disabled="active>1" + type="date" + placeholder="閫夋嫨鏃ユ湡" + size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> + </el-date-picker> + </div> + </el-col> + <el-col class="search_thing upload" :span="4" style="align-items: flex-start;height: auto" v-if="active==1"> + <el-upload + style="margin: 8px 0 0px 50px;" + action="#" + :auto-upload="false" + accept='.jpg,.jpeg,.png,.gif,.docx,.xls,.xlsx,.pdf,.zip,.rar,.csv' :on-change="handleChangeUpload"> + <el-button size="small" type="primary">涓婁紶闄勪欢</el-button> + </el-upload> + </el-col> + <el-col class="search_thing" :span="8"> + <div class="search_input" style="width: 100%;margin-left: 40px;"> + <el-radio-group v-model="ruleInfo.rule" @change="$refs.sampleTable.doLayout()" :disabled="active>1"> + <el-radio :label="1">涓嶈�冭檻涓嶇‘瀹氬害</el-radio> + <el-radio :label="2">鑰冭檻涓嶇‘瀹氬害<el-input placeholder="" v-model="ruleInfo.num" style="width: 100px;margin-left: 10px;" size="mini" :disabled="active>1"> + <template slot="append">%</template> + </el-input></el-radio> + </el-radio-group> </div> </el-col> <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;"> @@ -359,16 +424,20 @@ <div class="search_thing"> <div class="search_label">妫�楠屾爣鍑嗭細</div> <div class="search_input"> - <el-select v-model="standardMethodListId" :placeholder="active>1 ? '' : '璇疯緭鍏�'" size="small" @focus="methodFocus" - :loading="methodLoad" @change="changeStandardMethodListId"> + <el-select v-model="standardMethodListId" :placeholder="active>1 ? '' : '璇疯緭閫夋嫨'" size="small" @focus="methodFocus" + :loading="methodLoad" multiple @change="changeStandardMethodListId"> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> </div> </div> </div> + <el-radio-group v-model="currentPage" v-if="active>1" size="small" style="margin-top: 20px;"> + <el-radio-button :label="0">鏍峰搧</el-radio-button> + <el-radio-button :label="1">闄勪欢</el-radio-button> + </el-radio-group> <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" max-height="400px" tooltip-effect="dark" - border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;"> + border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;" v-show="currentPage==0"> <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column> <el-table-column type="index" label="搴忓彿" width="65" align="center"></el-table-column> <el-table-column prop="sample" label="鏍峰搧鍚嶇О" align="center" min-width="100"> @@ -376,7 +445,7 @@ <el-input size="small" v-model="scope.row.sample" clearable :readonly="active>1"></el-input> </template> </el-table-column> - <el-table-column prop="sampleCode" label="鏍峰搧缂栧彿" min-width="140" align="center"> + <el-table-column prop="sampleCode" label="鏍峰搧缂栧彿" min-width="100" align="center"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="涓嶅~鍐欏垯绯荤粺鑷姩鐢熸垚" :readonly="active>1"></el-input> @@ -391,18 +460,27 @@ </el-select> </template> </el-table-column> - <el-table-column prop="modelNum" label="鍨嬪彿鍙傛暟" width="130" align="center" v-if="!(active>1)"> + <el-table-column prop="modelNum" label="鍨嬪彿鍙傛暟" min-width="100" align="center" v-if="!(active>1)"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.modelNum" clearable placeholder="闈炲繀濉�" @keyup.enter.native="methodChange(scope.row.standardMethodListId, scope.row)" @clear="methodChange(scope.row.standardMethodListId, scope.row)"></el-input> </template> </el-table-column> + <el-table-column prop="testRequirements" label="璇曢獙鏍囧噯" align="center" min-width="100"> + <template slot-scope="scope"> + <el-select v-model="scope.row.testRequirements" :disabled="scope.row.model==null||active>1" + placeholder="璇曢獙鏍囧噯" size="small" :readonly="active>1" style="width: 100%;" clearable> + <el-option v-for="item in standard" :key="item.id" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </template> + </el-table-column> <el-table-column prop="standardMethodListId" label="妫�楠屾爣鍑�" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1" placeholder="妫�楠屾爣鍑�" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)" - @focus="methodFocus" :readonly="active>1" style="width: 100%;" clearable @clear="productList = []"> + @focus="methodFocus" :readonly="active>1" style="width: 100%;" clearable @clear="productList = []" multiple> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> @@ -430,7 +508,7 @@ </el-table> <el-table class="el-table" ref="productTable" :data="productList" max-height="400px" tooltip-effect="dark" border @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" - :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll"> + :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll" v-show="currentPage==0"> <el-table-column type="selection" width="65" :selectable="selectable" v-if="active==1"></el-table-column> <el-table-column prop="inspectionItemClass" v-if="PROJECT === '瑁呭鐢电紗'" label="妫�楠岄」鍒嗙被" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItemClassEn" v-if="PROJECT === '瑁呭鐢电紗'" label="妫�楠岄」鍒嗙被(EN)" min-width="140" show-overflow-tooltip></el-table-column> @@ -465,17 +543,17 @@ <template slot-scope="scope"> <el-input size="small" placeholder="瑕佹眰鎻忚堪" v-model="scope.row.tell" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row,'tell')" - v-if="active==1&&isAskOnlyRead"></el-input> + v-if="active==1"></el-input> <span v-else> <template >{{ scope.row.tell }}</template> </span> </template> </el-table-column> - <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="220px" v-if="isAskOnlyRead"> + <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="220px" > <template slot-scope="scope"> <el-input size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row,'ask')" - v-if="active==1&&isAskOnlyRead&&scope.row.inspectionValueType!='5'"></el-input> + v-if="active==1&&scope.row.inspectionValueType!='5'"></el-input> <span v-else> <!-- <template v-if="(scope.row.ask.indexOf('D')>-1 ||scope.row.ask.indexOf('W')>-1 @@ -512,8 +590,16 @@ <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" min-width="130" show-overflow-tooltip :filters="filters" :filter-method="filterHandler"></el-table-column> </el-table> + <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList" + :componentData="componentData0" + :delUrl="$api.insOrderPlan.delfile" style="height: 100%;margin-top: 16px;" v-show="currentPage==1"/> </div> </div> + <p style="font-size: 12px;color: red;margin-top: 20px;margin-bottom: 20px;">鍙屾柟鎵胯:<br/> + 1銆佸鎵樻柟鎵胯鎻愪緵鐨勪俊鎭笌鏍峰搧鐨勭湡瀹炴��;<br/> + 2銆佸鎵橀�佹牱妫�楠岀粨鏋滀粎閫傜敤浜庢敹鍒扮殑鏍峰搧;<br/> + 3銆佽瘯楠岃繃绋嬪鑷寸殑鏍峰搧鎹熷潖銆侀厤浠舵崯鍧忋�佹崯鑰楋紝鏈祴璇曞満涓嶆壙鎷呰禂鍋胯矗浠�;<br/> + 4銆佸疄楠屽鎵胯鍏寮�灞曟娴嬫椿鍔紝骞舵壙璇轰繚瀹堝湪妫�娴嬫椿鍔ㄨ繃绋嬩腑鎵�鑾风煡鐨勪繚瀵嗕俊鎭��</p> <el-dialog title="閫夋嫨鍗曚綅" :visible.sync="selectUserDia" width="70%"> <div class="body" style="height: 60vh;" v-if="selectUserDia"> <ValueTable ref="ValueTable2" :url="$api.user.selectCustomPageList" :componentData="componentData2" /> @@ -523,7 +609,7 @@ <el-button type="primary" @click="selectUser">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog title="閫夋嫨鏍峰搧" :visible.sync="selectStandardTree" width="400px"> + <el-dialog title="閫夋嫨鏍峰搧" :visible.sync="selectStandardTree" width="500px"> <div class="body" style="height: 60vh;overflow-y: auto;user-select: none;" v-if="selectStandardTree"> <el-row> <el-col :span="24"> @@ -910,6 +996,13 @@ <el-button type="primary" @click="spliceTemperatureTest">淇濆瓨</el-button> </span> </el-dialog> + <el-dialog + title="鏂囦欢棰勮" + :visible.sync="lookFileVisible" + width="60%" fullscreen> + <filePreview v-if="lookFileVisible" :fileUrl="currentFile.url" + :currentFile="currentFile" style="max-height: 87vh;overflow-y: auto;"/> + </el-dialog> </div> </template> @@ -920,7 +1013,7 @@ import equipConfig from './equip-config.vue' import cableConfig from './cable-config.vue' import Vue from 'vue' -import {iuCharts} from "../../../util/echarts"; +import filePreview from '../../tool/file-preview.vue' export default { components: { @@ -928,7 +1021,8 @@ fiberOpticConfig, fiberOpticConfigTwo, equipConfig, - cableConfig + cableConfig, + filePreview }, props: { examine: { @@ -946,6 +1040,8 @@ }, data() { return { + currentFile:{}, + lookFileVisible:false, inspectionItemST: null, sampleSelectionList: [],//鏍峰搧琛ㄦ牸閫変腑鏁版嵁 editTable:[], @@ -959,6 +1055,7 @@ type: '0', code: null, appointed: null, + issueTime:null, remark: null, otcCode: null, mating: 0, @@ -981,7 +1078,10 @@ production: null, productionEn: null, companyId: null, - prepareUser:null + prepareUser:null, + departmentLimsId:null, + departmentLims:null, + partNo: null, // 闆朵欢鍙� }, sample: { sampleCode: null, @@ -1084,7 +1184,7 @@ RTS: '', totalArr: [], model: null, - standardMethodListId: null, + standardMethodListId: [], symbolList:[ 'RTS','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'], inspectionItem:null, @@ -1118,6 +1218,59 @@ temId: '', sonLaboratoryList:[], selectiveEcho: [], // 妫�楠屼笅鍗曠殑鏃跺�欏嬀閫夋楠岄」鐩�,濡傛灉浣跨敤绛涢�夋彁浜ゆ樉绀烘楠岄」鐩负绌� 鍥炴樉鍒楄〃 + deaprtEnum:[], + standard:[], + createState:1,//1:閫夋嫨濮旀墭鍗曚綅锛�2锛氶�夋嫨鐢熶骇鍗曚綅 + fileList:[], + currentPage:0,//0:鏍峰搧淇℃伅锛�1锛氶檮浠� + componentData0: { + entity: { + insOrderId:'' + }, + isIndex: true, + showSelect: false, + select: false, + sort: false, + init:false, + do: [ + { + id: 'handleDown', + font: '涓嬭浇', + type: 'text', + method: 'handleDown' + }, + { + id: '1', + font: '棰勮', + type: 'text', + method: 'lookFile', + } + ], + isPage: false, + linkEvent: {}, + tagField: { + type:{ + select:[ + { + value: 1, + label: '鍥剧墖' + }, + { + value: 2, + label: '鏂囦欢' + } + ] + } + }, + currentId: '', + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, + ruleInfo:{ + rule:null, + num:null, + } } }, watch: { @@ -1169,11 +1322,11 @@ }, 'addObj.sample'(val) { this.model = null - this.standardMethodListId = null + this.standardMethodListId = [] }, 'addObj.sampleNum'(val) { this.model = null - this.standardMethodListId = null + this.standardMethodListId = [] } }, mounted() { @@ -1183,8 +1336,10 @@ // this.selectInsOrderTemplate() this.getAuthorizedPerson(); this.selectEnumByCategoryForUnit() + this.selectEnumByCategoryForStandard() this.selectStandardMethods() this.selectEnumByCategoryForOrderType() + this.selectDepartmentEnum() // this.selectEnumByCategoryForSonLaboratory() this.selectEnumByCategoryForSampleForm() if (this.active != 1) { @@ -1196,8 +1351,19 @@ this.addObj = { ...res.data.insOrder }; + if(this.addObj.rule){ + if(this.addObj.rule=='涓嶈�冭檻涓嶇‘瀹氬害'){ + this.ruleInfo.rule = 1 + }else{ + this.ruleInfo.rule = 2 + this.ruleInfo.num = this.addObj.rule.split('-')[1] + } + } this.addObj.type = String(this.addObj.type) - this.sampleList = this.HaveJson(res.data.sampleProduct); + this.sampleList = this.HaveJson(res.data.sampleProduct) + this.sampleList.forEach(m=>{ + m.standardMethodListId = JSON.parse(m.standardMethodListId) + }); this.getProNum() this.addObj.sampleNum = this.sampleList.length this.$nextTick(() => { @@ -1208,9 +1374,45 @@ } }) }) + // 鏂囦欢淇℃伅 + this.componentData0.entity.insOrderId = this.currentId + this.$refs.fileList.selectList() } }, methods: { + lookFile(row){ + this.currentFile = row; + if(row.type==1){ + this.currentFile.url = this.javaApi+'/img/'+row.fileUrl + }else{ + this.currentFile.url = this.javaApi+'/word/'+row.fileUrl + } + this.lookFileVisible = true + }, + handleDown(row){ + this.$axios.post(this.$api.insOrderPlan.downFile, { + id: row.id, + }).then(res => { + if (res.code === 200) { + let url = ''; + if(res.data.type==1){ + url = this.javaApi+'/img/'+res.data.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 => { + + }) + }, + handleChangeUpload(file, fileLists){ + this.fileList = fileLists + }, //鐗规畩鍊煎~鍐欏鐞� inputValueHandler(row,index){ if(row){ @@ -1516,14 +1718,23 @@ 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() + if(this.createState==1){ + this.addObj.company = selects.company + this.addObj.code = selects.code + this.addObj.companyId = selects.id + if(this.active==1){ + this.selectInsOrderTemplate() + } + }else if(this.createState==2){ + this.addObj.production = selects.company + // 濡傛灉閫夋嫨鐨勫崟浣嶆槸娌℃湁瀵瑰簲鐨勮嫳鏂囧悕绉板氨鐢�'/'浠f浛 + if (!selects.companyEn) { + this.addObj.productionEn = '/' + } else { + this.addObj.productionEn = selects.companyEn + } } + this.selectUserDia = false }, containsValue(str) { if(str){ @@ -1578,77 +1789,64 @@ return str.replace(find, value); }, save() { + if(this.addObj.orderType=='C'&&this.addObj.departmentLimsId){ + this.addObj.departmentLims = this.deaprtEnum.find(m=>m.id==this.addObj.departmentLimsId).name + }else if(this.addObj.orderType&&this.addObj.orderType!='C'&&!this.addObj.departmentLimsId){ + this.addObj.departmentLims = '妫�娴嬩腑蹇�' + this.addObj.departmentLimsId = this.deaprtEnum.find(m=>m.name=='妫�娴嬩腑蹇�').id + } + // else{ + // this.$message.error('璇烽�夋嫨妫�楠岀被鍒�') + // return + // } if (!this.addObj.companyId) { this.$message.error('鏈�夋嫨瀹㈡埛鍗曚綅') + return + } + let noLaboratory = this.totalArr.filter(a => a.state == 1&&!a.sonLaboratory) + if(noLaboratory.length>0){ + let str = '' + noLaboratory.forEach((m,j)=>{ + str += j==noLaboratory.length-1?m.inspectionItem+'-'+m.inspectionItemSubclass:m.inspectionItem+'-'+m.inspectionItemSubclass+',' + }) + this.$message.error(str+'娌℃湁鍏宠仈瀹為獙瀹ゅ锛岃鑱旂郴绠$悊鍛�') return } if (!this.addObj.type) { this.$message.error('鏈�夋嫨绱ф�ョ▼搴�') } else if (!this.addObj.formType) { - this.$message.error('璇疯緭鍏ユ潵鏍锋柟寮�') + 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.addObj.departmentLimsId) { + this.$message.error('閫夋嫨涓嬪崟鍒板摢涓儴闂�') } 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)) { + }else if (!this.addObj.appointed) { + this.$message.error('璇烽�夋嫨绾﹀畾鏃堕棿') + }else if (!this.addObj.issueTime) { + this.$message.error('璇烽�夋嫨鏍锋満瀹屾垚鏃堕棿') + } else if (!this.sampleList.every(m => m.standardMethodListId&&m.standardMethodListId.length>0)) { this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�') - } else { - const select = this.selectTree.split(' - ') - const productListSelected = this.productListSelected.some(item => item.inspectionItem === '娓╁害寰幆') - let isHaveBushing = '' - this.sampleList.forEach(item => { - if (!item.bushing || item.bushing.length === 0) { - isHaveBushing = false - } - }) - //杩囨护妫�娴嬮」锛氬幓闄ょ壒娈婇」 - let filterProductList = this.productListSelected.filter(ele=>ele.bsm==0&&/[0-9]/.test(ele.ask)).filter(ele=>{ - if(select[1].indexOf('閫氫俊')>=0 && ['鍏夌紗','鍏夌氦'].includes(select[2])){ - return !['娓╁害寰幆','鍏夌氦鎺ュご鎹熻��'].includes(ele.inspectionItem) - } - return true - }).filter(ele=>{ - if(select[1].indexOf('鐢靛姏')>=0){ - return !['娓╁崌璇曢獙','鐑惊鐜�'].includes(ele.inspectionItem) - } - return true - }) + } else if(this.addObj.formType&&this.addObj.formType!='鍏朵粬鎴愬搧'&&!this.addObj.issueUser){ + this.$message.error('璇烽�夋嫨閫氱煡鑷虫牱鏈哄憳') + }else{ //鏍¢獙妫�楠岄」鐨勮姹傚�煎拰瑕佹眰鎻忚堪,浠呭鎵樿姹� - if(this.active==1&&this.isAskOnlyRead){ - const isTrue = this.checkRequiredValueAndRemark(filterProductList) - if(!isTrue){ - this.$message.error('妫�楠岄」鐨勮姹傚�间笌瑕佹眰鎻忚堪涓嶅尮閰嶏紝 璇锋鏌�') - return - } - } - - // console.log('isHaveBushing===', this.totalArr) - let spcialItem = this.totalArr.filter(a => a.state == 1 && a.inspectionItem.includes('鏉惧绠�')) - if (productListSelected && select[2] === '鍏夌紗' && isHaveBushing === false&&spcialItem.length==0) { - this.$message.error('鍏夌紗娓╁害寰幆椤圭洰蹇呴』杩涜鍏夌氦閰嶇疆') - this.$refs.sampleTable.setCurrentRow(this.currentMethod, true) - this.rowClick(this.currentMethod) - this.sampleIds = [this.currentMethod.id] - this.openConfig() - return - }else if(spcialItem.length>0&& isHaveBushing === false){ - this.$message.error('鏉惧绠¢」鐩繀椤昏繘琛屽厜绾ら厤缃�') - // this.$refs.sampleTable.setCurrentRow(this.currentMethod, true) - // this.rowClick(this.currentMethod) - spcialItem.forEach(item=>{ - this.sampleIds.push(item.id) - }) - this.openConfig() - return - } + // if(this.active==1&&this.isAskOnlyRead){ + // const isTrue = this.checkRequiredValueAndRemark(filterProductList) + // if(!isTrue){ + // this.$message.error('妫�楠岄」鐨勮姹傚�间笌瑕佹眰鎻忚堪涓嶅尮閰嶏紝 璇锋鏌�') + // return + // } + // } let sampleList = this.HaveJson(this.sampleList) let projectNum = this.totalArr.filter(a => a.state == 1).length if(projectNum==0){ @@ -1821,7 +2019,7 @@ } } }else{ - this.$message.error('瑕佹眰鍊间负绌猴紝闇�瑕佸幓鏍囧噯搴撶淮鎶わ紒') + // this.$message.error('瑕佹眰鍊间负绌猴紝闇�瑕佸幓鏍囧噯搴撶淮鎶わ紒') } } // arr.forEach(f => { @@ -1993,9 +2191,41 @@ } }, saveMethod(sampleList){ + let isHaveAsk = this.totalArr.filter(a => (a.ask === null||a.ask=='')&&a.state==1) + if (isHaveAsk.length > 0) { + this.$message({ + type: 'error', + message: '璇峰~鍐欒姹傚�煎悗鍐嶆彁浜�' + }) + return false; + } + let isHaveTell = this.totalArr.filter(a => (a.tell == null||a.tell=='')&&a.state==1) + if (isHaveTell.length > 0) { + this.$message({ + type: 'error', + message: '璇峰~鍐欒姹傛弿杩板悗鍐嶆彁浜�' + }) + return false; + } + if(this.ruleInfo.rule==1){ + this.addObj.rule = '涓嶈�冭檻涓嶇‘瀹氬害' + }else if(this.ruleInfo.rule==2){ + if(this.ruleInfo.rule==2&&(!this.ruleInfo.num||this.ruleInfo.num<0||this.ruleInfo.num==0)){ + this.$message({ + type: 'error', + message: '璇疯緭鍏ヤ笉纭畾搴�' + }) + return; + } + this.addObj.rule = '鑰冭檻涓嶇‘瀹氬害'+'-'+this.ruleInfo.num + } this.saveLoad = true - this.$axios.post(this.$api.insOrder.addInsOrder, { - str: JSON.stringify({ + let fd = new FormData(); + this.fileList.forEach((item,index)=>{ + //鏂囦欢淇℃伅涓璻aw鎵嶆槸鐪熺殑鏂囦欢 + fd.append("files",item.raw); + }) + fd.append("str",JSON.stringify({ insOrder: this.addObj, list: JSON.stringify(sampleList.map(a => { if (this.PROJECT === '瑁呭鐢电紗') { @@ -2018,7 +2248,12 @@ return a })), pairing: JSON.stringify(this.bsm2Val2) - }) + })); + this.$axios.post(this.$api.insOrder.addInsOrder, fd,{ + headers: { + 'Content-Type': 'multipart/form-data' + }, + noQs:true }).then(res => { this.saveLoad = false if (res.code == 201) return @@ -2067,7 +2302,10 @@ this.distributeData.appointed = ress.data }) setTimeout(() => { - this.issuedDialogVisible = true; + // this.issuedDialogVisible = true; + // this.$message.success('鎻愪氦鎴愬姛') + this.upLoad = false + this.$parent.playOrder(0) }, 1000) }) } else { @@ -2127,9 +2365,15 @@ }) }, getProNum() { - this.sampleSelectionList.forEach((m, i) => { - Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) - }) + if (this.active != 1) { + this.sampleList.forEach((m, i) => { + Vue.set(this.sampleList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) + }) + }else{ + this.sampleSelectionList.forEach((m, i) => { + Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) + }) + } this.$refs.sampleTable.doLayout() }, searchFilter() { @@ -2215,7 +2459,7 @@ this.sample.sample = this.addObj.sample this.sample.model = this.addObj.model this.sample.unit = this.addObj.unit - this.sample.standardMethodListId = null + this.sample.standardMethodListId = [] this.sample.insProduct = [] this.sample.id = this.count this.sample.childSampleList = [] @@ -2260,7 +2504,7 @@ this.sample.sample = this.addObj.sample this.sample.model = this.addObj.model this.sample.unit = this.addObj.unit - this.sample.standardMethodListId = null + this.sample.standardMethodListId = [] this.sample.insProduct = [] this.sample.id = parseInt(i+1) this.sample.childSampleList = [] @@ -2300,12 +2544,6 @@ }, 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 = [] @@ -2549,6 +2787,13 @@ this.units = res.data }) }, + selectEnumByCategoryForStandard() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "璇曢獙鏍囧噯" + }).then(res => { + this.standard = res.data + }) + }, selectEnumByCategoryForOrderType() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "妫�楠岀被鍒�" @@ -2561,7 +2806,7 @@ }, selectEnumByCategoryForSampleForm() { this.$axios.post(this.$api.enums.selectEnumByCategory, { - category: "鏉ユ牱鏂瑰紡" + category: "璁㈠崟绫诲瀷" }).then(res => { this.formType = res.data if (this.formType.length > 0) { @@ -2570,33 +2815,25 @@ }) }, methodChange(val, row) { - if (val === null || val === '') return + if (val === null || val === ''||val.length ==0) 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) - - console.log( this.selectTree); this.$axios.post(this.$api.standardTree.selectStandardProductList, { - model: (this.addObj.model?this.addObj.model:row.model) + '-' + row.modelNum, - standardMethodListId: val, + model: (this.addObj.model?this.addObj.model:row.model) + '-' + row.modelNum+';'+row.testRequirements, + standardMethodListId: val.join(','), factory: selectTreeList.join(" - "), }, { headers: { 'Content-Type': 'application/json' } }).then(res => { + this.getProductLoad = false 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) @@ -2605,6 +2842,8 @@ if (a.state == 1) this.toggleSelection(a) }) }, 200) + }).catch(e => { + this.getProductLoad = false }) this.searchProject() this.searchTemList() @@ -3192,6 +3431,11 @@ if(this.sonLaboratoryList.length>0){ this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value } + }, + selectDepartmentEnum(){ + this.$axios.get(this.$api.department.selectDepartmentLimsEnum).then(res=>{ + this.deaprtEnum = res.data.filter(item=>item.name === '璐ㄩ噺閮�' || item.name === '妫�娴嬩腑蹇�') + }) } } } -- Gitblit v1.9.3