Răsfoiți Sursa

任务管理 列表字段修改

jingshuyong 10 luni în urmă
părinte
comite
1a0fc8e8b3

+ 411 - 0
src/views/cqzb/components/add.vue

@@ -0,0 +1,411 @@
+<template>
+  <ele-modal
+    :title="dialogTitle"
+    :visible.sync="visible"
+    :before-close="handleClose"
+    width="80%"
+    custom-class="ele-dialog-form long-dialog-form"
+    :centered="true"
+    :close-on-click-modal="false"
+    :maxable="true"
+    append-to-body
+  >
+    <el-form label-width="110px" :model="formData">
+      <el-row>
+        <el-col :span="8">
+          <el-form-item
+            label="规则名称"
+            prop="name"
+            :rules="{
+              required: true,
+              message: '请选择规则名称',
+              trigger: 'change'
+            }"
+          >
+            <!-- <el-input v-model="formData.code" placeholder="请输入" /> -->
+            <el-select
+              style="width: 100%"
+              v-model="formData.name"
+              placeholder="请选择"
+              @change="changeList"
+            >
+              <el-option
+                v-for="(item, index) in listData"
+                :key="index"
+                :label="item.name"
+                :value="index"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item
+            label="记录表名称"
+            prop="biaoName"
+            :rules="{
+              required: true,
+              message: '请输入记录表名称',
+              trigger: 'blur'
+            }"
+          >
+            <el-input v-model="formData.biaoName" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="记录表编码" prop="biaoCode">
+            <el-input
+              disabled
+              v-model="formData.biaoCode"
+              placeholder="请输入"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="车间区域" prop="quyu">
+            <el-input v-model="formData.quyu" placeholder="请选择" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="工单" prop="workOrder">
+            <el-input
+              v-model="formData.workOrder"
+              placeholder="请选择"
+              @click.native="selectWork"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="工序名称" prop="gongxu">
+            <el-input v-model="formData.gongxu" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="产品名称" prop="chanp">
+            <el-input v-model="formData.chanp" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="产品批号" prop="branNo">
+            <el-input v-model="formData.branNo" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="产品型号" prop="xingh">
+            <el-input v-model="formData.xingh" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="产品规格" prop="xingh">
+            <el-input v-model="formData.xingh" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item
+            label="清场完成时间"
+            prop="time"
+            :rules="{
+              required: true,
+              message: '请输入记录表名称',
+              trigger: 'blur'
+            }"
+          >
+            <el-date-picker
+              style="width: 100%"
+              v-model="formData.time"
+              type="datetime"
+              placeholder="选择"
+              value-format="yyyy-MM-dd HH:mm:ss"
+            ></el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item
+            label="清场有效期"
+            prop="yxq"
+            :rules="{
+              required: true,
+              message: '请输入记录表名称',
+              trigger: 'blur'
+            }"
+          >
+            <el-date-picker
+              style="width: 100%"
+              v-model="formData.yxq"
+              type="datetime"
+              placeholder="选择"
+              value-format="yyyy-MM-dd HH:mm:ss"
+            ></el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item
+            label="清场检查结论"
+            prop="jielun"
+            :rules="{
+              required: true,
+              message: '请选择清场检查结论',
+              trigger: 'change'
+            }"
+            class="table_list"
+          >
+            <el-radio-group v-model="formData.jielun">
+              <el-radio :label="1">合格</el-radio>
+              <el-radio :label="2">不合格</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="ruleItems"
+        :toolkit="[]"
+        :need-page="false"
+        row-key="id"
+        class="table_list"
+      >
+        <template v-slot:situation="{ row }">
+          <el-radio-group v-model="row.situation">
+            <el-radio :label="2">否</el-radio>
+            <el-radio :label="1">是</el-radio>
+          </el-radio-group>
+        </template>
+        <template v-slot:toolList="{ row }">
+          <div
+            style="display: inline-block"
+            v-for="(item, idx) in row.toolList"
+            :key="idx"
+            >{{ item.name }}
+            <span v-if="row.toolList && idx != row.toolList.length - 1"
+              >,
+            </span>
+          </div>
+        </template>
+        <template v-slot:cleaners="{ row, $index }">
+          <el-input
+            placeholder="请选择"
+            v-model="row.cleaners"
+            @click.native="cleanersOpen(row, $index)"
+          ></el-input>
+        </template>
+        <template v-slot:result="{ row }">
+          <el-radio-group v-model="row.result">
+            <el-radio :label="2">不合格</el-radio>
+            <el-radio :label="1">合格</el-radio>
+          </el-radio-group>
+        </template>
+        <template v-slot:describe="{ row }">
+          <el-input
+            type="textarea"
+            :rows="2"
+            placeholder="请输入内容"
+            v-model="row.describe"
+          >
+          </el-input>
+        </template>
+      </ele-pro-table>
+    </el-form>
+    <template v-slot:footer>
+      <el-button @click="handleClose">取消</el-button>
+      <el-button type="primary" @click="preserve"> 保存 </el-button>
+    </template>
+    <Select ref="selectRef" @setPersonnel="setPersonnel" />
+  </ele-modal>
+</template>
+
+<script>
+  import Select from './select.vue';
+  export default {
+    components: { Select },
+    data() {
+      return {
+        visible: false,
+        dialogTitle: '新增',
+        formData: {},
+        listData: [
+          {
+            ruleItems: [
+              {
+                inspectionCode: 'ZJX20250808285',
+                name: '顶棚清洁干净',
+                textType: '8',
+                defaultValue: '',
+                maxValue: '',
+                minValue: '',
+                unitName: '',
+                status: 1,
+                inspectionStandard: '',
+                unit: '',
+                symbol: '',
+                inspectionRemark: '',
+                toolList: [],
+                postscriptList: [],
+                toolRemoveIds: [],
+                postscriptRemoveIds: []
+              },
+              {
+                inspectionCode: 'ZJX20250808286',
+                name: '墙面清洁干净',
+                textType: '8',
+                defaultValue: '',
+                maxValue: '',
+                minValue: '',
+                unitName: '',
+                status: 1,
+                inspectionStandard: '',
+                unit: '',
+                symbol: '',
+                inspectionRemark: '就',
+                toolList: [],
+                postscriptList: [
+                  {
+                    sort: 1,
+                    content: '注意1'
+                  },
+                  {
+                    sort: 2,
+                    content: '注意2'
+                  },
+                  {
+                    sort: 3,
+                    content: '注意3'
+                  }
+                ],
+                toolRemoveIds: [],
+                postscriptRemoveIds: []
+              },
+              {
+                inspectionCode: 'ZJX20250808288',
+                name: '出风口清洁干净',
+                textType: '8',
+                defaultValue: '',
+                maxValue: '',
+                minValue: '',
+                unitName: '',
+                status: 1,
+                inspectionStandard: '',
+                unit: '',
+                symbol: '',
+                inspectionRemark: '',
+                toolList: [],
+                postscriptList: [],
+                toolRemoveIds: [],
+                postscriptRemoveIds: []
+              }
+            ],
+            status: 1,
+            classification: 1,
+            name: '清场清洁记录'
+          }
+        ],
+        ruleItems: []
+      };
+    },
+    computed: {
+      columns() {
+        return [
+          {
+            prop: 'name',
+            label: '清场项目',
+            align: 'center',
+            minWidth: 130
+          },
+          {
+            prop: 'toolList',
+            slot: 'toolList',
+            label: '清洁工具',
+            align: 'center',
+            minWidth: 150
+          },
+          {
+            prop: 'situation',
+            slot: 'situation',
+            label: '清洁情况',
+            align: 'center',
+            minWidth: 130
+          },
+          {
+            prop: 'cleaners',
+            slot: 'cleaners',
+            label: '清洁人',
+            align: 'center',
+            minWidth: 130
+          },
+          {
+            prop: 'result',
+            slot: 'result',
+            label: '检查结果',
+            align: 'center',
+            minWidth: 160
+          },
+          {
+            prop: 'describe',
+            slot: 'describe',
+            label: '异常描述',
+            align: 'center',
+            minWidth: 300
+          }
+        ];
+      }
+    },
+    methods: {
+      handleClose() {
+        this.visible = false;
+      },
+      open() {
+        this.visible = true;
+      },
+      cleanersOpen(row, index) {
+        this.$refs.selectRef.open(row, index);
+      },
+      setPersonnel(name, index) {
+        console.log(name, 'name');
+        console.log(index, 'index');
+        this.$set(this.ruleItems[index], 'cleaners', name);
+      },
+      //   选择工单
+      selectWork() {},
+
+      //   保存
+      preserve() {},
+
+      changeList(e) {
+        this.ruleItems = this.listData[e].ruleItems;
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss">
+  ::v-deep .table_list {
+    .el-radio__inner {
+      border-radius: 2px; /* 改为方形,多选框的圆角通常很小 */
+      width: 14px;
+      height: 14px;
+    }
+
+    /* 选中状态 */
+    .el-radio__input.is-checked .el-radio__inner {
+      background: #409eff; /* 选中时的背景色 */
+      border-color: #409eff;
+    }
+    /* 选中状态的内层(原本是圆形,现在改为打勾图标) */
+    .el-radio__inner::after {
+      width: 4px;
+      height: 8px;
+      border: 2px solid #fff;
+      border-left: 0;
+      border-top: 0;
+      left: 3px;
+      top: 1px;
+      transform: rotate(45deg) scaleY(1);
+      background: transparent; /* 去掉背景 */
+      border-radius: 0;
+    }
+
+    .el-radio__input.is-disabled.is-checked .el-radio__inner::after {
+      background-color: none !important;
+    }
+  }
+</style>

+ 117 - 0
src/views/cqzb/components/select.vue

@@ -0,0 +1,117 @@
+<template>
+  <ele-modal
+    title="选择人员"
+    :visible.sync="staffVisible"
+    :before-close="handleClose"
+    width="400px"
+    :centered="true"
+    :close-on-click-modal="false"
+    :maxable="true"
+    append-to-body
+  >
+    <el-form label-width="68px" label-position="left">
+      <el-form-item label="部门:" required>
+        <deptSelect v-model="form.groupId" @changeGroup="searchDeptNodeClick" />
+      </el-form-item>
+      <el-form-item label="清理人:" required>
+        <el-select
+          style="width: 100%"
+          v-model="form.nameIds"
+          multiple
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in nameList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <template v-slot:footer>
+      <el-button @click="handleClose">取消</el-button>
+      <el-button type="primary" @click="choose"> 确定 </el-button>
+    </template>
+  </ele-modal>
+</template>
+<script>
+  import { getUserPage } from '@/api/system/organization';
+  import deptSelect from '@/components/CommomSelect/dept-select.vue';
+  export default {
+    components: {
+      deptSelect
+    },
+    data() {
+      return {
+        staffVisible: false,
+        form: {
+          nameIds: []
+        },
+        depVOList: [],
+        nameList: [],
+        index: 0
+      };
+    },
+    methods: {
+      handleClose() {
+        this.staffVisible = false;
+        this.nameList = [];
+        this.form = {
+          nameIds: []
+        };
+      },
+      //选择部门(搜索)
+      searchDeptNodeClick(info, row) {
+        if (info) {
+          const params = { groupId: info };
+          this.getUserList(params);
+        } else {
+          this.form.nameIds = [];
+        }
+      },
+      open(ids, index) {
+        this.staffVisible = true;
+        this.index = index;
+      },
+      // 选择
+      choose() {
+        if (!this.form.nameIds || this.form.nameIds.length == 0) {
+          return this.$message.warning('请选择清理人');
+        }
+        // let cleaners =
+        let obj = {};
+        this.nameList.map((el) => {
+          obj[el.id] = el.name;
+        });
+        let nameArr = [];
+        this.form.nameIds.map((item) => {
+          if (obj[item]) {
+            nameArr.push(obj[item]);
+          }
+        });
+        let name = nameArr.toString();
+        this.$emit('setPersonnel', name, this.index);
+        this.handleClose();
+      },
+      // 获取人员
+      async getUserList(params) {
+        try {
+          let data = { pageNum: 1, size: -1 };
+          // 如果传了参数就是获取巡点检人员数据
+          if (params) {
+            data = Object.assign(data, params);
+          }
+          const res = await getUserPage(data);
+          let list = res.list.map((el) => {
+            return {
+              id: el.id,
+              name: el.name
+            };
+          });
+          this.nameList = list;
+        } catch (error) {}
+      }
+    }
+  };
+</script>

+ 146 - 0
src/views/cqzb/index.vue

@@ -0,0 +1,146 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <!-- <search @search="reload" /> -->
+      <ele-pro-table ref="table" :columns="columns" :datasource="datasource">
+        <template v-slot:toolbar>
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-plus"
+            class="ele-btn-icon"
+            @click="add('', 'add', '新增记录规则')"
+          >
+            新建
+          </el-button>
+        </template>
+        <!-- <template v-slot:status="{ row }"> </template>
+        <template v-slot:action="{ row }">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-finished"
+            @click="addPermit('clone', row)"
+          >
+            克隆
+          </el-link>
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="addPermit('edit', row)"
+          >
+            修改
+          </el-link>
+          <el-popconfirm
+            class="ele-action"
+            title="确定要删除此条数据吗?"
+            @confirm="remove(row)"
+          >
+            <template v-slot:reference>
+              <el-link type="danger" :underline="false" icon="el-icon-delete">
+                删除
+              </el-link>
+            </template>
+          </el-popconfirm> -->
+        <!-- </template> -->
+      </ele-pro-table>
+    </el-card>
+    <!-- <permitAdd ref="permitAddRef" /> -->
+    <Add ref="addRef" />
+  </div>
+</template>
+
+<script>
+  import Add from './components/add.vue';
+  export default {
+    components: { Add },
+    computed: {
+      columns() {
+        return [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '记录规则编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'name',
+            label: '记录规则名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'fl',
+            label: '模块分类',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'bfl',
+            label: '记录表分类',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'createName',
+            label: '创建人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'startTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'status',
+            slot: 'status',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 230,
+            align: 'center',
+            resizable: false,
+            slot: 'action'
+          }
+        ];
+      }
+    },
+    data() {
+      return {
+        loading: false
+      };
+    },
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return [];
+      },
+      add() {
+        this.$refs.addRef.open();
+      }
+    }
+  };
+</script>

+ 3 - 1
src/views/taskList/components/Ddtails.vue

@@ -384,7 +384,9 @@
               (this.form.unqualifiedWeight - 0) !==
             this.current.weight
           ) {
-            return this.$message.warning(`合格重量加不合格重量要等于任务重量${this.current.weight}`);
+            return this.$message.warning(
+              `合格重量加不合格重量要等于任务重量${this.current.weight}`
+            );
           }
           let data = {
             ...this.form,

+ 9 - 9
src/views/taskList/index.vue

@@ -217,14 +217,14 @@
           },
           {
             prop: 'quantity',
-            label: '要求生产数量',
+            label: '任务数量',
             align: 'center',
             showOverflowTooltip: true,
             width: 110
           },
           {
             prop: 'weight',
-            label: '要求生产重量',
+            label: '任务重量(kg)',
             align: 'center',
             showOverflowTooltip: true,
             width: 110
@@ -379,13 +379,13 @@
       datasource({ page, limit, where }) {
         // console.log(this.tabValue, 'this.tabValue');
         // if (this.tabValue && this.tabValue != 0) {
-          let api =
-            this.tabValue === '1' ? pageByCurrentUser : pageByCurrentUserLeader;
-          return api({
-            ...where,
-            pageNum: page,
-            size: limit
-          });
+        let api =
+          this.tabValue === '1' ? pageByCurrentUser : pageByCurrentUserLeader;
+        return api({
+          ...where,
+          pageNum: page,
+          size: limit
+        });
         // } else {
         //   return [];
         // }