Procházet zdrojové kódy

Merge branch 'test' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dengfei

695593266@qq.com před 1 rokem
rodič
revize
f540b3a857

+ 3 - 2
src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue

@@ -303,9 +303,10 @@ export default {
           if (!task) {
             return;
           }
+
           html = `<p>审批人:${task.assigneeUser.nickname}</p>
                   <p>部门:${task.assigneeUser.deptName}</p>
-                  <p>结果:${this.getDictValue('流程实例的结果', task.result)}</p>
+                  <p>结果:${this.getDictValue('流程实例的结果', task.result+'')}</p>
                   <p>创建时间:${task.createTime}</p>`;
           if (task.endTime) {
             html += `<p>结束时间:${task.endTime}</p>`
@@ -322,7 +323,7 @@ export default {
           }
           console.log(html)
         } else if (element.type === 'bpmn:EndEvent' && this.processInstance) {
-          html = `<p>结果:${this.getDictValue('流程实例的结果', this.processInstance.result)}</p>`;
+          html = `<p>结果:${this.getDictValue('流程实例的结果', this.processInstance.result+'')}</p>`;
           if (this.processInstance.endTime) {
             html += `<p>结束时间:${this.processInstance.endTime}</p>`
           }

+ 52 - 5
src/enum/dict.js

@@ -42,7 +42,7 @@ export default {
   机构类型: 'group_type',
   工作流任务分配规则的类型: 'bpm_task_assign_rule_type',
   工作流任务分配自定义脚本: 'bpm_task_assign_script',
-  流程实例的结果: ' bpm_process_instance_result',
+  流程实例的结果: 'bpm_process_instance_result',
   角色数据权限字典: 'role_data_authority_dic',
   区域等级: 'main_area_level',
   区域类型: 'main_area_type',
@@ -65,13 +65,12 @@ export default {
   条码分类: 'strip_type',
   链接分类: 'link_type',
   架构分类: 'archit_type',
-  业务模块: 'business_module',
+  // 业务模块: 'business_module',
   事项类型: 'matter_type',
   贮藏: 'layBy',
   执行标准: 'enforceStandards',
   产地: 'purchase_origin',
-  文档类型: 'doc_type',
-
+  文档类型: 'doc_type'
 };
 
 export const numberList = [
@@ -232,7 +231,7 @@ export const produceTypeList = [
     value: 3
   }
 ];
- 
+
 //持证类型
 export const holderTypeOptions = [
   {
@@ -257,3 +256,51 @@ export const holderTypeOptions = [
     value: '6'
   }
 ];
+//业务模块
+export const businessModule = [
+  {
+    label: '系统管理',
+    value: 'sys_'
+  },
+
+  {
+    label: '主数据',
+    value: 'main_'
+  },
+  {
+    label: '文档管理',
+    value: 'doc_'
+  },
+  {
+    label: '企业运营',
+    value: 'eom_'
+  },
+  {
+    label: '排程',
+    value: 'aps_'
+  },
+  {
+    label: '制造执行',
+    value: 'mes_'
+  },
+  {
+    label: '设备管理',
+    value: 'eam_'
+  },
+  {
+    label: '仓储管理',
+    value: 'wms_'
+  },
+  {
+    label: '质量管理',
+    value: 'qms_'
+  },
+  {
+    label: '项目管理',
+    value: 'pro_'
+  },
+  {
+    label: '数据看板',
+    value: 'datascreen_'
+  }
+];

+ 37 - 34
src/views/material/product/components/QualityInfo.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="other">
-    <el-form label-width="100px" ref="form" :model="form" :rules="rules">
-      <div class="divider">
+    <el-form label-width="130px" ref="form" :model="form" :rules="rules">
+      <div class="divider" v-if="form.dataType == 1">
         <div class="title">
           <div class="ele-bg-primary"></div>
           <span>质量配置</span>
@@ -10,7 +10,7 @@
       </div>
       <el-row :gutter="24">
         <el-col :span="4">
-          <el-form-item label="是否来料检验" prop="isComeCheck">
+          <el-form-item :label="form.dataType == 1?'是否采购来料检验':'是否委外来料检验'" prop="isComeCheck">
             <el-radio v-model="form.isComeCheck" :label="1">是</el-radio>
             <el-radio v-model="form.isComeCheck" :label="0">否</el-radio>
           </el-form-item>
@@ -39,6 +39,7 @@
               style="width: 100%"
               v-model="form.levelItem"
               placeholder="请选择"
+              disabled
             >
               <el-option
                 v-for="item in levelOptions"
@@ -77,25 +78,6 @@
           </el-form-item>
         </el-col>
 
-        <!-- <el-col :span="8" v-if="form.isComeCheck == 1">
-          <el-form-item label="质检方案" prop="">
-            <el-select
-              style="width: 100%"
-              v-model="form.qualityTemplateIds"
-              filterable
-              multiple
-            >
-              <el-option
-                v-for="item in qualityTemplateList"
-                :key="item.id"
-                :value="item.id"
-                :label="item.qualitySchemeTemplateName"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col> -->
-      </el-row>
-      <el-row>
         <el-col :span="8" v-if="form.isComeCheck == 1">
           <el-form-item label="质检方案" prop="qualityTemplateIds">
             <el-select
@@ -132,7 +114,24 @@
     data() {
       return {
         qualityTemplateList: [],
-        levelOptions: [],
+        levelOptions: [
+          {
+            label: '特级',
+            value: '特级'
+          },
+          {
+            label: '一级',
+            value: '一级'
+          },
+          {
+            label: '二级',
+            value: '二级'
+          },
+          {
+            label: '三级',
+            value: '三级'
+          }
+        ],
         inspectionStandardsList: [],
         rules: {
           checkFormula: [
@@ -155,20 +154,24 @@
     watch: {},
     created() {
       this.getQualityTemplateList();
-      this.getDictList('level_type');
+
       this.getDictListIqoCode('iqo_code');
     },
     methods: {
-      async getDictList(code) {
-        // debugger;
-        let { data: res } = await getByCode(code);
-        this.levelOptions = res.map((item) => {
-          let values = Object.keys(item);
-          return {
-            value: Number(values[0]),
-            label: item[values[0]]
-          };
-        });
+      // async getDictList(code) {
+      //   // debugger;
+      //   let { data: res } = await getByCode(code);
+      //   this.levelOptions = res.map((item) => {
+      //     let values = Object.keys(item);
+      //     return {
+      //       value: Number(values[0]),
+      //       label: item[values[0]]
+      //     };
+      //   });
+      // },
+      levelChange(val){
+        this.form.levelItem=val
+
       },
       async getDictListIqoCode(code) {
         let { data: res } = await getByCode(code);

+ 12 - 2
src/views/material/product/components/index-data.vue

@@ -467,7 +467,7 @@
           },
           {
             prop: 'isComeCheck',
-            label: '是否来料检验',
+            label: '是否采购来料检验',
             align: 'center',
             minWidth: 120,
             formatter: (row, column) => {
@@ -475,7 +475,17 @@
             },
             showOverflowTooltip: true
           },
-
+          {
+            prop: 'isOutsourcingCheck',
+            label: '是否委外来料检验',
+            align: 'center',
+            minWidth: 120,
+            formatter: (row, column) => {
+              return row.isOutsourcingCheck == 1 ? '是' : '否';
+            },
+            showOverflowTooltip: true
+          },
+          
           {
             prop: 'measuringUnit',
             label: '计量单位',

+ 61 - 12
src/views/material/product/detail.vue

@@ -252,6 +252,7 @@
                   style="width: 100%"
                   v-model="form.level"
                   placeholder="请选择"
+                  @change="levelChange"
                 >
                   <el-option
                     v-for="item in levelOptions"
@@ -340,9 +341,15 @@
     <!-- 计划 -->
     <PlanInfo ref="planRefs" :form="categoryAps" />
     <!-- 质量配置 -->
-    <QualityInfo ref="qualityRefs" :form="categoryQms" />
+
+    <QualityInfo
+      ref="qualityRefs"
+      :form="item"
+      v-for="(item, index) in categoryQms"
+      :key="index"
+    />
     <!-- 舟皿信息 -->
-    <BoatInfo ref="qualityRefs" :form="categoryPallet" />
+    <BoatInfo :form="categoryPallet" />
     <!-- 周转车信息 -->
     <TurnoverInfo ref="turnoverRefs" :form="categoryVehicle" />
     <!-- 模具信息 -->
@@ -392,6 +399,42 @@
   import { deepClone } from '@/utils/index';
   import { finishPageTab, reloadPageTab } from '@/utils/page-tab-util';
   import { produceTypeList } from '@/enum/dict.js';
+import { copyObj } from '@/utils/util';
+
+  const defCategoryQms = [
+    {
+      categoryId: '',
+      checkDepart: null,
+      checkFormula: null,
+      checkPerson: null,
+      checkProportion: null,
+      createTime: '',
+      createUserId: '',
+      inspectionStandards: null,
+      isComeCheck: 0,
+      // level: '',
+      levelItem: null,
+      netWeight: null,
+      qualityTemplateIds: [],
+      dataType: 1
+    },
+    {
+      categoryId: '',
+      checkDepart: null,
+      checkFormula: null,
+      checkPerson: null,
+      checkProportion: null,
+      createTime: '',
+      createUserId: '',
+      inspectionStandards: null,
+      isComeCheck: 0,
+      // level: '',
+      levelItem: null,
+      netWeight: null,
+      qualityTemplateIds: [],
+      dataType: 2
+    }
+  ];
 
   export default {
     name: 'product',
@@ -527,9 +570,7 @@
         categoryMes: { productionDays: '1' },
         categoryMold: {},
         categoryPallet: {},
-        categoryQms: {
-          isComeCheck: '1'
-        },
+        categoryQms: [...copyObj(defCategoryQms)],
         categoryVehicle: {},
         categoryWms: {
           isUnpack: 1,
@@ -655,7 +696,8 @@
             };
             this.categoryMold = {};
             this.categoryPallet = {};
-            this.categoryQms = {};
+            this.categoryQms = [...copyObj(defCategoryQms)];
+     
             this.categoryVehicle = {};
             this.categoryWms = {
               isUnpack: 1,
@@ -916,10 +958,12 @@
         } else {
           this.categoryPurchase = info.categoryPurchase;
         }
-        if (typeof info.categoryQms == 'string') {
-          this.categoryQms = {};
-        } else {
-          this.categoryQms = info.categoryQms;
+        if (!info.categoryQms||!info.categoryQms?.length) {
+          this.categoryQms = [...copyObj(defCategoryQms)];
+        } else if(info.categoryQms.length==1) { //历史数据处理
+          this.categoryQms = [info.categoryQms[0],copyObj(defCategoryQms[1])];
+        }else{
+          this.categoryQms=info.categoryQms
         }
         if (typeof info.categoryVehicle == 'string') {
           this.categoryVehicle = {};
@@ -959,7 +1003,12 @@
           });
         });
       },
-
+      levelChange(val) {
+        this.$refs.qualityRefs?.forEach((item) => {
+          item.levelChange(val);
+          // console.log(item)
+        });
+      },
       // 确定分类
       async confirmCategory(node, title, PathInfo, ruleCode) {
         if (this.status != 0) {
@@ -1188,7 +1237,7 @@
             data.categoryMes.id = null;
             data.categoryMold.id = null;
             data.categoryPallet.id = null;
-            data.categoryQms.id = null;
+            // data.categoryQms.id = null;
             data.categoryVehicle.id = null;
             data.packageDispositionVOList = data.packageDispositionVOList.map(
               (item) => {

+ 14 - 8
src/views/system/dictionary/components/dict-data.vue

@@ -6,7 +6,6 @@
       :columns="columns"
       :datasource="datasource"
       :need-page="true"
-      :toolkit="[]"
       :selection.sync="selection"
       height="calc(100vh - 350px)"
       full-height="calc(100vh - 116px)"
@@ -14,6 +13,8 @@
       cache-key="systemDictDataTable"
       :pageSize="this.$store.state.tablePageSize"
       @filter-change="selectType"
+      @columns-change="handleColumnChange"
+      :cache-key="cacheKeyUrl"
     >
       <!-- 表头工具栏 -->
       <!-- <template v-slot:toolbar>
@@ -81,11 +82,15 @@
   } from '@/api/system/dictionary-data';
   import { listDictionaries, removeDictionary } from '@/api/system/dictionary';
   import DictEdit from './dict-edit.vue';
+  import tabMixins from '@/mixins/tableColumnsMixin';
 
   export default {
     components: { DictDataSearch, DictDataEdit, DictEdit },
+    mixins: [tabMixins],
+
     data() {
       return {
+        cacheKeyUrl: 'main-ad4181af-syste-dictionary',
         // 表格列配置
         columns: [
           {
@@ -120,15 +125,16 @@
           //   showOverflowTooltip: true,
           //   minWidth: 110
           // },
-          {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
+          {
+            //修改此prop名称时,请同步修改columnKey属性和下方selectType方法
             prop: 'appType',
             align: 'center',
             label: '应用类型',
             showOverflowTooltip: true,
             slot: 'appType',
-            filters:[
-              { value: 1, text:'业务字段' },
-              { value: 2, text:'数据字典' },
+            filters: [
+              { value: 1, text: '业务字段' },
+              { value: 2, text: '数据字典' }
             ],
             filterMultiple: false,
             columnKey: 'appType'
@@ -175,11 +181,11 @@
 
     methods: {
       selectType(value) {
-        let where = {}
+        let where = {};
         if (value.appType.length > 0) {
-          where['appType'] = value.appType[0]
+          where['appType'] = value.appType[0];
         }
-        this.reload(where)
+        this.reload(where);
       },
       /* 表格数据源 */
       datasource({ page, limit, where, order }) {

+ 1 - 5
src/views/system/dictionary/index.vue

@@ -50,10 +50,9 @@
           :current.sync="current"
           highlight-current-row
           class="dict-table"
+          :toolkit="[]"
           tool-class="ele-toolbar-actions"
           @done="done"
-          @columns-change="handleColumnChange"
-          :cache-key="cacheKeyUrl"
         >
           <!-- 表头工具栏 -->
           <template v-slot:toolbar> </template>
@@ -75,16 +74,13 @@
   import DictEdit from './components/dict-edit.vue';
   import DictDataSearch from './components/dict-data-search.vue';
   import { listDictionaries, removeDictionary } from '@/api/system/dictionary';
-  import tabMixins from '@/mixins/tableColumnsMixin';
 
   export default {
     name: 'SystemDictionary',
     components: { DictData, DictEdit, DictDataSearch },
-    mixins: [tabMixins],
 
     data() {
       return {
-        cacheKeyUrl: 'main-ad4181af-syste-dictionary',
         // 表格列配置
         columns: [
           {

+ 23 - 3
src/views/system/parmasManage/addOrEditDialog.vue

@@ -13,7 +13,24 @@
       <el-row>
         <el-col :span="24">
           <el-form-item label="模块名称:" prop="moduleCode">
-            <dictSelection :isProhibit="type=='view'" v-model="dialogForm.moduleCode" clearable dict-name="业务模块" @itemChange="(val)=>getDictName(val,'moduleName') "></dictSelection>
+            
+            <el-select
+              style="width: 100%"
+              v-model="dialogForm.moduleCode"
+              @change="holderTypeChange"
+              :disabled="type=='view'"
+              clearable
+            >
+              <el-option
+                :label="item.label"
+                :value="item.value"
+                v-for="(item, index) in businessModule"
+                :key="index"
+                @click="getDictName(item)"
+              >
+              </el-option>
+            </el-select>
+            <!-- <dictSelection :isProhibit="type=='view'" v-model="dialogForm.moduleCode" clearable dict-name="业务模块" @itemChange="(val)=>getDictName(val,'moduleName') "></dictSelection> -->
           </el-form-item>
         </el-col>
         <el-col :span="24">
@@ -54,6 +71,8 @@
 
 <script>
 import {parameterGetByIdAPI, parameterSaveAPI, updateParameterAPI} from "@/api/system/parmasManage";
+import { businessModule } from '@/enum/dict.js';
+
 
 export default {
   name: "addOrEditDialog",
@@ -73,6 +92,7 @@ export default {
         name: '',
         value: '',
       },
+      businessModule,
       rules: {
         moduleCode:{required:true,message:'请选择模块名称',trigger:'change'},
         code:{required:true,message:'请输入编码',trigger:'blur'},
@@ -98,8 +118,8 @@ export default {
     async getInfo(id) {
       this.dialogForm = await parameterGetByIdAPI(id)
     },
-    getDictName(val,name){
-      this.dialogForm[name] = val.dictValue;
+    getDictName(item){
+      this.dialogForm[name] = item.label;
     },
     handelConfirm() {
       this.$refs.form.validate(async (valid) => {

+ 52 - 42
src/views/system/parmasManage/search.vue

@@ -10,20 +10,28 @@
     <el-row :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="编码:">
-          <el-input
-            clearable
-            v-model.trim="where.code"
-            placeholder="请输入"
-          />
+          <el-input clearable v-model.trim="where.code" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="模块名称:">
-          <dictSelection v-model="where.moduleCode" clearable dict-name="业务模块"></dictSelection>
+          <el-select style="width: 100%" v-model="where.moduleCode" clearable>
+            <el-option
+              :label="item.label"
+              :value="item.value"
+              v-for="(item, index) in businessModule"
+              :key="index"
+            >
+            </el-option>
+          </el-select>
+          <!-- <dictSelection v-model="where.moduleCode" clearable dict-name="业务模块"></dictSelection> -->
         </el-form-item>
       </el-col>
 
-      <el-col style="display: flex;justify-content: flex-end" v-bind="styleResponsive ? { lg: 12, md: 24 } : { span: 12 }">
+      <el-col
+        style="display: flex; justify-content: flex-end"
+        v-bind="styleResponsive ? { lg: 12, md: 24 } : { span: 12 }"
+      >
         <div class="ele-form-actions">
           <el-button
             type="primary"
@@ -41,43 +49,45 @@
 </template>
 
 <script>
-import { getRolesListAPI } from '@/api/system/role';
+  import { getRolesListAPI } from '@/api/system/role';
+  import { businessModule } from '@/enum/dict.js';
 
-export default {
-  data() {
-    // 默认表单数据
-    const defaultWhere = {
-      moduleCode: '',
-      code:''
-    };
-    return {
-      // 表单数据
-      where: { ...defaultWhere },
-      roleList: []
-    };
-  },
-  computed: {
-    // 是否开启响应式布局
-    styleResponsive() {
-      return this.$store.state.theme.styleResponsive;
-    }
-  },
-  created() {
-    this.getRolesList();
-  },
-  methods: {
-    async getRolesList() {
-      this.roleList = await getRolesListAPI();
+  export default {
+    data() {
+      // 默认表单数据
+      const defaultWhere = {
+        moduleCode: '',
+        code: ''
+      };
+      return {
+        // 表单数据
+        where: { ...defaultWhere },
+        roleList: [],
+        businessModule
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
     },
-    /* 搜索 */
-    search() {
-      this.$emit('search', this.where);
+    created() {
+      this.getRolesList();
     },
-    /*  重置 */
-    reset() {
-      this.where = { ...this.defaultWhere };
-      this.search();
+    methods: {
+      async getRolesList() {
+        this.roleList = await getRolesListAPI();
+      },
+      /* 搜索 */
+      search() {
+        this.$emit('search', this.where);
+      },
+      /*  重置 */
+      reset() {
+        this.where = { ...this.defaultWhere };
+        this.search();
+      }
     }
-  }
-};
+  };
 </script>

+ 10 - 10
src/views/technology/production/components/user-edit.vue

@@ -81,23 +81,23 @@
 
         <el-col :span="8">
           <el-form-item label="工序休息时长:">
-            <el-input v-model="form.workBeat.restTimes" placeholder="请输入" />
+            <el-input v-model="form.workBeat.restTimes" placeholder="请输入"  type="number" />
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="工序准备时长:">
-            <el-input v-model="form.workBeat.preTimes" clearable placeholder="请输入" />
+            <el-input v-model="form.workBeat.preTimes" clearable placeholder="请输入"  type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="设备生产时长:">
-            <el-input v-model="form.workBeat.proTimes" placeholder="请输入" />
+            <el-input v-model="form.workBeat.proTimes" placeholder="请输入"  type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="其他时长:">
-            <el-input placeholder="请输入" v-model="form.workBeat.otherTimes" />
+            <el-input placeholder="请输入" v-model="form.workBeat.otherTimes"  type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -142,32 +142,32 @@
 
         <el-col :span="12">
           <el-form-item label="下工序标准准备时间:" label-width="200px">
-            <el-input v-model="form.intervalTime.nextStandardPreTime" placeholder="请输入" />
+            <el-input v-model="form.intervalTime.nextStandardPreTime" placeholder="请输入" type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="下工序最短准备时间:" label-width="200px">
-            <el-input v-model="form.intervalTime.nextShortPreTime" placeholder="请输入" />
+            <el-input v-model="form.intervalTime.nextShortPreTime" placeholder="请输入" type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="本工序标准等待时间:" label-width="200px">
-            <el-input v-model="form.intervalTime.thisStandardWaitTime" placeholder="请输入" />
+            <el-input v-model="form.intervalTime.thisStandardWaitTime" placeholder="请输入" type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="本工序最短准备时间:" label-width="200px">
-            <el-input v-model="form.intervalTime.thisShortPreTime" placeholder="请输入" />
+            <el-input v-model="form.intervalTime.thisShortPreTime" placeholder="请输入" type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="本工序结束后标准周转时间:" label-width="200px">
-            <el-input v-model="form.intervalTime.thisStandardBoatTime" placeholder="请输入" />
+            <el-input v-model="form.intervalTime.thisStandardBoatTime" placeholder="请输入" type="number" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="本工序结束后周转最短时间:" label-width="200px">
-            <el-input v-model="form.intervalTime.thisShortBoatTime" placeholder="请输入" />
+            <el-input v-model="form.intervalTime.thisShortBoatTime" placeholder="请输入" type="number" />
           </el-form-item>
         </el-col>
       </el-row>

+ 6 - 3
src/views/technology/work/components/user-edit.vue

@@ -90,6 +90,7 @@
 
 <script>
   import work from '@/api/technology/work';
+  import { getCode } from '@/api/codeManagement/index.js';
 
   export default {
     props: {
@@ -156,9 +157,9 @@
     },
     methods: {
       codeExists(rule, value, callback) {
-        debugger;
+        // debugger;
         work.centerCodeExists(this.form.code).then((result) => {
-          debugger;
+          // debugger;
           if (result.data) {
             callback(new Error('工作中心编码已存在!'));
           } else {
@@ -210,10 +211,12 @@
               this.isUpdate = true;
             } else {
               this.isUpdate = false;
-              this.form.code = '';
+              this.form.code = await getCode('work_center')
             }
           } else {
             this.isUpdate = false;
+            this.form.code = await getCode('work_center')
+
           }
         } else {
           this.$refs.form.clearValidate();