src/api/standard/standardLibrary.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/Table/lims-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/business/materialOrder/copperOrder.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/business/productOrder/components/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/standard/standardLibrary/audit.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/standard/standardLibrary/components/bindSupplierDensityDialogAsk.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/standard/standardLibrary/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/structural/capabilityAndLaboratory/capability/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/standard/standardLibrary.js
@@ -271,3 +271,30 @@ data: data, }); } // 标准树变更记录 export function standardProductListRecordPage(query) { return request({ url: "/updateRecord/standardProductListRecordPage", method: "get", params: query, }); } // 标准树变更记录--查询详情 export function standardProductListRecordRelPage(query) { return request({ url: "/updateRecord/standardProductListRecordRelPage", method: "get", params: query, }); } // 查询标准库是否存在审核中状态 export function existCheckingRecord(query) { return request({ url: "/standardTree/existCheckingRecord", method: "get", params: query, }); } src/components/Table/lims-table.vue
@@ -83,7 +83,7 @@ :before-upload="(file) => beforeUpload(file, scope.$index)" :on-change="(file, fileList) => handleChange(file, fileList, scope.$index)" :on-error="(error, file, fileList) => onError(error, file, fileList, scope.$index)" :on-success="(response, file, fileList) => handleSuccessUp(response, file, fileList, scope.$index)" :on-success="(response, file, fileList) => handleSuccessUp(response, file, fileList, scope.$index, o)" :on-exceed="onExceed" :show-file-list="false"> <el-button :size="o.size ? o.size : 'small'" type="text" :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button> @@ -345,7 +345,7 @@ setCurrent(row) { this.$refs.multipleTable.setCurrentRow(); }, handleSuccessUp(response, file, fileList, index) { handleSuccessUp(response, file, fileList, index, o) { if (response.code == 200) { // 清除文件列表并更新当前文件 if (this.uploadRefs[index]) { @@ -355,7 +355,10 @@ this.$message.success("上传成功"); // 重置组件状态 this.resetUploadComponent(index); // 成功后回调函数 if (o.handleSuccessUp) { o.handleSuccessUp() } } else { this.$message.error(response.message); } src/router/index.js
@@ -198,6 +198,26 @@ ], }, { // 标准库变更 path: "/audit", component: Layout, hidden: true, permissions: ["standard:audit"], children: [ { // 变更详情 path: "auditDetail", component: () => import("@/views/standard/standardLibrary/index"), name: "auditDetail", meta: { title: "标准库变更详情", activeMenu: "/standard/audit", keepAlive: true, }, }, ], }, { // 用户管理 path: "/system/user-auth", component: Layout, src/views/business/materialOrder/copperOrder.vue
@@ -6,7 +6,8 @@ <span>铜单丝下单</span> </div> <div> <el-button v-show="active==1 && addObj.orderType === '进厂检验'" :loading="noNeedCheckLoad" size="small" type="primary" @click="noNeedCheck">免检</el-button> <el-button v-show="active == 1 && addObj.orderType === '进厂检验'" :loading="noNeedCheckLoad" size="small" type="primary" @click="noNeedCheck">免检</el-button> <el-button v-show="active==1" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button> <el-button size="small" @click="goBack"> <span style="color: #3A7BFA;">返回</span> @@ -27,18 +28,20 @@ </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="到货数量:" prop="qtyArrived" required> <el-input v-model="addObj.qtyArrived" :disabled="active > 1" class="addObj-info" clearable placeholder="" size="small"></el-input> <el-input v-model="addObj.qtyArrived" :disabled="active > 1" class="addObj-info" clearable placeholder="" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="单位:" prop="buyUnitMeas"> <el-input v-model="addObj.buyUnitMeas" :disabled="active > 1" clearable class="addObj-info" size="small"></el-input> <el-input v-model="addObj.buyUnitMeas" :disabled="active > 1" clearable class="addObj-info" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="批次号:" prop="updateBatchNo"> <el-input v-model="addObj.updateBatchNo" :disabled="active > 1" class="addObj-info" clearable size="small"></el-input> <el-input v-model="addObj.updateBatchNo" :disabled="active > 1" class="addObj-info" clearable size="small"></el-input> </el-form-item> </el-col> </el-row> @@ -46,32 +49,28 @@ <el-col :span="6"> <el-form-item class="addObj-form-item" label="检验类型:"> <el-select v-model="addObj.orderType" clearable disabled size="small" style="width: 100%"> <el-option v-for="(a, ai) in dict.type.check_type" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a, ai) in dict.type.check_type" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="约定时间:" prop="appointed"> <el-date-picker v-model="addObj.appointed" :disabled="active > 1" format="yyyy-MM-dd" placeholder="选择日期" size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> <el-date-picker v-model="addObj.appointed" :disabled="active > 1" format="yyyy-MM-dd" placeholder="选择日期" size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="材料厂家:" prop="supplierName"> <el-input v-model="addObj.supplierName" :disabled="active > 1" class="addObj-info" clearable placeholder="" size="small"></el-input> <el-input v-model="addObj.supplierName" :disabled="active > 1" class="addObj-info" clearable placeholder="" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="抽检数量:" prop="testQuantity"> <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info" clearable placeholder="" size="small"></el-input> <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info" clearable placeholder="" size="small"></el-input> </el-form-item> </el-col> </el-row> @@ -79,28 +78,23 @@ <el-col :span="6"> <el-form-item class="addObj-form-item" label="规格型号:" placeholder="请填写" prop="partDetail"> <el-tooltip :content="addObj.partDetail" :disabled="!addObj.partDetail"> <el-input v-model="addObj.partDetail" :disabled="active > 1" clearable class="addObj-info" size="small"></el-input> <el-input v-model="addObj.partDetail" :disabled="active > 1" clearable class="addObj-info" size="small"></el-input> </el-tooltip> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="到货时间:" prop="declareDate"> <el-date-picker v-model="addObj.declareDate" :disabled="active > 1" format="yyyy-MM-dd" placeholder="选择日期" size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd HH:mm:ss"> <el-date-picker v-model="addObj.declareDate" :disabled="active > 1" 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-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="备注:"> <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :placeholder="active>1 ? '' : '请输入'" :disabled="active>1" clearable size="small" type="textarea"></el-input> <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2 }" :placeholder="active > 1 ? '' : '请输入'" :disabled="active > 1" clearable size="small" type="textarea"></el-input> </el-form-item> </el-col> </el-row> @@ -110,18 +104,15 @@ <div v-if="active==1"> <el-form :inline="true" :model="addObj1" label-width="90px"> <el-form-item label="样品型号:" style="margin-bottom: 6px;margin-top: 6px"> <el-select v-model="model" :placeholder="active>1 ? '' : '请输入'" allow-create clearable default-first-option filterable size="small" @change="changeModel"> <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> </el-form-item> <el-form-item label="检验标准:" style="margin-bottom: 6px;margin-top: 6px"> <el-select v-model="standardMethodListId" :loading="methodLoad" :placeholder="active>1 ? '' : '请输入'" clearable size="small" @change="changeStandardMethodListId" @focus="methodFocus"> <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> @@ -129,13 +120,14 @@ </el-form> </div> <div style="margin-bottom: 6px;margin-top: 6px"> <el-button v-show="active==1" :disabled="sampleList.length === 3" size="small" type="primary" @click="handleSplitCountNum">拆分</el-button> <el-button v-show="active == 1" :disabled="sampleList.length === 3" size="small" type="primary" @click="handleSplitCountNum">拆分</el-button> </div> </div> <div style="height: auto;"> <el-table ref="sampleTable" :data="sampleList" class="el-table sampleTable" highlight-current-row :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border max-height="400px" tooltip-effect="dark" @selection-change="selectSample" @row-click="rowClick"> :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border 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"> @@ -160,16 +152,17 @@ </el-table-column> <el-table-column v-if="!(active>1)" align="center" label="型号参数" prop="modelNum" width="130"> <template slot-scope="scope"> <el-input v-model="scope.row.modelNum" :disabled="active>1|| scope.$index !== 0" clearable placeholder="非必填" size="small" <el-input v-model="scope.row.modelNum" :disabled="active > 1 || scope.$index !== 0" clearable placeholder="非必填" size="small" @input="methodChange(scope.row.standardMethodListId, scope.row)"></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 || scope.$index !== 0" :loading="methodLoad" :readonly="active>1" clearable placeholder="检验标准" size="small" style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus"> <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model == null || active > 1 || scope.$index !== 0" :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> @@ -195,43 +188,35 @@ </el-table-column> <el-table-column align="center" label="待检项数量" prop="quantity" width="105"></el-table-column> </el-table> <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" class="el-table" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" class="el-table" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border 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="selectable" 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="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" <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> <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" <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&&isAskOnlyRead&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值" size="small" type="textarea" <el-input v-if="active == 1 && isAskOnlyRead && 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 v-if="(scope.row.ask.indexOf('D')>-1 @@ -249,8 +234,8 @@ </el-table-column> <el-table-column label="要求描述" min-width="220px" prop="tell"> <template slot-scope="scope"> <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" size="small" type="textarea" <el-input v-if="active == 1 && isAskOnlyRead" 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> @@ -262,12 +247,7 @@ <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"/> <el-input v-if="active == 1" v-model="methodS" placeholder="请输入" size="mini" @input="searchFilterList" /> </div> </template> </el-table-column> @@ -277,23 +257,25 @@ <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 :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory" show-overflow-tooltip></el-table-column> </el-table> </div> </div> <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;"> <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" <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"> :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"> @@ -311,10 +293,8 @@ </span> </el-dialog> <!--特殊值处理框--> <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="检测到特殊项,请作出以下选择"> <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"> @@ -322,7 +302,8 @@ <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 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> @@ -343,37 +324,22 @@ </el-row> </span> </el-dialog> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="bsm3Dia" <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%"> <el-table :data="editTable" height="80vh" style="width: 100%"> <!-- inspectionItemList --> <el-table-column label="检验项" prop="inspectionItemList" width="180"> <el-table-column label="检验项" prop="inspectionItemList" width="180"> </el-table-column> <el-table-column label="样品编号" prop="sampleCode" width="180"> <el-table-column label="样品编号" prop="sampleCode" width="180"> </el-table-column> <el-table-column label="样品型号" prop="model" width="180"> <el-table-column label="样品型号" prop="model" width="180"> </el-table-column> <el-table-column label="识别符号" prop="symbolItem"> <el-table-column label="识别符号" prop="symbolItem"> </el-table-column> <el-table-column label="识别符值" prop="value"> <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> <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row, scope.$index)"></el-input> </template> </el-table-column> </el-table> @@ -384,10 +350,7 @@ </el-row> </span> </el-dialog> <el-dialog :visible.sync="noNeedCheckDia" title="免检提示" width="32%"> <el-dialog :visible.sync="noNeedCheckDia" title="免检提示" width="32%"> <span>确认免检当前检验单?</span> <span slot="footer" class="dialog-footer"> <el-button :loading="noNeedCheckLoad" @click="noNeedCheckDia = false">取 消</el-button> @@ -1208,39 +1171,30 @@ 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 } }) } } 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(' - ', '') this.selectTree = this.getReversedTreePath(node) }, getNodeParent(val) { if (val.parent != null) { if (val.data.children === null) { this.selectTree += ' - ' + val.label + ' - ' + '' } else { this.selectTree += ' - ' + val.label /** * 获取反向拼接的树路径字符串 * @param {Object} node - 当前节点 * @returns {string} - 反向拼接的树路径 */ getReversedTreePath(node) { const pathParts = []; // 递归获取父节点路径 const collectParentLabels = (currentNode) => { if (currentNode && currentNode.label) { pathParts.unshift(currentNode.label); // 将当前节点标签插入到数组开头 } this.getNodeParent(val.parent) if (currentNode.parent) { collectParentLabels(currentNode.parent); // 递归处理父节点 } }; collectParentLabels(node); // 拼接路径并返回 return pathParts.join(" - "); }, selectStandardTreeList() { this.selectStandardTreeLoading = true @@ -1805,9 +1759,11 @@ justify-content: space-between; margin-bottom: 10px; } >>>.warning-row { color: #1890FF; } .node_i { color: orange; font-size: 18px; src/views/business/productOrder/components/add.vue
@@ -4,13 +4,8 @@ <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" @focus="getQuarterOnOrderList"></el-cascader> <el-cascader v-model="addObj.quarterItemId" :disabled="active > 1" :options="quarterItemOptions" size="small" style="width: 380px" @focus="getQuarterOnOrderList"></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"> @@ -22,9 +17,13 @@ <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-show="active==1||(tabIndex==4&&active==2)" :loading="saveLoad" size="small" type="primary" @click="save">提交</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-show="active == 1 || (tabIndex == 4 && active == 2)" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button> <!-- 审核 --> <el-button v-show="active==3" :disabled="saveLoad" :loading="saveLoad" size="small" @click="upInsOrderOfState(2)">不通过</el-button> @@ -38,7 +37,8 @@ </div> <div v-show="!cableConfigShow&&!auxiliaryShow" style="margin-top: 10px"> <div class="search"> <el-form ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> <el-form ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> <el-row> <el-col :span="6"> <el-form-item label="委托编号:"> @@ -47,8 +47,10 @@ </el-col> <el-col :span="6"> <el-form-item label="检验类别:" prop="orderType"> <el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> <el-option v-for="(a, ai) in dict.type.check_type1" :key="ai" :label="a.label" :value="a.value"></el-option> <el-select v-model="addObj.orderType" :disabled="active > 1 && tabIndex != 4" clearable size="small" style="width: 100%;"> <el-option v-for="(a, ai) in dict.type.check_type1" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -71,21 +73,23 @@ <el-row> <el-col :span="6"> <el-form-item label="联系方式:" prop="phone"> <el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="选择委托客户" size="small"></el-input> <el-input v-model="addObj.phone" :disabled="active > 1 && tabIndex != 4" clearable placeholder="选择委托客户" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="紧急程度:" prop="type"> <el-select v-model="addObj.type" :disabled="active>1&&tabIndex!=4" clearable size="small"> <el-option v-for="(a, ai) in dict.type.urgency_level" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a, ai) in dict.type.urgency_level" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品名称:" prop="sample"> <el-input v-model="addObj.sample" disabled size="small" style="width: 208px"> <template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="selectStandardTree = true"></el-button></template> <template slot="append"><el-button slot="append" :disabled="active > 1 && tabIndex != 4" icon="el-icon-search" @click="selectStandardTree = true"></el-button></template> </el-input> </el-form-item> </el-col> @@ -100,19 +104,22 @@ <el-col :span="6"> <el-form-item label="样品状态:" prop="sampleStatus"> <el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small"> <el-option v-for="(a,ai) in dict.type.sample_status_list" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a, ai) in dict.type.sample_status_list" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="抽检数量:" prop="testQuantity"> <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> <el-input v-model="addObj.testQuantity" :disabled="active > 1 && tabIndex != 4" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="来样方式:" prop="formType"> <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small" clearable> <el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a, ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -128,7 +135,8 @@ <el-row> <el-col :span="6"> <el-form-item label="样品处理方式:"> <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini" style="display: flex; flex-direction: column;"> <el-radio-group v-model="addObj.processing" :disabled="active > 1 && tabIndex != 4" size="mini" style="display: flex; flex-direction: column;"> <el-radio :label="0" border style="margin-right: 0">委托单位取回</el-radio> <el-radio :label="1" border>实验室处理</el-radio> </el-radio-group> @@ -158,44 +166,48 @@ <el-row> <el-col :span="6"> <el-form-item label="委托人:"> <el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareUser" :disabled="active > 1 && tabIndex != 4" :placeholder="active > 1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托人英文:"> <el-input v-model="addObj.prepareUserEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareUserEn" :disabled="active > 1 && tabIndex != 4" :placeholder="active > 1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="备注:"> <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small" style="width: 100%" type="textarea"></el-input> <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2 }" :disabled="active > 1 && tabIndex != 4" :placeholder="active > 1 ? '' : '请输入'" clearable size="small" style="width: 100%" type="textarea"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="备注英文:"> <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> <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> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> <el-form-item label="样品名称:"> <el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.sampleView" :disabled="active > 1 && tabIndex != 4" :placeholder="active > 1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品名称英文:"> <el-input v-model="addObj.sampleViewEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.sampleViewEn" :disabled="active > 1 && tabIndex != 4" :placeholder="active > 1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托人工号:"> <el-input v-model="addObj.prepareCode" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareCode" :disabled="active > 1 && tabIndex != 4" :placeholder="active > 1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> </el-row> @@ -206,18 +218,15 @@ <div v-if="active==1"> <el-form :inline="true" :model="addObj1" label-width="90px"> <el-form-item label="样品型号:" style="margin-bottom: 6px;margin-top: 6px"> <el-select v-model="model" :placeholder="active>1 ? '' : '请输入'" allow-create clearable default-first-option filterable size="small" @change="changeModel"> <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> </el-form-item> <el-form-item label="检验标准:" style="margin-bottom: 6px;margin-top: 6px"> <el-select v-model="standardMethodListId" :loading="methodLoad" :placeholder="active>1 ? '' : '请输入'" clearable size="small" @change="changeStandardMethodListId" @focus="methodFocus"> <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> @@ -227,13 +236,13 @@ <div style="display: flex;align-items: center;margin-bottom: 6px;margin-top: 6px"> <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> <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 :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" max-height="400px" tooltip-effect="dark" @selection-change="selectSample" @row-click="rowClick"> :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" 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"> @@ -276,8 +285,9 @@ <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"> :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> @@ -296,45 +306,37 @@ </template> </el-table-column> </el-table> <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" border class="el-table" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" border class="el-table" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" 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="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" <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> <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" <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> <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> @@ -342,8 +344,8 @@ </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" <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> @@ -352,8 +354,8 @@ </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" <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> <span v-else>{{scope.row.radius}}</span> @@ -363,24 +365,21 @@ <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"/> <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 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 :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" 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> <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> @@ -388,10 +387,9 @@ </div> <el-dialog :visible.sync="selectUserDia" title="选择单位" width="70%"> <div v-if="selectUserDia" class="body"> <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod" @pagination="pagination1" height="400px" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod" @pagination="pagination1" height="400px" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> </div> <span slot="footer" class="dialog-footer"> <el-button @click="selectUserDia = false">取 消</el-button> @@ -399,17 +397,19 @@ </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;"> <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" <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"> :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"> @@ -438,7 +438,8 @@ <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"> <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"> @@ -452,7 +453,8 @@ <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-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> @@ -461,7 +463,8 @@ <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-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> @@ -495,14 +498,14 @@ </span> </el-dialog> <!--电缆配置--> <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/> <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> <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="检测到特殊项,请作出以下选择"> <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"> @@ -510,7 +513,8 @@ <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 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> @@ -532,37 +536,22 @@ </span> </el-dialog> <!--区间填写--> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="bsm3Dia" <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%"> <el-table :data="editTable" height="80vh" style="width: 100%"> <!-- inspectionItemList --> <el-table-column label="检验项" prop="inspectionItemList" width="180"> <el-table-column label="检验项" prop="inspectionItemList" width="180"> </el-table-column> <el-table-column label="样品编号" prop="sampleCode" width="180"> <el-table-column label="样品编号" prop="sampleCode" width="180"> </el-table-column> <el-table-column label="样品型号" prop="model" width="180"> <el-table-column label="样品型号" prop="model" width="180"> </el-table-column> <el-table-column label="识别符号" prop="symbolItem"> <el-table-column label="识别符号" prop="symbolItem"> </el-table-column> <el-table-column label="识别符值" prop="value"> <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> <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row, scope.$index)"></el-input> </template> </el-table-column> </el-table> @@ -1387,46 +1376,30 @@ 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]') { 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(' - ', '') this.selectTree = getReversedTreePath(node) }, getNodeParent(val) { if (val.parent != null) { if (val.data.children === null) { this.selectTree += ' - ' + val.label + ' - ' + '' } else { this.selectTree += ' - ' + val.label /** * 获取反向拼接的树路径字符串 * @param {Object} node - 当前节点 * @returns {string} - 反向拼接的树路径 */ getReversedTreePath(node) { const pathParts = []; // 递归获取父节点路径 const collectParentLabels = (currentNode) => { if (currentNode && currentNode.label) { pathParts.unshift(currentNode.label); // 将当前节点标签插入到数组开头 } this.getNodeParent(val.parent) if (currentNode.parent) { collectParentLabels(currentNode.parent); // 递归处理父节点 } }; collectParentLabels(node); // 拼接路径并返回 return pathParts.join(" - "); }, selectStandardTreeList() { this.selectStandardTreeLoading = true @@ -2214,6 +2187,7 @@ >>>.warning-row { color: #1890FF; } .node_i { color: orange; font-size: 18px; src/views/standard/standardLibrary/audit.vue
@@ -18,6 +18,10 @@ </template> <script> import { standardProductListRecordPage, productListCheck, } from "@/api/standard/standardLibrary"; import limsTable from "@/components/Table/lims-table.vue"; export default { components: { @@ -28,21 +32,39 @@ queryParams: {}, tableData: [], column: [ { label: "更新原因", prop: "number" }, { label: "更新时间", prop: "name" }, { label: "更新原因", prop: "remark" }, { label: "更新时间", prop: "updateTime" }, { label: "更新人", prop: "remark" }, { label: "状态", prop: "remark" }, { label: "状态", prop: "checkStatus", dataType: "tag", formatData: (params) => { let obj = this.checkStatusList.find((m) => m.value == params) if (obj) { return obj.label } }, formatType: (params) => { let obj = this.checkStatusList.find((m) => m.value == params) if (obj) { return obj.type } } }, { dataType: "action", label: "操作", operation: [ { name: "上传附件", name: "上传", type: "upload", accept: '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.pdf', url: '/insReport/inReport', url: '/updateRecord/uploadRecordFile', uploadIdFun: (row) => { return row.id }, handleSuccessUp: () => { this.getList() } }, { @@ -59,7 +81,12 @@ name: "查看", type: "text", clickFun: (row) => { this.handleLook(row); this.$tab.closeRightPage(); this.$router.push({ path: "/audit/auditDetail", query: { auditId: row.id } }); }, }, { @@ -78,14 +105,39 @@ current: 0, }, tableLoading: false, checkStatusList: [ { value: 0, label: '未提交', type: 'danger' }, { value: 1, label: '待审核', type: 'warning' }, { value: 2, label: '通过', type: 'success' }, { value: 3, label: '不通过', type: 'danger' }, ], } }, mounted() { this.getList() }, methods: { getList() { this.tableLoading = true; let param = { ...this.queryParams, ...this.page }; delete param.total; selectStandardTemplatePageList({ ...param }) standardProductListRecordPage({ ...param }) .then((res) => { this.tableLoading = false; if (res.code === 200) { @@ -122,10 +174,26 @@ beforeClose: (action, instance, done) => { if (action === 'confirm') { // 通过 this.refresh(); productListCheck({ checkStatus: 2, id: row.id }).then(res => { if (res.code == 200) { this.refresh() done(); } }) } else if (action === 'cancel') { // 不通过 this.refresh(); productListCheck({ checkStatus: 3, id: row.id }).then(res => { if (res.code == 200) { this.refresh() done(); } }) } else if (action === 'close') { // 点击“×”按钮,不允许关闭 done(); @@ -134,11 +202,9 @@ } }) }, // 查看 handleLook(row) { }, // 下载附件 handleDown(row) { this.$download.saveAs(row.fileUrl, row.fileName); this.$download.saveAs(row.filePath, row.fileName); }, } } src/views/standard/standardLibrary/components/bindSupplierDensityDialogAsk.vue
@@ -1,46 +1,17 @@ <template> <div> <el-dialog title="厂家要求值绑定" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')" > <div class="body" v-if="isShow" style="height: 500px; overflow-y: auto; padding: 5px 0" > <el-table ref="bindPartTable" :data="bindPartData" v-loading="bindPartTableLoading" highlight-current-row style="width: 100%" > <el-table-column type="index" width="70" label="序号" ></el-table-column> <el-table-column property="supplierName" label="厂家" width="200" ></el-table-column> <el-dialog title="厂家要求值绑定" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')"> <div class="body" v-if="isShow" style="height: 500px; overflow-y: auto; padding: 5px 0"> <el-table ref="bindPartTable" :data="bindPartData" v-loading="bindPartTableLoading" highlight-current-row style="width: 100%"> <el-table-column type="index" width="70" label="序号"></el-table-column> <el-table-column property="supplierName" label="厂家" width="200"></el-table-column> <el-table-column property="ask" label="要求值"></el-table-column> <el-table-column property="tell" label="要求描述"></el-table-column> <el-table-column label="操作" width="100"> <template slot-scope="scope"> <el-button type="text" size="small" @click="updateBind(scope.row, 'edit')" >编辑</el-button > <el-button type="text" size="small" @click="deleteBind(scope.row)" >删除</el-button > <el-button type="text" size="small" @click="updateBind(scope.row, 'edit')">编辑</el-button> <el-button type="text" size="small" @click="deleteBind(scope.row)">删除</el-button> </template> </el-table-column> </el-table> @@ -53,55 +24,28 @@ <!-- </div>--> <span slot="footer" class="dialog-footer"> <el-button @click="$emit('closeBindPartDialog')">取 消</el-button> <el-button type="primary" @click="addBindPart('add')" :loading="addBindLoad" >新 增</el-button > <el-button type="primary" @click="addBindPart('add')" :loading="addBindLoad">新 增</el-button> </span> </el-dialog> <el-dialog title="厂家要求值绑定" :visible.sync="addBindSupplierDensityDialog" v-if="addBindSupplierDensityDialog" width="400px" @close="closeBindPartDialog" :close-on-click-modal="false" > <el-dialog title="厂家要求值绑定" :visible.sync="addBindSupplierDensityDialog" v-if="addBindSupplierDensityDialog" width="400px" @close="closeBindPartDialog" :close-on-click-modal="false"> <div class="body" v-if="addBindSupplierDensityDialog"> <el-form label-position="right" label-width="100px" ref="bindSupplierDensityData" :rules="bindPartDataRules" :model="bindSupplierDensityData" > <el-form label-position="right" label-width="100px" ref="bindSupplierDensityData" :rules="bindPartDataRules" :model="bindSupplierDensityData"> <el-form-item label="厂家:" prop="supplierName"> <el-input v-model="bindSupplierDensityData.supplierName" size="small" ></el-input> <el-input v-model="bindSupplierDensityData.supplierName" size="small"></el-input> </el-form-item> <el-form-item label="要求值:" prop="ask"> <el-input v-model="bindSupplierDensityData.ask" size="small" ></el-input> <el-input v-model="bindSupplierDensityData.ask" size="small"></el-input> </el-form-item> <el-form-item label="要求描述:" prop="tell"> <el-input v-model="bindSupplierDensityData.tell" size="small" ></el-input> <el-input v-model="bindSupplierDensityData.tell" size="small"></el-input> </el-form-item> </el-form> </div> <span slot="footer" class="dialog-footer"> <el-button @click="closeBindPartDialog">取 消</el-button> <el-button type="primary" @click="submitBind" :loading="bindLoad" >确 认</el-button > <el-button type="primary" @click="submitBind" :loading="bindLoad">确 认</el-button> </span> </el-dialog> </div> @@ -236,6 +180,7 @@ this.addBindSupplierDensityDialog = false; this.$message.success("操作成功"); this.searchTableData(); this.$emit('refreshList') } }) .catch((err) => { @@ -251,6 +196,7 @@ this.addBindSupplierDensityDialog = false; this.$message.success("操作成功"); this.searchTableData(); this.$emit('refreshList') } }) .catch((err) => { src/views/standard/standardLibrary/index.vue
@@ -8,7 +8,8 @@ </el-col> <el-col v-if="checkPermi(['standard:standardLibrary:add'])" :span="4" style="text-align: center; line-height: 30px"> <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="openAddDia"></el-button> <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="openAddDia" v-if="!auditId"></el-button> </el-col> </el-row> <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list" @@ -36,7 +37,7 @@ (node.data.children === null || node.data.children === undefined) " :span="2" style="text-align: right"> <el-button size="mini" type="text" @click.stop="editTreeName(node.data)"> <el-button size="mini" type="text" @click.stop="editTreeName(node.data)" v-if="!auditId"> <i class="el-icon-edit"></i> </el-button> </el-col> @@ -45,7 +46,7 @@ (node.data.children === null || node.data.children === undefined) " :span="2" style="text-align: right"> <el-button size="mini" type="text" @click.stop="remove(node, data)"> <el-button size="mini" type="text" @click.stop="remove(node, data)" v-if="!auditId"> <i class="el-icon-delete"></i> </el-button> </el-col> @@ -58,8 +59,8 @@ <el-col :span="19" style="font-size: 14px; color: #999"><span>{{ selectTree }} </span></el-col> <el-col :span="5" style="position: absolute;top: -3px;right: -25px;"> <el-button size="small" type="primary" @click="submitReview">提交变更</el-button> <el-col :span="5" style="position: absolute;top: -3px;right: -25px;" v-if="!auditId && !standardCkeck"> <el-button size="small" type="primary" @click="submitReview" :loading="submitReviewLoad">提交变更</el-button> <el-button v-if="isShowCopy" size="small" type="primary" @click="openCopyDia">批量复制</el-button> </el-col> </el-row> @@ -83,8 +84,8 @@ :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :fit="true" :row-class-name="tableRowClassName" class="productTable" header-row-class-name="header-class" height="100%" row-key="id" stripe style="width: 100%" tooltip-effect="dark" @select="upProductSelect" @selection-change="handleSelectionChange" @select-all="handleAll"> <el-table-column type="selection" width="50"> </el-table-column> @selection-change="handleSelectionChange" @select-all="handleAll" :header-cell-class-name="headerCellStyle"> <el-table-column type="selection" width="50" :selectable="selectable"> </el-table-column> <el-table-column label="产品" min-width="100" prop="sample" show-overflow-tooltip></el-table-column> <el-table-column label="型号" min-width="100" prop="model" show-overflow-tooltip></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" @@ -96,7 +97,8 @@ <el-table-column label="审核状态" min-width="140" prop="checkStatus"> <template slot-scope="scope"> <el-tag :type="checkStatusList.find(m => m.value == scope.row.checkStatus).type" v-if="checkStatusList.find(m => m.value == scope.row.checkStatus)" size="small">{{ v-if="checkStatusList.find(m => m.value == scope.row.checkStatus) && scope.row.checkStatus !== '' && scope.row.checkStatus !== null" size="small">{{ checkStatusList.find(m => m.value == scope.row.checkStatus).label }}</el-tag> </template> </el-table-column> @@ -105,7 +107,8 @@ <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求值" size="small" type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input> type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)" :disabled="!!auditId || standardCkeck"></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> @@ -115,12 +118,12 @@ checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id) "></el-input> " :disabled="!!auditId || standardCkeck"></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column> <el-table-column label="试验方法" prop="method" width="200"> <!-- <el-table-column label="试验方法" prop="method" width="200"> <template slot-scope="scope"> <el-select v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) @@ -131,13 +134,13 @@ </el-select> <span v-else>{{ scope.row.methodS }}</span> </template> </el-table-column> </el-table-column> --> <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> <template slot-scope="scope"> <el-select v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.radius" clearable placeholder="条件" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id) "> " :disabled="!!auditId || standardCkeck"> <el-option v-for="(a, i) in scope.row.radiusList && JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option> </el-select> @@ -150,7 +153,7 @@ <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.price" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id) "> " :disabled="!!auditId || standardCkeck"> </el-input> <span v-else>{{ scope.row.price }}</span> </template> @@ -160,7 +163,7 @@ <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.manHour" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfManHour(value, scope.row.id) "> " :disabled="!!auditId || standardCkeck"> </el-input> <span v-else>{{ scope.row.manHour }}</span> </template> @@ -168,7 +171,7 @@ <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="模板" prop="templateId" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) || !!auditId || standardCkeck " filterable size="small" @change="(value) => upStandardProductListOfTemplate(value, scope.row.id) "> @@ -177,7 +180,7 @@ </template> </el-table-column> <el-table-column label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column> <el-table-column label="操作" prop="section" width="160"> <el-table-column label="操作" prop="section" width="160" v-if="!auditId && !standardCkeck"> <template slot-scope="scope"> <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) ">区间设置</el-button> @@ -275,7 +278,7 @@ </el-dialog> <bindSupplierDensityDialogAsk v-if="bindSupplierDensityDialog" :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow" @closeBindPartDialog="closeBindSupplierDensityDialog"> @closeBindPartDialog="closeBindSupplierDensityDialog" @refreshList="refreshList"> </bindSupplierDensityDialogAsk> <BatchCopy v-if="batchCopyDia" ref="BatchCopy" :selectTree1="selectTree" :standardId="standardId" @refreshList="refreshList"></BatchCopy> @@ -304,6 +307,8 @@ selectStandardProductByMethodId, selectStandardProductEnumByMethodId, productListSubmit, standardProductListRecordRelPage, existCheckingRecord, } from "@/api/standard/standardLibrary"; import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue"; import BatchCopy from "./components/BatchCopy.vue"; @@ -371,7 +376,6 @@ inspectionItem: null, inspectionItemSubclass: null, sonLaboratory: null, token: null, fileList: [], uploading: false, isEquipment: true, @@ -399,10 +403,14 @@ label: '已更新', type: 'success' }, ] ], submitReviewLoad: false, auditId: null,//标准变更记录ID standardCkeck: false,//当前是否有正在审核的变更 }; }, mounted() { this.existCheckingRecord() this.selectEnumByCategoryForFactory(); this.selectStandardTreeList(); this.obtainItemParameterList(); @@ -412,11 +420,27 @@ this.selectEnumByCategoryForsampleType(); this.getStandardTemplate(); this.selectStandardMethodsSec(); this.token = { token: sessionStorage.getItem("token"), }; if (this.$route.query && this.$route.query.auditId) { let { auditId } = this.$route.query this.auditId = auditId } else { this.auditId = null } }, methods: { // 标准库变更时禁用全选 headerCellStyle({ columnIndex }) { if (columnIndex === 0 && (this.auditId || this.standardCkeck)) { return 'disable-select-all'; } return ''; }, // 标准库变更时禁用多选 selectable(row, index) { return !this.auditId && !this.standardCkeck; }, // 拖拽时判定目标节点能否被放置 // 'prev'、'inner' 和 'next',前、插入、后 allowDrop(draggingNode, dropNode, type) { @@ -840,6 +864,24 @@ this.currentPage = 1; this.tableLoad2 = true; this.standardId = row.id; if (this.auditId) { // 标准库变更的检验项查询 standardProductListRecordRelPage({ standardMethodListId: row.id, tree: this.selectTree, standardProductListUpdateRecordId: this.auditId, }).then((res) => { this.productList = res.data.productList; this.total = res.data.total; setTimeout(() => { this.productList.forEach((a) => { if (a.state == 1) this.toggleSelection(a); }); }, 300); this.tableLoad2 = false; }); } else { // 正常情况下的标准查询 selectStandardProductListByMethodId({ id: row.id, tree: this.selectTree, @@ -879,6 +921,8 @@ this.rowDrop(row.id); }); }); } }, toggleSelection(row) { this.$refs.productTable.toggleRowSelection(row, true); @@ -1050,6 +1094,7 @@ this.sectionLoad = false; this.$message.success("已保存"); this.sectionUpDia = false; this.refreshList() }); } else { upStandardProducts({ @@ -1095,6 +1140,22 @@ handleCurrentChange(val) { this.currentPage = val; this.tableLoad2 = true; if (this.auditId) { // 标准库变更查询\ standardProductListRecordRelPage({ standardMethodListId: this.standardId, tree: this.selectTree, standardProductListUpdateRecordId: this.auditId, }).then((res) => { this.productList = res.data.productList; setTimeout(() => { this.productList.forEach((a) => { if (a.state == 1) this.toggleSelection(a); }); }, 200); this.tableLoad2 = false; }); } else { selectStandardProductListByMethodId({ id: this.standardId, tree: this.selectTree, @@ -1108,6 +1169,7 @@ }, 200); this.tableLoad2 = false; }); } }, openCopyDia() { this.batchCopyDia = true; @@ -1214,21 +1276,26 @@ return true; } }).then(({ value }) => { this.submitReviewLoad = true productListSubmit({ remark: value }).then(res => { this.submitReviewLoad = false this.selectsStandardMethodByFLSSM(); this.existCheckingRecord() this.refreshList() this.$refs.productTable.doLayout() }).catch(err => { this.submitReviewLoad = false }) // this.$message({ // type: 'success', // message: '你的邮箱是: ' + value // }); }).catch(() => { // this.$message({ // type: 'info', // message: '取消输入' // }); }); }, // 获取当前有没有正在审核的变更 existCheckingRecord() { existCheckingRecord().then(res => { this.standardCkeck = res.data }) } }, }; @@ -1415,4 +1482,9 @@ align-items: center; justify-content: center; } /* 隐藏全选复选框 */ >>>.disable-select-all .el-checkbox { display: none !important; } </style> src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -155,7 +155,7 @@ { label: '试验室', prop: 'sonLaboratory' }, { label: '要求描述', prop: 'askTell' }, { label: '要求值', prop: 'ask' }, { label: '试验条件', prop: 'radiusList' }, // { label: '试验条件', prop: 'radiusList' }, { label: '计量单位', prop: 'unit' }, { label: '工时(H)', prop: 'manHour' }, { label: '预计时间(H)', prop: 'manDay' }, src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue
@@ -157,7 +157,7 @@ </el-select> </el-form-item> </el-col> <el-col :span="12"> <!-- <el-col :span="12"> <el-form-item label="试验条件:" prop="radiusList"> <el-select v-model="editForm.radiusList" allow-create default-first-option filterable multiple placeholder="请选择" size="small" style="width: 100%"> @@ -165,7 +165,7 @@ :value="item.value"></el-option> </el-select> </el-form-item> </el-col> </el-col> --> </el-row> <el-row> <el-col :span="12">