Quellcode durchsuchen

fix:解决冲突

lupeng vor 1 Monat
Ursprung
Commit
f67d186c04

+ 12 - 0
src/api/craft/opExcel/index.ts

@@ -0,0 +1,12 @@
+import request from "@/utils/request";
+
+// 返回一工段为
+export function opExcelPage(operationId) {
+  return request({
+    url: "/api/v1/opExcelForm/page",
+    method: "post",
+    data: {
+      operationId: operationId,
+    },
+  });
+}

+ 2 - 1
src/store/modules/dictionary.ts

@@ -34,11 +34,12 @@ export const useDictionaryStore = defineStore("dictionaryStore", () => {
     "process_state",
     "form_params",
     "bill_type",
-      "flow_ins_state",
+    "flow_ins_state",
     "warehouse_type",
     "signature_type",
     "signature_attribution",
     "accessories_property",
+    "system_message_type",
   ];
   const dicts = ref<{ [key: string]: any[] }>({});
 

+ 11 - 1
src/views/base/craftManagement/route/components/processComponent.vue

@@ -165,6 +165,8 @@ import {
   processesByRouteId,
   saveProcessInRoute,
 } from "@/api/craft/route/index";
+
+import { opExcelPage } from "@/api/craft/opExcel";
 const prodtCode = ref("");
 const routerId = ref("");
 const router = useRouter();
@@ -378,7 +380,15 @@ const onUpdate = () => {
   selectIndex.value = -1;
 };
 
-const clickDelete = (index) => {
+const clickDelete = async (index) => {
+  if (selectProComs.value[index].compentType === "operationExcel") {
+    let operationId = route.fullPath.split("/")[4];
+    let res = await opExcelPage(operationId);
+    if (res.data.totalCount > 0) {
+      ElMessage.error("请先删除工序表单数据!");
+      return;
+    }
+  }
   selectProComs.value.splice(index, 1);
   selectIndex.value = -1;
   isChanged.value = true;

+ 191 - 0
src/views/plan/attendanceStatistics/index.vue

@@ -0,0 +1,191 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-save="createRow"
+      @row-del="deleteRow"
+      @row-update="updateRow"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @selection-change="selectionChange"
+      :before-open="onBeforeOpen"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup lang="ts">
+import {ref, getCurrentInstance} from "vue";
+import {useCrud} from "@/hooks/userCrud";
+
+// 传入一个url,后面不带/
+const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
+  useCrud({
+    src: "/api/v1/attendanceStatistics",
+  });
+const {dataList, createRow, updateRow, deleteRow, searchChange, resetChange} =
+  Methords; //增删改查
+const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
+const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
+const deptTypes = ref([]);
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+const multipleRow = ref(true);
+const productionLineRef = ref(null);
+const startCreat = () => {
+  productionLineRef.value?.mergeOption({
+    selection: true,
+    reserveSelection: true,
+  });
+};
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  searchEnter: false,
+  selection: false,
+  menuWidth: 200,
+  border: true,
+  index: true,
+  delBtn: true,
+  addBtn: true,
+  viewBtn: false,
+  editBtn: false,
+  rowKey: "id",
+  column: [
+    // {
+    //   label: "择班组信息",
+    //   prop: "toSelect",
+    //   hide: true,
+    //   type: "tree",
+    //   dicUrl: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/dept/orgTree",
+    //   // dicMethod: "post",
+    //   span: 24,
+    //   props: {
+    //     label: "deptName", // 下拉菜单显示的字段
+    //     value: "deptCode", // 下拉菜单值的字段
+    //   },
+    //   change: (row) => {
+    //     if (row && row.item) {
+    //       form.value.deptName = row.item.deptName;
+    //     }
+    //   },
+    // },
+    {
+      label: "班组名称",
+      prop: "deptName",
+      type: "select",
+      dicUrl: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/dept/deptList?parentId=10",
+      props: {
+        label: "deptName",
+        value: "deptName",
+      },
+      change: (row) => {
+        if (row && row.item) {
+          form.value.deptName = row.item.deptName;
+          form.value.deptNum = row.item.deptNum;
+        }
+      },
+      search: true,
+      overHidden: true,
+      rules: [
+        {
+          required: true,
+          message: "请输入deptName",
+          trigger: "blur",
+        },
+      ],
+    },
+    {
+      label: "班组人数",
+      prop: "deptNum",
+      search: false,
+      overHidden: true,
+      disabled: true,
+      type: "number",
+      min: 1,
+      max: 99999,
+      rules: [
+        {
+          required: true,
+          message: "班组人数不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "应出勤",
+      prop: "answerNum",
+      search: false,
+      overHidden: true,
+      type: "number",
+      min: 1,
+      max: 99999,
+      rules: [
+        {
+          required: true,
+          message: "应出勤人数不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "实出勤",
+      prop: "practicalNum",
+      search: false,
+      overHidden: true,
+      type: "number",
+      min: 1,
+      max: 99999,
+      rules: [
+        {
+          required: true,
+          message: "实出勤人数不能为空",
+          trigger: "trigger",
+        },
+      ],
+      blur: () => {
+        // 检查两个字段是否都有值(不为 null/undefined/空字符串/0)
+        if (form.value.practicalNum != null && form.value.answerNum != null) {
+          // 额外检查 answerNum 不能为 0(避免除以零)
+          if (form.value.answerNum !== 0) {
+            form.value.attendanceRate = (form.value.practicalNum / form.value.answerNum * 100).toFixed(2);
+          } else {
+            form.value.attendanceRate = 0; // 或其他默认值
+          }
+        }
+        // 如果任一字段为空,不执行计算(保持 attendanceRate 原值或清空)
+      },
+    },
+    {
+      label: "出勤率(%)",
+      prop: "attendanceRate",
+      search: false,
+      disabled: true,
+      overHidden: true,
+    },
+    {
+      label: "创建时间",
+      prop: "created",
+      display: false,
+    },
+  ],
+});
+
+const tableData = ref<any[]>([]); //选中的行
+const onBeforeOpen = (done) => {
+  console.log("before open");
+  tableData.value = [];
+  form.value.dtos = [];
+  done();
+};
+
+</script>

+ 3 - 1
src/views/plan/checkingNumber/index.vue

@@ -103,7 +103,9 @@ const addNumbers = () => {
         selection: true,
         reserveSelection: true,
       });
-      productionLineRef.value.startSelect();
+      productionLineRef.value.startSelect({
+        queryType: "99"
+      });
     }
   });
 };

+ 7 - 1
src/views/plan/order/index.vue

@@ -356,7 +356,13 @@ option.value = {
       search: true,
       width: 130,
       overHidden: true,
-      display: false,
+      rules: [
+        {
+          required: true,
+          message: "订单编号不能为空",
+          trigger: "trigger",
+        },
+      ],
     },
     {
       label: "订单名称",

+ 201 - 117
src/views/quality/handover/index.vue

@@ -1,60 +1,127 @@
 <template>
   <div class="mainContentBox">
     <avue-crud
-        ref="crudRef"
-        v-model:search="search"
-        v-model="form"
-        :data="data"
-        :option="option"
-        v-model:page="page"
-        @row-save="createRowSave"
-        @row-update="updateRow"
-        @row-del="deleteRow"
-        :table-loading="loading"
-        @search-change="searchChange"
-        @search-reset="resetChange"
-        @size-change="dataList"
-        @current-change="dataList"
-        @selection-change="selectionChange"
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-save="createRowSave"
+      @row-update="updateRow"
+      @row-del="deleteRow"
+      :table-loading="loading"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @selection-change="selectionChange"
     >
       <template #menu="{ size, row, index }">
-<!--        <el-button
-            icon="el-icon-edit"
-            text
-            @click="openDialog(1, row.id)"
-            type="primary"
-            :size="size"
-        >编辑</el-button
-        >-->
+        <!--        <el-button
+                    icon="el-icon-edit"
+                    text
+                    @click="openDialog(1, row.id)"
+                    type="primary"
+                    :size="size"
+                >编辑</el-button
+                >-->
 
         <el-button
-            icon="el-icon-view"
-            text
-            @click="openDialog(0, row)"
-            type="primary"
-            :size="size"
-        >详情</el-button
+          icon="el-icon-view"
+          text
+          @click="openDialog(0, row)"
+          type="primary"
+          :size="size"
+        >详情
+        </el-button
         >
       </template>
     </avue-crud>
     <el-dialog
-        v-model="dialog.visible"
-        :title="dialog.title"
-        width="1650px"
-        @close="dialog.visible = false"
+      v-model="dialog.visible"
+      :title="dialog.title"
+      width="90%"
+      @close="dialog.visible = false"
     >
 
-<!--      <el-button
-          class="ml-3"
-          style="margin-bottom: 5px;"
-          @click="handleExport"
+      <!--      <el-button
+                class="ml-3"
+                style="margin-bottom: 5px;"
+                @click="handleExport"
+            >
+              <template #icon> <i-ep-download /> </template>导出
+            </el-button>-->
+      <el-form
+        class="header-box"
+        label-width="80px"
+        size="midium"
+        v-model="searchForm"
+        ref="searchFormRef"
       >
-        <template #icon> <i-ep-download /> </template>导出
-      </el-button>-->
+        <el-form
+          class="header-box"
+          label-width="80px"
+          size="midium"
+          v-model="searchForm"
+          ref="searchFormRef"
+        >
+          <el-row>
+            <el-col :span="5">
+              <el-form-item label="物料型号" prop="materialModel">
+                <el-input
+                  v-model="searchForm.materialModel"
+                  placeholder="请输入物料型号"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="产品批号" prop="workOrderCode">
+                <el-input
+                  v-model="searchForm.workOrderCode"
+                  placeholder="请输入产品批号"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="开始日期" prop="startDate">
+                <el-date-picker
+                  v-model="searchForm.startDate"
+                  type="date"
+                  value-format="YYYY-MM-DD"
+                  placeholder="开始日期"
+                  clearable
+                ></el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5" style="margin-left: -55px">
+              <el-form-item label="结束日期" prop="endDate">
+                <el-date-picker
+                  v-model="searchForm.endDate"
+                  type="date"
+                  value-format="YYYY-MM-DD"
+                  placeholder="结束日期"
+                  clearable
+                ></el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-button type="primary" icon="el-icon-search" @click="handleSearch">
+              搜索
+            </el-button>
+            <el-button type="default" icon="el-icon-delete" @click="handleReset">
+              清空
+            </el-button>
+          </el-row>
+        </el-form>
+
+      </el-form>
+
       <el-table :data="itemList" border style="width: 100%" span-method="objectSpanMethod">
-        <el-table-column show-overflow-tooltip  prop="operationName" label="工序" width="100"/>
-        <el-table-column show-overflow-tooltip  prop="materialModel" label="物料型号" width="100"/>
-        <el-table-column show-overflow-tooltip  prop="workOrderCode" label="产品批号" width="120"/>
+        <el-table-column show-overflow-tooltip prop="operationName" label="工序" width="100"/>
+        <el-table-column show-overflow-tooltip prop="materialModel" label="物料型号" width="100"/>
+        <el-table-column show-overflow-tooltip prop="workOrderCode" label="产品批号" width="120"/>
         <el-table-column prop="reNum" label="数量(接收)" width="70">
           <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.reNum"></el-input>
@@ -66,77 +133,77 @@
           </template>
         </el-table-column>
         <el-table-column prop="reReceiveUser" label="接收人(接收)" width="140">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.reReceiveUser"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="reDate" label="时间(接收)" width="120">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-date-picker value-format="YYYY-MM-DD" type="date" v-model="scope.row.reDate"></el-date-picker>
           </template>
         </el-table-column>
         <el-table-column prop="next0Num" label="数量(下传合格)" width="80">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.next0Num"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="next0FrontUser" label="下传人(下传合格)" width="140">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.next0FrontUser"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="next0ReceiveUser" label="接收人(下传合格)" width="140">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.next0ReceiveUser"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="next0Date" label="时间(下传合格)" width="120">
-          <template v-if="dialog.type === 1"  #default="scope">
-            <el-date-picker  value-format="YYYY-MM-DD" type="date" v-model="scope.row.next0Date"/>
+          <template v-if="dialog.type === 1" #default="scope">
+            <el-date-picker value-format="YYYY-MM-DD" type="date" v-model="scope.row.next0Date"/>
           </template>
         </el-table-column>
         <el-table-column prop="next1Num" label="数量(下传不合格)" width="80">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.next1Num"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="next1FrontUser" label="下传人(下传不合格)" width="140">
-          <template v-if="dialog.type === 1"  #default="scope">
-            <el-date-picker  value-format="YYYY-MM-DD" type="date" v-model="scope.row.next1FrontUser"/>
+          <template v-if="dialog.type === 1" #default="scope">
+            <el-date-picker value-format="YYYY-MM-DD" type="date" v-model="scope.row.next1FrontUser"/>
           </template>
         </el-table-column>
         <el-table-column prop="next1ReceiveUser" label="接收人(下传不合格)" width="140">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.next1ReceiveUser"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="next1Date" label="时间(下传不合格)" width="100">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.next1Date"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="remark" label="备注" width="100">
-          <template v-if="dialog.type === 1"  #default="scope">
+          <template v-if="dialog.type === 1" #default="scope">
             <el-input v-model="scope.row.remark"></el-input>
           </template>
         </el-table-column>
-<!--        <el-table-column prop="remark" label="关联表单" width="120">
-          <template  #default="scope">
-            <el-button
-                icon="el-icon-setting"
-                text
-                @click="formList(scope.row)"
-                type="primary"
-                size="small"
-            >表单列表</el-button>
-          </template>
-        </el-table-column>-->
+        <!--        <el-table-column prop="remark" label="关联表单" width="120">
+                  <template  #default="scope">
+                    <el-button
+                        icon="el-icon-setting"
+                        text
+                        @click="formList(scope.row)"
+                        type="primary"
+                        size="small"
+                    >表单列表</el-button>
+                  </template>
+                </el-table-column>-->
       </el-table>
 
       <div
-          class="dialog-footer"
-          style="margin-top: 10px;"
-          align="center"
+        class="dialog-footer"
+        style="margin-top: 10px;"
+        align="center"
       >
         <el-button @click="dialog.visible = false">取 消</el-button>
         <el-button type="primary" @click="handleExport" v-if="itemList.value !== 0">导 出</el-button>
@@ -144,53 +211,56 @@
     </el-dialog>
 
     <el-dialog
-        v-model="dialog8.visible"
-        :title="dialog8.title"
-        width="950px"
-        @close="dialog8.visible = false"
+      v-model="dialog8.visible"
+      :title="dialog8.title"
+      width="950px"
+      @close="dialog8.visible = false"
     >
       <el-card
-          style="cursor: pointer; font-size: 20px"
-          shadow="always"
-          :key="index"
-          @click="toShowExcel(item)"
-          v-for="(item, index) in showProList"
-      >{{ item.formName }}-{{item.formCode}}({{item.seqs}})</el-card
+        style="cursor: pointer; font-size: 20px"
+        shadow="always"
+        :key="index"
+        @click="toShowExcel(item)"
+        v-for="(item, index) in showProList"
+      >{{ item.formName }}-{{ item.formCode }}({{ item.seqs }})
+      </el-card
       >
     </el-dialog>
     <el-dialog
-        v-model="excelShow"
-        title="详情"
-        @close="excelShow = false"
-        width="1600"
-        destroy-on-close
+      v-model="excelShow"
+      title="详情"
+      @close="excelShow = false"
+      width="1600"
+      destroy-on-close
     >
-      <ExcelDataBbox :data="ExDataObj" @close="excelShow = false" />
+      <ExcelDataBbox :data="ExDataObj" @close="excelShow = false"/>
     </el-dialog>
   </div>
 </template>
 <script setup>
-import { ref, getCurrentInstance } from "vue";
-import { useCrud } from "@/hooks/userCrud";
-import { exportOperationRecord ,queryFormList,queryProductHandover,updateHandoverList} from "@/api/process";
-import { useCommonStoreHook } from "@/store";
+import {ref, getCurrentInstance} from "vue";
+import {useCrud} from "@/hooks/userCrud";
+import {exportOperationRecord, queryFormList, queryProductHandover, updateHandoverList} from "@/api/process";
+import {useCommonStoreHook} from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
-const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+
+const {isShowTable, tableType} = toRefs(useCommonStoreHook());
 import ExcelDataBbox from "@/views/base/apply/excelDataBbox.vue";
+
 const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
 };
 const radio = ref(0);
 // 传入一个url,后面不带/
-const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
-    useCrud({
-      dataListUrl: "/api/v1/proRecord/queryCompleteOpList",
-    });
-const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
-    Methords; //增删改查
-const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
+  useCrud({
+    dataListUrl: "/api/v1/proRecord/queryCompleteOpList",
+  });
+const {dataList, createRow, updateRow, deleteRow, searchChange, resetChange} =
+  Methords; //增删改查
+const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
+const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
 const loading = ref(false);
 const times = ref(null)
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
@@ -203,22 +273,16 @@ const dialog0 = reactive({
   title: "完工工序",
   visible: false,
 });
-const createRowSave = (row,done,loading) =>{
-  if(!row.startDate || !row.endDate){
+const createRowSave = (row, done, loading) => {
+  if (!row.startDate || !row.endDate) {
     ElMessage.error("请选择日期");
     loading()
-  }else{
+  } else {
     done();
     times.value = row;
     dialog0.visible = true
   }
 
-
-
-
-
-
-
   /*form.value.type = "0"
   addProRecord(form.value).then((data) =>{
     ElMessage.success(data.msg);
@@ -233,10 +297,30 @@ const createRowSave = (row,done,loading) =>{
     loading()
   });*/
 }
+
+const searchForm = ref();
+
+const handleSearch = () => {
+  queryProductHandover(searchForm.value).then((data) => {
+    itemList.value = data.data;
+  });
+};
+const handleReset = () => {
+  // 重置表单
+  Object.assign(searchForm.value, {
+    materialModel: "",
+    workOrderCode: "",
+    startDate: "",
+    endDate: "",
+  });
+};
 const clickOperationType = ref(null)
 const itemList = ref([])
 const openDialog = (type, row) => {
   clickOperationType.value = row.operationType
+  searchForm.value = {
+    ...row,
+  };
   queryProductHandover(row).then((data) => {
     itemList.value = data.data;
     dialog.visible = true;
@@ -249,11 +333,11 @@ const dialog8 = reactive({
 });
 const showProList = ref([]);
 const formList = (row) => {
-  queryFormList({...search.value,workOrderId: row.workOrderId,operationId: row.operationId}).then((data)=>{
-    if(data.data.length > 0){
+  queryFormList({...search.value, workOrderId: row.workOrderId, operationId: row.operationId}).then((data) => {
+    if (data.data.length > 0) {
       showProList.value = data.data;
       dialog8.visible = true;
-    }else{
+    } else {
       ElMessage.error("未关联到表单");
     }
   })
@@ -327,13 +411,13 @@ const toShowExcel = (item) => {
   excelShow.value = true;
 };
 const handleExport = () => {
-  if(data.value.length !== 0){
-    exportOperationRecord({...search.value,operationType: clickOperationType.value,type: 0}).then((response) => {
+  if (data.value.length !== 0) {
+    exportOperationRecord({...searchForm.value, operationType: clickOperationType.value, type: 0}).then((response) => {
       try {
         const decoder = new TextDecoder("utf-8");
         const jsonString = decoder.decode(response.data);
         const jsonObject = JSON.parse(jsonString);
-        const { code, msg } = jsonObject;
+        const {code, msg} = jsonObject;
         if (code != "200") {
           ElMessage.error(msg);
         }
@@ -341,18 +425,18 @@ const handleExport = () => {
         downFile(response);
       }
     })
-  }else{
+  } else {
     ElMessage.error("请先搜索数据");
   }
 };
 const downFile = (response) => {
   const fileData = response.data;
   const fileName = decodeURI(
-      response.headers["content-disposition"].split(";")[1].split("=")[1]
+    response.headers["content-disposition"].split(";")[1].split("=")[1]
   );
   const fileType =
-      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
-  const blob = new Blob([fileData], { type: fileType });
+    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
+  const blob = new Blob([fileData], {type: fileType});
   const downloadUrl = window.URL.createObjectURL(blob);
   const downloadLink = document.createElement("a");
   downloadLink.href = downloadUrl;

+ 1 - 1
src/views/quality/opRecord/index.vue

@@ -593,7 +593,7 @@ option.value = Object.assign(option.value, {
 });
 const handleExport = () => {
   exportOperationRecord({
-    ...search.value,
+    ...searchForm.value,
     operationType: clickOperationType.value,
     type: 1,
   }).then((response) => {

+ 67 - 44
src/views/quality/rework/index.vue

@@ -17,49 +17,51 @@
       @selection-change="selectionChange"
     >
       <template #menu="{ row, index, type }">
-        <el-button
-          @click="showTable(row)"
-          link
-          type="primary"
-          size="small"
+        <el-button @click="showTable(row)" link type="primary" size="small"
           >查看</el-button
         >
         <el-button
-            type="primary"
-            size="small"
-            link
-            @click="showSeq(row.seqList)"
-        >查看管号</el-button
+          type="primary"
+          size="small"
+          link
+          @click="showSeq(row.seqList)"
+          >查看管号</el-button
         >
         <el-button
-            link
+          link
           @click="doEdit(row, index)"
           type="primary"
           v-if="row.state === 0 || row.state === 1"
           :size="size"
           >编辑</el-button
         >
+         <el-button
 <!--        <el-button
-          @click="operation(row)"
+
+
           link
-          size="small"
-          type="primary"
-          >返工工序</el-button>
-        <el-button
-            link
           @click="handle(row, index, 2)"
           type="primary"
           v-if="row.state === 0"
-            size="small"
-          >驳回</el-button>
+          size="small"
+          >驳回</el-button
+        >
         <el-button
-            link
+          link
           @click="handle(row, index, 1)"
           type="primary"
           v-if="row.state === 0"
+<<<<<<< .mine
             size="small"
           >确认返工</el-button>-->
 <!--        <el-button
+
+=======
+          size="small"
+          >确认返工</el-button
+        >
+        <!--        <el-button
+>>>>>>> .theirs
             link
           v-if="row.state === 1"
           @click="handle(row, index, 3)"
@@ -67,7 +69,7 @@
             size="small"
           >返工完成</el-button
         >-->
-<!--        <el-button
+        <!--        <el-button
             link
           v-if="row.state === 1"
           @click="handle(row, index, 3)"
@@ -80,21 +82,31 @@
           @click="document(row)"
           icon="el-icon-document"
           text
-          v-if="row.state > 0 && row.state!==2 "
+          v-if="row.state > 0 && row.state !== 2"
           type="primary"
-        >领料单</el-button
+          >领料单</el-button
         >
 
+<<<<<<< .mine
 <!--        <el-button
             link
             icon="el-icon-copy-document"
             v-if="row.state=='1'&&(row.flowState == '0' || row.flowState == '2' || row.flowState == '-1')"
             @click="openCheckView(row)"
         >提审</el-button >-->
+=======
+        <!--        <el-button-->
+        <!--            link-->
+        <!--            icon="el-icon-copy-document"-->
+        <!--            v-if="row.state=='1'&&(row.flowState == '0' || row.flowState == '2' || row.flowState == '-1')"-->
+        <!--            @click="openCheckView(row)"-->
+        <!--        >提审</el-button >-->
+>>>>>>> .theirs
 
-        <el-button link v-if="row.flowState !== '0'" icon="el-icon-copy-document" @click="showFlowSteps(row)"
-        >流程</el-button>
+        <!--        <el-button link v-if="row.flowState !== '0'" icon="el-icon-copy-document" @click="showFlowSteps(row)"-->
+        <!--        >流程</el-button>-->
 
+<<<<<<< .mine
 <!--        <el-button
             link
             icon="el-icon-copy-document"
@@ -102,6 +114,15 @@
             @click="onCancelFlow(row)"
         >撤销</el-button
         >-->
+=======
+        <!--        <el-button-->
+        <!--            link-->
+        <!--            icon="el-icon-copy-document"-->
+        <!--            v-if="row.flowState == '3'"-->
+        <!--            @click="onCancelFlow(row)"-->
+        <!--        >撤销</el-button-->
+        <!--        >-->
+>>>>>>> .theirs
       </template>
 
       <template #menu-right="{}">
@@ -131,7 +152,7 @@
       v-model="dialog1.visible"
       :title="dialog1.title"
       width="900px"
-      @close="dialog1.visible=false"
+      @close="dialog1.visible = false"
       :destroy-on-close="true"
     >
       <ReworkDocument
@@ -142,24 +163,24 @@
       />
     </el-dialog>
     <el-dialog
-        v-model="dialog2.visible"
-        :title="dialog2.title"
-        width="950px"
-        @close="dialog2.visible = false"
+      v-model="dialog2.visible"
+      :title="dialog2.title"
+      width="950px"
+      @close="dialog2.visible = false"
     >
       <el-card
-          style="cursor: pointer; font-size: 20px"
-          shadow="always"
-          :key="item"
-          v-for="item in showSeqList"
-      >{{ item }}</el-card
+        style="cursor: pointer; font-size: 20px"
+        shadow="always"
+        :key="item"
+        v-for="item in showSeqList"
+        >{{ item }}</el-card
       >
     </el-dialog>
     <ReworkShow v-model="showState" :tableData="tableData" />
     <LookFlowStep ref="LookFlowStepRef"></LookFlowStep>
     <work-flow-check
-        ref="workFlowCheckRef"
-        @sureToSave="onWFSave"
+      ref="workFlowCheckRef"
+      @sureToSave="onWFSave"
     ></work-flow-check>
   </div>
 </template>
@@ -177,7 +198,7 @@ import ReworkDocument from "@/views/quality/rework/components/rework-document.vu
 import WorkFlowCheck from "@/components/WorkFlows/workFlowCheck.vue";
 import LookFlowStep from "@/views/flow/common/LookFlowStep.vue";
 
-import { cancelFlow,submitFlow } from "@/api/flow";
+import { cancelFlow, submitFlow } from "@/api/flow";
 
 // 数据字典相关
 const { dicts } = useDictionaryStore();
@@ -209,9 +230,10 @@ const showSeq = (seqs) => {
   showSeqList.value = seqs;
   dialog2.visible = true;
 };
-const LookFlowStepRef=ref(null);
+const LookFlowStepRef = ref(null);
 const showFlowSteps = (row) => {
-  LookFlowStepRef.value && LookFlowStepRef.value.openFlowStepDrawer(row.flowIns);
+  LookFlowStepRef.value &&
+    LookFlowStepRef.value.openFlowStepDrawer(row.flowIns);
 };
 const doEdit = (row, index) => {
   crudRef.value && crudRef.value.rowEdit(row, index);
@@ -221,8 +243,9 @@ onMounted(() => {
 });
 const workFlowCheckRef = ref(null);
 const openCheckView = (row) => {
-  row.businessId = row.id
-  workFlowCheckRef.value && workFlowCheckRef.value.openDialog(row, "reworkService");
+  row.businessId = row.id;
+  workFlowCheckRef.value &&
+    workFlowCheckRef.value.openDialog(row, "reworkService");
 };
 
 const onWFSave = (flowForm) => {
@@ -232,12 +255,12 @@ const onWFSave = (flowForm) => {
     dataList();
   });
 };
-const onCancelFlow=(row)=>{
+const onCancelFlow = (row) => {
   cancelFlow(row).then(() => {
     ElMessage.success("提交成功");
     dataList();
   });
-}
+};
 const record = ref({});
 const operation = (row) => {
   record.value = row;

+ 6 - 13
src/views/system/message/index.vue

@@ -70,7 +70,6 @@
           <el-col :span="11">
             <el-form-item label="类型" prop="type">
               <el-select
-                disabled
                 v-model="message.type"
                 placeholder="类型"
                 clearable
@@ -130,6 +129,8 @@ import { addMessage, updateMessage } from "@/api/system/message";
 import { useCommonStoreHook } from "@/store";
 import { getUserList } from "@/api/system/user";
 import { queryDictDataByType } from "@/api/system/dict";
+import { useDictionaryStore } from "@/store";
+const { dicts } = useDictionaryStore();
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const userFormRef = ref(ElForm); // 用户表单
 const message = ref({
@@ -280,10 +281,8 @@ option.value = Object.assign(option.value, {
       overHidden: true,
       type: "select",
       width: 150,
-      dicData: [
-        { label: "系统消息", value: "0" },
-        { label: "用户消息", value: "1" },
-      ],
+      dicData: dicts.system_message_type,
+      props: { label: "dictLabel", value: "dictValue" },
       rules: [
         {
           required: true,
@@ -292,13 +291,6 @@ option.value = Object.assign(option.value, {
         },
       ],
       html: true,
-      formatter: (val) => {
-        if (val.type === "0") {
-          return '<b class="el-tag el-tag--danger el-tag--light">系统消息</b>';
-        } else if (val.type === "1") {
-          return '<b class="el-tag el-tag--success el-tag--light">用户消息</b>';
-        }
-      },
     },
     {
       label: "状态",
@@ -333,7 +325,8 @@ option.value = Object.assign(option.value, {
 
 onMounted(() => {
   // console.log("crudRef", crudRef)
-  search.value.type = "0";
+  //0:系统消息 5:消息公告
+  search.value.types = [0, 5];
   search.value.msgId = "0";
   dataList();
   queryUserList();