package-lock.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/api/controller.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-ins-order/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/tool/value-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/a5-capacity-scope.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/a7-standard-method.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspection-order.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b2-standard.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
static/js/menu.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
package-lock.json
@@ -177,6 +177,11 @@ } } }, "@tinymce/tinymce-vue": { "version": "3.2.8", "resolved": "https://registry.npmmirror.com/@tinymce/tinymce-vue/-/tinymce-vue-3.2.8.tgz", "integrity": "sha512-jEz+NZ0g+FZFz273OEUWz9QkwPMyjc5AJYyxOgu51O1Y5UaJ/6IUddXTX6A20mwCleEv5ebwNYdalviafx4fnA==" }, "@transloadit/prettier-bytes": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", @@ -12039,6 +12044,11 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" }, "tinymce": { "version": "5.10.9", "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.9.tgz", "integrity": "sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg==" }, "tmp": { "version": "0.2.3", "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.3.tgz", src/assets/api/controller.js
@@ -150,11 +150,15 @@ addStandardProduct: "/standardTree/addStandardProduct", //æ°å¢æ åæ ä¸çæ£éªé¡¹ç® delStandardTree: "/standardTree/delStandardTree", //å 餿 åæ çå±çº§ selectStandardProductList: "/standardTree/selectStandardProductList", //éè¿æ åæ æ¥è¯¢å¯¹åºçæ£éªé¡¹ç® selectStandardProductListByMethodId: "/standardTree/selectStandardProductListByMethodId", //éè¿æ£éªæ åæ¥è¯¢æ£éªé¡¹ç® } const standardMethod = { selectStandardMethodList: "/standardMethod/selectStandardMethodList", //è·åæ åæ¹æ³å表 selectStandardMethods: "/standardMethod/selectStandardMethods", //è·åæ åæ¹æ³æä¸¾ addStandardMethod: "/standardMethod/addStandardMethod", //æ·»å æ åæ¹æ³ upStandardMethod: "/standardMethod/upStandardMethod", //ä¿®æ¹æ åæ¹æ³ delStandardMethod: "/standardMethod/delStandardMethod", //å 餿 åæ¹æ³ } const StandardTemplate = { src/components/do/b1-ins-order/add.vue
@@ -3,6 +3,7 @@ width: 100%; height: 100%; overflow-y: auto; overflow-x: hidden; } .ins_order_add::-webkit-scrollbar { @@ -41,12 +42,11 @@ font-size: 18px; } .el-select-dropdown__item { display: flex; align-items: center; justify-content: space-between; } .el-select-dropdown__item { display: flex; align-items: center; justify-content: space-between; } </style> <style> .ins_order_add .el-input-group__append, @@ -77,7 +77,7 @@ font-size: 12px; } .ins_order_add .el-table .warning-row .cell{ .ins_order_add .el-table .warning-row .cell { color: #bababa; } </style> @@ -88,18 +88,21 @@ <el-row class="title"> <el-col :span="6" style="padding-left: 20px;">å§æåä¿¡æ¯</el-col> <el-col :span="18" style="text-align: right;"> <el-select v-model="template" size="medium" placeholder="ä¸å模æ¿" style="margin-right: 10px;" v-show="active==1" @change="selectInsOrderTemplateById"> <el-select v-model="template" size="medium" placeholder="ä¸å模æ¿" style="margin-right: 10px;" v-show="active==1" @change="selectInsOrderTemplateById"> <el-option v-for="(a, ai) in templates" :key="ai" :value="a.id" :label="a.name"> <span style="float: left">{{ a.name }}</span> <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" @click.stop="handleDelete(a)"></i> </el-option> <span style="float: left">{{ a.name }}</span> <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" @click.stop="handleDelete(a)"></i> </el-option> </el-select> <el-button size="medium" @click="templateDia=true" v-show="active==1"> <span style="color: #3A7BFA;">ä¿å模æ¿</span> </el-button> <el-button size="medium" type="primary" @click="save" :loading="saveLoad" v-show="active==1">æäº¤</el-button> <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad" v-show="active==3">å®¡æ ¸ä¸éè¿</el-button> <el-button size="medium" type="primary" @click="upInsOrderOfState(1)" :loading="saveLoad" v-show="active==3">å®¡æ ¸éè¿</el-button> <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad" v-show="active==3">ä¸éè¿</el-button> <el-button size="medium" type="primary" @click="upInsOrderOfState(1)" :loading="saveLoad" v-show="active==3">éè¿</el-button> <el-button size="medium" @click="$parent.playOrder(0)"> <span style="color: #3A7BFA;">è¿å</span> </el-button> @@ -130,17 +133,46 @@ </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">éæ±æ¶é´ï¼</div> <div class="search_input"> <el-date-picker type="date" placeholder="éæ©æ¥æ" size="small" value-format="yyyy-MM-dd" style="width: 100%;" v-model="addObj.appointed"></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-select size="small" style="width: 100%;" clearable v-model="addObj.type"> <el-option v-for="(a, ai) in type" :key="ai" :value="a.value" :label="a.label"></el-option> </el-select> </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 readonly size="small" v-model="addObj.sample"> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = true"></el-button></template> </el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>å®éªå®¤ï¼</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="addObj.laboratory"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>æ ·åç±»åï¼</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="addObj.sampleType"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>æ ·åæ°éï¼</div> <div class="search_input"> <el-input-number size="small" v-model="addObj.sampleNum" :min="1" :max="100" :precision="0" style="width: 65%;" @change="addStandardTree"></el-input-number> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">æ ·ååä½ï¼</div> <div class="search_input"> <el-select v-model="addObj.unit" clearable size="small" style="width: 100%;"> <el-option v-for="(a, i) in units" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </div> </el-col> @@ -169,34 +201,63 @@ </el-row> </div> <div> <div style="text-align: right;line-height: 45px;" v-if="active<2"> <el-button type="primary" size="small" @click="addSampleDia = true" >æ·»å æ ·å</el-button> <!-- <div style="text-align: right;line-height: 45px;" v-if="active<2"> <el-button type="primary" size="small" @click="addSampleDia = true">æ·»å æ ·å</el-button> <el-button size="small" @click="delSample"> <span style="color: #3A7BFA;">å 餿 ·å</span> </el-button> </div> <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark" border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;"> </div> --> <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark" border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;"> <el-table-column type="selection" width="60"></el-table-column> <el-table-column type="index" label="åºå·" width="65" align="center"></el-table-column> <el-table-column prop="sample" label="æ ·ååç§°" align="center" show-overflow-tooltip min-width="100"></el-table-column> <el-table-column prop="sampleCode" label="æ ·åç¼å·" width="140" align="center"> <el-table-column prop="sample" label="æ ·ååç§°" align="center" show-overflow-tooltip min-width="100"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.sampleCode" clearable></el-input> <el-input size="small" v-model="scope.row.sample" clearable></el-input> </template> </el-table-column> <el-table-column prop="factory" label="å·¥å" align="center" show-overflow-tooltip min-width="100"> <el-table-column prop="sampleCode" label="æ ·åç¼å·" min-width="140" align="center"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="ä¸å¡«ååç³»ç»èªå¨çæ"></el-input> </template> </el-table-column> <!-- <el-table-column prop="factory" label="å·¥å" align="center" show-overflow-tooltip min-width="100"> </el-table-column> <el-table-column prop="laboratory" label="å®éªå®¤" align="center" show-overflow-tooltip min-width="100"> </el-table-column> <el-table-column prop="sampleType" label="æ ·åç±»å" align="center" show-overflow-tooltip min-width="100"> </el-table-column> </el-table-column> --> <el-table-column prop="model" label="æ ·ååå·" align="center" show-overflow-tooltip min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="æ ·ååå·" size="small"> <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> </el-table-column> <el-table-column prop="standardMethodListId" label="æ£éªæ å" align="center" show-overflow-tooltip min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.method" :disabled="scope.row.model==null" filterable placeholder="æ£éªæ å" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)" @focus="methodFocus"> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> </template> </el-table-column> <el-table-column prop="unit" label="åä½" align="center" show-overflow-tooltip min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.unit" clearable size="small" style="width: 100%;"> <el-option v-for="(a, i) in units" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </template> </el-table-column> <el-table-column prop="isLeave" label="æ¯å¦çæ ·" align="center" show-overflow-tooltip min-width="100"> <template slot-scope="scope"> <span>{{scope.row.isLeave==1?'æ¯':'å¦'}}</span> <el-select v-model="scope.row.isLeave" size="small"> <el-option label="çæ ·" :value="1"></el-option> <el-option label="ä¸çæ ·" :value="0"></el-option> </el-select> </template> </el-table-column> <el-table-column prop="joinName" label="é 奿 ·ååç§°" width="140" align="center" v-if="addObj.mating==1"> @@ -217,22 +278,22 @@ :controls="false" style="width: 80%;"></el-input-number> </template> </el-table-column> <el-table-column label="æä½" width="65" align="center"> <!-- <el-table-column label="æä½" width="65" align="center"> <template slot-scope="scope"> {{scope.index}} <el-button type="text" size="small" @click="delSampleAndProduct" :disabled="active!=1">å é¤</el-button> </template> </el-table-column> </el-table-column> --> </el-table> <el-table class="el-table" ref="productTable" :data="productList" height="380px" tooltip-effect="dark" border @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" :row-class-name="tableRowClassName"> :row-class-name="tableRowClassName" v-loading="getProductLoad"> <el-table-column type="selection" width="65"></el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="method" label="æ£éªæ å" min-width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="method" label="è¯éªæ¹æ³" min-width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="price" label="åä»·" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="manDay" label="é¢è®¡æ¶é´(天)" width="120" show-overflow-tooltip></el-table-column> @@ -349,47 +410,47 @@ <el-button type="primary" @click="onSample()" :loading="getProductLoad">ç¡® å®</el-button> </span> </el-dialog> <el-dialog title="ä¿å模æ¿" :visible.sync="templateDia" width="30%"> <el-dialog title="ä¿å模æ¿" :visible.sync="templateDia" width="30%"> <div class="body" style="height: 10vh;display: flex;align-items: center;" v-if="templateDia"> <div class="search_label"><span class="required-span">* </span>模æ¿åç§°ï¼</div> <div class="search_input"> <el-input size="small" clearable v-model="templateName"></el-input> </div> <div class="search_label"><span class="required-span">* </span>模æ¿åç§°ï¼</div> <div class="search_input"> <el-input size="small" clearable v-model="templateName"></el-input> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="templateDia = false">å æ¶</el-button> <el-button type="primary" @click="addTemplateDia" :loading="templateLoading">ç¡® å®</el-button> </span> </el-dialog> <el-dialog title="æ£éªä¸å" :visible.sync="issuedDialogVisible" width="400px"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>çº¦å®æ¶é´ï¼</div> <div class="search_input"> <el-date-picker size="small" v-model="distributeData.appointed" type="date" placeholder="éæ©æ¥æ" value-format="yyyy-MM-dd" style="width: 100%;" format="yyyy-MM-dd"> </el-date-picker> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>ææ´¾äººåï¼</div> <div class="search_input"> <el-select v-model="distributeData.userId" placeholder="è¯·éæ©" size="small" style="width: 100%;"> <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </el-col> </el-row> </div> <span slot="footer" class="dialog-footer"> <el-row> <el-button @click="issuedDialogVisible=false">å æ¶</el-button> <el-button type="primary" @click="submitForm2" :loading="upLoad">ç¡® å®</el-button> </el-row> </span> </el-dialog> <el-dialog title="æ£éªä¸å" :visible.sync="issuedDialogVisible" width="400px"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>çº¦å®æ¶é´ï¼</div> <div class="search_input"> <el-date-picker size="small" v-model="distributeData.appointed" type="date" placeholder="éæ©æ¥æ" value-format="yyyy-MM-dd" style="width: 100%;" format="yyyy-MM-dd"> </el-date-picker> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>ææ´¾äººåï¼</div> <div class="search_input"> <el-select v-model="distributeData.userId" placeholder="è¯·éæ©" size="small" style="width: 100%;"> <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </el-col> </el-row> </div> <span slot="footer" class="dialog-footer"> <el-row> <el-button @click="issuedDialogVisible=false">å æ¶</el-button> <el-button type="primary" @click="submitForm2" :loading="upLoad">ç¡® å®</el-button> </el-row> </span> </el-dialog> </div> </template> @@ -399,16 +460,16 @@ components: { ValueTable }, props:{ active: { props: { active: { type: Number, default: () => 0 }, currentId:{ type: Number, currentId: { type: Number, default: () => 0 } }, } }, data() { return { template: null, @@ -423,7 +484,15 @@ appointed: null, remark: null, otcCode: null, mating: 0 mating: 0, sample: null, factory: null, laboratory: null, sampleType: null, sampleNum: 1, unit: null, model: null, method: null }, sample: { sampleCode: null, @@ -434,6 +503,7 @@ model: null, sampleNum: 1, isLeave: 0, unit: null }, type: [], selectUserDia: false, @@ -477,43 +547,56 @@ productIds: [], getProductLoad: false, saveLoad: false, templateDia:false, templateLoading:false, templateName:'', issuedDialogVisible:false, distributeData:{ appointed:'', userId:'' }, personList:[], upLoad:false, templateDia: false, templateLoading: false, templateName: '', issuedDialogVisible: false, distributeData: { appointed: '', userId: '' }, personList: [], upLoad: false, units: [], models: [], methods: [], methodLoad: false } }, watch: { sampleList() { this.addObj.method = null this.productList = [] } }, mounted() { this.selectEnumByCategoryForType() this.getUserNow() this.selectStandardTreeList() this.selectInsOrderTemplate() this.getAuthorizedPerson(); if(this.active==1){ // ä¸åæµç¨ }else { // æ¥ç/å®¡æ ¸æµç¨ // è¯·æ±æ¥å£ï¼åæ¾æ°æ® this.$axios.post(this.$api.insOrder.getInsOrder, { this.selectInsOrderTemplate() this.getAuthorizedPerson(); this.selectEnumByCategoryForUnit() if (this.active == 1) { // ä¸åæµç¨ } else { // æ¥ç/å®¡æ ¸æµç¨ // è¯·æ±æ¥å£ï¼åæ¾æ°æ® this.$axios.post(this.$api.insOrder.getInsOrder, { orderId: this.currentId }).then(res => { this.addObj = {...res.data.insOrder}; this.addObj.type = String(this.addObj.type) this.sampleList = this.HaveJson(res.data.sampleProduct); this.$nextTick(()=>{ this.$refs.sampleTable.doLayout() }) this.addObj = { ...res.data.insOrder }; this.addObj.type = String(this.addObj.type) this.sampleList = this.HaveJson(res.data.sampleProduct); this.$nextTick(() => { this.$refs.sampleTable.doLayout() }) }) } } }, methods: { getAuthorizedPerson() { getAuthorizedPerson() { this.$axios.get(this.$api.user.getUserMenu).then(res => { let data = [] res.data.forEach(a => { @@ -524,7 +607,7 @@ }) this.personList = data }) }, }, selectEnumByCategoryForType() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "ç´§æ¥ç¨åº¦" @@ -548,67 +631,67 @@ this.selectUserDia = false }, save() { if(!this.addObj.custom){ this.$message.error('æªéæ©ä¸å客æ·') }else if(!this.addObj.type){ this.$message.error('æªéæ©ç´§æ¥ç¨åº¦') }else if(this.sampleList.length<1){ this.$message.error('请添å ä¸ä¸ªæ ·å') }else if(!this.sampleList.every(m=>m.sampleCode)){ this.$message.error('è¾å ¥æ ·åç¼å·') }else{ this.saveLoad = true this.$axios.post(this.$api.insOrder.addInsOrder,{ insOrder: this.addObj, list: this.sampleList },{ headers: { 'Content-Type': 'application/json' } }).then(res=>{ this.saveLoad = false if(res.code==201)return this.$message.success('å·²æäº¤') // å¦æç´§æ¥ç¨åº¦ä¸ºç´§æ¥ï¼éè¦ç´æ¥ä¸å人å if(this.addObj.type==2){ this.issuedDialogVisible = true; this.$axios.post(this.$api.insOrder.selectOrderManDay,{ id: res.data }).then(ress=>{ // TODO éè¦å确认ä¸ä¸è¿åå¼ this.distributeData.orderId = res.data // this.distributeData.sampleId = res.data.sampleId this.distributeData.appointed = ress.data }) }else{ this.$parent.playOrder(0) } }) } if (!this.addObj.custom) { this.$message.error('æªéæ©ä¸å客æ·') } else if (!this.addObj.type) { this.$message.error('æªéæ©ç´§æ¥ç¨åº¦') } else if (this.sampleList.length < 1) { this.$message.error('请添å ä¸ä¸ªæ ·å') } else if (!this.sampleList.every(m => m.sampleCode)) { this.$message.error('è¾å ¥æ ·åç¼å·') } else { this.saveLoad = true this.$axios.post(this.$api.insOrder.addInsOrder, { insOrder: this.addObj, list: this.sampleList }, { headers: { 'Content-Type': 'application/json' } }).then(res => { this.saveLoad = false if (res.code == 201) return this.$message.success('å·²æäº¤') // å¦æç´§æ¥ç¨åº¦ä¸ºç´§æ¥ï¼éè¦ç´æ¥ä¸å人å if (this.addObj.type == 2) { this.issuedDialogVisible = true; this.$axios.post(this.$api.insOrder.selectOrderManDay, { id: res.data }).then(ress => { // TODO éè¦å确认ä¸ä¸è¿åå¼ this.distributeData.orderId = res.data // this.distributeData.sampleId = res.data.sampleId this.distributeData.appointed = ress.data }) } else { this.$parent.playOrder(0) } }) } }, upInsOrderOfState(state){ this.saveLoad = true this.$axios.post(this.$api.insOrder.upInsOrderOfState,{ upInsOrderOfState(state) { this.saveLoad = true this.$axios.post(this.$api.insOrder.upInsOrderOfState, { state, id:this.currentId },{ id: this.currentId }, { headers: { 'Content-Type': 'application/json' } }).then(res=>{ }).then(res => { this.saveLoad = false if(res.code==201)return if (res.code == 201) return this.$message.success('æäº¤æå') this.$parent.playOrder(0) }) }, // ä¸å submitForm2(){ if(this.distributeData.appointed==null||this.distributeData.appointed==''){ }, // ä¸å submitForm2() { if (this.distributeData.appointed == null || this.distributeData.appointed == '') { this.$message.error('çº¦å®æ¶é´æªå¡«å') return } if(this.distributeData.userId==null||this.distributeData.userId==''){ if (this.distributeData.userId == null || this.distributeData.userId == '') { this.$message.error('ææ´¾äººåæªå¡«å') return } @@ -631,7 +714,7 @@ this.$message.error('ä¿®æ¹å¤±è´¥') this.upLoad = false }) }, }, getUserNow() { this.$axios.get(this.$api.user.getUserNow).then(res => { let selects = res.data @@ -653,6 +736,7 @@ }, handleNodeClick(val, node, el) { //æ çå¼ this.selectTree = '' this.models = val.children this.getNodeParent(node) this.selectTree = this.selectTree.replace(' - ', '') let data = this.selectTree.split(' - ') @@ -688,12 +772,54 @@ this.$message.error('æªéæ©æ ·å') return } this.sample.factory = trees[0] this.sample.laboratory = trees[1] this.sample.sampleType = trees[2] this.sample.sample = trees[3] this.sample.model = trees[4] this.addObj.factory = trees[0] this.addObj.laboratory = trees[1] this.addObj.sampleType = trees[2] this.addObj.sample = trees[3] this.addObj.model = (trees[4] == undefined ? null : trees[4]) this.selectStandardTree = false this.sampleList = [] for (var i = 0; i < this.addObj.sampleNum; i++) { this.sample.joinName = null this.sample.joinModel = null this.sample.joinNum = 1 this.sample.sample = this.addObj.sample this.sample.model = this.addObj.model this.sample.unit = this.addObj.unit this.sample.standardMethodListId = null this.sample.insProduct = [] this.sample.id = this.count this.sampleList.push(this.HaveJson(this.sample)) this.count++ } this.$refs.sampleTable.doLayout() this.selectsStandardMethodByFLSSM() }, selectsStandardMethodByFLSSM() { this.methodLoad = true this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { tree: this.selectTree }).then(res => { this.methodLoad = false this.methods = res.data.standardMethodList }) }, addStandardTree() { if (this.selectTree == null) return this.sampleList = [] for (var i = 0; i < this.addObj.sampleNum; i++) { this.sample.joinName = null this.sample.joinModel = null this.sample.joinNum = 1 this.sample.sample = this.addObj.sample this.sample.model = this.addObj.model this.sample.unit = this.addObj.unit this.sample.standardMethodListId = null this.sample.insProduct = [] this.sample.id = this.count this.sampleList.push(this.HaveJson(this.sample)) this.count++ } }, selectSample(val) { this.sampleIds = [] @@ -710,8 +836,8 @@ this.$message.error('请è¾å ¥æ ·ååå·') return } this.getProductLoad = true this.$axios.post(this.$api.standardTree.selectStandardProductList, { // this.getProductLoad = true /* this.$axios.post(this.$api.standardTree.selectStandardProductList, { factory: this.sample.factory, laboratory: this.sample.laboratory, sampleType: this.sample.sampleType, @@ -747,7 +873,7 @@ sampleNum: 1, isLeave: 0, } }) }) */ }, delSample() { this.sampleIds.forEach(a => { @@ -773,7 +899,7 @@ this.productList.forEach(a => { if (a.state == 1) this.toggleSelection(a) }) }, 300) }, 200) }, toggleSelection(row) { this.$refs.productTable.toggleRowSelection(row, true); @@ -790,68 +916,108 @@ } return ''; }, selectInsOrderTemplate(){ this.$axios.get(this.$api.insOrder.selectInsOrderTemplate).then(res=>{ if(res.code==201)return selectInsOrderTemplate() { this.$axios.get(this.$api.insOrder.selectInsOrderTemplate).then(res => { if (res.code == 201) return this.templates = res.data }) }, // å 餿¨¡æ¿--è°ç¨æ¥å£ handleDelete(row){ this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning" }).then(() => { this.$axios.post(this.$api.insOrder.delInsOrderTemplate, { id: row.id }).then(res => { if (res.code === 201) { return } this.$message.success('å 餿å') this.selectInsOrderTemplate() }).catch(e => { this.$message.error('å é¤å¤±è´¥') }) }).catch(() => {}) }, // ä¿åæ¨¡æ¿ addTemplateDia(){ if(this.templateName){ this.templateLoading = true; this.$axios.post(this.$api.insOrder.addInsOrderTemplate,{ name:this.templateName, thing:JSON.stringify({addObj:this.addObj,sampleList:this.sampleList}) },{ }, // å 餿¨¡æ¿--è°ç¨æ¥å£ handleDelete(row) { this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning" }).then(() => { this.$axios.post(this.$api.insOrder.delInsOrderTemplate, { id: row.id }).then(res => { if (res.code === 201) { return } this.$message.success('å 餿å') this.selectInsOrderTemplate() }).catch(e => { this.$message.error('å é¤å¤±è´¥') }) }).catch(() => {}) }, // ä¿åæ¨¡æ¿ addTemplateDia() { if (this.templateName) { this.templateLoading = true; this.$axios.post(this.$api.insOrder.addInsOrderTemplate, { name: this.templateName, thing: JSON.stringify({ addObj: this.addObj, sampleList: this.sampleList }) }, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code == 201) return this.templateLoading = false; this.templateDia = false; this.$message.success('ä¿åæå') this.selectInsOrderTemplate() this.templateName = '' }) } else { this.$message.error('è¯·å¡«åæ¨¡æ¿åç§°') } }, // æ¥è¯¢æ¨¡æ¿ selectInsOrderTemplateById(e) { this.$axios.post(this.$api.insOrder.selectInsOrderTemplateById + '?id=' + e).then(res => { if (res.code == 201) return let obj = JSON.parse(res.data) this.addObj = obj.addObj; this.sampleList = obj.sampleList; }) }, delSampleAndProduct() { this.sampleList.splice(scope.$index, 1) this.productList = [] }, selectEnumByCategoryForUnit() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "åä½" }).then(res => { this.units = res.data }) }, methodChange(val) { this.$refs.sampleTable.doLayout() this.getProductLoad = true this.$axios.post(this.$api.standardTree.selectStandardProductList, { model: this.addObj.model, standardMethodListId: val }, { headers: { 'Content-Type': 'application/json' } }).then(res=>{ if(res.code==201)return this.templateLoading = false; this.templateDia = false; this.$message.success('ä¿åæå') this.selectInsOrderTemplate() this.templateName = '' }).then(res => { res.data.forEach(a => { a.state = 1 }) this.sampleIds.forEach(a => { for (var b in this.sampleList) { if (this.sampleList[b].id == a) { this.sampleList[b].standardMethodListId = val this.sampleList[b].insProduct = this.HaveJson(res.data) } } }) this.getProductLoad = false this.productList = [] this.$refs.sampleTable.setCurrentRow() }) }else{ this.$message.error('è¯·å¡«åæ¨¡æ¿åç§°') } }, // æ¥è¯¢æ¨¡æ¿ selectInsOrderTemplateById(e){ this.$axios.post(this.$api.insOrder.selectInsOrderTemplateById+'?id='+e).then(res=>{ if(res.code==201)return let obj = JSON.parse(res.data) this.addObj = obj.addObj; this.sampleList = obj.sampleList; }) }, delSampleAndProduct(){ this.sampleList.splice(scope.$index, 1) this.productList = [] } }, methodFocus(){ this.selectsStandardMethodByFLSSM() } } } </script> </script> src/components/tool/value-table.vue
@@ -36,26 +36,32 @@ } </style> <style> .value-table .highlight-warning-row-border td{ border-top: 2px solid #ffcd29; border-bottom: 2px solid #ffcd29; } .value-table .highlight-warning-row-border td:first-child{ border-left: 2px solid #ffcd29; } .value-table .highlight-warning-row-border td:last-child{ border-right: 2px solid #ffcd29; } .value-table .highlight-danger-row-border td{ border-top: 2px solid red; border-bottom: 2px solid red; } .value-table .highlight-danger-row-border td:first-child{ border-left: 2px solid red; } .value-table .highlight-danger-row-border td:last-child{ border-right: 2px solid red; } .value-table .highlight-warning-row-border td { border-top: 2px solid #ffcd29; border-bottom: 2px solid #ffcd29; } .value-table .highlight-warning-row-border td:first-child { border-left: 2px solid #ffcd29; } .value-table .highlight-warning-row-border td:last-child { border-right: 2px solid #ffcd29; } .value-table .highlight-danger-row-border td { border-top: 2px solid red; border-bottom: 2px solid red; } .value-table .highlight-danger-row-border td:first-child { border-left: 2px solid red; } .value-table .highlight-danger-row-border td:last-child { border-right: 2px solid red; } .value-table .el-upload { width: 100%; } @@ -76,23 +82,31 @@ </el-table-column> <el-table-column type="index" align="center" label="åºå·" width="70" v-if="data.isIndex" :key="Math.random()"> </el-table-column> <el-table-column :prop="a.label" :label="a.value" :sortable="data.sort==false?false:'custom'" v-for="(a, ai) in tableHead" :key="ai" show-overflow-tooltip min-width="160"> <el-table-column :prop="a.label" :label="a.value" :sortable="data.sort==false?false:'custom'" v-for="(a, ai) in tableHead" :key="ai" show-overflow-tooltip min-width="160"> <template slot-scope="scope"> <div v-if="showType(a.label, data.tagField) != null"> <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == scope.row[a.label]" :type="b.type" size="medium">{{b.label}}</el-tag> <template v-if="typeof(scope.row[a.label]) == 'object'"> <template v-for="(param, i) in scope.row[a.label]"> <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == param" :type="b.type" size="medium" style="margin-right: 5px;">{{b.label}}</el-tag> </template> </template> <template v-else> <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == scope.row[a.label]" :type="b.type" size="medium">{{b.label}}</el-tag> </template> </div> <!-- 坿ä½è¡è¿è¡ç¹å»äºä»¶ --> <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span> <!-- 坿ä½è¡è¿è¡ç¹å»äºä»¶ --> <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span> <span v-else>{{scope.row[a.label]}}</span> </template> </el-table-column> <el-table-column fixed="right" align="center" label="æä½" :width="getWidth()" v-if="data.do.length > 0"> <el-table-column fixed="right" align="center" label="æä½" :width="getWidth()" v-if="data.do.length > 0"> <template slot-scope="scope"> <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type" :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" @click="main(scope.row, a)">{{a.font}}</el-button> </template> </el-table-column> @@ -105,19 +119,21 @@ </el-pagination> </div> <el-dialog title="ç¼è¾" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'"> <div class="body" v-if="upDia" style="max-height: 550px;overflow-y: auto;padding: 5px 0;"> <div class="body" v-if="upDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> <div v-if="data.row > 1"> <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> <el-col :span="6/data.row" style="text-align: right;"> <el-col :span="6/data.row" style="text-align: right;" :offset="1"> <span class="required-span" v-if="showUpReq(a.label)">* </span>{{a.value}}ï¼ </el-col> <el-col :span="16/data.row" :offset="1"> <el-col :span="16/data.row"> <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请è¾å ¥${a.value}`" v-if="showType(a.label, data.selectField) == null" :disabled="isDisabled(a.label)"></el-input> <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" clearable> <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" clearable> <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" :label="b.label"></el-option> :label="b.label"> </el-option> </el-select> </el-col> </div> @@ -130,8 +146,9 @@ <el-col :span="16" :offset="1"> <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请è¾å ¥${a.value}`" v-if="showType(a.label, data.selectField) == null" :disabled="isDisabled(a.label)"></el-input> <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" clearable> <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" clearable> <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" :label="b.label"></el-option> </el-select> @@ -216,9 +233,9 @@ } from 'iview'; export default { props: { tableRowClassName:{ type: Function }, tableRowClassName: { type: Function }, url: { type: String, default: () => null @@ -390,6 +407,15 @@ this.total = res.data.body.total this.tableHead = res.data.head this.tableData = res.data.body.records for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.tableData.map(b => { try { b[a] = JSON.parse(b[a]) } catch (e) {} }) } } this.loading = false }).catch(e => { this.loading = false @@ -414,10 +440,10 @@ var str = ob[val] return str == undefined ? null : ob[val].select }, showLink(val, ob){ var str = ob[val] showLink(val, ob) { var str = ob[val] return str == undefined ? null : ob[val].method }, }, showAddReq(label) { if (this.data.requiredAdd == undefined) { return @@ -454,7 +480,7 @@ delete this.upData.createUser delete this.upData.updateUser val.field.forEach(a => { if (this.upData[a] == undefined) { if (this.upData[a] === undefined) { this.upHead.push({ value: a.split('=')[0], label: a.split('=')[1] @@ -496,7 +522,6 @@ } else { delete row.orderBy this.$parent[val.method](row) // this.$emit(val.method, row) } }, saveUpData() { @@ -515,6 +540,11 @@ } } this.upLoad = true for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.upData[a] = JSON.stringify(this.upData[a]) } } this.$axios.post(this.upUrl, this.upData, { headers: { 'Content-Type': 'application/json' @@ -729,16 +759,16 @@ }); return sums; }, handleLinkEvent(row,val){ if(val.method=='doDiy'){ this.main(row,val) }else{ handleLinkEvent(row, val) { if (val.method == 'doDiy') { this.main(row, val) } else { this.$parent[val.method](row) } }, getWidth(){ } }, getWidth() { let count = 0 this.data.do.forEach(a=>{ this.data.do.forEach(a => { count += a.font.length }) return count * 15 + 60 + 'px' src/components/view/a5-capacity-scope.vue
@@ -162,7 +162,9 @@ templateId:{ select:[] }, sonLaboratory: {select:[]} sonLaboratory: {select:[]}, unit: {select:[]}, sample: {select:[]}, }, selectField: { inspectionItemType: { @@ -180,10 +182,11 @@ templateId:{ select:[] }, method:{select:[]}, method:{select:[],choose: true}, deviceGroup:{select:[]}, sample: {select:[]}, sonLaboratory: {select:[]} sonLaboratory: {select:[]}, unit: {select:[]} }, requiredAdd: ['sonLaboratory','inspectionItem', 'manHour', 'inspectionItemType','inspectionItemSubclass','inspectionValueType','laboratory','unit','method','price','manDay','deviceGroup','checkoutNumber','sample'], requiredUp: ['sonLaboratory','inspectionItem', 'manHour', 'inspectionItemType','inspectionItemSubclass','inspectionValueType','laboratory','unit','method','price','manDay','deviceGroup','checkoutNumber','sample'] @@ -237,6 +240,7 @@ this.selectTestObjectByName() this.getStandardTemplate() this.selectEnumByCategoryForSLaboratory() this.selectEnumByCategoryForUnit() this.getPower('0') }, methods: { @@ -321,6 +325,14 @@ this.itemParameterData.tagField.sonLaboratory.select = res.data }) }, selectEnumByCategoryForUnit() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "åä½" }).then(res => { this.itemParameterData.selectField.unit.select = res.data this.itemParameterData.tagField.unit.select = res.data }) }, obtainItemParameterList() { this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => { let data = [] @@ -353,10 +365,12 @@ res.data.forEach(a => { data.push({ label: a.specimenName, value: a.specimenName value: a.id, type: 'success' }) }) this.itemParameterData.selectField.sample.select = data this.itemParameterData.tagField.sample.select = data }) }, getStandardTemplate() { src/components/view/a7-standard-method.vue
ÎļþÃû´Ó src/components/view/standard_method.vue ÐÞ¸Ä @@ -42,7 +42,7 @@ <el-row class="title"> <el-col :span="12" style="padding-left: 20px;">æ åæ¹æ³</el-col> <el-col :span="12" style="text-align: right;"> <!-- <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> --> <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> </el-col> </el-row> </div> @@ -63,7 +63,8 @@ </div> </div> <div class="table"> <ValueTable ref="ValueTable" :url="$api.standardMethod.selectStandardMethodList" :componentData="componentData" :key="upIndex"/> <ValueTable ref="ValueTable" :url="$api.standardMethod.selectStandardMethodList" :delUrl="$api.standardMethod.delStandardMethod" :upUrl="$api.standardMethod.upStandardMethod" :componentData="componentData" :key="upIndex"/> </div> </div> </template> @@ -93,17 +94,21 @@ font: 'ç¼è¾', type: 'text', method: 'doDiy', field:['createUserName','updateUserName'] field:['sampleType','createUserName','updateUserName','æ£éªå¯¹è±¡=structureTestObjectId'] },{ id: 'delete', font: 'å é¤', type: 'text', method: 'doDiy' }], tagField: {}, selectField: {}, requiredAdd:['code','name'], requiredUp:['code','name'] tagField: { structureTestObjectId:{select: []} }, selectField: { structureTestObjectId:{select: []} }, requiredAdd:['code','name','structureTestObjectId'], requiredUp:['code','name','structureTestObjectId'] }, entityCopy: {}, upIndex: 0, @@ -114,6 +119,7 @@ mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) this.getPower() this.selectTestObjectByName() }, methods: { refreshTable() { @@ -130,9 +136,15 @@ let del = false let add = false for (var i = 0; i < power.length; i++) { /* if(power[i].menuMethod=='addEnum'){ if(power[i].menuMethod=='addStandardMethod'){ add = true } */ } if(power[i].menuMethod=='delStandardMethod'){ del = true } if(power[i].menuMethod=='upStandardMethod'){ up = true } } if(!del){ this.componentData.do.splice(1, 1) @@ -141,7 +153,23 @@ this.componentData.do.splice(0, 1) } this.addPower = add } }, openAdd(){ this.$refs.ValueTable.openAddDia(this.$api.standardMethod.addStandardMethod); }, selectTestObjectByName() { this.$axios.get(this.$api.capacityScope.selectTestObjectByName).then(res => { let data = [] res.data.forEach(a => { data.push({ label: a.specimenName, value: a.id }) }) this.componentData.selectField.structureTestObjectId.select = data this.componentData.tagField.structureTestObjectId.select = data }) }, } } </script> src/components/view/b1-inspection-order.vue
@@ -54,7 +54,7 @@ border-radius: 8px 0 0 8px; } .tab li:nth-child(4) { .tab li:nth-child(5) { border-radius: 0 8px 8px 0; } @@ -218,7 +218,7 @@ entity: { entrustCode: null, sample: null, state: 1, state: 0, orderBy: { field: 'id', order: 'asc' @@ -260,17 +260,17 @@ return row.state == 2 || row.state == 3 } }, { font: 'ä¸å', font: 'åé ', type: 'text', method: 'handleIssued', disabFun: (row, index) => { return row.state != 1 || row.sendTime != null } }], linkEvent:{ entrustCode:{ method:'selectAllByOne' } linkEvent: { entrustCode: { method: 'selectAllByOne' } }, tagField: { type: { @@ -333,12 +333,15 @@ addPower: true, upLoad: false, tabList: [{ label: 'æ£éªå¤ç', label: 'å¾ å®¡æ ¸', value: 0 }, { label: 'å¾ æ£éª', value: 1 }, { label: 'å¾ å®¡æ ¸', value: 0 label: 'å·²æ£éª', value: 4 }, { label: 'éå', @@ -350,8 +353,8 @@ }, ], tabIndex: 0, active: 0,//1ï¼ä¸åï¼2ï¼æ¥çï¼3ï¼å®¡æ ¸ currentId:null active: 0, //1ï¼ä¸åï¼2ï¼æ¥çï¼3ï¼å®¡æ ¸ currentId: null } }, mounted() { @@ -415,27 +418,26 @@ }, // 详æ selectAllByOne(row) { this.active = 2; this.active = 2; // console.log(row); // //æå¼å¼¹æ¡ // this.dialogVisible = true; // //row = ç¹å»å¯¹åºè¡å¼ // //å¤å¶ç»formData // this.formData = this.HaveJson(row); this.currentId = row.id this.currentId = row.id }, // æ°æ®æ¥ç handleDataLook(row) { this.dataDialogVisible = true; }, // ä¸è½½æ¥å download(row) { }, download(row) {}, // å®¡æ ¸ handleVerify(row) { // this.verifyDialogVisible = true; this.active = 3; this.currentId = row.id this.active = 3; this.currentId = row.id }, // æ¤é handlEquash(row) { @@ -444,9 +446,9 @@ // ä¸å handleIssued(row) { this.issuedDialogVisible = true; this.$axios.post(this.$api.insOrder.selectOrderManDay,{ this.$axios.post(this.$api.insOrder.selectOrderManDay, { id: row.sampleId }).then(res=>{ }).then(res => { this.distributeData.orderId = row.id this.distributeData.sampleId = row.sampleId this.distributeData.appointed = res.data @@ -454,7 +456,7 @@ }) }, submitForm2() { if(this.distributeData.appointed==null||this.distributeData.appointed==''){ if (this.distributeData.appointed == null || this.distributeData.appointed == '') { this.$message.error('çº¦å®æ¶é´æªå¡«å') return } src/components/view/b2-standard.vue
@@ -54,6 +54,7 @@ height: calc(100% - 275px); margin-top: 5px; background-color: white; user-select: none; } .product_table .el-table { @@ -83,6 +84,10 @@ .standard .standard_table .el-table__row .cell { font-size: 14px; } .standard .el-table .warning-row .cell { color: #bababa; } </style> <template> @@ -97,9 +102,10 @@ <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true"></el-button> </el-col> </el-row> <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="true" :default-expanded-keys="expandedKeys"> <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="false" :default-expanded-keys="expandedKeys"> <div class="custom-tree-node" slot-scope="{ node, data }"> <el-row> <el-col :span="21"> @@ -120,17 +126,18 @@ <el-row class="title"> <el-col :span="10" style="font-size: 14px;color: #999;">{{selectTree}}</el-col> <el-col :span="selectTree==''?24:14" style="text-align: right;" v-if="selectTree!=''"> <el-button size="small" type="primary" @click="addStandardDia = true" <!-- <el-button size="small" type="primary" @click="addStandardDia = true" v-if="addStandardMethod">æ°å¢æ å</el-button> <el-button size="small" type="primary" @click="addProductDia = true" v-if="addStandardProduct">æ°å¢é¡¹ç®</el-button> <el-button size="small" @click="delStandardProductByIds" v-if="delStandardProduct"> <i class="el-icon-delete" style="color: #3A7BFA;"></i> <span style="color: #3A7BFA;">å é¤</span> </el-button> </el-button> --> </el-col> </el-row> <el-row class="standard_table" v-loading="tableLoad"> <el-table class="el-table" :data="standardList" style="width: 100%;" height="220px" tooltip-effect="dark"> <el-table class="el-table" :data="standardList" style="width: 100%;" height="220px" tooltip-effect="dark" highlight-current-row @row-click="rowClick"> <el-table-column prop="code" label="æ åç¼å·" show-overflow-tooltip> <template slot-scope="scope"> <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span> @@ -140,34 +147,45 @@ <el-table-column prop="remark" label="夿³¨" show-overflow-tooltip></el-table-column> <el-table-column prop="createUserName" label="å建人"></el-table-column> <el-table-column prop="createTime" label="å建æ¶é´" width="250px"></el-table-column> <el-table-column label="æä½" width="100" align="center" v-if="delStandardMethod"> <!-- <el-table-column label="æä½" width="100" align="center" v-if="delStandardMethod"> <template slot-scope="scope"> <el-button type="text" size="small" @click="delStandardMethodByFLSSM(scope.row.id)">å é¤</el-button> </template> </el-table-column> </el-table-column> --> </el-table> </el-row> <el-row class="product_table" v-loading="tableLoad"> <el-table :data="productList" style="width: 100%;" height="100%" tooltip-effect="dark" stripe :fit="true" border @selection-change="handleSelectionChange"> <el-row class="product_table" v-loading="tableLoad2"> <el-table :data="productList" ref="productTable" style="width: 100%;" height="100%" tooltip-effect="dark" stripe :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" @select="upProductSelect"> <el-table-column type="selection" width="65"></el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip></el-table-column> <!-- <el-table-column prop="inspectionItemClassify" label="æ£éªé¡¹ç±»å" width="120" show-overflow-tooltip></el-table-column> --> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="price" label="åä»·" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="manHour" label="å·¥æ¶" width="80" show-overflow-tooltip></el-table-column> <el-table-column prop="manHourGroup" 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 prop="section" label="åºé´" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="ask" label="è¦æ±å¼" min-width="220px"> <el-table-column prop="ask" label="è¦æ±å¼" min-width="200px"> <template slot-scope="scope"> <el-input size="small" placeholder="è¦æ±å¼" v-model="scope.row.ask" clearable @change="(value)=>upStandardProductList(value,scope.row.id)" v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3}"></el-input> @change="(value)=>upStandardProductList(value,scope.row.id)" v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3}"></el-input> <span v-else>{{scope.row.ask}}</span> </template> </el-table-column> <el-table-column prop="tell" label="è¦æ±æè¿°" min-width="220px"> <template slot-scope="scope"> <el-input size="small" placeholder="è¦æ±æè¿°" v-model="scope.row.tell" clearable @change="(value)=>upStandardProductListOfTell(value,scope.row.id)" v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3}"></el-input> <span v-else>{{scope.row.ask}}</span> </template> </el-table-column> <el-table-column prop="method" label="è¯éªæ¹æ³" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="price" label="åä»·(å )" width="90" show-overflow-tooltip></el-table-column> <el-table-column prop="manHour" label="å·¥æ¶(H)" width="90" show-overflow-tooltip></el-table-column> <el-table-column prop="manHourGroup" 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 prop="section" label="åºé´" width="120" show-overflow-tooltip></el-table-column> </el-table> </el-row> </div> @@ -245,7 +263,7 @@ </el-dialog> <el-dialog title="æ°å¢é¡¹ç®" :visible.sync="addProductDia" width="70%"> <div class="body" style="height: 60vh;" v-if="addProductDia"> <ValueTable ref="ValueTable" :url="$api.capacityScope.selectItemParameterList" :componentData="componentData"/> <ValueTable ref="ValueTable" :url="$api.capacityScope.selectItemParameterList" :componentData="componentData" /> </div> <span slot="footer" class="dialog-footer"> <el-button @click="addProductDia = false">å æ¶</el-button> @@ -289,6 +307,7 @@ addLoad2: false, productList: [], tableLoad: false, tableLoad2: false, upStandardProduct: false, delStandardMethod: false, selects: [], @@ -316,17 +335,19 @@ valueType: { select: [] }, bsm:{ bsm: { select: [] }, inspectionValueType:{ select:[] inspectionValueType: { select: [] }, deviceGroup:{select:[]} deviceGroup: { select: [] } }, selectField: {}, }, expandedKeys:[] expandedKeys: [] } }, mounted() { @@ -380,7 +401,7 @@ remove(node, data) { this.$confirm("æ¯å¦å é¤è¯¥å±çº§", "æç¤º", { type: "error" }).then(()=> { }).then(() => { this.treeLoad = true this.selectTree = '' this.getNodeParent(node) @@ -394,7 +415,7 @@ this.$axios.post(this.$api.standardTree.delStandardTree, { tree: this.selectTree }).then(res => { if(res.code==201)return if (res.code == 201) return this.$message.success('å·²å é¤') this.selectStandardTreeList() this.selectTree = '' @@ -463,12 +484,12 @@ this.treeLoad = true this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => { this.list = res.data this.list.forEach(a=>{ a.children.forEach(b=>{ /* b.children.forEach(c=>{ this.list.forEach(a => { a.children.forEach(b => { b.children.forEach(c => { this.expandedKeys.push(c.label) }) */ this.expandedKeys.push(b.label) }) // this.expandedKeys.push(b.label) }) }) this.treeLoad = false @@ -569,7 +590,6 @@ }).then(res => { this.tableLoad = false this.standardList = res.data.standardMethodList this.productList = res.data.standardProductList }) }, getPower() { @@ -628,6 +648,22 @@ this.$message.success('å·²ä¿å') }) }, upStandardProductListOfTell(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { id: index, tell: value }, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code == 201) { this.$message.error('æªä¿å') return } this.$message.success('å·²ä¿å') }) }, delStandardMethodByFLSSM(id) { this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { confirmButtonText: "ç¡®å®", @@ -653,11 +689,11 @@ }) }, delStandardProductByIds() { if(this.selects.length == 0){ if (this.selects.length == 0) { this.$message.error('æªé䏿°æ®') return } this.$confirm('æ¯å¦å é¤å½åéä¸ '+this.selects.length+' æ¡æ°æ®?', "è¦å", { this.$confirm('æ¯å¦å é¤å½åéä¸ ' + this.selects.length + ' æ¡æ°æ®?', "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning" @@ -674,21 +710,21 @@ }) }).catch(() => {}) }, addStandardProductDo(){ addStandardProductDo() { let selects = this.$refs.ValueTable.multipleSelection if(selects.length == 0){ if (selects.length == 0) { this.$message.error('æªéæ©æ°æ®') return } let select = [] selects.forEach(a=>{ selects.forEach(a => { select.push(a.id) }) this.tableLoad = true this.$axios.post(this.$api.standardTree.addStandardProduct,{ this.$axios.post(this.$api.standardTree.addStandardProduct, { ids: JSON.stringify(select), tree: this.selectTree }).then(res=>{ }).then(res => { if (res.code == 201) { return } @@ -696,7 +732,50 @@ this.selectsStandardMethodByFLSSM() }) this.addProductDia = false } }, rowClick(row, column, event) { this.tableLoad2 = true this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { id: row.id }).then(res => { this.productList = res.data setTimeout(() => { this.productList.forEach(a => { if (a.state == 1) this.toggleSelection(a) }) }, 300) this.tableLoad2 = false }) }, toggleSelection(row) { this.$refs.productTable.toggleRowSelection(row, true); }, tableRowClassName({ row, rowIndex }) { if (row.state === 0) { return 'warning-row'; } return ''; }, upProductSelect(selection, row) { row.state = row.state == 1 ? 0 : 1 this.$axios.post(this.$api.standardTree.upStandardProductList, { id: row.id, state: row.state }, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code == 201) { this.$message.error('æªä¿å') return } this.$message.success('å·²ä¿å') }) }, } } </script> static/js/menu.js
@@ -543,7 +543,7 @@ }, { v: "å®éªå®¤çæ£æµè½åæ¡£æ¡", i: "font icon-erjidaohang", u: "standard_method", u: "a7-standard-method", g: "7.2 æ¹æ³çéæ©ãéªè¯å确认", p: "selectStandardMethodList" }, {