소스 검색

隔离点和车间转移components组件复用

pm 1 년 전
부모
커밋
4393c62da0

+ 0 - 0
src/views/mes/job/jobm/SeparationPoint.vue → src/components/separationPoint/index.vue


+ 1 - 1
src/views/mes/job/jobm/WorkShop.vue → src/components/separationPoint/workshop.vue

@@ -102,7 +102,7 @@ export default {
   width: 100%;
   height: 100%;
   //   background-color: rgba(229, 229, 229, 1);
-  background: url("../../../../assets/images/sopbgimg.png") no-repeat;
+  background: url("../../assets/images/sopbgimg.png") no-repeat;
   background-size: 100% 100%;
   //   box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
   padding: 3% 4%;

+ 2 - 2
src/views/mes/job/jobm/NewOperations.vue

@@ -300,8 +300,8 @@
 
 
 <script>
-import SeparationPoint from "@/views/mes/job/jobm/SeparationPoint.vue";
-import WorkShop from "@/views/mes/job/jobm/WorkShop.vue";
+import SeparationPoint from "@/components/separationPoint/index.vue";
+import WorkShop from "@/components/separationPoint/workshop.vue";
 export default {
   name: "addView",
   components: {

+ 0 - 1
src/views/mes/job/jobm/index.vue

@@ -237,7 +237,6 @@ import { genCode } from '@/api/system/autocode/rule'
 
 export default {
   name: 'Team',
-
   dicts: ['mes_calendar_type'],
   data() {
     return {

+ 49 - 49
src/views/mes/md/workshop/index.vue

@@ -95,24 +95,24 @@
         </template>
       </el-table-column>
       <el-table-column label="车间名称" align="center" prop="workshopName" />
-<!--      <el-table-column label="面积" align="center" prop="area" />-->
-      <el-table-column label="状态" align="center" prop="calendarType">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.mes_calendar_type" :value="scope.row.calendarType"/>
-        </template>
-      </el-table-column>
-<!--      <el-table-column label="负责人" align="center" prop="charge" />-->
-<!--      <el-table-column label="是否启用" align="center" prop="enableFlag" >-->
+      <el-table-column label="面积" align="center" prop="area" />
+<!--      <el-table-column label="状态" align="center" prop="calendarType">-->
 <!--        <template slot-scope="scope">-->
-<!--          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/>-->
+<!--          <dict-tag :options="dict.type.mes_calendar_type" :value="scope.row.calendarType"/>-->
 <!--        </template>-->
 <!--      </el-table-column>-->
+      <el-table-column label="负责人" align="center" prop="charge" />
+      <el-table-column label="是否启用" align="center" prop="enableFlag" >
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/>
+        </template>
+      </el-table-column>
       <el-table-column label="车间地图" align="center" prop="remark">
         <template slot-scope="scope">
           <img src="" alt="">
         </template>
       </el-table-column>
-<!--      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true"/>-->
+      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -160,54 +160,54 @@
               <el-input style="width: 318px" v-model="form.workshopCode" placeholder="请输入车间编码" />
             </el-form-item>
 
-<!--            <el-form-item  label-width="80">-->
-<!--                <el-switch v-model="autoGenFlag"-->
-<!--                    active-color="#13ce66"-->
-<!--                    active-text="自动生成"-->
-<!--                    @change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">-->
-<!--                </el-switch>-->
-<!--            </el-form-item>-->
+            <el-form-item  label-width="80">
+                <el-switch v-model="autoGenFlag"
+                    active-color="#13ce66"
+                    active-text="自动生成"
+                    @change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
+                </el-switch>
+            </el-form-item>
 
-        <el-form-item label="车间状态" prop="calendarType">
-          <el-radio v-model="radio" label="1">启用</el-radio>
-          <el-radio v-model="radio" label="2">停用</el-radio>
-        </el-form-item>
-        <el-form-item label="车间地图" prop="calendarType">
-          <ImageUpload :limit="1" :value="form.sipUrl" :fileSize="5" @onUploaded="handleImgUplaoded" @onRemoved="handleImgRemoved" ></ImageUpload>
-        </el-form-item>
+<!--        <el-form-item label="车间状态" prop="calendarType">-->
+<!--          <el-radio v-model="radio" label="1">启用</el-radio>-->
+<!--          <el-radio v-model="radio" label="2">停用</el-radio>-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="车间地图" prop="calendarType">-->
+<!--          <ImageUpload :limit="1" :value="form.sipUrl" :fileSize="5" @onUploaded="handleImgUplaoded" @onRemoved="handleImgRemoved" ></ImageUpload>-->
+<!--        </el-form-item>-->
 
 
 
-<!--            <el-form-item label="面积" prop="area">-->
-<!--              <el-input-number :min="0" :percision="2" :step="1" v-model="form.area" placeholder="请输入面积" />-->
-<!--            </el-form-item>-->
+            <el-form-item label="面积" prop="area">
+              <el-input-number :min="0" :percision="2" :step="1" v-model="form.area" placeholder="请输入面积" />
+            </el-form-item>
 
 
-<!--            <el-form-item label="负责人" prop="charge">-->
-<!--              <el-input v-model="form.charge" placeholder="请输入负责人" />-->
-<!--            </el-form-item>-->
+            <el-form-item label="负责人" prop="charge">
+              <el-input v-model="form.charge" placeholder="请输入负责人" />
+            </el-form-item>
 
-<!--            <el-form-item label="是否启用" prop="enableFlag">-->
-<!--              <el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">-->
-<!--                <el-radio-->
-<!--                  v-for="dict in dict.type.sys_yes_no"-->
-<!--                  :key="dict.value"-->
-<!--                  :label="dict.value"-->
-<!--                >{{dict.label}}</el-radio>-->
-<!--              </el-radio-group>-->
-<!--              <el-radio-group v-model="form.enableFlag" v-else>-->
-<!--                <el-radio-->
-<!--                  v-for="dict in dict.type.sys_yes_no"-->
-<!--                  :key="dict.value"-->
-<!--                  :label="dict.value"-->
-<!--                >{{dict.label}}</el-radio>-->
-<!--              </el-radio-group>-->
-<!--            </el-form-item>-->
+            <el-form-item label="是否启用" prop="enableFlag">
+              <el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">
+                <el-radio
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.value"
+                >{{dict.label}}</el-radio>
+              </el-radio-group>
+              <el-radio-group v-model="form.enableFlag" v-else>
+                <el-radio
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.value"
+                >{{dict.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
 
 
-<!--            <el-form-item label="备注" prop="remark">-->
-<!--              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />-->
-<!--            </el-form-item>-->
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
 
       </el-form>
       <div slot="footer" class="dialog-footer">

+ 0 - 268
src/views/mes/sop/sopm/IsolationLeft.vue

@@ -1,268 +0,0 @@
-<template>
-  <div id="container" ref="container"></div>
-</template>
-
-<script>
-import Konva from "konva";
-
-export default {
-  name: "KonvaExample",
-  data() {
-    return {
-      stage: null,
-      layer: null,
-      selectedStates: [], // 用于存储每个元素的选中状态
-      selectedText: [], // 用于存储未选中的元素文本
-      rects:[],//白色rect合集
-      texts:[],//白色text合集
-      redrects:[],//红色rect合集
-      redtexts:[],//白色text合集
-    };
-  },
-  mounted() {
-    this.initKonva();
-  },
-  methods: {
-    initKonva() {
-      // 创建舞台
-      this.stage = new Konva.Stage({
-        container: this.$refs.container, // 容器元素
-        width: 1270,
-        height: 830,
-      });
-
-      // 创建图层
-      this.layer = new Konva.Layer();
-
-      // 创建底图
-      const bgImage = new Image();
-      bgImage.src = require("@/assets/images/table.png");
-      bgImage.onload = () => {
-        const knovaImage = new Konva.Image({
-          x: 330,
-          y: 10,
-          image: bgImage,
-          width: 500,
-          height: 790,
-          draggable: false,
-        });
-        this.layer.add(knovaImage);
-        this.layer.draw();
-      };
-
-      // 绘制无限网格
-      this.drawGrid(50, 50, "#e0e0e0"); // 每个单元格50x50,浅灰色网格
-
-      // 渲染数据
-      const imageSrc = require("@/assets/images/localSetIcon.jpg"); // 图片路径
-      this.renderGrid(imageSrc, 6, 3, 450, 100, 120, 100, 50, 50, 60, 25);
-
-      // 将图层添加到舞台
-      this.stage.add(this.layer);
-      this.layer.draw();
-
-      // 禁止舞台拖拽
-      this.stage.draggable(false);
-    },
-
-    // 绘制无限网格
-    drawGrid(cellWidth, cellHeight, gridColor) {
-      const width = 1270;
-      const height = 830;
-
-      // 绘制竖线
-      for (let i = 0; i <= width; i += cellWidth) {
-        const verticalLine = new Konva.Line({
-          points: [i, 0, i, height],
-          stroke: gridColor,
-          strokeWidth: 1,
-        });
-        this.layer.add(verticalLine);
-      }
-
-      // 绘制横线
-      for (let j = 0; j <= height; j += cellHeight) {
-        const horizontalLine = new Konva.Line({
-          points: [0, j, width, j],
-          stroke: gridColor,
-          strokeWidth: 1,
-        });
-        this.layer.add(horizontalLine);
-      }
-
-      this.layer.draw();
-    },
-    renderGrid(imageSrc) {
-      this.selectedStates = {}; // 用对象来存储选中状态,键为文字内容
-      this.rects = {};
-      this.texts = {};
-      this.redrects = {};
-      this.redtexts = {};
-      this.selectedText = [];
-
-      const positions = [
-        { row: 2, col: 9 }, // E-1
-        { row: 2, col: 11 }, // E-2
-        { row: 2, col: 13 }, // E-3
-        { row: 4, col: 9 }, // E-4
-        { row: 4, col: 11 }, // E-5
-        { row: 4, col: 13 }, // E-6
-        { row: 6, col: 9 }, // E-7
-        { row: 6, col: 11 }, // E-8
-        { row: 6, col: 13 }, // E-9
-        { row: 8, col: 9 }, // E-10
-        { row: 8, col: 11 }, // E-11
-        { row: 8, col: 13 }, // E-12
-        { row: 10, col: 9 }, // E-13
-        { row: 10, col: 11 }, // E-14
-        { row: 10, col: 13 }, // E-15
-        { row: 12, col: 9 }, // E-16
-        { row: 12, col: 11 }, // E-17
-        { row: 12, col: 13 }, // E-18
-      ];
-
-      positions.forEach((pos, index) => {
-        const x = pos.col * 50; // 每个单元格宽度为50
-        const y = pos.row * 50; // 每个单元格高度为50
-        const labelText = `E-${index + 1}`; // 对应的文字
-
-        const point = new Image();
-        point.src = imageSrc;
-        point.onload = () => {
-          const knovaImage = new Konva.Image({
-            x: x,
-            y: y,
-            image: point,
-            width: 50,
-            height: 50,
-            draggable: false,
-          });
-
-          knovaImage.on("click", () => {
-            // 切换选中状态,基于文本内容
-            this.selectedStates[labelText] = !this.selectedStates[labelText];
-
-            // 判断当前是否选中
-            if (this.selectedStates[labelText]) {
-              // 选中状态
-              // 显示红色矩形和文字,隐藏普通矩形和文字
-              this.rects[labelText].visible(false);
-              this.texts[labelText].visible(false);
-              this.redrects[labelText].visible(true);
-              this.redtexts[labelText].visible(true);
-
-              // 切换图片为选中状态的图片
-              const selectedImage = new Image();
-              selectedImage.src = require('@/assets/images/localSetSelect.jpg'); // 选中的图片路径
-              selectedImage.onload = () => {
-                knovaImage.image(selectedImage); // 更新图像
-                this.layer.draw(); // 更新图层
-              };
-
-              // 将选中的 labelText 推入数组
-              this.selectedText.push({
-                label: labelText,
-                value: index + 1,
-              });
-
-            } else {
-              // 取消选中状态
-              // 显示普通矩形和文字,隐藏红色矩形和文字
-              this.rects[labelText].visible(true);
-              this.texts[labelText].visible(true);
-              this.redrects[labelText].visible(false);
-              this.redtexts[labelText].visible(false);
-
-              // 切换图片为未选中状态的图片
-              const normalImage = new Image();
-              normalImage.src = imageSrc; // 未选中的默认图片路径
-              normalImage.onload = () => {
-                knovaImage.image(normalImage); // 更新图像
-                this.layer.draw(); // 更新图层
-              };
-
-              // 从选中数组中移除该项
-              this.selectedText = this.selectedText.filter(
-                (item) => item.label !== labelText
-              );
-            }
-
-            // 最后确保图层重新渲染
-            this.layer.draw();
-
-            // 传递选中的元素文本到父组件
-            this.$emit("selection-changed", this.selectedText);
-          });
-
-          this.layer.add(knovaImage);
-
-          // 普通矩形
-          const rect = new Konva.Rect({
-            x: x - 3,
-            y: y + 55,
-            width: 60,
-            height: 25,
-            cornerRadius: 10,
-            stroke: "red",
-            strokeWidth: 2,
-            fill: "white",
-          });
-          this.layer.add(rect);
-          this.rects[labelText] = rect; // 用文字作为键存储
-
-          // 普通文字
-          const text = new Konva.Text({
-            x: x + 12,
-            y: y + 60,
-            fontSize: 20,
-            text: labelText,
-            fontFamily: "Calibri",
-            fill: "red",
-          });
-          this.layer.add(text);
-          this.texts[labelText] = text; // 用文字作为键存储
-
-          // 红色矩形(初始隐藏)
-          const redrect = new Konva.Rect({
-            x: x - 3,
-            y: y + 55,
-            width: 60,
-            height: 25,
-            cornerRadius: 10,
-            stroke: "red",
-            strokeWidth: 2,
-            fill: "red",
-            visible: false,
-          });
-          this.layer.add(redrect);
-          this.redrects[labelText] = redrect; // 用文字作为键存储
-
-          // 红色文字(初始隐藏)
-          const redtext = new Konva.Text({
-            x: x + 12,
-            y: y + 60,
-            fontSize: 20,
-            text: labelText,
-            fontFamily: "Calibri",
-            fill: "white",
-            visible: false,
-          });
-          this.layer.add(redtext);
-          this.redtexts[labelText] = redtext; // 用文字作为键存储
-
-          this.layer.draw();
-        };
-      });
-    },
-
-    //     methods结束
-  },
-};
-</script>
-
-<style scoped lang="scss">
-#container {
-  width: 100%;
-  height: 100%;
-}
-</style>

+ 2 - 2
src/views/mes/sop/sopm/NewSop.vue

@@ -145,8 +145,8 @@
 
 
 <script>
-import IsolationLeftVue from "./IsolationLeft.vue";
-import SopLeft from "./SopLeft.vue";
+import IsolationLeftVue from "@/components/separationPoint/index.vue";
+import SopLeft from "@/components/separationPoint/workshop.vue";
 export default {
   name: "addView",
   components: {

+ 0 - 110
src/views/mes/sop/sopm/SopLeft.vue

@@ -1,110 +0,0 @@
-<template>
-  <div class="leftcon">
-    <el-form ref="form" :model="form" label-width="100px" :inline="true">
-      <el-form-item label="车间">
-        <el-select
-          v-model="form.workShop"
-          v-bind="$attrs"
-          multiple
-          style="width: 100%"
-          placeholder="请选择线路"
-          @change="handleSelect"
-        >
-          <div style="padding: 0 20px; line-height: 34px">
-            <el-checkbox
-              v-model="checkAll"
-              :indeterminate="isIndeterminate"
-              @change="handleCheckAllChange"
-              >全选</el-checkbox
-            >
-          </div>
-          <el-checkbox-group v-model="form.workShop">
-            <el-option
-              v-for="item in this.workShopOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
-              <el-checkbox style="pointer-events: none" :label="item.value">
-                {{ item.label }}
-              </el-checkbox>
-            </el-option>
-          </el-checkbox-group>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="生产线">
-        <el-select v-model="form.producLine" placeholder="请选择生产线">
-          <el-option
-            v-for="item in this.producLineOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
-          </el-option>
-        </el-select>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      form: {
-        checkAll: false,
-        isIndeterminate: false,
-        workShop: [],
-        producLine: "",
-      },
-      workShopOptions: [
-        { label: "士力架包装车间1号", value: "1" },
-        { label: "士力架包装车间2号", value: "2" },
-        { label: "士力架包装车间3号", value: "3" },
-        { label: "士力架包装车间4号", value: "4" },
-      ],
-      producLineOptions: [
-        { label: "打包线1", value: "1" },
-        { label: "打包线2", value: "2" },
-        { label: "打包线3", value: "3" },
-        { label: "打包线4", value: "4" },
-      ],
-    };
-  },
-  methods: {
-    // 下拉框选择事件
-    handleSelect(value) {
-      console.log(value, "value");
-      const checkedCount = value.length;
-      this.checkAll = checkedCount === this.workShopOptions.length;
-      this.isIndeterminate =
-        checkedCount > 0 && checkedCount < this.workShopOptions.length;
-      const data = value.map((item) => {
-        return item;
-      });
-      this.form.workShop = value.length > 0 ? data : [];
-      console.log(this.form.workShop, " form.workShop");
-    },
-    // 全选事件
-    handleCheckAllChange(val) {
-      const data = this.workShopOptions.map((item) => {
-        return item.value;
-      });
-      this.form.workShop = val ? data : [];
-      this.isIndeterminate = false;
-    },
-  },
-};
-</script>
-
-<style scoped lang='scss'>
-.leftcon {
-  width: 100%;
-  height: 100%;
-  //   background-color: rgba(229, 229, 229, 1);
-  background: url("../../../../assets/images/sopbgimg.png") no-repeat;
-  background-size: 100% 100%;
-  //   box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
-  padding: 3% 4%;
-}
-</style>

+ 1 - 0
src/views/mes/wa/workarea/index.vue

@@ -60,6 +60,7 @@
           plain
           icon="el-icon-delete"
           size="mini"
+          :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:wa:waa:batchremove']"
         >批量删除