Просмотр исходного кода

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

quwangxin 2 лет назад
Родитель
Сommit
247777111b

+ 17 - 0
src/api/technology/version/version.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request';
+
+/**
+ * 分页查询用户
+ * @param params 查询条件
+ */
+export async function pageList (params) {
+  let par = new URLSearchParams(params);
+  const res = await request.get(
+    `/main/produceversion/page?` + par,
+    params
+  );
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 4 - 1
src/enum/dict.js

@@ -25,7 +25,10 @@ export default {
   价格单位: 'price_unit',
   检验方案: 'inspection_scheme',
   文件模块: 'file_module',
+  产能计划周期: 'capacity_cycle',
+  产量目标单位: 'target_unit',
+  产能计划状态: 'capacity_status',
   分类层级: 'bom_level'
 };
 
-export const numberList = [];
+export const numberList = ['capacity_cycle', 'target_unit', 'capacity_status'];

+ 90 - 11
src/views/factoryModel/productionLine/components/edit.vue

@@ -201,9 +201,9 @@
         header="产能计划"
         body-style="padding: 0 22px 10px 22px;"
       >
-        <el-button type="primary" class="add-btn">添加</el-button>
+        <el-button type="primary" class="add-btn" @click="addItem">添加</el-button>
         <el-table
-          :data="planList"
+          :data="form.mainFactoryCapacityList"
           tooltip-effect="dark"
           style="width: 100%"
           :header-cell-style="{
@@ -212,26 +212,59 @@
           }"
         >
           <el-table-column prop="code" label="计划周期">
-            <!-- <template slot-scope="{ row }">
-              <div>{{ row.code }}</div>
-            </template> -->
+            <template slot-scope="{ row }">
+              <div style="width: 95%;">
+                <DictSelection dictName="产能计划周期" disabled clearable v-model="row.type">
+                </DictSelection>
+              </div>
+            </template>
           </el-table-column>
           <el-table-column label="计划时段">
+            <template slot-scope="{ row }">
+              <el-date-picker
+                style="width: 95%;"
+                v-model="row.periodTime"
+                type="month"
+                value-format="yyyy-MM"
+                placeholder="选择月">
+              </el-date-picker>
+            </template>
           </el-table-column>
-          <el-table-column label="产量目标">
+          <el-table-column label="产量目标" width="300">
+             <template slot-scope="{ row }">
+                <div class="row-div">
+                    <el-input
+                      clearable
+                      :maxlength="20"
+                      v-model="row.capacityTarget"
+                    />
+                    <DictSelection dictName="产量目标单位" clearable v-model="row.capacityUnit">
+                    </DictSelection>
+                </div>
+             </template>
           </el-table-column>
-          <el-table-column label="创建人">
+          <el-table-column label="创建人" prop="createUserName">
           </el-table-column>
-          <el-table-column label="创建时间">
+          <el-table-column label="创建时间"  prop="createTime">
+             <template slot-scope="{ row }">
+                {{ changeTime(row.createTime) }}
+             </template>
           </el-table-column>
           <el-table-column label="状态">
+             <template slot-scope="{ row }">
+                <div>
+                    <DictSelection dictName="产能计划状态" disabled v-model="row.status">
+                    </DictSelection>
+                </div>
+             </template>
           </el-table-column>
           <el-table-column width="80" label="操作">
             <template slot-scope="scope">
               <el-button
                 size="mini"
                 type="danger"
-                >删除
+                @click="delItem(scope.$index,scope.row)"
+              >删除
               </el-button>
             </template>
           </el-table-column>
@@ -251,6 +284,7 @@
 <script>
 import { saveOrUpdate, listWorkshopByParentId } from '@/api/factoryModel';
 import { getUserPage } from '@/api/system/organization';
+import { deepClone } from '@/components/FormGenerator/utils';
 import { cityDataLabel } from 'ele-admin/packages/utils/regions';
 export default {
   props: {
@@ -291,6 +325,7 @@ export default {
       enabled: 1,
       parentId: '',
       remark: '',
+      mainFactoryCapacityList:[],
       type: 4  //  FACTORY(1, "工厂"), WORKSHOP_PLAN(2, "厂房"), WORKSHOP(3, "车间"), LINE(4, "厂线");
     };
     return {
@@ -334,7 +369,7 @@ export default {
         ],
         cityDataLabel
       },
-      planList:[]
+      delList:[]
     };
   },
   computed: {
@@ -352,6 +387,39 @@ export default {
     }
   },
   methods: {
+    getTime(){
+       const d = new Date();
+       const year = d.getFullYear()
+       const month = (d.getMonth() + 1).toString().padStart(2,0)
+       const day = d.getDate()
+       return `${year}-${month}-${day}`
+    },
+    addItem(){
+       const time = this.getTime()
+       const item = {
+           type:2,
+           periodTime:'',
+           capacityTarget:'',
+           capacityUnit:null,
+           status:1,
+           createUserName:this.$store.state.user.info.name,
+           createTime:time
+       }
+       this.form.mainFactoryCapacityList.push(item)
+    },
+    delItem (index,row) {
+      row.deleted = 1
+      this.delList.push(row)
+      this.form.mainFactoryCapacityList.splice(index, 1)
+    },
+    changeTime(str){
+       var index = str.indexOf(' ')
+       var time = str
+       if(index>0){
+          time = str.substring(0,index)
+       }
+       return time
+    },
     open(type, row) {
       this.type = type;
       this.visible = true;
@@ -385,7 +453,9 @@ export default {
         if (this.type == 'add') {
           delete this.form.id;
         }
-        saveOrUpdate(this.form)
+        let params = deepClone(this.form)
+        params.mainFactoryCapacityList = params.mainFactoryCapacityList.concat(this.delList)
+        saveOrUpdate(params)
           .then((msg) => {
             this.loading = false;
             this.$message.success(msg);
@@ -405,6 +475,7 @@ export default {
     handleClose() {
       this.restForm();
       this.visible = false;
+      this.delList = []
     },
     // 格式化公司数据
     toTreeData(val) {
@@ -471,4 +542,12 @@ export default {
   display:black;
   margin: 20px 0;
 }
+.row-div{
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+  .el-input{
+    margin-right:10px;
+  }
+}
 </style>

+ 6 - 1
src/views/factoryModel/productionLine/index.vue

@@ -156,6 +156,11 @@ export default {
       });
     },
     openEdit(type, row) {
+      if(row){
+        if(typeof row.mainFactoryCapacityList == 'string'){
+           this.$set(row,'mainFactoryCapacityList', [])
+        }
+      }
       this.$refs.edit.open(type, row);
     },
     // 获取公司数据
@@ -208,4 +213,4 @@ export default {
     }
   }
 };
-</script>
+</script>

+ 28 - 12
src/views/factoryModel/station/components/AssetSelection.vue

@@ -52,11 +52,19 @@
          highlight-current-row
          @row-click="single"
        >
-         <el-table-column label="设备编码" prop="code" width="200"></el-table-column>
-         <el-table-column label="设备分类" prop="name"></el-table-column>
-         <el-table-column label="设备名称" prop="remark"></el-table-column>
-         <el-table-column label="型号" prop="name"></el-table-column>
-         <el-table-column label="供应商" prop="remark"></el-table-column>
+         <el-table-column label="设备编码" prop="code"></el-table-column>
+         <el-table-column label="设备分类" prop="categoryLevelPath">
+             <template slot-scope="{row}">
+               {{ row.category.categoryLevelPath }}
+             </template>
+         </el-table-column>
+         <el-table-column label="设备名称" prop="name"></el-table-column>
+         <el-table-column label="型号" prop="modelType">
+            <template slot-scope="{row}">
+              {{ row.category.modelType }}
+            </template>
+         </el-table-column>
+         <!-- <el-table-column label="供应商" prop="remark"></el-table-column> -->
          <el-table-column label="选择" align="center">
             <template slot-scope="scope">
          	 <el-radio class="radio" v-model="radio" :label="scope.row.id"><i></i></el-radio>
@@ -108,18 +116,26 @@ export default {
         this.current = row
         this.radio = row.id
     },
-    open() {
+    open(data) {
+      if(data){
+         this.radio = data.assetId
+         this.current = {
+           code:data.assetCode,
+           name:data.assetName
+         }
+      }
       this.dialogVisible = true;
       this.getList();
     },
     getList(){
        let params = {
-          rootCategoryLevelId:'1666337718796607490',
+          rootCategoryLevelId:'4',
           ...this.search,
           ...this.pagination
         }
        getAssetList(params).then(res=>{
-           console.log('rrr',res)
+          this.tableData = res.list
+          this.total = res.count
        })
     },
     reset(){
@@ -137,16 +153,16 @@ export default {
     },
     //保存
     sumbit() {
-      if (this.selectStafflist.length === 0) {
+      if (!this.current) {
         this.$message.warning('请选择设备');
       } else {
-        this.$emit('confirm', JSON.parse(JSON.stringify(this.selectStafflist)));
+        this.$emit('confirm', this.current);
         this.handleClose();
       }
     },
     handleClose() {
-      this.staffList = [];
-      this.selectStafflist = [];
+      this.current = null;
+      this.radio = null;
       this.dialogVisible = false;
     }
   }

+ 92 - 51
src/views/factoryModel/station/components/edit.vue

@@ -55,19 +55,19 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="设备编码:" prop="assetCode">
+            <el-form-item label="设备编码:" prop="extInfo.assetCode">
               <el-input
-                v-model="form.assetCode"
+                v-model="form.extInfo.assetCode"
                 readonly
                 @click.native="chooseAsset"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="设备名称:" prop="assetName">
+            <el-form-item label="设备名称:" prop="extInfo.assetName">
               <el-input
                 disabled
-                v-model="form.assetName"
+                v-model="form.extInfo.assetName"
               />
             </el-form-item>
           </el-col>
@@ -139,14 +139,14 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="所属工作中心:" prop="workCenterId">
+            <el-form-item label="所属工作中心:" prop="extInfo.workCenterId">
               <el-select
-                v-model="form.workCenterId"
+                v-model="form.extInfo.workCenterId"
                 placeholder="请选择"
                 style="width: 100%"
               >
                 <el-option
-                  v-for="item in options.productionLineId"
+                  v-for="item in options.workCenterList"
                   :key="item.id"
                   :label="item.name"
                   :value="item.id"
@@ -156,14 +156,14 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="可执行工序:" prop="processId">
+            <el-form-item label="可执行工序:" prop="extInfo.produceId">
               <el-select
-                v-model="form.processId"
+                v-model="form.extInfo.produceId"
                 placeholder="请选择"
                 style="width: 100%"
               >
                 <el-option
-                  v-for="item in options.productionLineId"
+                  v-for="item in options.produceList"
                   :key="item.id"
                   :label="item.name"
                   :value="item.id"
@@ -172,6 +172,24 @@
               </el-select>
             </el-form-item>
           </el-col>
+
+         <el-col :span="8">
+            <el-form-item label="状态:" prop="enabled">
+              <el-select
+                v-model="form.enabled"
+                placeholder="请选择"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in options.enabled"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="14">
             <el-form-item label="节拍时间:" prop="extInfo.meterTime">
               <div class="workMeter-warp">
@@ -182,19 +200,8 @@
                   v-model="form.extInfo.meterTime"
                   placeholder="请输入"
                 />
-                <el-select
-                  class="s2"
-                  v-model="form.extInfo.meterTimeUnit"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in options.meterTimeUnit"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
+                <DictSelection style="width:30%" dictName="计量单位" clearable v-model="form.extInfo.meterMeasuringUnit">
+                </DictSelection>
                 <span class="s3">/</span>
                 <el-select
                   class="s2"
@@ -213,23 +220,6 @@
             </el-form-item>
           </el-col>
 
-<!--          <el-col :span="8">
-            <el-form-item label="状态:" prop="enabled">
-              <el-select
-                v-model="form.enabled"
-                placeholder="请选择"
-                style="width: 100%"
-              >
-                <el-option
-                  v-for="item in options.enabled"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                >
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col> -->
 
           <el-col :span="24">
             <el-form-item label="备注:" prop="remark">
@@ -273,6 +263,8 @@ import {
 } from '@/api/factoryModel';
 import { getUserPage } from '@/api/system/organization';
 import AssetSelection from './AssetSelection.vue';
+import producetask from '@/api/technology/production';
+import work from '@/api/technology/work';
 export default {
   components: {
     AssetSelection
@@ -306,7 +298,12 @@ export default {
           workshopId: '', // 车间
           principalDep: '', // 负责人部门
           meterTimeUnit: '时', // 节拍时间单位
-          meterTime: '' // 节拍时间
+          meterTime: '' ,// 节拍时间
+          assetCode:'',  //设备编码
+          assetName:''   ,//设备名称
+          meterMeasuringUnit:'', // 节拍计量单位
+          workCenterId:null,  //所属工作中心
+          produceId:null      //可执行工序
         },
         id: '',
         leaderId: '', // 负责人
@@ -332,11 +329,27 @@ export default {
         'extInfo.principalDep': [
           { required: true, message: '请输入', trigger: 'change' }
         ],
+        'extInfo.assetCode': [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
+        'extInfo.assetName': [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
         'extInfo.workshopId': {
           required: true,
           message: '请输入',
           trigger: 'change'
         },
+        'extInfo.workCenterId':{
+           required: true,
+           message: '请输入',
+           trigger: 'change'
+        },
+        'extInfo.produceId':{
+           required: true,
+           message: '请输入',
+           trigger: 'change'
+        },
         productionLineId: {
           required: true,
           message: '请输入',
@@ -354,6 +367,8 @@ export default {
       options: {
         leaderId: [],
         workshopId: [],
+        workCenterList:[],
+        produceList:[],
         enabled: [
           {
             label: '生效',
@@ -402,11 +417,13 @@ export default {
   },
   methods: {
     chooseAsset(){
-        this.$refs.equipmentTable.open()
+        this.$refs.equipmentTable.open(this.form.extInfo)
     },
-    
+
     assetConfirm(data){
-      
+      this.form.extInfo.assetCode = data.code
+      this.form.extInfo.assetName = data.name
+      this.form.extInfo.assetId = data.id
     },
 
     open(type, row) {
@@ -434,6 +451,8 @@ export default {
           this.getUserPage();
         }
       }
+      this.getListWorkCenter()
+      this.getListProduce()
     },
     /* 保存编辑 */
     save() {
@@ -446,13 +465,19 @@ export default {
         if (this.type == 'add') {
           delete this.form.id;
         }
-        this.form.workstationSubstanceList =
-          this.$refs.equipmentTable.datasource.map((n) => {
-            return {
-              type: 1,
-              substanceId: n.id
-            };
-          });
+        // this.form.workstationSubstanceList =
+        //   this.$refs.equipmentTable.datasource.map((n) => {
+        //     return {
+        //       type: 1,
+        //       substanceId: n.id
+        //     };
+        //   });
+        this.form.workstationSubstanceList = [
+          {
+             type: 1,
+             substanceId: this.form.extInfo.assetId
+          }
+        ]
         saveOrUpdate_gw(this.form)
           .then((msg) => {
             this.loading = false;
@@ -485,6 +510,21 @@ export default {
         parentIdField: 'parentId'
       });
     },
+
+    // 获取工作中心
+    getListWorkCenter(){
+        work.list({ pageNum: 1,  size: -1 }).then(res=>{
+            this.options.workCenterList = res.list;
+        })
+    },
+
+    // 获取工序
+    getListProduce(){
+        producetask.list({ pageNum: 1,  size: -1 }).then(res=>{
+            this.options.produceList = res.list;
+        })
+    },
+
     // 获取车间
     getListWorkshopByParentId() {
       listWorkshopByParentId(this.form.extInfo.factoryId).then((res) => {
@@ -559,6 +599,7 @@ export default {
 .workMeter-warp {
   .s1 {
     width: 30%;
+    margin-right: 10px;
   }
   .s2 {
     width: 20%;

+ 6 - 6
src/views/technology/version/components/user-search.vue

@@ -9,19 +9,19 @@
     <el-row>
       <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 4 }">
         <el-form-item label="产品编码:">
-          <el-input clearable v-model="where.code" placeholder="请输入" />
+          <el-input clearable v-model="where.categoryCode" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 4 }">
         <el-form-item label="产品名称:">
-          <el-input clearable v-model="where.name" placeholder="请输入" />
+          <el-input clearable v-model="where.categoryName" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 4 }">
         <el-form-item label="版本号:">
           <el-input
             clearable
-            v-model="where.version"
+            v-model="where.code"
             placeholder="请输入"
           />
         </el-form-item>
@@ -30,7 +30,7 @@
         <el-form-item label="版本名称:">
           <el-input
             clearable
-            v-model="where.versionName"
+            v-model="where.name"
             placeholder="请输入"
           />
         </el-form-item>
@@ -62,8 +62,8 @@
       const defaultWhere = {
         code: '',
         name: '',
-        version: '',
-        versionName: ''
+        categoryCode: '',
+        categoryName: ''
       };
       return {
         // 表单数据

+ 28 - 76
src/views/technology/version/index.vue

@@ -12,22 +12,22 @@
         row-key="code"
       >
         <!-- 表头工具栏 -->
-<!--        <template v-slot:toolbar>
+       <template v-slot:toolbar>
           <el-button
             size="small"
             type="primary"
-            icon="el-icon-plus"
+            icon="el-icon-refresh-left"
             class="ele-btn-icon"
-            @click="openEdit()"
+            @click="toRefresh()"
           >
-            新
+            
           </el-button>
-        </template> -->
+        </template>
 
         <!-- 状态列 -->
-        <template v-slot:status="{ row }">
+<!--        <template v-slot:status="{ row }">
           {{ checkStatus(row) }}
-        </template>
+        </template> -->
 
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
@@ -48,7 +48,7 @@
 
 <script>
   import UserSearch from './components/user-search.vue';
-  import route from '@/api/technology/route';
+  import { pageList } from '@/api/technology/version/version.js';
   export default {
     name: 'technologyVersion',
     components: {
@@ -58,22 +58,15 @@
       return {
         // 表格列配置
         columns: [
-          // {
-          //   columnKey: 'selection',
-          //   type: 'selection',
-          //   width: 45,
-          //   align: 'center',
-          //   fixed: 'left'
-          // },
           {
-            prop: 'code',
+            prop: 'categoryCode',
             label: '产品编码',
             showOverflowTooltip: true,
             align: 'center',
             minWidth: 110
           },
           {
-            prop: 'name',
+            prop: 'categoryName',
             label: '产品名称',
             showOverflowTooltip: true,
             align: 'center',
@@ -81,30 +74,29 @@
           },
           {
             align: 'center',
-            prop: 'categoryCode',
+            prop: 'code',
             label: '版本号',
             showOverflowTooltip: true,
             minWidth: 110
           },
           {
-            prop: 'categoryName',
+            prop: 'name',
             label: '版本名称',
             align: 'center',
             showOverflowTooltip: true,
             minWidth: 110
           },
           {
-            prop: 'version',
+            prop: 'routingCode',
             label: '工艺路线编码',
             align: 'center',
             showOverflowTooltip: true,
             minWidth: 110
           },
           {
-            prop: 'status',
+            prop: 'routingVersion',
             label: '工艺版本号',
             align: 'center',
-            slot: 'status',
             showOverflowTooltip: true,
             minWidth: 110
           },
@@ -136,20 +128,22 @@
     },
     methods: {
       /* 表格数据源 */
-      async datasource({ page, limit, where, order }) {
-        const res = await route.list({
-          ...where,
-          ...order,
-          pageNum: page,
-          size: limit
-        });
-        return res;
-      },
-      checkStatus(row) {
-        let obj = this.statusList.find((it) => it.value == row.status);
-        return obj.label;
+      datasource({ page, limit, where, order }) {
+        return pageList({ pageNum: page, size: limit, ...where });
       },
+      // async datasource({ page, limit, where, order }) {
+      //   const res = await pageList({
+      //     ...where,
+      //     ...order,
+      //     pageNum: page,
+      //     size: limit
+      //   });
+      //   return res;
+      // },
+      /* 点击刷新 */
+      toRefresh(){
 
+      },
       /* 刷新表格 */
       reload(where) {
         this.$refs.table.reload({ page: 1, where: where });
@@ -160,48 +154,6 @@
           path: '/technology/version/details',
           query: {id}
         })
-      },
-
-      /* 删除 */
-      remove(row) {
-        const loading = this.$loading({ lock: true });
-
-        route
-          .delete(row.id)
-          .then((msg) => {
-            loading.close();
-            this.$message.success('删除' + msg);
-            this.reload();
-          })
-          .catch((e) => {
-            loading.close();
-            // this.$message.error(e.message);
-          });
-      },
-      /* 批量删除 */
-      removeBatch() {
-        if (!this.selection.length) {
-          this.$message.error('请至少选择一条数据');
-          return;
-        }
-        this.$confirm('确定要删除选中的工序吗?', '提示', {
-          type: 'warning'
-        })
-          .then(() => {
-            const loading = this.$loading({ lock: true });
-            producetask
-              .delete(this.selection.map((d) => d.id))
-              .then((msg) => {
-                loading.close();
-                this.$message.success('删除' + msg);
-                this.reload();
-              })
-              .catch((e) => {
-                loading.close();
-                // this.$message.error(e.message);
-              });
-          })
-          .catch(() => {});
       }
     }
   };