Kaynağa Gözat

组件优化

ZYZ 1 yıl önce
ebeveyn
işleme
009da7a16c

+ 663 - 0
zkqy-ui/src/views/bussiness/dialogCompments/Mec/PersonalDistribution.vue

@@ -0,0 +1,663 @@
+<template>
+    <div class="app-container">
+      <div class="leftMessage">
+        <div class="list" v-for="(item, index) in baseMessage" :key="index">
+          <span class="title">
+            {{ item.title }}
+          </span>
+          <span v-if="item.prop == 'taskNo'" class="content">
+            {{ form.master_task[item.prop] }}
+          </span>
+          <span
+            v-else-if="item.prop == 'mapNumber'"
+            class="content"
+            style="background: rgb(235, 237, 242); color: rgb(232, 83, 152)"
+          >
+            {{ form.master_task[item.prop] }}
+          </span>
+          <span
+            v-else-if="item.prop == 'mapName'"
+            class="content"
+            style="background: rgb(235, 237, 242); color: rgb(232, 83, 152)"
+          >
+            {{ form.master_task[item.prop] }}
+          </span>
+          <span
+            v-else-if="item.prop == 'modelNumber'"
+            class="content"
+            style="background: rgb(235, 237, 242); color: rgb(232, 83, 152)"
+          >
+            {{ form.master_task[item.prop] }}
+          </span>
+          <span
+            v-else-if="item.prop == 'craftRoute'"
+            class="content"
+            style="background: rgb(235, 237, 242); color: rgb(232, 83, 152)"
+          >
+            {{ form.master_task[item.prop] }}
+          </span>
+          <span
+            v-else
+            class="content"
+            style="background: rgb(235, 237, 242); color: rgb(232, 83, 152)"
+          >
+            {{ form.record_quality_control_card[item.prop] }}
+          </span>
+        </div>
+        <div></div>
+        <div class="content"></div>
+      </div>
+      <div class="rightMessage">
+        <div class="top">
+          <div class="state">
+            <div class="list">
+              <span>工序状态:</span>
+              <p id="state">
+                {{
+                  form.taskNodeOtherState
+                    ? stateObj[form.taskNodeOtherState]
+                    : "初始"
+                }}
+              </p>
+            </div>
+            <div class="list">
+              <span>是否外协:</span>
+              <p>
+                <el-checkbox
+                  @change="
+                    (val) => {
+                      updateHandler(form.taskNodeOtherState, val);
+                    }
+                  "
+                  v-model="checked"
+                ></el-checkbox>
+              </p>
+            </div>
+          </div>
+        </div>
+        <div class="button">
+          <el-button-group prop="state">
+            <el-button
+              type="primary"
+              icon="el-icon-video-play"
+              plain
+              round
+              @click="updateHandler('1', checked)"
+              >开始</el-button
+            >
+            <el-button
+              type="danger"
+              icon="el-icon-video-pause"
+              plain
+              @click="updateHandler('2', checked)"
+              >暂停</el-button
+            >
+            <el-button
+              type="success"
+              icon="el-icon-circle-check"
+              plain
+              @click="updateHandler('3', checked)"
+              >完成</el-button
+            >
+            <el-button
+              type="info"
+              icon="el-icon-refresh"
+              plain
+              round
+              @click="updateHandler('0', checked)"
+              >重置</el-button
+            >
+          </el-button-group>
+        </div>
+        <div class="middle" v-show="!checked">
+          <el-table :data="oldTableData" border ref="addTableRowRef">
+            <el-table-column label="人员姓名">
+              <template slot-scope="scope">
+                <el-input
+                  v-if="scope.row.isEdit"
+                  v-model="editingRow.personnelName"
+                ></el-input>
+                <span v-else>{{ scope.row.personnelName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="分配工时">
+              <template slot-scope="scope">
+                <el-input-number
+                  v-if="scope.row.isEdit"
+                  v-model="editingRow.allottedTime"
+                  controls-position="right"
+                  @change="handleChange"
+                  :min="0"
+                  :step="0.25"
+                  size="small"
+                ></el-input-number>
+                <span v-else>{{ scope.row.allottedTime }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="120" align="center">
+              <template slot-scope="scope">
+                <el-dropdown v-if="!scope.row.isEdit">
+                  <el-button type="warning" plain size="small">
+                    处理<i class="el-icon-arrow-down el-icon--right"></i>
+                  </el-button>
+                  <el-dropdown-menu slot="dropdown">
+                    <el-dropdown-item
+                      ><el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-edit"
+                        @click="changeHandler(scope.row)"
+                        >修改</el-button
+                      ></el-dropdown-item
+                    >
+                    <el-dropdown-item
+                      ><el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-delete"
+                        @click="deleteOne(scope.row)"
+                        v-hasPermi="['system:dict:remove']"
+                        >删除</el-button
+                      >
+                    </el-dropdown-item>
+                  </el-dropdown-menu>
+                </el-dropdown>
+                <el-dropdown v-else>
+                  <el-button type="warning" plain size="small">
+                    处理<i class="el-icon-arrow-down el-icon--right"></i>
+                  </el-button>
+                  <el-dropdown-menu slot="dropdown">
+                    <el-dropdown-item
+                      ><el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-edit"
+                        @click="saveOne"
+                        >保存</el-button
+                      ></el-dropdown-item
+                    >
+                    <el-dropdown-item
+                      ><el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-delete"
+                        @click="cancelHandler(scope.row)"
+                        v-hasPermi="['system:dict:remove']"
+                        >取消</el-button
+                      >
+                    </el-dropdown-item>
+                  </el-dropdown-menu>
+                </el-dropdown>
+                <!-- <el-button
+                  icon="el-icon-delete"
+                  size="mini"
+                  @click="deleteTableRow(scope.$index)"
+                  >删除</el-button
+                > -->
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="name">人员及工时分配</div>
+          <el-table :data="tableData" border ref="addTableRowRef">
+            <el-table-column label="人员姓名">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.personnelName"></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column label="分配工时">
+              <template slot-scope="scope">
+                <el-input-number
+                  v-model="scope.row.allottedTime"
+                  controls-position="right"
+                  @change="handleChange"
+                  :min="0"
+                  :step="0.25"
+                  size="small"
+                ></el-input-number>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="120" align="center">
+              <template slot-scope="scope">
+                <el-button
+                  icon="el-icon-delete"
+                  size="mini"
+                  @click="deleteTableRow(scope.$index)"
+                  >删除</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="block">
+            <el-pagination layout="prev, pager, next" :total="50">
+            </el-pagination>
+          </div>
+          <el-button
+            size="mini"
+            icon="el-icon-plus"
+            type="primary"
+            @click="addTableRow"
+            >新 增</el-button
+          >
+          <el-button
+            size="mini"
+            icon="el-icon-check"
+            type="success"
+            @click="saveTableRow"
+            >保 存</el-button
+          >
+          <div class="total">
+            <span>当前工序总工时: 10</span>
+            <span>当前已分配工时: 10</span>
+            <span>当前剩余工时: 10</span>
+          </div>
+        </div>
+      </div>
+    </div>
+</template>
+<script>
+import {
+submitNodeForm,
+changeNodeState,
+} from "@/api/bpmprocess/runDialogApi/index";
+import { getProcessNodeFormInfoData } from "@/api/bpmprocess/run/executeProcess";
+export default {
+name: "ProductionProcesses",
+props: ["formData", "row"],
+data() {
+    return {
+    checked: true,
+    isEdit: false,
+    form: {
+        taskNodeOtherState: "0",
+    },
+    tableData: [],
+    editingRow: {},
+    oldTableData: [
+        {
+        id: 1,
+        personnelName: "芝麻林",
+        allottedTime: 1,
+        isEdit: false,
+        },
+    ],
+    newRow: {},
+
+    baseMessage: [
+        { title: "任务", prop: "taskNo" },
+        { title: "图号", prop: "mapNumber" },
+        { title: "名称", prop: "mapName" },
+        { title: "数量", prop: "modelNumber" },
+        { title: "工艺", prop: "craftRoute" },
+        { title: "质控", prop: "qualityControlCard" },
+    ],
+    stateObj: {
+        0: "初始",
+        1: "开始",
+        2: "暂停",
+        3: "完成",
+    },
+    };
+},
+computed: {
+    myFormData() {
+    return this.formData;
+    },
+},
+watch: {
+    myFormData: {
+    handler(nval) {
+        if (!nval) return;
+        this.initData(nval);
+    },
+    deep: true,
+    immediate: true,
+    },
+},
+methods: {
+    async updateHandler(state, flag) {
+    flag = flag ? "true" : "false";
+    let payLoad = {
+        // conditionMap: {
+        taskProcessKey: this.row.benTaskProcessKey,
+        taskNodeKey: this.row.benTaskNodeKey,
+        // },
+        // commMap: {
+        taskNodeOtherState: state,
+        task1: flag,
+        // },
+    };
+
+    changeNodeState(payLoad).then((response) => {
+        if (response.code == 200) {
+        this.$modal.msgSuccess("修改成功");
+        this.form.taskNodeOtherState = state;
+        } else {
+        this.$modal.error("修改失败,请稍后再试");
+        }
+    });
+    },
+    async submitHandler() {
+    console.log(this.row);
+    let res = await this.$refs.form?.validate();
+    if (res) {
+        let payLoad = {};
+        let { state } = this.form;
+        console.log(this.form);
+        if (this.isEdit) {
+        let { taskKey, taskNodeKey } = this.myFormData.resultMap;
+        payLoad.updateCommonEntityList = [
+            {
+            basicMap: {
+                tableName: "bpm_execute_node",
+            },
+            conditionMap: {
+                task_key: taskKey,
+                task_node_key: taskNodeKey,
+            },
+            commMap: {
+                task_node_other_state: state,
+            },
+            },
+        ];
+        } else {
+        payLoad.insertCommonEntityList = [
+            {
+            basicMap: {
+                tableName: "bpm_execute_node",
+            },
+            addListMap: [
+                {
+                task_node_other_state: state,
+                taskKey: this.row.benTaskProcessKey,
+                taskNodeKey: this.row.benTaskNodeKey,
+                },
+            ],
+            },
+        ];
+        }
+        submitNodeForm(payLoad).then((response) => {
+        if (response.code == 200) {
+            this.$modal.msgSuccess("保存成功");
+        } else {
+            this.$modal.error("保存失败,请稍后再试");
+        }
+        });
+    }
+    },
+    async getFormData() {
+    return {
+        flag: true,
+        data: {},
+    };
+
+    let formData = {
+        flag: false,
+        msg: "",
+    };
+    try {
+        let valid = await this.$refs.form.validate();
+        if (valid) {
+        formData.flag = true;
+        formData.data = this.form;
+        return formData;
+        } else {
+        formData.msg = "表单校验异常,请规范填写表单数据";
+        return formData;
+        }
+    } catch (error) {
+        // console.log(error);
+        formData.msg = "表单校验异常,请规范填写表单数据";
+        return formData;
+    }
+    },
+    addTableRow() {
+    const newRow = {
+        personnelName: "",
+        allottedTime: 0,
+    };
+    this.tableData.push(newRow);
+    },
+    deleteTableRow(index) {
+    if (index !== -1) {
+        this.tableData.splice(index, 1);
+    }
+    },
+    // 批量保存表格数据回调
+    async saveTableRow() {
+    console.log(this.tableData);
+    let payLoad = {};
+    payLoad.insertCommonEntityList = [
+        {
+        basicMap: {
+            tableName: "process_inspect_personnel",
+        },
+        addListMap: [
+            // {
+            //   task_node_other_state: state,
+            //   taskKey: this.row.benTaskProcessKey,
+            //   taskNodeKey: this.row.benTaskNodeKey,
+            // },
+        ],
+        },
+    ];
+    payLoad.insertCommonEntityList[0].addListMap = this.tableData.map(
+        (item) => {
+        let { personnelName, allottedTime } = item;
+        return {
+            personnelName,
+            allottedTime,
+            taskProcessKey: this.row.benTaskProcessKey,
+            taskNodeKey: this.row.benTaskNodeKey,
+        };
+        }
+    );
+    // this.tableData = [];
+    let res = await submitNodeForm(payLoad);
+    if (res.code == 200) {
+        this.$message.success("保存成功");
+        this.tableData = [];
+        this.refreshData(this.row);
+    } else {
+        this.$message.warning("网络异常,请稍后再试");
+    }
+    },
+    // 刷新弹窗数据
+    async refreshData(row) {
+    let {
+        benTaskNodeFormKey,
+        benTaskNodeFormType,
+        bepTaskPlanKey,
+        bepTaskKey,
+        bepTaskNodeKey,
+        benTaskProcessKey,
+        benmTaskAutomaticScriptTriggerType,
+        bepTaskNodeNextKey,
+    } = row;
+    let payLoad = {
+        taskNodeKey: bepTaskNodeNextKey,
+        taskProcessKey: benTaskProcessKey,
+        taskAutomaticScriptTriggerType: benmTaskAutomaticScriptTriggerType,
+        taskPlanKey: bepTaskPlanKey,
+    };
+    let res = await getProcessNodeFormInfoData(payLoad);
+    if (res.code == 200) {
+        this.updataTableData(res.data);
+    } else {
+        this.$message.error("网络异常,请稍后再试");
+    }
+    },
+    // 修改某一条数据
+    async saveOne() {
+    console.log(this.editingRow);
+    let payLoad = {};
+    let { taskKey, taskNodeKey } = this.myFormData.resultMap;
+    let { id, personnelName, allottedTime } = this.editingRow;
+    payLoad.updateCommonEntityList = [
+        {
+        basicMap: {
+            tableName: "process_inspect_personnel",
+        },
+        conditionMap: {
+            taskProcessKey: this.row.benTaskProcessKey,
+            taskNodeKey: this.row.benTaskNodeKey,
+            id,
+        },
+        commMap: {
+            personnelName,
+            allottedTime,
+        },
+        },
+    ];
+    let res = await submitNodeForm(payLoad);
+    if (res.code == 200) {
+        this.$message.success("保存成功");
+        this.refreshData(this.row);
+    } else {
+        this.$message.warning("网络异常,请稍后再试");
+    }
+    },
+    // 删除一条数据
+    async deleteOne(row) {
+    let payLoad = {};
+    let { id } = row;
+    payLoad.deleteCommonEntityList = [
+        {
+        basicMap: {
+            tableName: "process_inspect_personnel",
+        },
+        conditionMap: {
+            // taskProcessKey: this.row.benTaskProcessKey,
+            // taskNodeKey: this.row.benTaskNodeKey,
+            id: [id],
+        },
+        },
+    ];
+    let res = await submitNodeForm(payLoad);
+    if (res.code == 200) {
+        this.$message.success("删除成功");
+        this.refreshData(this.row);
+    } else {
+        this.$message.warning("网络异常,请稍后再试");
+    }
+    },
+    // 取消修改回调
+    cancelHandler(row) {
+    row.isEdit = false;
+    },
+    handleChange(value) {
+    console.log(value);
+    },
+    changeHandler(row) {
+    console.log(row);
+    row.isEdit = true;
+    this.editingRow = JSON.parse(JSON.stringify(row));
+    },
+    // 初始化数据
+    initData(nval) {
+    this.form = JSON.parse(JSON.stringify(nval?.resultMap));
+    this.form.personnelList.forEach((element) => {
+        element.isEdit = false;
+    });
+    this.oldTableData = JSON.parse(JSON.stringify(this.form.personnelList));
+    this.checked = this.form.task1 == "true" ? true : false;
+    // this.$set(this.form, 'card', nval?.resultMap.qualityControlCard);
+    this.$set(this.form, "state", nval?.resultMap.taskNnodeOtherState);
+    },
+    // 更新表格数据
+    updataTableData(nval) {
+    nval?.resultMap.personnelList.forEach((element) => {
+        element.isEdit = false;
+    });
+    this.oldTableData = JSON.parse(
+        JSON.stringify(nval?.resultMap.personnelList)
+    );
+    },
+},
+};
+</script>
+
+<style lang="scss" scoped>
+.app-container {
+::v-deep .el-checkbox {
+    /* font-size: 8px; */
+    color: white;
+}
+display: flex;
+flex-direction: row;
+justify-content: space-between;
+.leftMessage {
+    display: flex;
+    flex-direction: column;
+    width: 145px;
+    .list {
+    padding: 10px 0px;
+    span {
+        border-radius: 10px;
+        padding: 5px;
+        margin-right: 10px;
+    }
+    .title {
+        background-color: rgb(52, 191, 163);
+        color: white;
+    }
+    .content {
+        background: rgb(235, 237, 242);
+        color: rgb(232, 83, 152);
+    }
+    }
+}
+.rightMessage {
+    display: flex;
+    width: 500px;
+    flex-direction: column;
+    .top {
+    background: #53b0f8;
+    color: white;
+    height: 60px;
+    .state {
+        display: flex;
+        flex-direction: row;
+        padding: 10px 20px;
+        .list:first-child {
+        padding-right: 180px;
+        }
+        /* p {
+        padding-top: 5px;
+        font-size: 10px;
+        } */
+    }
+    }
+    .button {
+    width: 100%;
+    padding: 20px 0px;
+    .el-button {
+        width: 140px;
+        /* background: none; */
+    }
+    .el-button--info {
+        width: 80px;
+    }
+    }
+    .middle {
+    .name {
+        color: black;
+        font-weight: bold;
+        text-align: center;
+        padding: 10px 0px;
+    }
+    .block {
+        text-align: center;
+    }
+    .total {
+        display: inline-block;
+        flex-direction: row;
+        margin-top: 10px;
+        span {
+        font-weight: bold;
+        color: black;
+        }
+    }
+    }
+}
+}
+</style>

+ 13 - 10
zkqy-ui/src/views/system/tenant/index.vue

@@ -169,23 +169,26 @@
                 <el-button
                   size="mini"
                   type="text"
-                  icon="el-icon-edit"
+                  icon="el-icon-position"
                   @click="bindDatasource(scope.row)"
                   v-show="scope.row.datasourceId == null"
                   >绑定数据源
                 </el-button>
               </el-dropdown-item>
+              <el-dropdown-item>
+                <el-button
+                  size="small"
+                  type="warning"
+                  icon="el-icon-edit"
+                  @click="openTenantExpirationTime(scope.row)"
+                  v-hasPermi="['system:tenant:remove']"
+                  style="margin-left: 5px"
+                  >激活租户
+                </el-button>
+              </el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
-          <el-button
-            size="small"
-            type="warning"
-            icon="el-icon-edit"
-            @click="openTenantExpirationTime(scope.row)"
-            v-hasPermi="['system:tenant:remove']"
-            style="margin-left: 5px"
-            >激活租户
-          </el-button>
+          
         </template>
       </el-table-column>
     </el-table>