feat: 设备管理优化-0513-合同管理复制
							parent
							
								
									08472d5700
								
							
						
					
					
						commit
						9fdb69c5a2
					
				| @ -0,0 +1,91 @@ | |||||||
|  | import axios from "@/utils/request"; | ||||||
|  | import request from "@/utils/request"; | ||||||
|  | 
 | ||||||
|  | export function listPlan(query) { | ||||||
|  |   return axios({ | ||||||
|  |     url:  '/purchase/contract/list', | ||||||
|  |     method: 'get', | ||||||
|  |     params: query | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function listApplyDetail(query) { | ||||||
|  |   return axios({ | ||||||
|  |     url:  '/purchase/contract/list/detail', | ||||||
|  |     method: 'get', | ||||||
|  |     params: query | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //更新pur
 | ||||||
|  | export function updateDetail(data) { | ||||||
|  |   return request({ | ||||||
|  |     url:  "/purchase/contract/updateDetail", | ||||||
|  |     method: 'post', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // 添加详情表
 | ||||||
|  | export function addContractDetail(data) { | ||||||
|  |   return request({ | ||||||
|  |     url:  "/purchase/contract/addContractDetail", | ||||||
|  |     method: 'post', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function inserThrOrderWeb(query) { | ||||||
|  |   return axios({ | ||||||
|  |     url:  "/purchase/contract/postOrder", | ||||||
|  |     method: "post", | ||||||
|  |     data: query | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 添加puan
 | ||||||
|  | export function addContractId() { | ||||||
|  |   return request({ | ||||||
|  |     url:  "/purchase/addContractDetail/add", | ||||||
|  |     method: 'post' | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 查询详情表
 | ||||||
|  | export function selectContractDetail(query) { | ||||||
|  |   return request({ | ||||||
|  |     url:  "/purchase/contract/list/detail", | ||||||
|  |     method: 'get', | ||||||
|  |     params: query | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //删除计划表和详情表
 | ||||||
|  | export function delContractDetailAll(data) { | ||||||
|  |   return request({ | ||||||
|  |     url:  "/purchase/contract/delContractDetailAll", | ||||||
|  |     method: 'post', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 删除pur
 | ||||||
|  | export function delApplyDetail(id) { | ||||||
|  |   return axios({ | ||||||
|  |     url:  '/purchase/contract/detail/' + id, | ||||||
|  |     method: 'delete' | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // 导入计划
 | ||||||
|  | export function importPlan(data) { | ||||||
|  |   return axios({ | ||||||
|  |     url:  "/purchase/contract/importPlan", | ||||||
|  |     method: 'post', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,437 @@ | |||||||
|  | <template> | ||||||
|  |   <div> | ||||||
|  | 
 | ||||||
|  |     <el-form :model="formData" :rules="formRules" ref="dataForm" label-width="120px"> | ||||||
|  |       <el-row type="flex" justify="end" v-if="editType == 1"> | ||||||
|  |         <el-button-group style="display: flex;margin-bottom: 15px; margin-right: 50px"> | ||||||
|  |           <el-button type="primary" @click.native="saveOrder('3')" :loading="loading">审核通过</el-button> | ||||||
|  |           <el-button type="primary" @click.native="saveOrder('4')" :loading="loading">拒绝申请</el-button> | ||||||
|  |         </el-button-group> | ||||||
|  |       </el-row> | ||||||
|  | 
 | ||||||
|  |       <el-card style="margin-top: -5px;"> | ||||||
|  |         <el-row> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="采购单号:" prop="billNo"> | ||||||
|  |               <el-input v-model="formData.billNo" style="width: 90%" auto-complete="off" :disabled="true"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="创建时间:" prop="createTime"> | ||||||
|  |               <el-date-picker | ||||||
|  |                 :disabled="true" | ||||||
|  |                 v-model="formData.createTime" | ||||||
|  |                 type="datetime" | ||||||
|  |                 placeholder="选择日期" | ||||||
|  |                 style="width: 90%" | ||||||
|  |                 :clearable="false" | ||||||
|  |                 value-format="yyyy-MM-dd HH:mm:ss" | ||||||
|  |               > | ||||||
|  |               </el-date-picker> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |         </el-row> | ||||||
|  |         <el-row style="margin-top: -10px"> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="紧急程度:" prop="emergency"> | ||||||
|  |               <el-select v-model="formData.emergency" :disabled="true" placeholder="请选择紧急程度" style="width: 90%" | ||||||
|  |                          clearable> | ||||||
|  |                 <el-option label="正常" :value=1></el-option> | ||||||
|  |                 <el-option label="较急" :value=2></el-option> | ||||||
|  |                 <el-option label="特急" :value=3></el-option> | ||||||
|  |               </el-select> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="到货截止:" prop="arrivalTime"> | ||||||
|  |               <el-date-picker | ||||||
|  |                 :disabled="true" | ||||||
|  |                 v-model="formData.arrivalTime" | ||||||
|  |                 type="datetime" | ||||||
|  |                 placeholder="选择日期" | ||||||
|  |                 style="width: 90%" | ||||||
|  |                 :clearable="false" | ||||||
|  |                 value-format="yyyy-MM-dd HH:mm:ss" | ||||||
|  |               > | ||||||
|  |               </el-date-picker> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |         </el-row> | ||||||
|  |         <el-row> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="采购仓库:" prop="locStorageCode"> | ||||||
|  |               <el-select v-model="formData.invName" placeholder="采购仓库信息" style="width: 90%" | ||||||
|  |                          :disabled="true" clearable> | ||||||
|  |                 <el-option | ||||||
|  |                   v-for="item in subInvList" | ||||||
|  |                   :key="item.name" | ||||||
|  |                   :label="item.name" | ||||||
|  |                   :value="item.code"> | ||||||
|  |                   <span style="float: left">{{ item.name }}</span> | ||||||
|  |                 </el-option> | ||||||
|  |               </el-select> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="审核说明:" prop="billNo"> | ||||||
|  |               <el-input v-model="formData.auditRemark" style="width: 90%" auto-complete="off" type="textarea" | ||||||
|  |                         autosize></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |         </el-row> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         <el-row> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="采购说明:" prop="billNo"> | ||||||
|  |               <el-input v-model="formData.remark" style="width: 90%" :disabled="true" auto-complete="off" | ||||||
|  |                         type="textarea" autosize></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <!--                    <el-col :span="11">--> | ||||||
|  |           <!--                        <el-form-item>--> | ||||||
|  |           <!--                            <el-checkbox v-model="formData.autoPurchase">是否生成采购入库单</el-checkbox>--> | ||||||
|  |           <!--                        </el-form-item>--> | ||||||
|  |           <!--                    </el-col>--> | ||||||
|  | 
 | ||||||
|  |         </el-row> | ||||||
|  |         <el-row v-show="formData.autoPurchase"> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="入库仓库:" prop="locStorageCode"> | ||||||
|  |               <el-select v-model="formData.targetSubInv" placeholder="入库仓库信息" style="width: 90%" | ||||||
|  |                          @change="targetInvChange" clearable> | ||||||
|  |                 <el-option | ||||||
|  |                   v-for="item in tarSubList" | ||||||
|  |                   :key="item.name" | ||||||
|  |                   :label="item.name" | ||||||
|  |                   :value="item.code"> | ||||||
|  |                   <span style="float: left">{{ item.name }}</span> | ||||||
|  |                 </el-option> | ||||||
|  |               </el-select> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <el-col :span="11"> | ||||||
|  |             <el-form-item label="入库单据类型:" class="query-form-item" prop="targetBillAction"> | ||||||
|  |               <el-select v-model="formData.targetBillAction" placeholder="请选择单据类型" style="width: 90%"> | ||||||
|  |                 <el-option | ||||||
|  |                   v-for="item in busTypes" | ||||||
|  |                   :key="item.name" | ||||||
|  |                   :label="item.name" | ||||||
|  |                   :value="item.action"> | ||||||
|  |                   <span style="float: left">{{ item.name }}</span> | ||||||
|  |                 </el-option> | ||||||
|  |               </el-select> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         </el-row> | ||||||
|  |       </el-card> | ||||||
|  | 
 | ||||||
|  |       <el-card> | ||||||
|  |         <el-table v-loading="loading" :data="codeArray" style="width: 100%;" :row-class-name="tableRowClassName" border | ||||||
|  |                   highlight-current-row max-height="300" height="300" ref="multipleTable"> | ||||||
|  |           <el-table-column label="序号" type="index" width="60"></el-table-column> | ||||||
|  |           <el-table-column label="DI/物资编码" prop="nameCode"></el-table-column> | ||||||
|  |           <el-table-column label="物资名称" prop="productName" show-overflow-tooltip="true"></el-table-column> | ||||||
|  |           <el-table-column label="规格型号" prop="spec" show-overflow-tooltip="true"></el-table-column> | ||||||
|  |           <el-table-column label="计量单位" prop="measname" show-overflow-tooltip="true" width="100"></el-table-column> | ||||||
|  |           <el-table-column label="采购数量" prop="count"></el-table-column> | ||||||
|  |           <el-table-column label="注册/备案号" prop="zczbhhzbapzbh"></el-table-column> | ||||||
|  |           <el-table-column label="生产厂家" prop="manufactory"></el-table-column> | ||||||
|  |           <el-table-column label="供应商" prop="supName"></el-table-column> | ||||||
|  |         </el-table> | ||||||
|  |       </el-card> | ||||||
|  |     </el-form> | ||||||
|  | 
 | ||||||
|  |     <el-dialog | ||||||
|  |       title="产品录入" | ||||||
|  |       :visible.sync="selectProductVisible" | ||||||
|  |       :close-on-click-modal="false" | ||||||
|  |       :close-on-press-escape="false" | ||||||
|  |       width="80%" | ||||||
|  |       v-if="selectProductVisible" | ||||||
|  |       :append-to-body='true' | ||||||
|  |     > | ||||||
|  |       <selectProduct | ||||||
|  |         :closeDialog="closeDialogC2" | ||||||
|  |         :data="thisData" | ||||||
|  |         :purType="1" | ||||||
|  |       ></selectProduct> | ||||||
|  |     </el-dialog> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | import draggable from "vuedraggable"; | ||||||
|  | import {auditOrder, delApplyDetail, listApplyDetail} from "@/api/purchase/purContract"; | ||||||
|  | // import selectProduct from "@/views/components/selectProduct.vue"; | ||||||
|  | 
 | ||||||
|  | export default { | ||||||
|  |   name: "idQuery", | ||||||
|  |   props: { | ||||||
|  |     closeDialog: { | ||||||
|  |       type: Function, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |     idQuery: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |     editType: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       code: "", | ||||||
|  |       query: { | ||||||
|  |         orderIdFk: "", | ||||||
|  |         page: 1, | ||||||
|  |         limit: 10, | ||||||
|  |       }, | ||||||
|  |       formData: { | ||||||
|  |         id: null, | ||||||
|  |         billNo: null, | ||||||
|  |         createTime: "", | ||||||
|  |         remark: "", | ||||||
|  |         deptCode: null, | ||||||
|  |         locStorageCode: null, | ||||||
|  |         invWarehouseCode: null, | ||||||
|  |         auditRemark: null, | ||||||
|  |         autoPurchase: false, | ||||||
|  |         targetInv: 1000, | ||||||
|  |         targetSubInv: null, | ||||||
|  |         targetBillAction: null, | ||||||
|  |       }, | ||||||
|  |       formRules: {}, | ||||||
|  |       codeArray: [], | ||||||
|  |       total: 0, | ||||||
|  |       loading: false, | ||||||
|  |       index: null, | ||||||
|  |       formLoading: false, | ||||||
|  |       formVisible: false, | ||||||
|  |       deleteLoading: false, | ||||||
|  |       orderNo: null, | ||||||
|  |       statusMap: { | ||||||
|  |         1: "草稿", | ||||||
|  |         2: "未审核", | ||||||
|  |         3: "已审核", | ||||||
|  |       }, | ||||||
|  |       typeMap: { | ||||||
|  |         1: "预入库", | ||||||
|  |         2: "普通采购", | ||||||
|  |       }, | ||||||
|  |       orderEditor: true, | ||||||
|  |       sOptions: [], | ||||||
|  |       sValue: [], | ||||||
|  |       sList: [], | ||||||
|  |       sLoading: false, | ||||||
|  |       busTypes: [], | ||||||
|  |       currentRow: {}, | ||||||
|  |       selectedIndex: "", | ||||||
|  |       selectProductVisible: false, | ||||||
|  |       thisData: {}, | ||||||
|  |       subInvList: [], | ||||||
|  |       tarSubList: [], | ||||||
|  |       invQueryData: {}, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   components: { | ||||||
|  |     draggable, selectProduct | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     saveOrder(status) { | ||||||
|  |       let tip = ""; | ||||||
|  |       if (status == "3") { | ||||||
|  |         tip = "是否确定通过该采购计划?"; | ||||||
|  |       } else { | ||||||
|  |         tip = "是否确定拒绝该采购计划?"; | ||||||
|  |       } | ||||||
|  |       this.$confirm(tip, "提示", { | ||||||
|  |         confirmButtonText: "确定", | ||||||
|  |         cancelButtonText: "取消", | ||||||
|  |         type: "warning", | ||||||
|  |       }).then(() => { | ||||||
|  |         this.submitFunction(status); | ||||||
|  |       }).catch(() => { | ||||||
|  |         this.loading = false; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     submitFunction(status) { | ||||||
|  |       let tMessage = status === '1' ? '保存' : '提交'; | ||||||
|  |       this.loading = true; | ||||||
|  |       let tQuery = { | ||||||
|  |         autoPurchase: this.formData.autoPurchase, | ||||||
|  |         targetSubInv: this.formData.targetSubInv, | ||||||
|  |         targetDeptCode: this.formData.targetDeptCode, | ||||||
|  |         targetBillAction: this.formData.targetBillAction, | ||||||
|  |         editStatus: status, | ||||||
|  |         purPlanEntity: this.formData, | ||||||
|  |         subErpOrders: this.codeArray, | ||||||
|  |       } | ||||||
|  |       auditOrder(tQuery) | ||||||
|  |         .then(response => { | ||||||
|  |           this.loading = false; | ||||||
|  |           if (response.code === 20000) { | ||||||
|  |             this.$message.success(tMessage + "成功"); | ||||||
|  |             this.closeDialog(true); | ||||||
|  |           } else { | ||||||
|  |             this.$message.error(response.message); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |         .catch(() => { | ||||||
|  |           this.loading = false; | ||||||
|  |         }) | ||||||
|  |     }, | ||||||
|  |     selectProductFunction() { | ||||||
|  |       this.selectProductVisible = true; | ||||||
|  |     }, | ||||||
|  |     closeDialogC2(rData) { | ||||||
|  |       this.selectProductVisible = false; | ||||||
|  |       this.thisData = {}; | ||||||
|  |       if (this.$isNotBlank(rData)) { | ||||||
|  |         this.codeArray = []; | ||||||
|  |         rData.forEach((obj, index) => { | ||||||
|  |           this.codeArray.unshift(obj); | ||||||
|  |         }); | ||||||
|  |         this.$refs.multipleTable.setCurrentRow(this.codeArray[0]); | ||||||
|  |         this.currentRow = this.codeArray[0]; | ||||||
|  |         this.selectedIndex = 0; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     rowChange(val) { | ||||||
|  |       this.currentRow = val; | ||||||
|  |       this.selectedIndex = val.index; | ||||||
|  |     }, | ||||||
|  |     tableCountChange(row) { | ||||||
|  |       if (this.$isNotBlank(row)) { | ||||||
|  |         // row.count = row.reCount; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     tableRowClassName({row, rowIndex}) { | ||||||
|  |       row.index = rowIndex; | ||||||
|  |     }, | ||||||
|  |     // 刷新表单 | ||||||
|  |     resetForm() { | ||||||
|  |       if (this.$refs["dataForm"]) { | ||||||
|  |         // 清空验证信息表单 | ||||||
|  |         this.$refs["dataForm"].clearValidate(); | ||||||
|  |         // 刷新表单 | ||||||
|  |         this.$refs["dataForm"].resetFields(); | ||||||
|  |         this.getList(); | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     deleteCodeArray(index, row) { | ||||||
|  |       this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", { | ||||||
|  |         confirmButtonText: "确定", | ||||||
|  |         cancelButtonText: "取消", | ||||||
|  |         type: "warning", | ||||||
|  |       }).then(() => { | ||||||
|  |         this.$refs.multipleTable.setCurrentRow(); | ||||||
|  |         this.currentRow = {}; | ||||||
|  |         this.selectedIndex = ""; | ||||||
|  | 
 | ||||||
|  |         if (this.orderEditor) { | ||||||
|  |           this.detailLoading = true; | ||||||
|  |           if (this.$isNotBlank(row.id)) { | ||||||
|  |             delApplyDetail(row.id) | ||||||
|  |               .then(response => { | ||||||
|  |                 this.detailLoading = false; | ||||||
|  |                 if (response.code === 20000) { | ||||||
|  |                   this.$message.success(response.data); | ||||||
|  |                   // this.getStockOrderDetailList(); | ||||||
|  |                   this.codeArray.splice(index, 1); | ||||||
|  |                 } else { | ||||||
|  |                   this.$message.error(response.message); | ||||||
|  |                 } | ||||||
|  |               }) | ||||||
|  |               .catch(() => { | ||||||
|  |                 this.detailLoading = false; | ||||||
|  |               }) | ||||||
|  |           } else { | ||||||
|  |             this.$message.success('删除成功'); | ||||||
|  |             this.codeArray.splice(index, 1); | ||||||
|  |           } | ||||||
|  |         } else { | ||||||
|  |           this.$message.success('删除成功'); | ||||||
|  |           this.codeArray.splice(index, 1); | ||||||
|  |         } | ||||||
|  |       }).catch(() => { | ||||||
|  | 
 | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     getStockOrderDetailList() { | ||||||
|  |       this.loading = true; | ||||||
|  |       listApplyDetail(this.query) //查找该单号下的所有条码 | ||||||
|  |         .then((response) => { | ||||||
|  |           console.log(response) | ||||||
|  |           this.codeArray = response.data.list || []; | ||||||
|  |           this.total = response.data.total || 0; | ||||||
|  |           this.loading = false; | ||||||
|  |         }) | ||||||
|  |         .catch(() => { | ||||||
|  |           this.loading = false; | ||||||
|  |           this.list = []; | ||||||
|  |           this.total = 0; | ||||||
|  |         }); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   }, | ||||||
|  |   filters: {}, | ||||||
|  |   mounted() { | ||||||
|  |     document.body.ondrop = function (event) { | ||||||
|  |       event.preventDefault(); | ||||||
|  |       event.stopPropagation(); | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   created() { | ||||||
|  |     if (this.$isNotBlank(this.idQuery.id)) { | ||||||
|  |       this.query.limit = 100; | ||||||
|  |       this.query.orderIdFk = this.idQuery.id; | ||||||
|  |       this.formData = this.idQuery.formData; | ||||||
|  |       this.formData.targetInv = 1000; | ||||||
|  |       this.orderEditor = true; | ||||||
|  |       this.sValue = this.formData.corpName; | ||||||
|  |       this.getStockOrderDetailList(); | ||||||
|  |     } else { | ||||||
|  |       this.formData = { | ||||||
|  |         id: null, | ||||||
|  |         billNo: null, | ||||||
|  |         createTime: "", | ||||||
|  |         remark: "", | ||||||
|  |         deptCode: null, | ||||||
|  |         locStorageCode: null, | ||||||
|  |         invWarehouseCode: null, | ||||||
|  |         auditRemark: null, | ||||||
|  |         autoPurchase: false, | ||||||
|  |         targetInv: 1000, | ||||||
|  |         targetSubInv: null, | ||||||
|  |         targetBillAction: null, | ||||||
|  |       }; | ||||||
|  |       this.orderEditor = false; | ||||||
|  |     } | ||||||
|  |     this.findTargetSubInvs(); | ||||||
|  |     this.codeArray = []; | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <style scoped> | ||||||
|  | 
 | ||||||
|  | .ao-text { | ||||||
|  |   width: 100%; | ||||||
|  |   font-size: 13px; | ||||||
|  |   font-family: "Microsoft YaHei"; | ||||||
|  |   float: right; | ||||||
|  |   text-align: right; | ||||||
|  |   margin-top: 10px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | </style> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,402 @@ | |||||||
|  | <template> | ||||||
|  |   <div> | ||||||
|  |     <el-card class="el-card"> | ||||||
|  |       <el-form :model="listQuery" label-width="120px" v-show="showSearch"> | ||||||
|  |         <el-row> | ||||||
|  |           <el-col :span="24"> | ||||||
|  |             <el-form-item label="UDI码:" class="query-form-item"> | ||||||
|  |               <el-input v-model="listQuery.udiCode" style="width: 98%" placeholder="请扫描或输入UDI码" clearable="true" | ||||||
|  |                         @keyup.enter.native="keyup_submit($event)"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |         </el-row> | ||||||
|  | 
 | ||||||
|  |         <el-row> | ||||||
|  |           <el-col :span="8"> | ||||||
|  |             <el-form-item label="产品标识:" class="query-form-item"> | ||||||
|  |               <el-input clearable v-model="listQuery.nameCode" style="width: 90%" placeholder="请输入最小销售产品标识"/> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <el-col :span="8"> | ||||||
|  |             <el-form-item label="物品编码:" class="query-form-item"> | ||||||
|  |               <el-input v-model="listQuery.unionCode" style="width: 90%" placeholder="请输入DI/医保编码/商品条码" | ||||||
|  |                         clearable="true"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |           <el-col :span="8"> | ||||||
|  |             <el-form-item label="产品通用名:" class="query-form-item"> | ||||||
|  |               <el-input v-model="listQuery.cpmctymc" style="width: 90%" placeholder="请输入产品通用名" | ||||||
|  |                         clearable="true"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  | 
 | ||||||
|  |         </el-row> | ||||||
|  |         <el-row> | ||||||
|  |           <el-col :span="8"> | ||||||
|  |             <el-form-item label="规格型号:" class="query-form-item"> | ||||||
|  |               <el-input v-model="listQuery.ggxh" style="width: 90%" placeholder="请输入规格型号" clearable="true"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  | 
 | ||||||
|  |           <el-col :span="8"> | ||||||
|  |             <el-form-item label="生产企业:" class="query-form-item"> | ||||||
|  |               <el-input v-model="listQuery.ylqxzcrbarmc" style="width: 90%" placeholder="请输入生产企业/注册备案人" | ||||||
|  |                         clearable="true"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|  |           </el-col> | ||||||
|  |         </el-row> | ||||||
|  |       </el-form> | ||||||
|  | 
 | ||||||
|  |       <div class="top-right-btn"> | ||||||
|  |         <el-button-group style="display:flex;"> | ||||||
|  |           <el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button> | ||||||
|  |           <el-button type="primary" icon="el-icon-refresh" @click="onReset">重置</el-button> | ||||||
|  |           <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button> | ||||||
|  |           <el-button type="primary" icon="el-icon-plus" @click="confirmSelect">确定</el-button> | ||||||
|  |         </el-button-group> | ||||||
|  |       </div> | ||||||
|  | <!--      <el-divider style="margin: 15px"></el-divider>--> | ||||||
|  | 
 | ||||||
|  |       <el-table :data="productList" style="width: 100%" | ||||||
|  |                 v-loading="productListLoading" border highlight-current-row | ||||||
|  |                 :row-class-name="tableRowClassName" @current-change="handleChange" ref="multipleTable" | ||||||
|  |                 @selection-change="productSelectChange"> | ||||||
|  |         <el-table-column type="selection" width="55" :selectable="selectableDIS"></el-table-column> | ||||||
|  |         <el-table-column label="序号" type="index"></el-table-column> | ||||||
|  |         <el-table-column label="最小销售产品标识" width="150" prop="nameCode" show-overflow-tooltip></el-table-column> | ||||||
|  |         <el-table-column label="产品通用名称" width="150" prop="cpmctymc" show-overflow-tooltip></el-table-column> | ||||||
|  |         <el-table-column label="规格型号" width="150" prop="ggxh" show-overflow-tooltip></el-table-column> | ||||||
|  |         <el-table-column label="注册/备案号" width="150" prop="zczbhhzbapzbh" show-overflow-tooltip></el-table-column> | ||||||
|  |         <el-table-column label="生产企业" width="200" prop="manufactory" show-overflow-tooltip></el-table-column> | ||||||
|  |         <el-table-column label="产品描述" width="200" prop="cpms" show-overflow-tooltip></el-table-column> | ||||||
|  |         <el-table-column label="操作" width="160"> | ||||||
|  |           <template slot-scope="scope"> | ||||||
|  |             <el-button type="text" size="small" @click.native.stop="handleDetailClick(scope.row)">详情</el-button> | ||||||
|  |           </template> | ||||||
|  |         </el-table-column> | ||||||
|  |       </el-table> | ||||||
|  | 
 | ||||||
|  |       <el-dialog | ||||||
|  |         title="耗材字典详情" | ||||||
|  |         :visible.sync="udiRlDetailVisible" | ||||||
|  |         width="80%" | ||||||
|  |         :close-on-click-modal="false" | ||||||
|  |         :close-on-press-escape="false" | ||||||
|  |         append-to-body | ||||||
|  |         v-if="udiRlDetailVisible" | ||||||
|  |       > | ||||||
|  |         <udiRlDetailDialog :editQuery="currentRow"></udiRlDetailDialog> | ||||||
|  |       </el-dialog> | ||||||
|  | 
 | ||||||
|  |       <pagination | ||||||
|  |         v-show="productListTotal>0" | ||||||
|  |         :total="productListTotal" | ||||||
|  |         :page.sync="listQuery.page" | ||||||
|  |         :limit.sync="listQuery.limit" | ||||||
|  |         @pagination="handleErpPageChange" | ||||||
|  | 
 | ||||||
|  |       ></pagination> | ||||||
|  |     </el-card> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     <el-dialog title="请选择对应的注册/备案证" :visible.sync="dialogFormVisible" append-to-body width="40%"> | ||||||
|  |       <el-form :model="form"> | ||||||
|  |         <el-form-item label="" prop="isGive"> | ||||||
|  |           <el-radio-group v-model="currentCert"> | ||||||
|  |             <el-radio style="width: 100%;  margin-top: 10px;" :label="item" :key="item" v-for="item in certList">{{ | ||||||
|  |                 item | ||||||
|  |               }} | ||||||
|  |             </el-radio> | ||||||
|  |           </el-radio-group> | ||||||
|  |         </el-form-item> | ||||||
|  |       </el-form> | ||||||
|  |       <div slot="footer" class="dialog-footer"> | ||||||
|  |         <el-button type="primary" @click="selectCert">确 定</el-button> | ||||||
|  |         <el-button @click="dialogFormVisible = false">取 消</el-button> | ||||||
|  |       </div> | ||||||
|  |     </el-dialog> | ||||||
|  | 
 | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | // import store from "../../../store"; | ||||||
|  | import {addContractDetail} from "@/api/purchase/purContract" | ||||||
|  | import {isBlank} from "@/utils/strUtil"; | ||||||
|  | // import selectProduct from "@/views/order/pur/selectProduct.vue"; | ||||||
|  | // import {productListWithUnique, productListWithUniqueAndUnit} from "@/api/receipts/productInfo"; | ||||||
|  | import udiRlDetailDialog from "./../../purchase/purApply/purUdiRlDetailDialog"; | ||||||
|  | import {filterCompanyProductRelevance} from "../../../api/basic/udiRlSuptRelevance"; | ||||||
|  | 
 | ||||||
|  | export default { | ||||||
|  |   name: "stockOrderNewSelectProduct", | ||||||
|  |   props: { | ||||||
|  |     stockOrderLists: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |     closeDialog: { | ||||||
|  |       type: Function, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |     closeDialogC2: { | ||||||
|  |       type: Function, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |     purType: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |     pId: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true, | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       productList:[], | ||||||
|  |       showSearch: true, | ||||||
|  |       listQuery: { | ||||||
|  |         purType: null, | ||||||
|  |         udiCode: null, | ||||||
|  |         unicode: null, | ||||||
|  |         nameCode: null, | ||||||
|  |         cpmctymc: null, | ||||||
|  |         ggxh: null, | ||||||
|  |         ylqxzcrbarmc: null, | ||||||
|  |         thrPiId: null, | ||||||
|  |         corpType:'VENDOR', | ||||||
|  |         page: 1, | ||||||
|  |         limit: 10, | ||||||
|  |       }, | ||||||
|  |       combineQuery: { | ||||||
|  |         thirdId: "", | ||||||
|  |         relId: "", | ||||||
|  |         erpName: "", | ||||||
|  |         keys: [], | ||||||
|  |       }, | ||||||
|  |       ids: [], | ||||||
|  |       radioCheck: null, | ||||||
|  |       dataList: [], | ||||||
|  |       pageTotal: 1, | ||||||
|  |       total: 1, | ||||||
|  |       currentRow: null, | ||||||
|  |       productListLoading: false, | ||||||
|  |       udiRlDetailVisible: false, | ||||||
|  |       thirdSys: [], | ||||||
|  |       thirdSysFk: null, | ||||||
|  |       busTypes: [], | ||||||
|  |       actDateRange: [], | ||||||
|  |       pickerOptions: { | ||||||
|  |         shortcuts: [ | ||||||
|  |           { | ||||||
|  |             text: "最近一周", | ||||||
|  |             onClick(picker) { | ||||||
|  |               const end = new Date(); | ||||||
|  |               const start = new Date(); | ||||||
|  |               start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); | ||||||
|  |               picker.$emit("pick", [start, end]); | ||||||
|  |             }, | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: "最近一个月", | ||||||
|  |             onClick(picker) { | ||||||
|  |               const end = new Date(); | ||||||
|  |               const start = new Date(); | ||||||
|  |               start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); | ||||||
|  |               picker.$emit("pick", [start, end]); | ||||||
|  |             }, | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: "最近三个月", | ||||||
|  |             onClick(picker) { | ||||||
|  |               const end = new Date(); | ||||||
|  |               const start = new Date(); | ||||||
|  |               start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); | ||||||
|  |               picker.$emit("pick", [start, end]); | ||||||
|  |             }, | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |       }, | ||||||
|  |       orderEditor: false, | ||||||
|  |       orderId: "", | ||||||
|  |       currentCert: null, | ||||||
|  |       certList: [], | ||||||
|  |       dialogFormVisible: false, | ||||||
|  |       multipleSelection: null, | ||||||
|  |       uniqueIds: [], | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     selectableDIS(row, index) { | ||||||
|  |       if (this.stockOrderLists.length > 0) { | ||||||
|  |         for (var i = 0; i < this.stockOrderLists.length; i++) { | ||||||
|  |           if (row.rlId == this.stockOrderLists[i].productId){ | ||||||
|  |             return false | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       return  true | ||||||
|  |     }, | ||||||
|  |     productSelectChange(e) { | ||||||
|  |       this.uniqueIds = [] | ||||||
|  |       e.forEach(i => this.uniqueIds.push({productUniqueId: i.uniqueId, id: i.id || null})); | ||||||
|  |     }, | ||||||
|  |     onReset() { | ||||||
|  |       this.$router.push({ | ||||||
|  |         path: "", | ||||||
|  |       }); | ||||||
|  |       this.listQuery = { | ||||||
|  |         purType: null, | ||||||
|  |         udiCode: null, | ||||||
|  |         unicode: null, | ||||||
|  |         cpmctymc: null, | ||||||
|  |         ggxh: null, | ||||||
|  |         ylqxzcrbarmc: null, | ||||||
|  |         thrPiId: null, | ||||||
|  |         page: 1, | ||||||
|  |         limit: 10 | ||||||
|  |       } | ||||||
|  |       this.multipleSelection = []; | ||||||
|  |       this.radioCheck = null; | ||||||
|  |       this.currentRow = null; | ||||||
|  |       this.getList(); | ||||||
|  |     }, | ||||||
|  |     hideSearch() { | ||||||
|  |       this.showSearch = !this.showSearch; | ||||||
|  |     }, | ||||||
|  |     tableRowClassName({row}) { | ||||||
|  |       if (row.checked) return "warning-row"; | ||||||
|  |       return ""; | ||||||
|  |     }, | ||||||
|  |     checkSelectable(row) { | ||||||
|  |       return !row.check; | ||||||
|  |     }, | ||||||
|  |     handleCurrentChange(val) { | ||||||
|  |       this.unionQuery.page = val; | ||||||
|  |       this.getList(); | ||||||
|  |     }, | ||||||
|  |     handleChange(val) { | ||||||
|  |       this.radioCheck = val.id; | ||||||
|  |       this.currentRow = val; | ||||||
|  |       this.multipleSelection = val | ||||||
|  |     }, | ||||||
|  |     handleDetailClick(row) { | ||||||
|  |       this.currentRow = row; | ||||||
|  |       this.udiRlDetailVisible = true; | ||||||
|  | 
 | ||||||
|  |     }, | ||||||
|  |     closeDetailDialog() { | ||||||
|  |       this.udiRlDetailVisible = false; | ||||||
|  |     }, | ||||||
|  |     handleErpPageChange(val) { | ||||||
|  |       this.listQuery.page = val.page; | ||||||
|  |       this.getList(); | ||||||
|  |     }, | ||||||
|  |     keyup_submit(event) { | ||||||
|  |       this.listQuery.page = 1; | ||||||
|  |       this.getList(); | ||||||
|  |       event.target.select(); | ||||||
|  |     }, | ||||||
|  |     search() { | ||||||
|  |       this.listQuery.page = 1; | ||||||
|  |       this.getList(); | ||||||
|  |     }, | ||||||
|  |     getList() { | ||||||
|  |       this.productListLoading = true; | ||||||
|  |       // this.listQuery.customerId = store.getters.customerId; | ||||||
|  |       filterCompanyProductRelevance(this.listQuery).then(res => { | ||||||
|  |         this.productListLoading = false | ||||||
|  |         if (res.code === 20000) { | ||||||
|  |           this.productList = res.data.list || [] | ||||||
|  |           this.productListTotal = res.data.total || 0 | ||||||
|  |         } else { | ||||||
|  |           this.$message.error(res.message) | ||||||
|  |         } | ||||||
|  |       }).catch((e) => { | ||||||
|  |         this.productListLoading = false | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     intentBack() { | ||||||
|  |       this.closeDialog(); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     confirmSelect() { | ||||||
|  |       if (!this.uniqueIds.length) { | ||||||
|  |         this.$message.error("请先选择产品") | ||||||
|  |         return | ||||||
|  |       } | ||||||
|  |       this.combine(); | ||||||
|  |       this.closeDialog(); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     combine() { | ||||||
|  |       this.loading = true; | ||||||
|  |       let arr = [] | ||||||
|  |       this.uniqueIds.forEach((value, index) => { | ||||||
|  |         arr[index] = value.id; | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       if (arr.length == 0){ | ||||||
|  |         this.$message.error("请先选择产品!"); | ||||||
|  |         return | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       let tQuery = { | ||||||
|  |         productIds : arr, | ||||||
|  |         orderIdFk: this.pId | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       addContractDetail(tQuery).then((response) => { | ||||||
|  |         this.loading = false; | ||||||
|  |         if (response.code === 20000) { | ||||||
|  |           this.closeDialog(response.data); | ||||||
|  |         } else { | ||||||
|  |           if (response.code == 601) { | ||||||
|  |             this.$alert(response.message, "提示", { | ||||||
|  |               confirmButtonText: "确定", | ||||||
|  |             }); | ||||||
|  |           } else | ||||||
|  |             this.$message.error(response.message); | ||||||
|  |         } | ||||||
|  |       }).catch(() => { | ||||||
|  |         this.loading = false; | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     selectCert() { | ||||||
|  |       if (this.currentCert == null) { | ||||||
|  |         this.$message.error("请先选择对应的注册证!"); | ||||||
|  |       } else { | ||||||
|  |         this.multipleSelection.zczbhhzbapzbh = this.currentCert; | ||||||
|  |         this.combine(); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   components: { | ||||||
|  |     udiRlDetailDialog | ||||||
|  | 
 | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   created() { | ||||||
|  | 
 | ||||||
|  |     this.getList(); | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style scoped> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | div /deep/ .el-table .warning-row { | ||||||
|  |   background: #bebebe; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | div /deep/ .el-table .success-row { | ||||||
|  |   background: #ffffff; | ||||||
|  | } | ||||||
|  | </style> | ||||||
					Loading…
					
					
				
		Reference in New Issue