Selaa lähdekoodia

2022-03-08 0:35

王克恕 3 vuotta sitten
vanhempi
commit
7d9e5e9648

+ 345 - 314
imcs-ui/src/api/runManageCenter/planMgr.js

@@ -1,314 +1,345 @@
-/*********************** 【计划管理】API ********************/
-import axiosApi from '../AxiosApi.js'
-
-const apiList = {
-	getList: {
-	    method: 'POST',
-	    url: `/authority/plan/all`
-	},
-  getFinishPlanList: {
-    method: 'POST',
-    url: `/authority/plan/getFinishPlanList`
-  },
-  page: {
-    method: 'POST',
-    url: `/authority/plan/page`
-  },
-  pageList: {
-    method: 'POST',
-    url: `/authority/plan/pageList`
-  },
-  update: {
-    method: 'POST',
-    url: `/authority/plan/update`
-  },
-  save: {
-    method: 'POST',
-    url: `/authority/plan/save`
-  },
-  // 一键排产
-  oneTouchSchedule: {
-    method: 'POST',
-    url: `/authority/plan/oneTouchSchedule`
-  },
-  // 高级排产
-  advSchedule: {
-    method: 'POST',
-    url: `/authority/plan/advSchedule`
-  },
-  // 一键生产
-  confirmSchedule: {
-    method: 'POST',
-    url: `/authority/plan/confirmSchedule`
-  },
-  // 审核状态
-  updateStatus: {
-    method: 'POST',
-    url: `/authority/plan/updateStatus`
-  },
-  remove: {
-    method: 'DELETE',
-    url: `/authority/plan`
-  },
-  delete: {
-    method: 'POST',
-    url: `/authority/plan/delete`
-  },
-  // 计划【更多-启用】
-  planEnable: {
-    method: 'POST',
-    url: `/authority/plan/planEnable`
-  },
-  // 计划【更多-暂停】
-  planSuspend: {
-    method: 'POST',
-    url: `/authority/plan/planSuspend`
-  },
-  // 计划【更多-优先级】
-  updateData: {
-    method: 'POST',
-    url: `/authority/plan/updateData`
-  },
-  // 计划【更多-生产单元】
-  setProductionUnit: {
-    method: 'POST',
-    url: `/authority/planZone/setProductionUnit`
-  },
-  // 计划【修改数量】
-  updateNumber: {
-    method: 'POST',
-    url: `/authority/plan/updateNumber`
-  },
-  // 计划【更多-删除】
-  deletePlan: {
-    method: 'POST',
-    url: `/authority/plan/deletePlan`
-  },
-  // 计划【状态数量统计】
-  getPlanStatusCount: {
-    method: 'POST',
-    url: `/authority/plan/getPlanStatusCount`
-  },
-  get: {
-    method: 'POST',
-    url: `/authority/plan/get`
-  },
-  list: {
-    method: 'POST',
-    url: `/authority/plan/query`
-  },
-  preview: {
-    method: 'POST',
-    url: `/authority/plan/preview`
-  },
-  export: {
-    method: 'POST',
-    url: `/authority/plan/export`
-  },
-  import: {
-    method: 'POST',
-    url: `/authority/plan/import`
-  },
-  downloadCraftCards: {
-    method: 'POST',
-    url: `/authority/plan/downloadCraftCards`
-  },
-  checkPlanCuttingTools: {
-    method: 'POST',
-    url: `/authority/plan/checkPlanCuttingTools`
-  },
-  checkPlanDetailCuttingTools: {
-    method: 'POST',
-    url: `/authority/plan/checkPlanDetailCuttingTools`
-  }
-}
-
-export default {
-	getList (data) {
-    return axiosApi({
-      ...apiList.getList,
-      data
-    })
-  },
-  page (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  pageList (data) {
-    return axiosApi({
-      ...apiList.pageList,
-      data
-    })
-  },
-  save (data) {
-    return axiosApi({
-      ...apiList.save,
-      data
-    })
-  },
-  // 一键排产
-  oneTouchSchedule (data) {
-    return axiosApi({
-      ...apiList.oneTouchSchedule,
-      data
-    })
-  },
-  // 高级排产
-  advSchedule (data) {
-    return axiosApi({
-      ...apiList.advSchedule,
-      data
-    })
-  },
-  // 一键生产
-  confirmSchedule (data) {
-    return axiosApi({
-      ...apiList.confirmSchedule,
-      data
-    })
-  },
-  update (data) {
-    return axiosApi({
-      ...apiList.update,
-      data
-    })
-  },
-  updateStatus (data) {
-    return axiosApi({
-      ...apiList.updateStatus,
-      data
-    })
-  },
-  remove (data) {
-    return axiosApi({
-      ...apiList.remove,
-      data
-    })
-  },
-  delete (data) {
-    return axiosApi({
-      ...apiList.delete,
-      data
-    })
-  },
-  // 计划【更多-启用】
-  planEnable (data) {
-    return axiosApi({
-      ...apiList.planEnable,
-      data
-    })
-  },
-  // 计划【更多-暂停】
-  planSuspend (data) {
-    return axiosApi({
-      ...apiList.planSuspend,
-      data
-    })
-  },
-  // 计划【优先级 】
-  updateData (data) {
-    return axiosApi({
-      ...apiList.updateData,
-      data
-    })
-  },
-  // 计划【生产单元】
-  setProductionUnit (data) {
-    return axiosApi({
-      ...apiList.setProductionUnit,
-      data
-    })
-  },
-  // 计划【修改数量】
-  updateNumber (data) {
-    return axiosApi({
-      ...apiList.updateNumber,
-      data
-    })
-  },
-  // 计划【更多-删除】
-  deletePlan (data) {
-    return axiosApi({
-      ...apiList.deletePlan,
-      data
-    })
-  },
-  // 【计划状态数量统计】
-  getPlanStatusCount (data) {
-    return axiosApi({
-      ...apiList.getPlanStatusCount,
-      data
-    })
-  },
-  get (data) {
-    return axiosApi({
-      ...apiList.get,
-      data
-    })
-  },
-  list (data) {
-    return axiosApi({
-      ...apiList.list,
-      data
-    })
-  },
-  check (code) {
-    return axiosApi({
-      method: 'GET',
-      url: `/authority/plan/check/${code}`
-    })
-  },
-  checkField (data) {
-    return axiosApi({
-      method: 'POST',
-      url: `/authority/plan/check`,
-      data
-    })
-  },
-  preview (data) {
-    return axiosApi({
-      ...apiList.preview,
-      data
-    })
-  },
-  export (data) {
-    return axiosApi({
-      ...apiList.export,
-      responseType: "blob",
-      data
-    })
-  },
-  import (data) {
-    return axiosApi({
-      ...apiList.import,
-      data
-    })
-  },
-  getFinishPlanList (data) {
-    return axiosApi({
-      ...apiList.getFinishPlanList,
-      data
-    })
-  },
-  downloadCraftCards(data) {
-    return axiosApi({
-      ...apiList.downloadCraftCards,
-      responseType: "blob",
-      data
-    })
-  },
-  checkPlanCuttingTools(data) {
-    return axiosApi({
-      ...apiList.checkPlanCuttingTools,
-      data
-    })
-  },
-  checkPlanDetailCuttingTools(data) {
-    return axiosApi({
-      ...apiList.checkPlanDetailCuttingTools,
-      data
-    })
-  },
-}
+/*********************** 【计划管理】API ********************/
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+	getList: {
+	    method: 'POST',
+	    url: `/authority/plan/all`
+	},
+  getFinishPlanList: {
+    method: 'POST',
+    url: `/authority/plan/getFinishPlanList`
+  },
+  page: {
+    method: 'POST',
+    url: `/authority/plan/page`
+  },
+  pageList: {
+    method: 'POST',
+    url: `/authority/plan/pageList`
+  },
+  update: {
+    method: 'POST',
+    url: `/authority/plan/update`
+  },
+  save: {
+    method: 'POST',
+    url: `/authority/plan/save`
+  },
+  // 一键排产
+  oneTouchSchedule: {
+    method: 'POST',
+    url: `/authority/plan/oneTouchSchedule`
+  },
+  // 高级排产
+  advSchedule: {
+    method: 'POST',
+    url: `/authority/plan/advSchedule`
+  },
+  // 一键生产
+  confirmSchedule: {
+    method: 'POST',
+    url: `/authority/plan/confirmSchedule`
+  },
+  // 审核状态
+  updateStatus: {
+    method: 'POST',
+    url: `/authority/plan/updateStatus`
+  },
+  remove: {
+    method: 'DELETE',
+    url: `/authority/plan`
+  },
+  delete: {
+    method: 'POST',
+    url: `/authority/plan/delete`
+  },
+  
+  // 计划【任务-按照生产资源 】
+  scheduleTaskByResource: {
+    method: 'POST',
+    url: `/authority/task/scheduleTaskByResource`
+  },
+  
+  // 计划【更多-启用】
+  planEnable: {
+    method: 'POST',
+    url: `/authority/plan/planEnable`
+  },
+  
+  // 计划【更多-暂停】
+  planSuspend: {
+    method: 'POST',
+    url: `/authority/plan/planSuspend`
+  },
+  
+  // 计划【更多-优先级】
+  updateData: {
+    method: 'POST',
+    url: `/authority/plan/updateData`
+  },
+  
+  // 计划【更多-生产单元】
+  setProductionUnit: {
+    method: 'POST',
+    url: `/authority/planZone/setProductionUnit`
+  },
+  
+  // 计划【修改数量】
+  updateNumber: {
+    method: 'POST',
+    url: `/authority/plan/updateNumber`
+  },
+  
+  // 计划【更多-删除】
+  deletePlan: {
+    method: 'POST',
+    url: `/authority/plan/deletePlan`
+  },
+  
+  // 计划【状态数量统计】
+  getPlanStatusCount: {
+    method: 'POST',
+    url: `/authority/plan/getPlanStatusCount`
+  },
+  
+  get: {
+    method: 'POST',
+    url: `/authority/plan/get`
+  },
+  
+  list: {
+    method: 'POST',
+    url: `/authority/plan/query`
+  },
+  
+  preview: {
+    method: 'POST',
+    url: `/authority/plan/preview`
+  },
+  
+  export: {
+    method: 'POST',
+    url: `/authority/plan/export`
+  },
+  
+  import: {
+    method: 'POST',
+    url: `/authority/plan/import`
+  },
+  
+  downloadCraftCards: {
+    method: 'POST',
+    url: `/authority/plan/downloadCraftCards`
+  },
+  
+  checkPlanCuttingTools: {
+    method: 'POST',
+    url: `/authority/plan/checkPlanCuttingTools`
+  },
+  
+  checkPlanDetailCuttingTools: {
+    method: 'POST',
+    url: `/authority/plan/checkPlanDetailCuttingTools`
+  }
+}
+
+export default {
+	getList (data) {
+    return axiosApi({
+      ...apiList.getList,
+      data
+    })
+  },
+  page (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  pageList (data) {
+    return axiosApi({
+      ...apiList.pageList,
+      data
+    })
+  },
+  save (data) {
+    return axiosApi({
+      ...apiList.save,
+      data
+    })
+  },
+  // 一键排产
+  oneTouchSchedule (data) {
+    return axiosApi({
+      ...apiList.oneTouchSchedule,
+      data
+    })
+  },
+  // 高级排产
+  advSchedule (data) {
+    return axiosApi({
+      ...apiList.advSchedule,
+      data
+    })
+  },
+  // 一键生产
+  confirmSchedule (data) {
+    return axiosApi({
+      ...apiList.confirmSchedule,
+      data
+    })
+  },
+  update (data) {
+    return axiosApi({
+      ...apiList.update,
+      data
+    })
+  },
+  updateStatus (data) {
+    return axiosApi({
+      ...apiList.updateStatus,
+      data
+    })
+  },
+  remove (data) {
+    return axiosApi({
+      ...apiList.remove,
+      data
+    })
+  },
+  delete (data) {
+    return axiosApi({
+      ...apiList.delete,
+      data
+    })
+  },
+  
+  // 计划【任务-按照生产资源 】
+  scheduleTaskByResource (data) {
+    return axiosApi({
+      ...apiList.scheduleTaskByResource,
+      data
+    })
+  },
+  
+  // 计划【更多-启用】
+  planEnable (data) {
+    return axiosApi({
+      ...apiList.planEnable,
+      data
+    })
+  },
+  
+  // 计划【更多-暂停】
+  planSuspend (data) {
+    return axiosApi({
+      ...apiList.planSuspend,
+      data
+    })
+  },
+  // 计划【优先级 】
+  updateData (data) {
+    return axiosApi({
+      ...apiList.updateData,
+      data
+    })
+  },
+  // 计划【生产单元】
+  setProductionUnit (data) {
+    return axiosApi({
+      ...apiList.setProductionUnit,
+      data
+    })
+  },
+  // 计划【修改数量】
+  updateNumber (data) {
+    return axiosApi({
+      ...apiList.updateNumber,
+      data
+    })
+  },
+  // 计划【更多-删除】
+  deletePlan (data) {
+    return axiosApi({
+      ...apiList.deletePlan,
+      data
+    })
+  },
+  // 【计划状态数量统计】
+  getPlanStatusCount (data) {
+    return axiosApi({
+      ...apiList.getPlanStatusCount,
+      data
+    })
+  },
+  get (data) {
+    return axiosApi({
+      ...apiList.get,
+      data
+    })
+  },
+  list (data) {
+    return axiosApi({
+      ...apiList.list,
+      data
+    })
+  },
+  check (code) {
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/plan/check/${code}`
+    })
+  },
+  checkField (data) {
+    return axiosApi({
+      method: 'POST',
+      url: `/authority/plan/check`,
+      data
+    })
+  },
+  preview (data) {
+    return axiosApi({
+      ...apiList.preview,
+      data
+    })
+  },
+  export (data) {
+    return axiosApi({
+      ...apiList.export,
+      responseType: "blob",
+      data
+    })
+  },
+  import (data) {
+    return axiosApi({
+      ...apiList.import,
+      data
+    })
+  },
+  getFinishPlanList (data) {
+    return axiosApi({
+      ...apiList.getFinishPlanList,
+      data
+    })
+  },
+  downloadCraftCards(data) {
+    return axiosApi({
+      ...apiList.downloadCraftCards,
+      responseType: "blob",
+      data
+    })
+  },
+  checkPlanCuttingTools(data) {
+    return axiosApi({
+      ...apiList.checkPlanCuttingTools,
+      data
+    })
+  },
+  checkPlanDetailCuttingTools(data) {
+    return axiosApi({
+      ...apiList.checkPlanDetailCuttingTools,
+      data
+    })
+  },
+}

+ 356 - 355
imcs-ui/src/components/zuihou/fileUpload.vue

@@ -1,355 +1,356 @@
-<template>
-  <div>
-    <el-upload
-      :accept="accept"
-      :action="action"
-      :auto-upload="autoUpload"
-      :before-remove="beforeRemove"
-      :class="isUpload === false ? 'hidebtn' : ''"
-      :data="fileOtherData"
-      :file-list="fileList"
-      :headers="headers"
-      :limit="limit"
-      :multiple="multiple"
-      :on-change="handleChange"      
-      :on-error="handleError"
-      :on-exceed="handleExceed"
-      :on-preview="handlePreview"
-      :on-remove="handleRemove"
-      :ref="uploadRef"
-      class="upload-demo"
-    >
-      <el-button size="small" type="primary" v-if="isUpload"
-        >点击上传</el-button
-      >
-    </el-upload>
-  </div>
-</template>
-
-<script>
-import db from "@/utils/localstorage";
-import commonApi from "@/api/Common.js";
-import { copy } from '@/utils/utils'
-import {Base64} from 'js-base64';
-
-export default {
-  name: "FileUpload",
-  props: {
-    uploadRef: {
-      type: String,
-      default: "file1"
-    },
-    // 是否多选
-    multiple: {
-      type: Boolean,
-      default: true
-    },
-    // 是否自动上传
-    autoUpload: {
-      type: Boolean,
-      default: true
-    },
-    // 是否上传文件
-    isUpload: {
-      type: Boolean,
-      default: true
-    },
-    // 最大允许上传个数
-    limit: {
-      type: Number,
-      default: null
-    },
-    // 允许上传的文件类型
-    accept: {
-      type: String,
-      default: ""
-    },
-    action: {
-      type: String,
-      default: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`
-    },
-    // 允许上传的文件大小 单位:字节
-    acceptSize: {
-      type: Number,
-      default: null
-    },
-    // 默认额外上传数据
-    fileOtherData: {
-      type: Object,
-      default: function() {
-        return {
-          id: null,
-          bizId: "",
-          bizType: "",
-          isSingle: false
-        };
-      }
-    }
-  },
-  data() {
-    return {
-      // 默认附件列表
-      fileList: [],
-      // 删除附件列表
-      removeFileAry: [],
-      // 新增附件列表
-      addFileAry: [],
-      // 上传成功的文件数
-      successNum: 0,
-      // 上传失败的文件数
-      errorNum: 0,
-      // 已上传的文件数
-      uploadTotalNum: 0,
-      // 是否上传失败
-      isUploadError: false,
-      // action: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`
-    };
-  },
-  computed: {
-    headers() {
-      return {
-        token: 'Bearer ' + db.get("TOKEN", ""),
-        tenant: db.get("TENANT", "") || "",
-        Authorization: `Basic ${Base64.encode(`${process.env.VUE_APP_CLIENT_ID}:${process.env.VUE_APP_CLIENT_SECRET}`)}`
-      };
-    }
-  },
-  methods: {
-    // 附件初始化
-    init({ id, bizId, bizType, isSingle, isDetail }) {
-      const vm = this;
-      vm.fileOtherData.bizId = bizId;
-      vm.fileOtherData.id = id || "";
-      vm.fileOtherData.bizType = bizType;
-      vm.fileOtherData.isSingle = isSingle || false;
-      vm.fileList.length = 0;
-      vm.removeFileAry = [];
-      vm.addFileAry = [];
-      vm.$emit("fileLengthVaild", 0);
-      if (isDetail) {
-        vm.getAttachment();
-      }
-      vm.successNum = 0;
-      vm.errorNum = 0;
-      vm.uploadTotalNum = 0;
-      vm.$refs[vm.uploadRef].clearFiles();
-    },
-
-    handleChange(file, fileList) {
-      const vm = this;
-      if (file.response) {
-        vm.uploadTotalNum += 1;
-        if (file.response.isSuccess) {
-          vm.fileOtherData.bizId = file.response.data.bizId;
-          vm.successNum += 1;
-        } else {
-          setTimeout(() => {
-            vm.$message({
-              message: file.name + "上传失败,原因:<br/>" + file.response.msg,
-              type: "error",
-              dangerouslyUseHTMLString: true,
-              showClose: true,
-              duration: 10000,
-              onClose: (msgs)=>{
-                copy(msgs['message']);
-                vm.$message({
-                  message: "复制错误消息成功",
-                  type: "success",
-                });
-              }
-            });
-          }, 0);
-          vm.isUploadError = false;
-          vm.errorNum += 1;
-        }
-        vm.$emit("setId", vm.uploadTotalNum === fileList.length && vm.errorNum <= 0, file.response);
-      } else {
-        if (vm.acceptSize) {
-          const isLtAcceptSize = file.size > vm.acceptSize;
-
-          if (isLtAcceptSize) {
-            setTimeout(() => {
-              vm.$message.error(
-                "只能上传" +
-                  vm.renderSize(vm.acceptSize) +
-                  "的文件!已为您过滤文件:" +
-                  file.name
-              );
-            }, 10);
-
-            fileList.forEach((item, index) => {
-              if (item.uid === file.uid) {
-                fileList.splice(index, 1);
-              }
-            });
-          } else {
-            if (!vm.isUploadError) {
-              vm.addFileAry.push(file.name);
-            }
-            vm.isUploadError = false;
-          }
-        } else {
-          if (!vm.isUploadError) {
-            vm.addFileAry.push(file.name);
-          }
-          vm.isUploadError = false;
-        }
-        vm.$emit("fileLengthVaild", vm.fileList.length + vm.addFileAry.length);
-      }
-      vm.$store.state.hasLoading = false;
-    },
-    // 附件上传失败
-    handleError() {
-      const vm = this;
-      vm.$message.error("附件上传失败,请重试");
-      vm.isUploadError = true;
-      vm.$store.state.hasLoading = false;
-    },   
-    renderSize(value) {
-      if (null == value || value == "") {
-        return "0 B";
-      }
-      const unitArr = new Array(
-        "B",
-        "KB",
-        "MB",
-        "GB",
-        "TB",
-        "PB",
-        "EB",
-        "ZB",
-        "YB"
-      );
-      let index = 0;
-      let srcsize = parseFloat(value);
-      index = Math.floor(Math.log(srcsize) / Math.log(1024));
-      let size = srcsize / Math.pow(1024, index);
-      size = size.toFixed(2);
-      if (unitArr[index]) {
-        return size + unitArr[index];
-      }
-      return "文件太大";
-    },
-    handlePreview(file) {
-      if (file.bizId) {
-        this.downLoadFile(file);
-      }
-    },
-    beforeRemove(file) {
-      return this.$confirm("确定移除" + file.name, "删除确认");
-    },
-    // 文件超出个数限制时的钩子
-    handleExceed() {
-      const vm = this;
-      vm.$message("当前最多允许上传" + vm.limit + "个文件");
-    },
-    // 删除附件列表
-    handleRemove(file) {
-      const vm = this;
-      if (file.bizId) {
-        vm.removeFileAry.push(file.id);
-        vm.fileList.map((item, index) => {
-          if (item.name === file.name) {
-            vm.fileList.splice(index, 1);
-            return false;
-          }
-        });
-      } else {
-        vm.addFileAry.map((item, index) => {
-          if (item === file.name) {
-            vm.addFileAry.splice(index, 1);
-            return false;
-          }
-        });
-      }
-      vm.$emit("fileLengthVaild", vm.fileList.length + vm.addFileAry.length);
-    },
-    // 服务器删除附件
-    async deleteAttachment() {
-      const vm = this;
-      const res = await commonApi.deleteAttachment({
-        ids: vm.removeFileAry
-      });
-      if (res.status === 200) {
-        if (res.data.code !== 0) {
-          vm.$message(res.data.msg);
-        } else {
-          vm.removeFileAry = [];
-        }
-      }
-    },
-    // 查询附件
-    async getAttachment() {
-      const vm = this;
-      const res = await commonApi.getAttachment({
-        bizIds: vm.fileOtherData.bizId,
-        bizTypes: vm.fileOtherData.bizType
-      });
-      if (res.status === 200) {
-        if (res.data.code === 0) {
-          if (res.data.data.length > 0) {
-            let data = res.data.data[0].list;
-            data.map(item => {
-              item.name = item.submittedFileName;
-            });
-            vm.fileList = data;
-            vm.$emit("fileLengthVaild", vm.fileList.length);
-          }
-        }
-      }
-    },
-    // 查询附件
-    async getAttachmentByArr(bizIds, bizTypes) {
-      const vm = this;
-      const res = await commonApi.getAttachment({
-        bizIds: bizIds,
-        bizTypes: bizTypes
-      });
-      if (res.status === 200) {
-        if (res.data.code === 0) {
-          if (res.data.data.length > 0) {
-            let data = res.data.data[0].list;
-            data.map(item => {
-              item.name = item.submittedFileName;
-            });
-            vm.fileList = data;
-          }
-        }
-      }
-    },
-    // 返回附件新增及删除数组长度
-    handleBack() {
-      const vm = this;
-      return {
-        addLength: vm.addFileAry.length,
-        removeLength: vm.removeFileAry.length
-      };
-    },
-    // 附件上传服务器触发方法
-    submitFile(id, bizId, bizType) {
-      const vm = this;
-      vm.fileOtherData.id = id;
-      if (bizId) {
-        vm.fileOtherData.bizId = bizId;
-        vm.isUpload = true;
-      }
-      vm.fileOtherData.bizType = bizType;
-      vm.$refs[vm.uploadRef].submit();
-      vm.addFileAry = [];
-    },
-    // 附件下载
-    async downLoadFile(data) {
-      let link = document.createElement("a");
-      link.href = data.url;
-      link.download = data.name;
-      link.click();
-      window.URL.revokeObjectURL(link.href);
-    }
-  }
-};
-</script>
-<style>
-.hidebtn .el-upload {
-  display: none;
-}
-</style>
+<template>
+  <div>
+    <el-upload
+      :accept="accept"
+      :action="action"
+      :auto-upload="autoUpload"
+      :before-remove="beforeRemove"
+      :class="isUpload === false ? 'hidebtn' : ''"
+      :data="fileOtherData"
+      :file-list="fileList"
+      :headers="headers"
+      :limit="limit"
+      :multiple="multiple"
+      :on-change="handleChange"      
+      :on-error="handleError"
+      :on-exceed="handleExceed"
+      :on-preview="handlePreview"
+      :on-remove="handleRemove"
+      :ref="uploadRef"
+      class="upload-demo"
+    >
+      <el-button size="small" type="primary" v-if="isUpload"
+        >点击上传</el-button
+      >
+    </el-upload>
+  </div>
+</template>
+
+<script>
+import db from "@/utils/localstorage";
+import commonApi from "@/api/Common.js";
+import { copy } from '@/utils/utils'
+import {Base64} from 'js-base64';
+
+export default {
+  name: "FileUpload",
+  props: {
+    uploadRef: {
+      type: String,
+      default: "file1"
+    },
+    // 是否多选
+    multiple: {
+      type: Boolean,
+      default: true
+    },
+    // 是否自动上传
+    autoUpload: {
+      type: Boolean,
+      default: true
+    },
+    // 是否上传文件
+    isUpload: {
+      type: Boolean,
+      default: true
+    },
+    // 最大允许上传个数
+    limit: {
+      type: Number,
+      default: null
+    },
+    // 允许上传的文件类型
+    accept: {
+      type: String,
+      default: ""
+    },
+    action: {
+      type: String,
+      default: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`
+    },
+    // 允许上传的文件大小 单位:字节
+    acceptSize: {
+      type: Number,
+      default: null
+    },
+    // 默认额外上传数据
+    fileOtherData: {
+      type: Object,
+      default: function() {
+        return {
+          id: null,
+          bizId: "",
+          bizType: "",
+          isSingle: false
+        };
+      }
+    }
+  },
+  data() {
+    return {
+      // 默认附件列表
+      fileList: [],
+      // 删除附件列表
+      removeFileAry: [],
+      // 新增附件列表
+      addFileAry: [],
+      // 上传成功的文件数
+      successNum: 0,
+      // 上传失败的文件数
+      errorNum: 0,
+      // 已上传的文件数
+      uploadTotalNum: 0,
+      // 是否上传失败
+      isUploadError: false,
+      // action: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`
+    };
+  },
+  computed: {
+    headers() {
+      return {
+        token: 'Bearer ' + db.get("TOKEN", ""),
+        tenant: db.get("TENANT", "") || "",
+        Authorization: `Basic ${Base64.encode(`${process.env.VUE_APP_CLIENT_ID}:${process.env.VUE_APP_CLIENT_SECRET}`)}`
+      };
+    }
+  },
+  methods: {
+    // 附件初始化
+    init({ id, bizId, bizType, isSingle, isDetail }) {
+      const vm = this;
+      vm.fileOtherData.bizId = bizId;
+      vm.fileOtherData.id = id || "";
+      vm.fileOtherData.bizType = bizType;
+      vm.fileOtherData.isSingle = isSingle || false;
+      vm.fileList.length = 0;
+      vm.removeFileAry = [];
+      vm.addFileAry = [];
+      vm.$emit("fileLengthVaild", 0);
+      if (isDetail) {
+        vm.getAttachment();
+      }
+      vm.successNum = 0;
+      vm.errorNum = 0;
+      vm.uploadTotalNum = 0;
+      vm.$refs[vm.uploadRef].clearFiles();
+    },
+
+    handleChange(file, fileList) {
+      const vm = this;
+      if (file.response) {
+        vm.uploadTotalNum += 1;
+        if (file.response.isSuccess) {
+          vm.fileOtherData.bizId = file.response.data.bizId;
+          vm.successNum += 1;
+        } else {
+          setTimeout(() => {
+            vm.$message({
+              message: file.name + "上传失败,原因:<br/>" + file.response.msg,
+              type: "error",
+              dangerouslyUseHTMLString: true,
+              showClose: true,
+              duration: 10000,
+              onClose: (msgs)=>{
+                copy(msgs['message']);
+                vm.$message({
+                  message: "复制错误消息成功",
+                  type: "success",
+                });
+              }
+            });
+          }, 0);
+          vm.isUploadError = false;
+          vm.errorNum += 1;
+        }
+        console.log("附件结果:", file);
+        vm.$emit("setId", vm.uploadTotalNum === fileList.length && vm.errorNum <= 0, file.response);
+      } else {
+        if (vm.acceptSize) {
+          const isLtAcceptSize = file.size > vm.acceptSize;
+
+          if (isLtAcceptSize) {
+            setTimeout(() => {
+              vm.$message.error(
+                "只能上传" +
+                  vm.renderSize(vm.acceptSize) +
+                  "的文件!已为您过滤文件:" +
+                  file.name
+              );
+            }, 10);
+
+            fileList.forEach((item, index) => {
+              if (item.uid === file.uid) {
+                fileList.splice(index, 1);
+              }
+            });
+          } else {
+            if (!vm.isUploadError) {
+              vm.addFileAry.push(file.name);
+            }
+            vm.isUploadError = false;
+          }
+        } else {
+          if (!vm.isUploadError) {
+            vm.addFileAry.push(file.name);
+          }
+          vm.isUploadError = false;
+        }
+        vm.$emit("fileLengthVaild", vm.fileList.length + vm.addFileAry.length);
+      }
+      vm.$store.state.hasLoading = false;
+    },
+    // 附件上传失败
+    handleError() {
+      const vm = this;
+      vm.$message.error("附件上传失败,请重试");
+      vm.isUploadError = true;
+      vm.$store.state.hasLoading = false;
+    },   
+    renderSize(value) {
+      if (null == value || value == "") {
+        return "0 B";
+      }
+      const unitArr = new Array(
+        "B",
+        "KB",
+        "MB",
+        "GB",
+        "TB",
+        "PB",
+        "EB",
+        "ZB",
+        "YB"
+      );
+      let index = 0;
+      let srcsize = parseFloat(value);
+      index = Math.floor(Math.log(srcsize) / Math.log(1024));
+      let size = srcsize / Math.pow(1024, index);
+      size = size.toFixed(2);
+      if (unitArr[index]) {
+        return size + unitArr[index];
+      }
+      return "文件太大";
+    },
+    handlePreview(file) {
+      if (file.bizId) {
+        this.downLoadFile(file);
+      }
+    },
+    beforeRemove(file) {
+      return this.$confirm("确定移除" + file.name, "删除确认");
+    },
+    // 文件超出个数限制时的钩子
+    handleExceed() {
+      const vm = this;
+      vm.$message("当前最多允许上传" + vm.limit + "个文件");
+    },
+    // 删除附件列表
+    handleRemove(file) {
+      const vm = this;
+      if (file.bizId) {
+        vm.removeFileAry.push(file.id);
+        vm.fileList.map((item, index) => {
+          if (item.name === file.name) {
+            vm.fileList.splice(index, 1);
+            return false;
+          }
+        });
+      } else {
+        vm.addFileAry.map((item, index) => {
+          if (item === file.name) {
+            vm.addFileAry.splice(index, 1);
+            return false;
+          }
+        });
+      }
+      vm.$emit("fileLengthVaild", vm.fileList.length + vm.addFileAry.length);
+    },
+    // 服务器删除附件
+    async deleteAttachment() {
+      const vm = this;
+      const res = await commonApi.deleteAttachment({
+        ids: vm.removeFileAry
+      });
+      if (res.status === 200) {
+        if (res.data.code !== 0) {
+          vm.$message(res.data.msg);
+        } else {
+          vm.removeFileAry = [];
+        }
+      }
+    },
+    // 查询附件
+    async getAttachment() {
+      const vm = this;
+      const res = await commonApi.getAttachment({
+        bizIds: vm.fileOtherData.bizId,
+        bizTypes: vm.fileOtherData.bizType
+      });
+      if (res.status === 200) {
+        if (res.data.code === 0) {
+          if (res.data.data.length > 0) {
+            let data = res.data.data[0].list;
+            data.map(item => {
+              item.name = item.submittedFileName;
+            });
+            vm.fileList = data;
+            vm.$emit("fileLengthVaild", vm.fileList.length);
+          }
+        }
+      }
+    },
+    // 查询附件
+    async getAttachmentByArr(bizIds, bizTypes) {
+      const vm = this;
+      const res = await commonApi.getAttachment({
+        bizIds: bizIds,
+        bizTypes: bizTypes
+      });
+      if (res.status === 200) {
+        if (res.data.code === 0) {
+          if (res.data.data.length > 0) {
+            let data = res.data.data[0].list;
+            data.map(item => {
+              item.name = item.submittedFileName;
+            });
+            vm.fileList = data;
+          }
+        }
+      }
+    },
+    // 返回附件新增及删除数组长度
+    handleBack() {
+      const vm = this;
+      return {
+        addLength: vm.addFileAry.length,
+        removeLength: vm.removeFileAry.length
+      };
+    },
+    // 附件上传服务器触发方法
+    submitFile(id, bizId, bizType) {
+      const vm = this;
+      vm.fileOtherData.id = id;
+      if (bizId) {
+        vm.fileOtherData.bizId = bizId;
+        vm.isUpload = true;
+      }
+      vm.fileOtherData.bizType = bizType;
+      vm.$refs[vm.uploadRef].submit();
+      vm.addFileAry = [];
+    },
+    // 附件下载
+    async downLoadFile(data) {
+      let link = document.createElement("a");
+      link.href = data.url;
+      link.download = data.name;
+      link.click();
+      window.URL.revokeObjectURL(link.href);
+    }
+  }
+};
+</script>
+<style>
+.hidebtn .el-upload {
+  display: none;
+}
+</style>

+ 1 - 1
imcs-ui/src/views/zuihou/runManageCenter/orderMgr/components/runningOrder/components/PprogOrder.vue

@@ -7,7 +7,7 @@
 	      :data="tableData.records"
 	      border
 	      fit
-	      row-key="id"
+	      row-key="taskNo"
 	      style="width: 100%;"
 	      :span-method="objectSpanMethod"
 	      @selection-change="onSelectChange"

+ 247 - 44
imcs-ui/src/views/zuihou/runManageCenter/orderMgr/components/runningOrder/components/PprogResource.vue

@@ -1,7 +1,8 @@
+<!-- 【订单管理-运行中-订单排产方案】 -->
 <template>
 	<div class="tabDiv">
-		<el-row :gutter="20">
-		  <el-col :span="16">
+		<el-row>
+		  <el-col>
 		  	<!-- 时间,切换 -->
 		  	<div class="filter-container">
 		    	<span>
@@ -17,58 +18,66 @@
 		      :key="tableKey"
 		      ref="table"
 		      v-loading="loading"
-		      :data="tableData.records"
-		      border
+		      :data="tableData.data"
 		      fit
-		      row-key="id"
 		      class="noPaddingTable"
 		      style="width: 100%;"
 		    >
-		    	<el-table-column label="基础信息" align="center" width="275px" fixed>
-			    	<el-table-column :label='$t("common.serialNo")' width="55px" align="center">
+		    	<el-table-column label="基础信息" align="center" width="310px" fixed>
+			    	<!-- 序号 -->
+			    	<el-table-column :label='$t("common.serialNo")' width="50px" align="center">
 				      <template slot-scope="scope">
 				        <div>
 				          {{scope.$index+(queryParams.current - 1) * queryParams.size + 1}}
 				        </div>
 				      </template>
 			      	</el-table-column>
-			      	<el-table-column prop="name" :label='$t("runCenter.table.resourceView.name2")' :show-overflow-tooltip="true" width="100px">					   					
-					</el-table-column>
-			      	<el-table-column prop="status" :label='$t("runCenter.table.resourceView.status")' :show-overflow-tooltip="true" align="center" width="120px">
-					    <template slot-scope="{ row }">
-							<span v-if="row.status == 1">可用</span>
-							<span v-if="row.status != 1">不可用</span>
-					   </template>
-					</el-table-column>
-		      	</el-table-column>
-		      	<el-table-column v-for="item in titleData" :key="item.id" :label="item.text" align="center">
-			      	<el-table-column v-for="day in item.children" :key="day.id" :label="day.text" align="center" class-name="dateColumns">
-			      		<el-table-column :prop="day.weekObj.field" :key="day.weekObj.id" :label='day.weekObj.text' width="30" class-name="dateColumns" align="center">
-			      			<template slot-scope="{ row }">
-					          	<div class="bgDivCell">
-					          		<span class="taskSpan" v-for="o in Math.ceil(Math.random()*10)" :key="o"></span>
-					          	</div>
-					        </template>
-			      		</el-table-column>
-			      	</el-table-column>
-		      	</el-table-column>
+			      	<!-- 编号 -->
+			      	<el-table-column prop="code" label='编号' :show-overflow-tooltip="true" width="100px"></el-table-column>
+			      	<!-- 生产资源名称 -->
+			      	<el-table-column prop="name" label='生产资源名称' :show-overflow-tooltip="true" width="160px"></el-table-column>
+			    </el-table-column>
+		      	<el-table-column 
+		      		v-for="item in tableData.titleList" 
+		      		class-name="timeJD"
+		      		:key="item.id" 
+		      		:prop="item.field" 
+		      		:label='item.text' 
+		      		align="center" 
+		      		width="120px"
+		      	>
+				    <template slot-scope="{ row }">
+				    	<div v-for="obj in jsuanTime(row, item.text)">
+					    	<!-- 背景色条(10个)-->
+							<div class="timeDom">
+								<template v-for="child in obj.child">
+									<div v-if="child.isFull" class="timeItem tiActive"></div>
+									<div v-else class="timeItem"></div>
+								</template>
+							</div>
+							<!-- 备注文字 -->
+							<div class="timeItemDesc">
+								<div>{{ obj.bomDesc ? obj.bomDesc : '' }}</div>
+								<div>{{ obj.procedureNo ? obj.procedureNo : '' }}</div>
+								<div>{{ obj.planTime ? obj.planTime : '' }}</div>
+							</div>
+						</div>
+						<!-- 中间虚线 -->
+						<div class="dashedDom"></div>
+				   </template>
+				</el-table-column>
 		    </el-table>
 		    
 		    <!-- 【分页】组件 -->
 		  	<pagination
-		      v-show="tableData.total > 0"
+		      v-show="tableData.count > 0"
 		      :limit.sync="queryParams.size"
 		      :page.sync="queryParams.current"
-		      :total="Number(tableData.total)"
+		      :total="Number(tableData.count)"
 		      @pagination="fetch"
 		    />
 		  </el-col>
-		  <el-col :span="8">
-		  	<!-- 【生产资源任务-统计图表】 -->
-		  	<pprog-resource-echarts ref="echarts"></pprog-resource-echarts>
-		  </el-col>
 		</el-row>
-		
   	</div>
 </template>
 
@@ -76,17 +85,18 @@
 <script>
 // 【分页】组件
 import Pagination from "@/components/Pagination"
-// 【生产资源任务-统计图表】组件
-import PprogResourceEcharts from "./PprogResourceEcharts"
 // 【仓库类型管理】-API
 import warehouseTypeMgrApi from "@/api/modelingCenter/warehouseTypeMgr"
+// 【计划管理】-API
+import planMgrApi from "@/api/runManageCenter/planMgr"
 // 列表查询的共通参数
 import { initQueryParams } from '@/utils/commons'
 export default {
   name: 'PprogTask',
-  components: { Pagination, PprogResourceEcharts },
+  components: { Pagination },
   props: {
-  	type: String
+  	type: String,
+  	orderData: Object,
   },
   data () {
     return {
@@ -96,17 +106,20 @@ export default {
     	tableKey: 0,
     	cuurentDate: 'week',
     	queryParams: initQueryParams({}),
+    	timeDomList: [], // 填充背景的时间数组
       	tableData: {
-        	total: 0
+        	count: 0
       	}
     }
   },
   // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
   created() {
+  	// 初始化,填充数据
+  	this.initTimeDom();
   	// 加载表头数据
-  	this.creatTestData()
+  	// this.creatTestData()
   	// 加载列表数据
-  	this.fetch()
+  	// this.fetch()
 	},
   computed: {
   },
@@ -211,9 +224,147 @@ export default {
   		this.titleData = list
   		console.log("表头数据:", this.titleData)
   	},
+  	
+  	// 初始化,填充数据
+  	initTimeDom() {
+  		for(let i = 0; i < 10; i++) {
+  			this.timeDomList.push({
+  				id: "WS"+ Math.random(),  // 随机数据
+  				isFull: false   // 是否填充颜色,默认不填充
+  				//planTime: '',  // 计划时间
+  				//procedureNo: '',  // 工序编码
+  				//bomDesc: '', // 零件的名称
+  			})
+  		}
+  	},
+  	
+  	/**
+  	 * [核心算法]-根据时间,技术模块
+  	 * row:数据
+  	 * time:时间节点
+  	 * */ 
+  	jsuanTime(row, time) {
+  		// 当前的时间
+  		// console.log("[核心算法]的数据feildTime: ",time);
+  		let arr = [{
+	  			planTime: '',  // 计划时间
+				procedureNo: '',  // 工序编码
+				bomDesc: '', // 零件的名称
+				child: []
+			}
+  		]
+  		arr[0].child = JSON.parse(JSON.stringify(this.timeDomList));
+  		// let arr = JSON.parse(JSON.stringify(this.timeDomList));
+  		// 计算。该cell。是否需要,填充背景
+  		if(row.children && row.children.length > 0) {
+  			// 时间去。年月日部分"yyyy-MM-dd"
+  			let ymd = row.children[0].expectStartTime.substr(0,10);
+  			// cell的区间节点
+  			let filedTime = this.getHourSecend(ymd, time);
+  			row.children.map(item => {
+  				// 背景模块,开始时间
+  				let expectStartTime = this.getHourSecend(ymd, item.expectStartTime.substr(11,5));
+  				// 背景模块,截止时间
+  				let expectEndTime = this.getHourSecend(ymd, item.expectEndTime.substr(11,5));
+  				
+  				let flag = this.intervalInclusion([filedTime, filedTime + 30], [expectStartTime, expectEndTime]);
+  				// cell【被包含】在时间段中
+  				/*if(flag == '1') {
+  					arr[0].child.forEach((item, index) => {
+						item.isFull = true;
+					})
+  				}
+  				if(flag == '2') {  // cell,办包含【起止点】
+  					arr[0].child.forEach((item, index) => {
+						item.isFull = true;
+					})
+					arr[0].planTime = item.planTime;
+					arr[0].procedureNo = item.procedureNo;
+					arr[0].bomDesc = item.bomDesc;
+  				}*/
+  				// 【开始时间】在cell里
+  				if(expectStartTime > filedTime && expectStartTime < filedTime + 30){
+  					// 【截止时间】在这个cell里
+  					if(expectEndTime > filedTime && expectEndTime < filedTime + 30) {
+  						arr[0].child.forEach((item, index) => {
+  							if(expectEndTime < filedTime + (index+1)*3){
+  								item.isFull = true;
+  							}
+  						})
+  						arr[0].planTime = item.planTime;
+  						arr[0].procedureNo = item.procedureNo;
+  						arr[0].bomDesc = item.bomDesc;
+  					} else {  // 【截止时间】不在这个cell里
+  						arr[0].child.forEach(item => {
+  							item.isFull = true;
+  						})
+  						arr[0].planTime = item.planTime;
+  						arr[0].procedureNo = item.procedureNo;
+  						arr[0].bomDesc = item.bomDesc;
+  					}
+  				} else {  // 【开始时间】。不在这个cell里面
+  					// 【截止时间】在这个cell里
+  					if(expectEndTime > filedTime && expectEndTime < filedTime + 30) {
+  						arr[0].child.forEach(item => {
+  							item.isFull = true;
+  						})
+  						arr[0].planTime = item.planTime;
+  						arr[0].procedureNo = item.procedureNo;
+  						arr[0].bomDesc = item.bomDesc;
+  					}
+  				}
+  			})
+  		}
+  		// console.log("[核心算法]的数据feildTime: ",objList);
+  		return arr;
+  	},
+  	
+  	
+	/**
+	 * 比较2个区间数据,是否包含
+	 * @param {Array} interval:需要检查的区间
+	 * @param {Array} inclusion:根区间。(inclusion是否包含于inclusion)
+	 * */
+	intervalInclusion(interval, inclusion){
+		/*if(!interval){
+			// interval = [120, 150]  // 【被包含】
+			// interval = [90, 120]  // 【有交集】
+			interval = [590, 620]  // 【有交集】
+			// interval = [700, 730]  // 【无关联】
+		}
+		if(!inclusion){
+			inclusion = [100, 600],
+		}*/
+		// interval【被包含】,第二个参数,肯定是大于第一个参数的(固定)。
+		if (interval[0] >= inclusion[0] && interval[1] <= inclusion[1]) {
+			return "1";
+		} else {
+			// interval【有交集】起始点不在。
+			if(interval[0] < inclusion[0] && interval[1] > inclusion[0]) {
+				return "2";
+			} else if(interval[0] > inclusion[0] && interval[0] <= inclusion[1]){
+				// interval【有交集】结束点不在。
+				return "2";
+			} else {
+				// interval【无关联】
+				return "0";
+			}
+		}
+	},
+
+  	// 获取当前时间的。小时和分钟
+  	getHourSecend(ymd, time) {
+  		let d = new Date(ymd+" "+time);
+  		// 把日期,统一转化成分钟数
+  		let seconds = d.getHours()*60 + d.getMinutes();
+  		return seconds;
+  	},
+  	
     setTenant (val) {
     	if(val){
     		this.tenant = { ...val }
+    		// 加载列表数据
+    		this.fetch();
     	}
     },
     // 当点击的时候,再加载,统计数据Echarts
@@ -221,6 +372,7 @@ export default {
     	// 初始化统计数据
     	this.$refs.echarts.echartsInit()
     },
+    
     fetch (params = {}) {
       this.loading = true
       if (this.queryParams.timeRange) {
@@ -230,11 +382,21 @@ export default {
 
       this.queryParams.current = params.current ? params.current : this.queryParams.current
       this.queryParams.size = params.size ? params.size : this.queryParams.size
-      warehouseTypeMgrApi.page(this.queryParams).then(response => {
+      // 根据订单的id,查询数据
+      this.queryParams.planId = this.tenant.id || '1499333016156110848';
+      
+      planMgrApi.scheduleTaskByResource(this.queryParams).then(response => {
         const res = response.data
-		console.log(res)
         if (res.isSuccess) {
-          this.tableData = res.data
+        	/*if(res.data.data && res.data.data.length > 0) {
+        		res.data.data.forEach(item => {
+        			item.id = 'wks'+ Math.random();
+        		});
+        	}*/
+          	this.tableData = res.data;
+          	// console.log("生产资源的数据-表头1245678:",this.tableData);
+          	// this.tableData.data = [{},{},{},{},{},{},{},{},{},{}];
+            // this.titleData = res.data.titleList;
         }
         // eslint-disable-next-line no-return-assign
       }).finally(() => this.loading = false)
@@ -245,6 +407,16 @@ export default {
 </script>
 
 <style>
+	/*计算时间的css-start*/
+	.el-table .timeJD .cell {
+		padding-top: 5px;
+		padding-left: 0;
+		padding-right: 0;
+	}
+	.el-table--border .timeJD.el-table__cell {
+		border-right: 0;
+	}
+	/*计算时间的css-end*/
 	.el-table.noPaddingTable th, .el-table.noPaddingTable td{
 		padding: 5px 0;
 	}
@@ -260,6 +432,37 @@ export default {
 </style>
 
 <style lang="scss" scoped>
+	/*计算时间的css-start*/
+	.timeDom {
+		width: 100%;
+		.timeItem {
+			display: inline-block;
+			width: 10%;
+			height: 70px;
+		}
+		.tiActive{
+			background: #3CC787;
+		}
+	}
+	.timeItemDesc {
+		position: absolute;
+		top: 18px;
+		left: 10px;
+		font-size: 12px;
+		line-height: 16px;
+		color: white;
+		z-index: 999;
+		text-align: left;
+	}
+	.dashedDom {
+		position: absolute;
+		top: 0;
+		left: 50%;
+		height: 88px;
+		border-right: 1px dashed #1890ff;
+		z-index: 999;
+	}
+	/*计算时间的css-end*/
 	.tabDiv{
 		margin: 10px;
 	}

+ 2 - 1
imcs-ui/src/views/zuihou/runManageCenter/orderMgr/components/runningOrder/components/PprogResourceEcharts.vue

@@ -52,7 +52,8 @@
 
 <script>
 // 引入 ECharts 主模块
-import echarts from 'echarts/lib/echarts';
+// import echarts from 'echarts/lib/echarts';
+import * as echarts from 'echarts/lib/echarts';
 // 引入柱状图
 import  'echarts/lib/chart/bar';
 // 引入提示框和标题组件

+ 1 - 1
imcs-ui/src/views/zuihou/runManageCenter/orderMgr/components/runningOrder/components/PprogTask.vue

@@ -19,7 +19,7 @@
 	      	:data="tableData.records"
 	      	border
 	      	fit
-	      	row-key="id"
+	      	row-key="taskNo"
 	      	class="noPaddingTable"
 	      	style="width: 100%;"
 	    >

+ 15 - 7
imcs-ui/src/views/zuihou/runManageCenter/orderMgr/components/runningOrder/components/ProductionProgramme.vue

@@ -66,7 +66,7 @@
     >
       <el-tab-pane name="resource" :label='$t("runCenter.common.viewTab1")'>
 		  	<!-- 【按生产资源查看】 -->
-		  	<pprog-resource ref="resource" :type="type"></pprog-resource>
+		  	<pprog-resource ref="resource" :type="type" :order-data="tenant"></pprog-resource>
 		  </el-tab-pane>
       <el-tab-pane
         name="order"
@@ -165,9 +165,9 @@ export default {
   	tabClick(e){
   		console.log("被选择的tab:", e.index)
   		// 如果点击的是【生产资源任务】 resource
-  		if(e.index == '0'){
-  			this.$refs.resource.setEcharts()
-  		}
+  		/*if(e.index == '0'){
+  			this.$refs.resource.setEcharts();
+  		}*/
   		/*// 订单
   		if(e.index == '1'){
   			// 加载列表数据
@@ -194,9 +194,17 @@ export default {
     		this.tenant = { ...val }
     		// 查询【按任务查询】数据
     		this.$nextTick(() => {
-    			this.$refs.task.setTenant(val)
-    			// 加载列表数据-订单数据
-  				this.$refs.order.getPageList()
+    			if(this.$refs.task) {
+    				this.$refs.task.setTenant(val)
+    			}
+    			if(this.$refs.order) {
+    				// 加载列表数据-订单数据
+  					this.$refs.order.setTenant(val)
+    			}
+  				if(this.$refs.resource) {
+    				// 加载【按生产资源查看】
+  					this.$refs.resource.setTenant(val);
+    			}
     		})
     	}
     },