若依前端-APP中使用数据字典

avatar
作者
筋斗云
阅读量:3

 

<template>   <div class="app-container">     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">       <el-form-item label="入库单编号" prop="recptCode">         <el-input           v-model="queryParams.recptCode"           placeholder="请输入入库单编号"           clearable           @keyup.enter.native="handleQuery"         />       </el-form-item>       <el-form-item label="入库单名称" prop="recptName">         <el-input           v-model="queryParams.recptName"           placeholder="请输入入库单名称"           clearable           @keyup.enter.native="handleQuery"         />       </el-form-item>       <el-form-item label="生产工单" prop="workorderCode">         <el-input           v-model="queryParams.workorderCode"           placeholder="请输入生产工单编码"           clearable           @keyup.enter.native="handleQuery"         />       </el-form-item>       <el-form-item label="仓库" prop="warehouseName">         <el-input           v-model="queryParams.warehouseName"           placeholder="请输入仓库名称"           clearable           @keyup.enter.native="handleQuery"         />       </el-form-item>       <el-form-item>         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>       </el-form-item>     </el-form>      <el-row :gutter="10" class="mb8">       <el-col :span="1.5">         <el-button           type="primary"           plain           icon="el-icon-plus"           size="mini"           @click="handleAdd"           v-hasPermi="['mes:wm:productrecpt:add']"         >新增</el-button>       </el-col>       <el-col :span="1.5">         <el-button           type="success"           plain           icon="el-icon-edit"           size="mini"           :disabled="single"           @click="handleUpdate"           v-hasPermi="['mes:wm:productrecpt:edit']"         >修改</el-button>       </el-col>       <el-col :span="1.5">         <el-button           type="danger"           plain           icon="el-icon-delete"           size="mini"           :disabled="multiple"           @click="handleDelete"           v-hasPermi="['mes:wm:productrecpt:remove']"         >删除</el-button>       </el-col>       <el-col :span="1.5">         <el-button           type="warning"           plain           icon="el-icon-download"           size="mini"           @click="handleExport"           v-hasPermi="['mes:wm:productrecpt:export']"         >导出</el-button>       </el-col>       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>     </el-row>      <el-table v-loading="loading" :data="productrecptList" @selection-change="handleSelectionChange">       <el-table-column type="selection" width="55" align="center" />       <el-table-column label="入库单编号" width="130px" align="center" prop="recptCode" >         <template slot-scope="scope">           <el-button             type="text"             @click="handleView(scope.row)"             v-hasPermi="['mes:wm:productrecpt:query']"           >{{scope.row.recptCode}}</el-button>         </template>       </el-table-column>       <el-table-column label="入库单名称" width="150px" align="center" prop="recptName" :show-overflow-tooltip="true"/>       <el-table-column label="生产工单编码" width="150px" align="center" prop="workorderCode" />       <el-table-column label="产品编码" align="center" prop="itemCode" />       <el-table-column label="产品名称" align="center" prop="itemName" />       <el-table-column label="入库日期" align="center" prop="recptDate" width="120">         <template slot-scope="scope">           <span>{{ parseTime(scope.row.recptDate, '{y}-{m}-{d}') }}</span>         </template>       </el-table-column>       <el-table-column label="单据状态" align="center" prop="status">         <template slot-scope="scope">           <dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>         </template>       </el-table-column>       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">         <template slot-scope="scope">           <el-button             size="mini"             type="text"             icon="el-icon-video-play"             v-if="scope.row.status =='PREPARE'"             @click="handleExecute(scope.row)"             v-hasPermi="['mes:wm:productrecpt:edit']"           >执行入库</el-button>           <el-button             size="mini"             type="text"             icon="el-icon-edit"             @click="handleUpdate(scope.row)"             v-if="scope.row.status =='PREPARE'"             v-hasPermi="['mes:wm:productrecpt:edit']"           >修改</el-button>           <el-button             size="mini"             type="text"             icon="el-icon-delete"             @click="handleDelete(scope.row)"             v-if="scope.row.status =='PREPARE'"             v-hasPermi="['mes:wm:productrecpt:remove']"           >删除</el-button>         </template>       </el-table-column>     </el-table>          <pagination       v-show="total>0"       :total="total"       :page.sync="queryParams.pageNum"       :limit.sync="queryParams.pageSize"       @pagination="getList"     />      <!-- 添加或修改产品入库录对话框 -->     <el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>       <el-form ref="form" :model="form" :rules="rules" label-width="100px">         <el-row>           <el-col :span="8">             <el-form-item label="入库单编号" prop="recptCode">               <el-input v-model="form.recptCode" placeholder="请输入入库单编号" />             </el-form-item>           </el-col>           <el-col :span="4">             <el-form-item  label-width="80">               <el-switch v-model="autoGenFlag"                   active-color="#13ce66"                   active-text="自动生成"                   @change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view' && form.status =='PREPARE'">                              </el-switch>             </el-form-item>           </el-col>           <el-col :span="12">             <el-form-item label="入库单名称" prop="recptName">               <el-input v-model="form.recptName" placeholder="请输入入库单名称" />             </el-form-item>           </el-col>         </el-row>         <el-row>           <el-col :span="8">             <el-form-item label="生产工单" prop="workorderCode">               <el-input v-model="form.workorderCode" placeholder="请选择生产工单" >                 <el-button slot="append" icon="el-icon-search" @click="handleWorkorderSelect"></el-button>               </el-input>               <WorkorderSelect ref="woSelect" @onSelected="onWorkorderSelected"></WorkorderSelect>             </el-form-item>           </el-col>           <el-col :span="8">             <el-form-item label="生产工单名称" prop="workorderName">               <el-input v-model="form.workorderName" readonly="readonly" />             </el-form-item>           </el-col>           <el-col :span="8">             <el-form-item label="入库日期" prop="recptDate">               <el-date-picker clearable                 v-model="form.recptDate"                 type="date"                 value-format="yyyy-MM-dd"                 placeholder="请选择入库日期">               </el-date-picker>             </el-form-item>           </el-col>         </el-row>                <el-row>           <el-col :span="24">             <el-form-item label="备注" prop="remark">               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />             </el-form-item>           </el-col>         </el-row>       </el-form>       <el-divider v-if="form.recptId !=null" content-position="center">物料信息</el-divider>        <el-card shadow="always" v-if="form.recptId !=null" class="box-card">         <Productrecptline :recptId="form.recptId" :optType="optType" :workorderId="form.workorderId" :itemId="form.itemId"></Productrecptline>       </el-card>       <div slot="footer" class="dialog-footer">         <el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' ">返回</el-button>         <el-button type="primary" @click="submitForm" v-if="form.status =='PREPARE' && optType !='view' ">保 存</el-button>                 <el-button @click="cancel">取 消</el-button>       </div>     </el-dialog>   </div> </template>  <script> import { listProductrecpt, getProductrecpt, delProductrecpt, addProductrecpt, updateProductrecpt ,execute} from "@/api/mes/wm/productrecpt"; import WorkorderSelect from "@/components/workorderSelect/single.vue" import Productrecptline from "./line.vue" import {getTreeList} from "@/api/mes/wm/warehouse" import {genCode} from "@/api/system/autocode/rule" export default {   name: "Productrecpt",   dicts: ['mes_order_status'],   components:{WorkorderSelect,Productrecptline},   data() {     return {       //自动生成编码       autoGenFlag:false,       optType: undefined,       warehouseInfo:[],       warehouseOptions:[],       warehouseProps:{         multiple: false,         value: 'pId',         label: 'pName',       },       // 遮罩层       loading: true,       // 选中数组       ids: [],       // 非单个禁用       single: true,       // 非多个禁用       multiple: true,       // 显示搜索条件       showSearch: true,       // 总条数       total: 0,       // 产品入库录表格数据       productrecptList: [],       // 弹出层标题       title: "",       // 是否显示弹出层       open: false,       // 查询参数       queryParams: {         pageNum: 1,         pageSize: 10,         recptCode: null,         recptName: null,         workorderId: null,         workorderCode: null,         workorderName: null,         warehouseId: null,         warehouseCode: null,         warehouseName: null,         locationId: null,         locationCode: null,         locationName: null,         areaId: null,         areaCode: null,         areaName: null,         recptDate: null,         status: null,       },       // 表单参数       form: {},       // 表单校验       rules: {         recptCode: [           { required: true, message: "入库单编号不能为空", trigger: "blur" }         ],         recptDate: [           { required: true, message: "请选择入库日期", trigger: "blur" }         ],         workorderCode: [           { required: true, message: "请选择生产工单", trigger: "blur" }         ],       }     };   },   created() {     this.getList();     this.getWarehouseList();   },   methods: {     /** 查询产品入库录列表 */     getList() {       this.loading = true;       listProductrecpt(this.queryParams).then(response => {         this.productrecptList = response.rows;         this.total = response.total;         this.loading = false;       });     },     getWarehouseList(){       getTreeList().then( response =>{                 this.warehouseOptions = response.data;         this.warehouseOptions.map(w =>{           w.children.map(l =>{                   let lstr =JSON.stringify(l.children).replace(/locationId/g,'lId').replace(/areaId/g, 'pId').replace(/areaName/g,'pName');                                     l.children = JSON.parse(lstr);           });                        let wstr = JSON.stringify(w.children).replace(/warehouseId/g,'wId').replace(/locationId/g, 'pId').replace(/locationName/g,'pName');             w.children =  JSON.parse(wstr);           });         let ostr=JSON.stringify(this.warehouseOptions).replace(/warehouseId/g,'pId').replace(/warehouseName/g, 'pName');         this.warehouseOptions = JSON.parse(ostr);       });     },     // 取消按钮     cancel() {       this.open = false;       this.reset();     },     // 表单重置     reset() {       this.form = {         recptId: null,         recptCode: null,         recptName: null,         workorderId: null,         workorderCode: null,         workorderName: null,         warehouseId: null,         warehouseCode: null,         warehouseName: null,         locationId: null,         locationCode: null,         locationName: null,         itemId: null,         itemCode: null,         itemName: null,         unitOfMeasure: null,         clientCode: null,         clientName: null,         areaId: null,         areaCode: null,         areaName: null,         recptDate: new Date(),         status: "PREPARE",         remark: null,         attr1: null,         attr2: null,         attr3: null,         attr4: null,         createBy: null,         createTime: null,         updateBy: null,         updateTime: null       };       this.autoGenFlag = false;       this.resetForm("form");     },     /** 搜索按钮操作 */     handleQuery() {       this.queryParams.pageNum = 1;       this.getList();     },     /** 重置按钮操作 */     resetQuery() {       this.resetForm("queryForm");       this.handleQuery();     },     // 多选框选中数据     handleSelectionChange(selection) {       this.ids = selection.map(item => item.recptId)       this.single = selection.length!==1       this.multiple = !selection.length     },         // 查询明细按钮操作     handleView(row){        this.reset();       const recptId = row.recptId || this.ids       getProductrecpt(recptId).then(response => {         this.form = response.data;         this.open = true;         this.title = "查看产品入库单";         this.optType = "view";       });       },     /** 新增按钮操作 */     handleAdd() {       this.reset();       this.open = true;       this.title = "添加产品入库单";     },     /** 修改按钮操作 */     handleUpdate(row) {       this.reset();       const recptId = row.recptId || this.ids       getProductrecpt(recptId).then(response => {         this.form = response.data;         this.open = true;         this.title = "修改产品入库单";       });     },     //执行入库     handleExecute(row){       const recptIds = row.recptId || this.ids;       this.$modal.confirm('确认执行入库?').then(function() {         return execute(recptIds)//执行入库       }).then(() => {         this.getList();         this.$modal.msgSuccess("入库成功");       }).catch(() => {});     },     /** 提交按钮 */     submitForm() {       this.$refs["form"].validate(valid => {         if (valid) {           if (this.form.recptId != null) {             updateProductrecpt(this.form).then(response => {               this.$modal.msgSuccess("修改成功");               this.open = false;               this.getList();             });           } else {             addProductrecpt(this.form).then(response => {               this.$modal.msgSuccess("新增成功");               this.open = false;               this.getList();             });           }         }       });     },     /** 删除按钮操作 */     handleDelete(row) {       const recptIds = row.recptId || this.ids;       this.$modal.confirm('是否确认删除产品入库单编号为"' + recptIds + '"的数据项?').then(function() {         return delProductrecpt(recptIds);       }).then(() => {         this.getList();         this.$modal.msgSuccess("删除成功");       }).catch(() => {});     },     /** 导出按钮操作 */     handleExport() {       this.download('wm/productrecpt/export', {         ...this.queryParams       }, `productrecpt_${new Date().getTime()}.xlsx`)     },     //选择生产工单     handleWorkorderSelect(){       this.$refs.woSelect.showFlag = true;     },     onWorkorderSelected(row){       if(row != undefined && row != null){         debugger;         this.form.workorderId = row.workorderId;         this.form.workorderCode = row.workorderCode;         this.form.workorderName = row.workorderName;         this.form.itemId = row.productId;         this.form.itemCode = row.productCode;         this.form.itemName = row.productName;         this.form.unitOfMeasure = row.unitOfMeasure;         this.form.clientCode = row.clientCode;         this.form.clientName = row.clientName;       }     },     //选择默认的仓库、库区、库位     handleWarehouseChanged(obj){             if(obj !=null){         this.form.warehouseId = obj[0];         this.form.locationId = obj[1];         this.form.areaId = obj[2];       }     },     //自动生成编码     handleAutoGenChange(autoGenFlag){       if(autoGenFlag){         genCode('PRODUCTRECPT_CODE').then(response =>{           this.form.recptCode = response;         });       }else{         this.form.recptCode = null;       }     }   } }; </script> 

 

<template>   <div class="app-container">     <el-row :gutter="10" class="mb8">       <el-col :span="1.5">         <el-button           type="primary"           plain           icon="el-icon-plus"           size="mini"           @click="handleAdd"           v-hasPermi="['mes:wm:productrecpt:add']"         >新增</el-button>       </el-col>       <el-col :span="1.5">         <el-button           type="success"           plain           icon="el-icon-edit"           size="mini"           :disabled="single"           @click="handleUpdate"           v-if="optType != 'view'"           v-hasPermi="['mes:wm:productrecpt:edit']"         >修改</el-button>       </el-col>       <el-col :span="1.5">         <el-button           type="danger"           plain           icon="el-icon-delete"           size="mini"           :disabled="multiple"           @click="handleDelete"           v-if="optType != 'view'"           v-hasPermi="['mes:wm:productrecpt:remove']"         >删除</el-button>       </el-col>            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>     </el-row>      <el-table v-loading="loading" :data="productrecptlineList" @selection-change="handleSelectionChange">       <el-table-column type="selection" width="55" align="center" />       <el-table-column label="产品物料编码" width="120px" align="center" prop="itemCode" />       <el-table-column label="产品物料名称" width="150px" align="center" prop="itemName" :show-overflow-tooltip="true"/>       <el-table-column label="规格型号" width="120px" align="center" prop="specification" :show-overflow-tooltip="true"/>       <el-table-column label="单位" align="center" prop="unitOfMeasure" />       <el-table-column label="入库数量" align="center" prop="quantityRecived" />       <el-table-column label="良品数" align="center" prop="quantityQualified" />       <el-table-column label="不良品数" align="center" prop="quantityUnqualified" />       <el-table-column label="批次号" align="center" prop="batchCode" />       <el-table-column label="仓库名称" align="center" prop="warehouseName" />       <el-table-column label="库区名称" align="center" prop="locationName" />       <el-table-column label="库位名称" align="center" prop="areaName" />       <el-table-column label="操作" align="center"  class-name="small-padding fixed-width">         <template slot-scope="scope">           <el-button             size="mini"             type="text"             icon="el-icon-edit"             @click="handleUpdate(scope.row)"             v-if="optType != 'view'"             v-hasPermi="['mes:wm:productrecpt:edit']"           >修改</el-button>           <el-button             size="mini"             type="text"             icon="el-icon-delete"             @click="handleDelete(scope.row)"             v-if="optType != 'view'"             v-hasPermi="['mes:wm:productrecpt:remove']"           >删除</el-button>         </template>       </el-table-column>     </el-table>          <pagination       v-show="total>0"       :total="total"       :page.sync="queryParams.pageNum"       :limit.sync="queryParams.pageSize"       @pagination="getList"     />      <!-- 添加或修改产品入库记录行对话框 -->     <el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>       <el-form ref="form" :model="form" :rules="rules" label-width="100px">         <el-row>           <el-col :span="8">             <el-form-item label="产品物料编码" prop="itemCode">               <el-input v-model="form.itemCode" placeholder="请输入产品物料编码" >                 <el-button slot="append" @click="handleSelectStock" icon="el-icon-search"></el-button>               </el-input>               <StockSelect ref="stockSelect" :workorderId="workorderId" :itemId="itemId" warehouseCode="XBK_VIRTUAL" @onSelected="onStockSelected"></StockSelect>             </el-form-item>           </el-col>           <el-col :span="8">             <el-form-item label="产品物料名称" prop="itemName">               <el-input v-model="form.itemName" placeholder="请输入产品物料名称" />             </el-form-item>           </el-col>           <el-col :span="8">             <el-form-item label="单位" prop="unitOfMeasure">               <el-input v-model="form.unitOfMeasure" placeholder="请输入单位" />             </el-form-item>           </el-col>         </el-row>         <el-row>           <el-col :span="24">             <el-form-item label="规格型号" prop="specification">               <el-input v-model="form.specification" type="textarea" placeholder="请输入内容" />             </el-form-item>           </el-col>         </el-row>         <el-row>           <el-col :span="8">             <el-form-item label="入库数量" prop="quantityRecived">               <el-input-number :min="0" :max="form.quantityMax" v-model="form.quantityRecived" placeholder="请输入入库数量" />             </el-form-item>           </el-col>           <el-col :span="8">             <el-form-item label="批次号" prop="batchCode">               <el-input v-model="form.batchCode" placeholder="请输入批次号" />             </el-form-item>           </el-col>           <el-col :span="8">             <el-form-item label="入库仓库" prop="warehouseId">               <el-cascader v-model="warehouseInfo"                 :options="warehouseOptions"                 :props="warehouseProps"                 @change="handleWarehouseChanged"               >                                 </el-cascader>             </el-form-item>           </el-col>         </el-row>         <el-row>           <el-col :span="24">             <el-form-item label="备注" prop="remark">               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />             </el-form-item>           </el-col>         </el-row>       </el-form>       <div slot="footer" class="dialog-footer">         <el-button type="primary" @click="submitForm">确 定</el-button>         <el-button @click="cancel">取 消</el-button>       </div>     </el-dialog>   </div> </template>  <script> import { listProductrecptline, getProductrecptline, delProductrecptline, addProductrecptline, updateProductrecptline } from "@/api/mes/wm/productrecptline"; import StockSelect from "@/components/stockSelect/single.vue" import {getTreeList} from "@/api/mes/wm/warehouse" export default {   name: "Productrecptline",   components:{     StockSelect   },   props: {     recptId: null,     optType: null,     workorderId:null,     itemId: null   },   data() {     return {       warehouseInfo:[],       warehouseOptions:[],       warehouseProps:{         multiple: false,         value: 'pId',         label: 'pName',       },       // 遮罩层       loading: true,       // 选中数组       ids: [],       // 非单个禁用       single: true,       // 非多个禁用       multiple: true,       // 显示搜索条件       showSearch: true,       // 总条数       total: 0,       // 产品入库记录行表格数据       productrecptlineList: [],       // 弹出层标题       title: "",       // 是否显示弹出层       open: false,       // 查询参数       queryParams: {         pageNum: 1,         pageSize: 10,         recptId: this.recptId,         materialStockId: null,         itemId: null,         itemCode: null,         itemName: null,         specification: null,         unitOfMeasure: null,         quantityRecived: null,         batchCode: null,         warehouseId: null,         warehouseCode: null,         warehouseName: null,         locationId: null,         locationCode: null,         locationName: null,         areaId: null,         areaCode: null,         areaName: null,       },       // 表单参数       form: {},       // 表单校验       rules: {         itemId: [           { required: true, message: "产品不能为空", trigger: "blur" }         ],         warehouseId: [           { required: true, message: "入库仓库不能为空", trigger: "blur" }         ],         quantityRecived: [           { required: true, message: "入库数量不能为空", trigger: "blur" }         ],       }     };   },   created() {     this.getList();     this.getWarehouseList();   },   methods: {     /** 查询产品入库记录行列表 */     getList() {       this.loading = true;       listProductrecptline(this.queryParams).then(response => {         this.productrecptlineList = response.rows;         this.total = response.total;         this.loading = false;       });     },     getWarehouseList(){       getTreeList().then( response =>{                 this.warehouseOptions = response.data;         this.warehouseOptions.map(w =>{           w.children.map(l =>{                   let lstr =JSON.stringify(l.children).replace(/locationId/g,'lId').replace(/areaId/g, 'pId').replace(/areaName/g,'pName');                                     l.children = JSON.parse(lstr);           });                        let wstr = JSON.stringify(w.children).replace(/warehouseId/g,'wId').replace(/locationId/g, 'pId').replace(/locationName/g,'pName');             w.children =  JSON.parse(wstr);           });         let ostr=JSON.stringify(this.warehouseOptions).replace(/warehouseId/g,'pId').replace(/warehouseName/g, 'pName');         this.warehouseOptions = JSON.parse(ostr);       });     },     // 取消按钮     cancel() {       this.open = false;       this.reset();     },     // 表单重置     reset() {       this.form = {         lineId: null,         recptId: this.recptId,         materialStockId: null,         itemId: null,         itemCode: null,         itemName: null,         specification: null,         unitOfMeasure: null,         quantityRecived: null,         batchCode: null,         warehouseId: null,         warehouseCode: null,         warehouseName: null,         locationId: null,         locationCode: null,         locationName: null,         areaId: null,         areaCode: null,         areaName: null,         remark: null,         attr1: null,         attr2: null,         attr3: null,         attr4: null,         createBy: null,         createTime: null,         updateBy: null,         updateTime: null       };       this.resetForm("form");     },     /** 搜索按钮操作 */     handleQuery() {       this.queryParams.pageNum = 1;       this.getList();     },     /** 重置按钮操作 */     resetQuery() {       this.resetForm("queryForm");       this.handleQuery();     },     // 多选框选中数据     handleSelectionChange(selection) {       this.ids = selection.map(item => item.lineId)       this.single = selection.length!==1       this.multiple = !selection.length     },     /** 新增按钮操作 */     handleAdd() {       this.reset();       this.open = true;       this.title = "添加产品入库记录行";     },     /** 修改按钮操作 */     handleUpdate(row) {       this.reset();       const lineId = row.lineId || this.ids       getProductrecptline(lineId).then(response => {         this.form = response.data;         this.open = true;         this.title = "修改产品入库记录行";       });     },     /** 提交按钮 */     submitForm() {       this.$refs["form"].validate(valid => {         if (valid) {           if (this.form.lineId != null) {             updateProductrecptline(this.form).then(response => {               this.$modal.msgSuccess("修改成功");               this.open = false;               this.getList();             });           } else {             addProductrecptline(this.form).then(response => {               this.$modal.msgSuccess("新增成功");               this.open = false;               this.getList();             });           }         }       });     },     /** 删除按钮操作 */     handleDelete(row) {       const lineIds = row.lineId || this.ids;       this.$modal.confirm('是否确认删除产品入库记录行编号为"' + lineIds + '"的数据项?').then(function() {         return delProductrecptline(lineIds);       }).then(() => {         this.getList();         this.$modal.msgSuccess("删除成功");       }).catch(() => {});     },     /** 导出按钮操作 */     handleExport() {       this.download('wm/productrecptline/export', {         ...this.queryParams       }, `productrecptline_${new Date().getTime()}.xlsx`)     },     handleSelectStock(){       this.$refs.stockSelect.showFlag = true;       this.$refs.stockSelect.getList();     },     //物料选择弹出框     onStockSelected(obj){         if(obj != undefined && obj != null){           this.form.materialStockId = obj.materialStockId;           this.form.itemId = obj.itemId;           this.form.itemCode = obj.itemCode;           this.form.itemName = obj.itemName;           this.form.specification = obj.specification;           this.form.unitOfMeasure = obj.unitOfMeasure;             this.form.batchCode = obj.batchCode;           this.form.quantityRecived = obj.quantityOnhand;           this.form.quantityMax = obj.quantityOnhand;         }     },     //选择默认的仓库、库区、库位     handleWarehouseChanged(obj){             if(obj !=null){         this.form.warehouseId = obj[0];         this.form.locationId = obj[1];         this.form.areaId = obj[2];       }     },   } }; </script> 

<template> 	<view class="container"> 		<!-- 显示收料单表头 --> 		<uni-section title="扫码委外收料表身" type="line" class="mb-10"> 			<template v-slot:right> 				查询清单 			</template>  			<uni-collapse> 				<uni-collapse-item :title="'委外收料单:'+outreceive.receiveCode+'  状态:'+outreceive.status" 					thumb="/static/images/workorder.png">  					<view class="content">  						<view class="container"> 							<uni-list>   								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'location-filled'}" title="ID" 									:rightText="outreceive.receiveId" />   								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="类型" 									:rightText="outreceive.receiveType" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="供应商" 									:rightText="outreceive.vendorCode" /> 								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'chat-filled'}" title="供应商名称" 									:rightText="outreceive.vendorName" />   								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'calendar-filled'}" title="开单时间" 									:rightText="outreceive.createTime" />  							</uni-list>   						</view>  					</view>  				</uni-collapse-item>   				<view class="dist-flex"> 					<button type="primary" class="uni-btn-small" size="mini" 						@click="openAddOutreceiveLine">增加收料数量</button> 					<button type="primary" class="uni-btn-small" size="mini" @click="openEditOutissueLine" 						v-show="false">修改收料数量</button> 					<button type="primary" class="uni-btn-small" size="mini" 						@click="openQueryOutreceiveLine">查询收料明细</button> 				</view>    			</uni-collapse> 		</uni-section> 		<!-- 显示收料单表头 -->  		<!-- 显示收料单明细 --> 		<uni-section title="查询收料单明细" type="line" class="mb-10" v-show="showQueryOutreceiveLine"> 			<template v-slot:right> 			</template>  			<uni-collapse v-for="(value, key, index) in outrececLineList"> 				<uni-collapse-item :title="'料号:'+value.productCode+' 良品数:'+value.quantityQualified" 					thumb="/static/images/workorder.png">   					<view class="container"> 						<view class="container"> 							<uni-list>  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'location-filled'}" title="ID" 									:rightText="value.receiveLineId" />   								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="委外工单号码" 									:rightText="value.outworkorderCode" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="生产工单号码" 									:rightText="value.workorderCode" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="委外工序" 									:rightText="value.productCode" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="工序名称" 									:rightText="value.productName" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="需求数量" 									:rightText="value.quantityScrot" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="发料数量" 									:rightText="value.quantityIssue" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="收料良品数" 									:rightText="value.quantityQualified" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="收料不良品数" 									:rightText="value.quantityUnquanlified" />  								<uni-list-item showExtraIcon="true" :extraIcon="{type: 'wallet-filled'}" title="收料时间" 									:rightText="value.createTime" />  							</uni-list> 						</view> 					</view>   				</uni-collapse-item>  			</uni-collapse> 		</uni-section> 		<!-- 显示收料单明细 --> 		<!-- 编辑收料单明细 --> 		<view class="content example" v-show="showEditOutreceiveLine">  			<uni-forms ref="form" :model="outreceiveLine" labelWidth="100px">  				<uni-forms-item label="扫码委外发料行码" name="issueCode" label-width="100">  					<view class="dist-flex"> 						<uni-easyinput v-model="outreceiveLine.issueCode" placeholder="委外工单号码"></uni-easyinput> 						<uni-icons type="camera-filled" size="30" @click="onH5Scan"></uni-icons> 					</view>  				</uni-forms-item>  				<uni-forms-item label="收料单ID" name="receiveId" labelWidth="100"> 					<uni-easyinput disabled v-model="outreceiveLine.receiveId" placeholder="收料单" /> 				</uni-forms-item>  				<uni-forms-item label="收料单号" name="receiveCode" labelWidth="100"> 					<uni-easyinput disabled v-model="outreceiveLine.receiveCode" placeholder="收料单" /> 				</uni-forms-item>  				<uni-forms-item label="发料行ID" name="issueLineId" labelWidth="100"> 					<uni-easyinput disabled v-model="outreceiveLine.issueLineId" placeholder="系统自动生成" /> 				</uni-forms-item>   				<uni-forms-item label="委外工单" name="outworkorderCode" label-width="100"> 					<uni-easyinput disabled v-model="outreceiveLine.outworkorderCode" placeholder="收料数量" /> 				</uni-forms-item>  				<uni-forms-item label="生厂工单" name="workorderCode" label-width="100"> 					<uni-easyinput disabled v-model="outreceiveLine.workorderCode" placeholder="收料数量" /> 				</uni-forms-item>  				<uni-forms-item label="需求数量" name="quantityScrot" labelWidth="100"> 					<uni-easyinput disabled v-model="outreceiveLine.quantityScrot" placeholder="需求数量" /> 				</uni-forms-item>  				<uni-forms-item label="发料数量" name="quantity" label-width="100"> 					<uni-easyinput disabled v-model="outreceiveLine.quantity" placeholder="收料数量" /> 				</uni-forms-item>   				<uni-forms-item label="收料良品数" name="quantityQualifiedReceive" label-width="100"> 					<uni-easyinput v-model="outreceiveLine.quantityQualifiedReceive" placeholder="收料良品数" /> 				</uni-forms-item>  				<uni-forms-item label="收料不良品数" name="quantityUnqualifiedReceive" label-width="100"> 					<uni-easyinput v-model="outreceiveLine.quantityUnqualifiedReceive" placeholder="收料不良品数" /> 				</uni-forms-item>     			</uni-forms>     			</uni-section>  			<view style="text-align: center;">  				<button type="primary" @click="submitForm" size="mini">保存委外收料单明细</button>  			</view>  		</view> 		<!-- 编辑收料单明细 -->    	</view> </template>  <script> 	import { 		getUserProfile 	} from "@/api/system/user" 	import { 		updateUserProfile 	} from "@/api/system/user" 	import { 		listWorkorder 	} from "@/api/mes/pro/workorder" 	import { 		listOutworkorder 	} from "@/api/mes/pro/outworkorder" 	import { 		getOutissue, 		addOutissue, 		listOutissue, 		updateOutissue, 		getOutissueByIssueCode 	} from "@/api/mes/pro/outissue.js" 	import { 		getOutissueLine, 		addOutissueLine, 		listOutissueLine, 		updateOutissueLine 	} from "@/api/mes/pro/outissueLine.js" 	import { 		getOutrececive, 		addOutrececive, 		listOutrececive, 		updateOutrececive, 		getOutreceiveByReceiveCode 	} from "@/api/mes/pro/outreceive.js" 	import { 		getOutreceiveLine, 		addOutreceiveLine, 		listOutreceiveLine, 		updateOutreceiveLine 	} from "@/api/mes/pro/outreceiveLine.js"   	import { 		listUser, 		getUser, 		delUser, 		addUser, 		updateUser, 		resetUserPwd, 		changeUserStatus 	} from "@/api/system/user" 	import { 		getJsapiSignature 	} from "@/api/notice/qywx.js" 	import storage from '@/utils/storage' 	import { 		getDicts 	} from "@/api/system/dict/data" 	import { 		listVendor, 		getVendor, 		delVendor, 		addVendor, 		updateVendor 	} from "@/api/mes/md/vendor" 	import { 		genCode 	} from "@/api/system/autocode/rule" 	import { 		listOutworkorderline 	} from "../../../../api/mes/pro/outworkorderline"   	export default { 		dicts: ['mes_order_status'], 		data() { 			return { 				vendorList: [], 				selectVendorCode: null, 				rules: { 					nickName: { 						rules: [{ 							required: true, 							errorMessage: '用户昵称不能为空' 						}] 					}, 					phonenumber: { 						rules: [{ 							required: true, 							errorMessage: '手机号码不能为空' 						}, { 							pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, 							errorMessage: '请输入正确的手机号码' 						}] 					}, 					email: { 						rules: [{ 							required: true, 							errorMessage: '邮箱地址不能为空' 						}, { 							format: 'email', 							errorMessage: '请输入正确的邮箱地址' 						}] 					} 				}, 				workorderCodeList: [], 				selectWorkorderCode: null, 				outworkorderCodeList: [], 				selectOutworkorderCode: null, 				outworkorderLineProductList: [], 				outworkorderLineWorkorderList: [], 				outissueCodeList: [], 				outissueLineList: [], 				selectOutissueCode: null, 				selectProductCode: null, 				workorderList: [], 				protaskList: [], 				receiveCode: null, 				outissue: { 					issueId: null, 					issueCode: null, 					issueName: null, 					issueType: null, 					orderSource: null, 					sourceCode: null, 					productId: null, 					productCode: null, 					productName: null, 					productSpc: null, 					unitOfMeasure: null, 					quantity: null, 					quantityProduced: null, 					quantityChanged: null, 					quantityScheduled: null, 					clientId: null, 					clientCode: null, 					clientName: null, 					vendorId: null, 					vendorCode: null, 					vendorName: null, 					requestDate: null, 					parentId: null, 					status: null, 					remark: null, 					createBy: null, 					createTime: null, 					updateBy: null, 					updateTime: null 				}, 				outissueline: { 					issueLineId: null, 					issueId: null, 					issueCode: null, 					issueName: null, 					issueType: null, 					outworkorderId: null, 					outwrkorderCode: null, 					outworkorderLineId: null, 					workorderId: null, 					workorderCode: null, 					lineNo: null, 					routeId: null, 					routeCode: null, 					processId: null, 					processCode: null, 					processName: null, 					productId: null, 					productCode: null, 					productName: null, 					productSpc: null, 					unitOfMeasure: null, 					quantity: null, 					quantityProduced: null, 					quantityChanged: null, 					quantityScheduled: null, 					quantityScrot: null, 					clientId: null, 					clientCode: null, 					clientName: null, 					vendorId: null, 					vendorCode: null, 					vendorName: null, 					requestDate: null, 					parentId: null, 					status: null, 					remark: null, 					createBy: null, 					createTime: null, 					updateBy: null, 					updateTime: null 				}, 				outissueLineList: [], 				outreceive: { 					receiveId: null, 					receiveCode: null, 					receiveName: null, 					receiveType: null, 					orderSource: null, 					sourceCode: null, 					productId: null, 					productCode: null, 					productName: null, 					productSpc: null, 					unitOfMeasure: null, 					quantity: null, 					quantityProduced: null, 					quantityChanged: null, 					quantityScheduled: null, 					clientId: null, 					clientCode: null, 					clientName: null, 					vendorId: null, 					vendorCode: null, 					vendorName: null, 					requestDate: null, 					parentId: null, 					status: null, 					remark: null, 					createBy: null, 					createTime: null, 					updateBy: null, 					updateTime: null 				}, 				outreceiveLine: { 					receiveLineId: null, 					receiveId: null, 					receiveCode: null, 					receiveName: null, 					receiveType: null, 					issueId: null, 					issueCode: null, 					issueName: null, 					issueType: null, 					issueLineId: null, 					outworkorderId: null, 					outwrkorderCode: null, 					outworkorderLineId: null, 					workorderId: null, 					workorderCode: null, 					lineNo: null, 					routeId: null, 					routeCode: null, 					processId: null, 					processCode: null, 					processName: null, 					productId: null, 					productCode: null, 					productName: null, 					productSpc: null, 					unitOfMeasure: null, 					quantity: null, 					quantityProduced: null, 					quantityChanged: null, 					quantityScheduled: null, 					quantityScrot: null, 					quantityIssue: null, 					quantityUnquanlified: null, 					clientId: null, 					clientCode: null, 					clientName: null, 					vendorId: null, 					vendorCode: null, 					vendorName: null, 					requestDate: null, 					parentId: null, 					status: null, 					remark: null, 					createBy: null, 					createTime: null, 					updateBy: null, 					updateTime: null 				}, 				outreceiveLineList: [],   				workorderStatus: [], 				// 遮罩层 				loading: true, 				showEditOutworkorderLine: false, 				showQueryOutworkorderLine: false, 				showOutissueLine: false, 				showQueryOutreceiveLine: false, 				showEditOutreceiveLine: false, 				// 查询参数 				queryOutissueParams: { 					issueCode: null, 				}, 				queryOutissueLineParams: { 					issueCode: null, 				}, 				queryOutreceiveParams: { 					receiveCode: null, 				}, 				queryOutreceiveLineParams: { 					receiveCode: null, 				},  				queryOutworkorderLineParams: { 					outworkorderCode: null, 				}, 				//卡片相关数据 				cover: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg', 				avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png', 				extraIcon: { 					color: '#4cd964', 					size: '22', 					type: 'gear-filled' 				}  			} 		}, 		created() {  		}, 		onLoad: function(option) {  			this.receiveCode = JSON.parse(decodeURIComponent(option.item)); 			console.log("receiveCode:" + this.receiveCode) 			this.outreceive.receiveCode = this.receiveCode 			this.queryOutreceiveParams.receiveCode = this.receiveCode 			this.queryOutreceiveLineParams.receiveCode = this.receiveCode 			this.queryOutreceive(); 			this.queryOutreceiveLineList(); 			this.queryListOutworkorder();  			//调用微信扫一扫的配置 			this.getCofig() 		}, 		onReady() { 			//设定Form提交的规则 			this.$refs.form.setRules(this.rules) 		}, 		methods: { 			/** 提交按钮 保存报工按钮 */ 			submitForm() { 				console.log("保存委外收料单开始") 				console.log(this.outissueLineList) 				this.$refs.form.validate().then(res => {   					console.log("收料行数据"); 					console.log(this.outreceiveLine); 					addOutreceiveLine(this.outreceiveLine).then(response => {  						//this.showEditOutworkorderLine=false						 						this.$modal.msgSuccess("新增成功:" + this.outreceiveLine.productName); 					});    				});  				console.log("保存委外收料单结束") 			}, 			changeOutissue(e) { 				console.log("选择委外发料单号码") 				console.log(e) 				let row = JSON.parse(e) 				console.log(row.issueCode) 				this.showOutissueLine = true   				this.queryOutissueParams.issueCode = row.issueCode; 				this.outworkorderLineProductList = [] 				this.outworkorderLineWorkorderList = []  				this.outissueline.productCode = null 				this.outissueline.productName = null 				this.outissueline.quantityScrot = null 				this.outissueline.quantity = null  				this.outworkorderCodeList = []  				listOutissueLine(this.queryOutissueParams).then(response => {  					this.loading = false; 					this.outissueLineList = response.rows;  					for (var i in response.rows) {  						this.outworkorderCodeList.push({ 							value: JSON.stringify(response.rows[i]), 							text: response.rows[i].outworkorderCode 						}); 					}  				}) 				//委外工单发料列表 				console.log(row.outworkorderCodeList)   			}, 			changeOutworkorder(e) { 				console.log("选择委外工单号码") 				console.log(e) 				let row = JSON.parse(e) 				console.log(row.outworkorderCode) 				this.queryOutworkorderLineParams.outworkorderCode = row.outworkorderCode; 				this.outworkorderLineProductList = [] 				this.outworkorderLineWorkorderList = []  				this.outissueline.productCode = null 				this.outissueline.productName = null 				this.outissueline.quantityScrot = null 				this.outissueline.quantity = null   				listOutworkorderline(this.queryOutworkorderLineParams).then(response => { 					//this.protaskList = response.rows; 					this.loading = false; 					for (var i in response.rows) { 						this.outworkorderLineProductList.push({ 							value: JSON.stringify(response.rows[i]), 							text: response.rows[i].productCode + "|" + response.rows[i].productName 						}); 						this.outworkorderLineWorkorderList.push({ 							value: JSON.stringify(response.rows[i]), 							text: response.rows[i].workorderCode 						}); 					}  				}) 				//委外工单发料列表 				console.log(row.outworkorderLineProductList)   			}, 			changeOutworkorderLineWorkorder(e) { 				console.log("选择委外工单明细的生产工单") 				console.log(e) 				let row = JSON.parse(e) 				console.log(row)  				this.outissueline.processId = row.processId 				this.outissueline.productCode = row.productCode 				this.outissueline.productName = row.productName 				this.outissueline.quantityScrot = row.quantity  				this.outissueline.outworkorderId = row.outworkorderId 				this.outissueline.outworkorderCode = row.outworkorderCode 				this.outissueline.outworkorderLineId = row.outworkorderLineId  				this.outissueline.workorderId = row.workorderId 				this.outissueline.workorderCode = row.workorderCode  				this.outissueline.routeId = row.routeId 				this.outissueline.routeCode = row.routeCode 				this.outissueline.routeName = row.routeName  				this.outissueline.processId = row.processId 				this.outissueline.processCode = row.processCode 				this.outissueline.processName = row.processName   			}, 			changeUser(e) { 				console.log("选择审核人") 				console.log(e) 				let row = JSON.parse(e) 				console.log(row.userName) 				this.feedback.recordUser = row.userName 				this.feedback.recordNick = row.nickNamethis.outissueline.outworkorderId = row.outworkorderId 				this.loading = true 				getOutissueByreceiveCode(this.receiveCode).then(response => { 					this.loading = false; 					console.log("委外收料单表头"); 					console.log(response.data); 					this.outissue = response.data; 					this.outissueline.issueId = response.data.issueId; 					this.outissueline.receiveCode = response.data.receiveCode;  				}); 			}, 			queryOutreceive() { 				this.loading = true 				getOutreceiveByReceiveCode(this.receiveCode).then(response => { 					this.loading = false; 					console.log("委外收料单表头"); 					console.log(response.data); 					this.outreceive = response.data; 				}); 			}, 			queryOutreceiveLineList() { 				this.loading = true 				listOutreceiveLine(this.queryOutreceiveLineParams).then(response => { 					this.loading = false; 					console.log("委外收料单明细"); 					console.log(response.rows); 					this.outrececLineList = response.rows;  				}); 			}, 			queryListOutissue() { 				console.log("查询委外发料单-可发料范围") 				listOutissue().then(response => { 					this.loading = false; 					for (var i in response.rows) { 						this.outissueCodeList.push({ 							value: JSON.stringify(response.rows[i]), 							text: response.rows[i].issueCode 						}); 					}  				}); 				console.log(this.outissueCodeList); 				console.log("查询委外发料单-可发料范围") 			}, 			queryListOutworkorder() { 				console.log("查询委外工单清单-可发料范围") 				listOutworkorder().then(response => { 					this.loading = false; 					for (var i in response.rows) { 						this.outworkorderCodeList.push({ 							value: JSON.stringify(response.rows[i]), 							text: response.rows[i].outworkorderCode 						}); 					}  				}); 				console.log(this.outworkorderCodeList); 				console.log("查询委外工单清单-可发料范围") 			}, 			getListProTask() { 				console.log("查询排产任务开始") 				listProtask(this.queryProTaskParams).then(response => { 					//this.protaskList = response.rows; 					this.loading = false; 					for (var i in response.rows) { 						this.protaskList.push({ 							value: JSON.stringify(response.rows[i]), 							text: response.rows[i].taskCode + "|" + response.rows[i].workstationName 						}); 					}  				});  				console.log(this.protaskList); 				console.log("查询排产任务结束") 			}, 			openAddOutreceiveLine() { 				//this.$refs.showRight.open(); 				//this.$tab.navigateTo('/pages/mes/pro/workorder/saveowoissueline?item=' + encodeURIComponent(JSON.stringify(this 				//	.outissue))); 				this.showEditOutreceiveLine = true; 				this.showQueryOutreceiveLine = false; 				//查询发料单可发料列表 				//this.queryListOutissue();  			}, 			openQueryOutreceiveLine() { 				console.log("查询委外工单收料明细")  				this.showQueryOutreceiveLine = true; 				this.showEditOutreceiveLine = false;  				this.queryOutreceiveLineList(); 			},  			closeDrawer() { 				this.$refs.showRight.close(); 			},  			//微信扫描save 			onH5Scan() { 				//如果有调用相关的内容,要使用that的这个常量 				const that = this; 				console.log('onH5Scan进来了'); 				this.$wx.scanQRCode({ 					needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, 					scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 					success: function(res) { 						//alert(JSON.stringify(res))  //测试使用 						var result = res.resultStr; // 当 needResult 为 1 时,扫码返回的结果 						var resultArr = result.split(',') // 扫描结果以逗号分割数组 						var codeContent = resultArr[resultArr.length - 1] // 获取数组最后一个元素,也就是最终的内容 						扫描结果赋值 						console.log('onH5Scan——success'); 						console.log("onH5Scan" + result + "===" + resultArr + "===" + codeContent);  						var str = codeContent.trim();  						var array = str.split('^'); 						alert(array); 						 						that.outreceiveLine.receiveId=that.outreceive.receiveId 						that.outreceiveLine.receiveCode=that.outreceive.receiveCode  						that.outreceiveLine.issueLineId = parseInt(array[0]) 						that.outreceiveLine.issueId = parseInt(array[1]) 						that.outreceiveLine.issueCode = array[2]   						that.outreceiveLine.outworkorderLineId = parseInt(array[3]) 						that.outreceiveLine.outworkorderId = parseInt(array[4]) 						that.outreceiveLine.outworkorderCode = array[5]   						that.outreceiveLine.workorderId = parseInt(array[6]) 						that.outreceiveLine.workorderCode = array[7]   						that.outreceiveLine.productId = parseInt(array[8]) 						that.outreceiveLine.productCode = array[9] 						that.outreceiveLine.productName = array[10]   						that.outreceiveLine.routeId = parseInt(array[11]) 						that.outreceiveLine.routeCode = array[12] 						//that.outissueline.routeName = array[13]  						that.outreceiveLine.processId = parseInt(array[14]) 						that.outreceiveLine.processCode = array[15] 						that.outreceiveLine.processName = array[16]  						that.outreceiveLine.quantityScrot = parseFloat(array[17]) 						that.outreceiveLine.quantity = array[18]     					}, 					fail: function(response) { 						if (res.errMsg.indexOf('function_not_exist') > 0) { 							console.log('onH5Scan版本过低请升级'); 						} 						uni.showToast({ 							icon: "none", 							title: "onH5Scan——调用扫码失败" + response.errMsg 						}) 					}, 				}); 			}, 			// 配置信息 			getCofig() {  				const that = this; 				let url = window.location.href.split('#')[0]; 				let params = { 					'url': url 				} 				getJsapiSignature(params).then(res => { 					const result = res;  					if (res) { 						that.wxConfig( 							result.appId, 							result.timestamp, 							result.nonceStr, 							result.signature 						); 					} else { 						alert('获取配置信息返回为空'); 					} 				}) 			}, 			//wx.config的配置 			wxConfig(appId, timestamp, nonceStr, signature) { 				this.$wx.config({ 					debug: false, // 开启调试模式, 					appId: appId, // 必填,企业号的唯一标识 					timestamp: timestamp, // 必填,生成签名的时间戳 					nonceStr: nonceStr, // 必填,生成签名的随机串 					signature: signature, // 必填,签名 					jsApiList: [ 						'chooseImage', 						'previewImage', 						'uploadImage', 						'downloadImage', 						'scanQRCode', 						'checkJsApi' 					], // 必填,需要使用的JS接口列表 				});   				this.$wx.ready(() => { 					this.$wx.checkJsApi({ //判断当前客户端版本是否支持指定JS接口 						jsApiList: [ 							'chooseImage', 							'previewImage', 							'uploadImage', 							'downloadImage', 							'scanQRCode', 						], 						success: function( 							res 						) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"} 							//alert(res) 							//取消配置提示框 							this.$modal.msgSuccess(res.checkResult) 							if (res.checkResult.scanQRCode != true) { 								this.$modal.msgSuccess('抱歉,当前客户端版本不支持扫一扫') 							}  						}, 						fail: function(res) { //检测getNetworkType该功能失败时处理 							this.$modal.msgSuccess(res) 							alert('checkJsApi error'); 						} 					});  					console.log("wxConfig配置完成,扫码前准备完成"); 					//this.$modal.msgSuccess("wxConfig配置完成,扫码前准备完成") 				}) 				this.$wx.error(function(res) { 					this.$modal.msgSuccess('wxConfig出错了:' + res.errMsg) 					console.log('wxConfig出错了:' + res.errMsg); 					//wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。 				}); 			},  		} 	} </script>  <style lang="scss"> 	page { 		background-color: #ffffff; 	}  	.example { 		padding: 15px; 		background-color: #ffffff; 	}  	.segmented-control { 		margin-bottom: 15px; 	}  	.button-group { 		margin-top: 15px; 		display: flex; 		justify-content: space-around; 	}  	.form-item { 		display: flex; 		align-items: center; 		flex: 1; 	}  	.button { 		display: flex; 		align-items: center; 		height: 35px; 		line-height: 35px; 		margin-left: 10px; 	}  	.dist-flex { 		display: flex !important; 	}  	/*卡片格式*/ 	.container { 		overflow: hidden; 	}  	.custom-cover { 		flex: 1; 		flex-direction: row; 		position: relative; 	}  	.cover-content { 		position: absolute; 		bottom: 0; 		left: 0; 		right: 0; 		height: 40px; 		background-color: rgba($color: #000000, $alpha: 0.4); 		display: flex; 		flex-direction: row; 		align-items: center; 		padding-left: 15px; 		font-size: 14px; 		color: #fff; 	}  	.card-actions { 		display: flex; 		flex-direction: row; 		justify-content: space-around; 		align-items: center; 		height: 45px; 		border-top: 1px #eee solid; 	}  	.card-actions-item { 		display: flex; 		flex-direction: row; 		align-items: center; 	}  	.card-actions-item-text { 		font-size: 12px; 		color: #666; 		margin-left: 5px; 	}  	.cover-image { 		flex: 1; 		height: 150px; 	}  	.no-border { 		border-width: 0; 	} </style>
ALTER TABLE ryvue_mes.pro_task ADD first_flag INT NULL COMMENT '首道工序(0否/1是)'; ALTER TABLE ryvue_mes.pro_task ADD last_flag INT NULL COMMENT '末道工序(0否/1是)'; ALTER TABLE ryvue_mes.pro_task ADD bf_flag INT NULL COMMENT 'BFFlag 倒冲工序(0否/1是)'; ALTER TABLE ryvue_mes.pro_task ADD report_flag INT NULL COMMENT 'ReportFlag 报告点 (0否/1是)'; ALTER TABLE ryvue_mes.pro_task ADD fee_flag INT NULL COMMENT 'FeeFlag 计费点(0否/1是)'; ALTER TABLE ryvue_mes.pro_task ADD delivery_days DECIMAL NULL COMMENT 'DeliveryDays 交货天数'; 
 1 在main.js文件中注册有关字典的组件和相关的属性等,如下所示,有添加字典注解的地方
import Vue from 'vue' import App from './App' import wx from 'weixin-js-sdk' import store from './store' // store import plugins from './plugins' // plugins import './permission' // permission //字典 import { getDicts } from "@/api/system/dict/data" // 字典标签组件 import DictTag from '@/components/DictTag' // 字典数据组件 import DictData from '@/components/DictData'  Vue.use(plugins) //安装字典 DictData.install()  Vue.config.productionTip = false Vue.prototype.$store = store Vue.prototype.getDicts = getDicts //全局注册字典 Vue.component('DictTag', DictTag)   App.mpType = 'app'  const app = new Vue({   ...App })  app.$mount() 
2  在D:\ideaProject\RuoYi-App-master\components目录,添加从前端的项目复制DictData,DictTag两个目录的全部文件
3在D:\ideaProject\RuoYi-App-master\utils目录,添加从前端的项目复制utils的文件,存在的文件就跳过
4 在组件文件中直接使用<dict-tag :options="dict.type.mes_order_status" value="CONFIRMED" />来表示字典显示的内容

4.1 定义字典的内容

dicts: ['mes_order_status','mes_workorder_sourcetype','mes_workorder_type'],

 4.2 在要显示标签的地方,写下dict-tag标签的语法,vaule属性可以使用变量

<dict-tag :options="dict.type.mes_order_status" value="CONFIRMED" />
<template> 	<view class="normal-login-container"> 		<view class="logo-content align-center justify-center flex"> 			<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix"> 			</image> 			<text class="title">若依移动端登录</text> 			<view> 				  					<dict-tag :options="dict.type.mes_order_status" value="CONFIRMED" /> 			  			</view> 		</view> 		<view class="login-form-content"> 			<view class="input-item flex align-center"> 				<view class="iconfont icon-user icon"></view> 				<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" /> 			</view> 			<view class="input-item flex align-center"> 				<view class="iconfont icon-password icon"></view> 				<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" /> 			</view> 			<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled"> 				<view class="iconfont icon-code icon"></view> 				<input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" /> 				<view class="login-code"> 					<image :src="codeUrl" @click="getCode" class="login-code-img"></image> 				</view> 			</view> 			<view class="action-btn"> 				<button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button> 			</view> 			<view class="reg text-center" v-if="register"> 				<text class="text-grey1">没有账号?</text> 				<text @click="handleUserRegister" class="text-blue">立即注册</text> 			</view> 			<view class="xieyi text-center"> 				<text class="text-grey1">登录即代表同意</text> 				<text @click="handleUserAgrement" class="text-blue">《用户协议》</text> 				<text @click="handlePrivacy" class="text-blue">《隐私协议》</text> 			</view>  		</view> 	</view> </template>  <script> 	import { 		getCodeImg 	} from '@/api/login'  	export default { 		dicts: ['mes_order_status','mes_workorder_sourcetype','mes_workorder_type'], 		data() { 			return { 				codeUrl: "", 				captchaEnabled: true, 				// 用户注册开关 				register: false, 				globalConfig: getApp().globalData.config, 				loginForm: { 					username: "admin", 					password: "admin123", 					code: "", 					uuid: '' 				} 			} 		}, 		created() { 			this.getCode() 		}, 		methods: { 			// 用户注册 			handleUserRegister() { 				this.$tab.redirectTo(`/pages/register`) 			}, 			// 隐私协议 			handlePrivacy() { 				let site = this.globalConfig.appInfo.agreements[0] 				this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`) 			}, 			// 用户协议 			handleUserAgrement() { 				let site = this.globalConfig.appInfo.agreements[1] 				this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`) 			}, 			// 获取图形验证码 			getCode() { 				getCodeImg().then(res => { 					this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled 					if (this.captchaEnabled) { 						this.codeUrl = 'data:image/gif;base64,' + res.img 						this.loginForm.uuid = res.uuid 					} 				}) 			}, 			// 登录方法 			async handleLogin() { 				if (this.loginForm.username === "") { 					this.$modal.msgError("请输入您的账号") 				} else if (this.loginForm.password === "") { 					this.$modal.msgError("请输入您的密码") 				} else if (this.loginForm.code === "" && this.captchaEnabled) { 					this.$modal.msgError("请输入验证码") 				} else { 					this.$modal.loading("登录中,请耐心等待...") 					this.pwdLogin() 				} 			}, 			// 密码登录 			async pwdLogin() { 				this.$store.dispatch('Login', this.loginForm).then(() => { 					this.$modal.closeLoading() 					this.loginSuccess() 				}).catch(() => { 					if (this.captchaEnabled) { 						this.getCode() 					} 				}) 			}, 			// 登录成功后,处理函数 			loginSuccess(result) { 				// 设置用户信息 				this.$store.dispatch('GetInfo').then(res => { 					this.$tab.reLaunch('/pages/index') 				}) 			} 		} 	} </script>  <style lang="scss"> 	page { 		background-color: #ffffff; 	}  	.normal-login-container { 		width: 100%;  		.logo-content { 			width: 100%; 			font-size: 21px; 			text-align: center; 			padding-top: 15%;  			image { 				border-radius: 4px; 			}  			.title { 				margin-left: 10px; 			} 		}  		.login-form-content { 			text-align: center; 			margin: 20px auto; 			margin-top: 15%; 			width: 80%;  			.input-item { 				margin: 20px auto; 				background-color: #f5f6f7; 				height: 45px; 				border-radius: 20px;  				.icon { 					font-size: 38rpx; 					margin-left: 10px; 					color: #999; 				}  				.input { 					width: 100%; 					font-size: 14px; 					line-height: 20px; 					text-align: left; 					padding-left: 15px; 				}  			}  			.login-btn { 				margin-top: 40px; 				height: 45px; 			}  			.reg { 				margin-top: 15px; 			}  			.xieyi { 				color: #333; 				margin-top: 20px; 			}  			.login-code { 				height: 38px; 				float: right;  				.login-code-img { 					height: 38px; 					position: absolute; 					margin-left: 10px; 					width: 200rpx; 				} 			} 		} 	} </style>

1 为表添加数据同步相关的信息 

ALTER TABLE ryvue_mes.out_workorder ADD sync_id varchar(100) NULL COMMENT '同步ID(接名名称或AP名行或JOB名称等)'; ALTER TABLE ryvue_mes.out_workorder ADD sync_status INT NULL COMMENT '同步状态(0成功1失败2执行3重传)'; ALTER TABLE ryvue_mes.out_workorder ADD sync_time DATETIME NULL COMMENT '同步完成时间'; ALTER TABLE ryvue_mes.out_workorder ADD sync_qty INT NULL COMMENT '同步记录数'; ALTER TABLE ryvue_mes.out_workorder ADD sync_message varchar(100) NULL COMMENT '同步消息'; 
ALTER TABLE ryvue_mes.pro_route ADD run_card_flag INT NULL COMMENT '启用流转卡 (0否1是)'; ALTER TABLE ryvue_mes.pro_route ADD aux_unit_code varchar(100) NULL COMMENT '辅助计量单位'; ALTER TABLE ryvue_mes.pro_route ADD runcard_batch_qty DECIMAL NULL COMMENT '流转卡批量数据'; ALTER TABLE ryvue_mes.pro_route ADD route_tyype INT NULL COMMENT 'RountingType 类型(1-主要/2-替代)  '; ALTER TABLE ryvue_mes.pro_route ADD route_version varchar(100) NULL COMMENT '版本'; ALTER TABLE ryvue_mes.pro_route ADD version_desc varchar(100) NULL COMMENT '版本说明'; ALTER TABLE ryvue_mes.pro_route ADD version_start_date DATE NULL COMMENT '版本生效日期'; ALTER TABLE ryvue_mes.pro_route ADD version_end_date DATE NULL COMMENT '版本结束日期'; ALTER TABLE ryvue_mes.pro_route ADD ident_code varchar(100) NULL COMMENT '替代标识'; ALTER TABLE ryvue_mes.pro_route ADD ident_desc varchar(100) NULL COMMENT '替代说明'; ALTER TABLE ryvue_mes.pro_route ADD auditor_user varchar(100) NULL COMMENT '审核人员'; ALTER TABLE ryvue_mes.pro_route ADD auditor_time DATETIME NULL; ALTER TABLE ryvue_mes.pro_route ADD close_user varchar(100) NULL COMMENT '关闭人员'; ALTER TABLE ryvue_mes.pro_route ADD close_time varchar(100) NULL; ALTER TABLE ryvue_mes.pro_route ADD change_rate DECIMAL NULL COMMENT '换算率'; ALTER TABLE ryvue_mes.pro_route ADD update_count varchar(100) NULL COMMENT '修改次数'; ALTER TABLE ryvue_mes.pro_route ADD print_count varchar(100) NULL COMMENT '打印次数'; 
     <select id="checkFirstProTask" parameterType="ProTask" resultMap="ProTaskResult">         <include refid="selectProTaskVo"/>         <where>             <if test="workorderCode != null  and workorderCode != ''"> and t.workorder_code = #{workorderCode}</if>             <if test="processCode != null"> and t.process_code = #{processCode} </if>             <if test="workorderCode != null  and workorderCode != ''"> and (workorder_code,process_order_num)  in (select workorder_code,min(process_order_num) from  ryvue_mes.pro_task  where workorder_code =#{workorderCode} ) </if>          </where>     </select>      <select id="checkLastProTask" parameterType="ProTask" resultMap="ProTaskResult">         <include refid="selectProTaskVo"/>         <where>             <if test="workorderCode != null  and workorderCode != ''"> and t.workorder_code = #{workorderCode}</if>             <if test="processCode != null"> and t.process_code = #{processCode} </if>             <if test="workorderCode != null  and workorderCode != ''"> and (workorder_code,process_order_num)  in (select workorder_code,min(process_order_num) from  pro_task  where workorder_code =#{workorderCode} ) </if>         </where>     </select>       <select id="queryPreviousProTask" parameterType="ProTask" resultMap="ProTaskResult">         <include refid="selectProTaskVo"/>         <where>             <if test="workorderCode != null  and workorderCode != ''"> and t.workorder_code = #{workorderCode}</if>             <if test="workorderCode != null  and workorderCode != '' and  processCode != null  "> and process_order_num  &lt; (select  min(process_order_num) from  pro_task  where workorder_code =#{workorderCode}  and process_code = #{processCode} ) </if>         </where>         order by process_order_num desc  limit 1     </select>          <select id="queryNextProTask" parameterType="ProTask" resultMap="ProTaskResult">         <include refid="selectProTaskVo"/>         <where>             <if test="workorderCode != null  and workorderCode != ''"> and t.workorder_code = #{workorderCode}</if>             <if test="workorderCode != null  and workorderCode != '' and  processCode != null  "> and process_order_num  &gt; (select  min(process_order_num) from  pro_task  where workorder_code =#{workorderCode}  and process_code = #{processCode} ) </if>         </where>         order by process_order_num    limit 1     </select> 
https://blog.csdn.net/hmmmmm/article/details/124625612

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!