Quellcode durchsuchen

Merge branch 'qingban' of http://192.168.101.4:3000/jiaxiaoqiang/JG-ADMIN-TEMP into qingban

# Conflicts:
#	src/views/base/craftManagement/route/bindProcess.vue
qinhb vor 10 Monaten
Ursprung
Commit
acb805d7c7

+ 44 - 0
src/components/ExcelView/index.vue

@@ -61,6 +61,16 @@ const props = defineProps({
       opreaTitle: true,
     }),
   },
+  //校验区域
+  verifications: {
+    type: Array,
+    default: () => [],
+  },
+  //校验状态
+  checkStatus: {
+    type: Boolean,
+    default: false,
+  },
 });
 //update:data : v-model表格data ,confirm : 获取此时表格data
 const emits = defineEmits(["update:data", "confirm"]);
@@ -189,6 +199,29 @@ const saveCellData = () => {
   };
   enter();
 };
+//配置单元格校验
+const setVerification = () => {
+  for (let i = 0; i < props.verifications.length; i++) {
+    if (
+      !props.verifications[i].checkStr ||
+      props.verifications[i].checkStr === ""
+    ) {
+    } else {
+      let option = {
+        type: "number",
+        type2: "bw",
+        value1: JSON.parse(props.verifications[i].checkStr).down,
+        value2: JSON.parse(props.verifications[i].checkStr).up,
+        hintShow: true,
+        hintText: `请输入${JSON.parse(props.verifications[i].checkStr).down}-${JSON.parse(props.verifications[i].checkStr).up}的数字`,
+      };
+      luckysheet.setDataVerification(
+        { ...option },
+        { range: props.verifications[i].position }
+      );
+    }
+  }
+};
 defineExpose({ confirm, reset, saveCellData, getRangeAxis });
 onMounted(() => {
   if (props.data == null) {
@@ -203,6 +236,17 @@ onMounted(() => {
   }
   luckysheet.create(resetOb.value);
 });
+watch(
+  () => props.verifications,
+  () => {
+    nextTick(() => {
+      if (props.checkStatus == true && props.verifications.length > 0) {
+        setVerification();
+      }
+    });
+  },
+  { immediate: true }
+);
 </script>
 
 <style lang="scss" scoped>

+ 5 - 0
src/views/base/craftManagement/route/bindProcess.vue

@@ -180,6 +180,11 @@ provide("currentProcess", currentProcess);
 const nodeClick = (event) => {
   if (!editStatus.value) return;
   currentProcess.value = event.node;
+  if (!editStatus.value) return;
+  currentProcess.value = event.node;
+
+
+
 };
 onConnect(addEdges);
 const getPng = () => {

+ 11 - 11
src/views/base/craftManagement/route/components/CustomConnectionLine/index.vue

@@ -28,24 +28,24 @@
 <script lang="ts" setup>
 import { getSmoothStepPath, SmoothStepEdgeProps } from "@vue-flow/core";
 import { computed, inject } from "vue";
-//由于props不包含及时的selected参数只有靠依赖注入解决
-const edges = inject("edges");
+
+const selectLine = inject("selectLine");
 const status = ref(true);
 const props = defineProps<SmoothStepEdgeProps>();
 const path = computed(() => getSmoothStepPath(props)[0]);
 const setSeletedStatus = () => {
-  edges?.value.forEach((item: any) => {
-    if (item.id == props.id) {
-      if (item.selected == true) {
-        status.value = false;
-      } else {
-        status.value = true;
-      }
+  if (selectLine.value != null) {
+    if (props.id == selectLine.value.id) {
+      status.value = false;
+    } else {
+      status.value = true;
     }
-  });
+  } else {
+    status.value = true;
+  }
 };
 watch(
-  () => edges.value,
+  () => selectLine.value,
   () => {
     setSeletedStatus();
   },

+ 32 - 5
src/views/base/craftManagement/route/components/CustomNode/index.vue

@@ -2,18 +2,42 @@
 import { Position, Handle } from "@vue-flow/core";
 const props = defineProps(["data", "id"]);
 const currentProcess = inject("currentProcess");
+const selectNode = inject("selectNode");
 const selectStatus = ref(false);
-
+const editStatus = inject("editStatus");
 const getBorderClass = computed(() => {
   let str = "borderBlack";
   if (selectStatus.value) {
-    str = "borderBlue";
+    if (editStatus.value == true) {
+      str = "borderBlue";
+    } else {
+      str = "borderGreen";
+    }
   }
   return str;
 });
-watchEffect(() => {
-  selectStatus.value = props.id == currentProcess.value.id;
-});
+watch(
+  () => currentProcess.value,
+  () => {
+    if (currentProcess.value == null) {
+      selectStatus.value = false;
+      return;
+    }
+    selectStatus.value = props.id == currentProcess.value.id;
+  },
+  { deep: true }
+);
+watch(
+  () => selectNode.value,
+  () => {
+    if (selectNode.value == null) {
+      selectStatus.value = false;
+      return;
+    }
+    selectStatus.value = props.id == selectNode.value.id;
+  },
+  { deep: true }
+);
 </script>
 
 <template>
@@ -70,4 +94,7 @@ watchEffect(() => {
 .borderBlue {
   border-color: blue;
 }
+.borderGreen {
+  border-color: green;
+}
 </style>

+ 213 - 127
src/views/base/excel/template/index.vue

@@ -62,134 +62,173 @@
           />
         </div>
         <div class="form" v-if="options.edit">
-          <el-form
-            ref="formRef"
-            :model="formVlaue"
-            :rules="rules"
-            label-width="auto"
-            status-icon
-          >
-            <el-form-item label="表格名称" prop="formName">
-              <el-input v-model="formVlaue.formName" />
-            </el-form-item>
-            <el-form-item label="表格类型" prop="formType">
-              <el-select
-                v-model="formVlaue.formType"
-                placeholder="请选择表格类型"
-              >
-                <el-option
-                  v-for="(item, index) in dicts.excel_type"
-                  :key="index"
-                  :label="item.dictLabel"
-                  :value="item.dictValue"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="启用状态" prop="state">
-              <el-select v-model="formVlaue.state" placeholder="请选择状态">
-                <el-option
-                  v-for="(item, index) in dicts.excel_states"
-                  :key="index"
-                  :label="item.dictLabel"
-                  :value="item.dictValue"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item>
-              <div class="btns">
-                <el-button
-                  v-if="!operaEditStatus"
-                  type="primary"
-                  @click="submitForm(formRef)"
-                >
-                  创 建
-                </el-button>
-                <el-button
-                  v-if="operaEditStatus"
-                  type="primary"
-                  @click="updateExForm(formRef)"
+          <el-scrollbar>
+            <el-form
+              ref="formRef"
+              :model="formVlaue"
+              :rules="rules"
+              label-width="auto"
+              :show-message="false"
+              status-icon
+            >
+              <el-form-item label="表格名称" prop="formName">
+                <el-input v-model="formVlaue.formName" />
+              </el-form-item>
+              <el-form-item label="表格类型" prop="formType">
+                <el-select
+                  v-model="formVlaue.formType"
+                  placeholder="请选择表格类型"
                 >
-                  更 新
-                </el-button>
-                <el-button v-if="!operaEditStatus" @click="resetForm(formRef)"
-                  >重 置</el-button
+                  <el-option
+                    v-for="(item, index) in dicts.excel_type"
+                    :key="index"
+                    :label="item.dictLabel"
+                    :value="item.dictValue"
+                  />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="启用状态" prop="state">
+                <el-select v-model="formVlaue.state" placeholder="请选择状态">
+                  <el-option
+                    v-for="(item, index) in dicts.excel_states"
+                    :key="index"
+                    :label="item.dictLabel"
+                    :value="item.dictValue"
+                  />
+                </el-select>
+              </el-form-item>
+              <el-form-item>
+                <div class="btns">
+                  <el-button
+                    v-if="!operaEditStatus"
+                    type="primary"
+                    @click="submitForm(formRef)"
+                  >
+                    创 建
+                  </el-button>
+                  <el-button
+                    v-if="operaEditStatus"
+                    type="primary"
+                    @click="updateExForm(formRef)"
+                  >
+                    更 新
+                  </el-button>
+                  <el-button v-if="!operaEditStatus" @click="resetForm(formRef)"
+                    >重 置</el-button
+                  >
+                  <el-button type="primary" @click="resetData">
+                    取 消
+                  </el-button>
+                </div>
+              </el-form-item>
+            </el-form>
+            <div class="add">
+              <div class="body">
+                <el-form
+                  ref="formRef1"
+                  :model="addForm"
+                  :rules="addRules"
+                  label-width="auto"
+                  status-icon
+                  :show-message="false"
+                  style="width: 410px"
                 >
-                <el-button type="primary" @click="resetData"> 取 消 </el-button>
+                  <el-form-item label="数据名称" prop="paramName">
+                    <el-input v-model="addForm.paramName" />
+                  </el-form-item>
+                  <el-form-item label="同步坐标" prop="position">
+                    <el-input :disabled="true" v-model="addForm.position" />
+                  </el-form-item>
+                  <el-form-item label="上限值" prop="up">
+                    <el-input v-model="addForm.up" />
+                  </el-form-item>
+                  <el-form-item label="下限值" prop="down">
+                    <el-input v-model="addForm.down" />
+                  </el-form-item>
+                  <el-form-item label="标准值" prop="standard">
+                    <el-input v-model="addForm.standard" />
+                  </el-form-item>
+                  <el-form-item label="数据来源" prop="source">
+                    <el-input v-model="addForm.source" />
+                  </el-form-item>
+                  <el-form-item>
+                    <div class="btns">
+                      <el-button
+                        :disabled="!operaEditStatus"
+                        type="primary"
+                        @click="creatAddForm()"
+                      >
+                        新增
+                      </el-button>
+                    </div>
+                  </el-form-item>
+                </el-form>
               </div>
-            </el-form-item>
-          </el-form>
-          <div class="add">
-            <div class="body">
-              <el-form
-                ref="formRef1"
-                :model="addForm"
-                :rules="addRules"
-                label-width="auto"
-                status-icon
+            </div>
+            <div class="table">
+              <el-table
+                id="table"
+                border
+                :data="settings"
+                style="width: 430px; max-height: 240px"
               >
-                <el-form-item label="数据名称" prop="paramName">
-                  <el-input v-model="addForm.paramName" />
-                </el-form-item>
-                <el-form-item label="同步坐标" prop="position">
-                  <el-input :disabled="true" v-model="addForm.position" />
-                </el-form-item>
-                <el-form-item>
-                  <div class="btns">
+                <el-table-column prop="paramName" label="名称" />
+                <el-table-column prop="position" label="坐标" />
+                <el-table-column prop="checkStr" width="60" label="上限值">
+                  <template #default="{ row }">
+                    <span>{{ row.up ? row.up : "-" }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="checkStr" width="60" label="下限值">
+                  <template #default="{ row }">
+                    <span>{{ row.down ? row.down : "-" }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="checkStr" width="60" label="标准值">
+                  <template #default="{ row }">
+                    <span>{{ row.standard ? row.standard : "-" }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="checkStr" width="60" label="数据来源">
+                  <template #default="{ row }">
+                    <span>{{ row.source ? row.source : "-" }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column label="操作" width="60">
+                  <template #default="{ row }">
                     <el-button
-                      :disabled="!operaEditStatus"
+                      link
                       type="primary"
-                      @click="creatAddForm()"
+                      size="small"
+                      @click="deleteSettings(row.id)"
+                      >删除</el-button
                     >
-                      新增
-                    </el-button>
-                  </div>
-                </el-form-item>
-              </el-form>
+                  </template>
+                </el-table-column>
+              </el-table>
             </div>
-          </div>
-          <div class="table">
-            <el-table
-              id="table"
-              border
-              :data="settings"
-              style="width: 260px; max-height: 240px"
-            >
-              <el-table-column prop="paramName" label="名称" />
-              <el-table-column prop="position" label="坐标" />
-              <el-table-column label="操作" width="60">
-                <template #default="{ row }">
-                  <el-button
-                    link
-                    type="primary"
-                    size="small"
-                    @click="deleteSettings(row.id)"
-                    >删除</el-button
-                  >
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-          <div class="btns">
-            <el-button
-              :disabled="searchForm.pageNo == 1"
-              link
-              type="primary"
-              @click="deletePage"
-            >
-              上一页
-            </el-button>
-            <el-button
-              :disabled="
-                searchForm.totalPages == searchForm.pageNo ||
-                searchForm.totalPages == 0
-              "
-              link
-              type="primary"
-              @click="addPage"
-            >
-              下一页
-            </el-button>
-          </div>
+            <div class="btns">
+              <el-button
+                :disabled="searchForm.pageNo == 1"
+                link
+                type="primary"
+                @click="deletePage"
+              >
+                上一页
+              </el-button>
+              <el-button
+                :disabled="
+                  searchForm.totalPages == searchForm.pageNo ||
+                  searchForm.totalPages == 0
+                "
+                link
+                type="primary"
+                @click="addPage"
+              >
+                下一页
+              </el-button>
+            </div>
+          </el-scrollbar>
         </div>
         <div class="form" v-else>
           <el-button type="primary" @click="resetData"> 返 回 </el-button>
@@ -197,7 +236,7 @@
             <el-table
               border
               :data="settings"
-              style="width: 260px; max-height: 240px"
+              style="width: 450px; max-height: 240px"
             >
               <el-table-column prop="paramName" label="数据名称" />
               <el-table-column prop="position" label="同步坐标" />
@@ -263,7 +302,6 @@ const resetData = () => {
     print: true,
     edit: true,
   };
-
   exceldata.value = null;
   selectId.value = null;
   operaEditStatus.value = false;
@@ -551,6 +589,10 @@ const useAddFormHook = () => {
   const addForm = ref({
     paramName: "",
     position: "",
+    up: "",
+    down: "",
+    standard: "",
+    source: "",
   });
   const addPage = () => {
     searchForm.value.pageNo = searchForm.value.pageNo + 1;
@@ -566,12 +608,25 @@ const useAddFormHook = () => {
       ...searchForm.value,
     });
     settings.value = data.records;
+    settings.value.forEach((item: any) => {
+      if (item.checkStr) {
+        item.up = JSON.parse(item.checkStr).up;
+        item.down = JSON.parse(item.checkStr).down;
+        item.standard = JSON.parse(item.checkStr).standard;
+        item.source = JSON.parse(item.checkStr).source;
+      }
+    });
     if (settings.value.length == 0 && searchForm.value.pageNo > 1) {
       deletePage();
     }
     searchForm.value.totalPages = data.totalPages;
   };
   const addSettings = async () => {
+    addForm.value.checkStr = JSON.stringify({
+      up: addForm.value.up,
+      down: addForm.value.down,
+      standard: addForm.value.standard,
+    });
     const { data, code } = await addSettingsData({
       excelFormId: selectId.value,
       ...addForm.value,
@@ -622,6 +677,24 @@ const useAddFormHook = () => {
         trigger: "blur",
       },
     ],
+    up: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+    down: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+    standard: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
   });
   return {
     formRef1,
@@ -659,22 +732,27 @@ onMounted?.(() => {
 </script>
 <style lang="scss" scoped>
 .table {
-  width: 260px;
+  width: 430px;
   padding-top: 20px;
 }
 .btns {
   width: 100%;
   justify-content: center;
-  height: 40px;
+  height: 30px;
   display: flex;
   align-items: center;
+  .el-button {
+    height: 20px;
+  }
 }
 .add {
-  height: 140px;
+  width: 430px;
+  height: 220px;
   display: flex;
   flex-direction: column;
   .body {
     display: flex;
+    width: 430px;
     flex: 1;
   }
 }
@@ -688,14 +766,16 @@ onMounted?.(() => {
 
   .exView {
     position: relative;
-    width: calc(100% - 300px);
+    width: calc(100% - 450px);
     height: 100%;
   }
   .form {
-    width: 300px;
+    width: 450px;
     height: 100%;
     font-size: 24px;
     padding: 20px;
+    padding-right: 0px;
+
     .title {
       text-align: center;
       margin-bottom: 10px;
@@ -707,4 +787,10 @@ onMounted?.(() => {
     }
   }
 }
+:deep(.el-form-item) {
+  margin-bottom: 2px !important;
+}
+:deep(.el-input__inner) {
+  height: 24px !important;
+}
 </style>

+ 4 - 2
src/views/error-page/404.vue

@@ -34,7 +34,7 @@ function message() {
       </div>
       <div class="bullshit">
         <div class="bullshit__oops">OOPS!</div>
-<!--        <div class="bullshit__info">
+        <!--        <div class="bullshit__info">
           All rights reserved
           <a
             style="color: #20a0ff"
@@ -48,7 +48,9 @@ function message() {
           Please check that the URL you entered is correct, or click the button
           below to return to the homepage.
         </div>
-        <a href="" class="bullshit__return-home">跳转首页</a>
+        <router-link class="bullshit__return-home" to="/welcome">
+          跳转欢迎页
+        </router-link>
       </div>
     </div>
   </div>

+ 46 - 6
src/views/plan/schedule/index.vue

@@ -1,12 +1,31 @@
 <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-update="updateRow" @row-del="deleteRow" @search-change="searchChange"
-      @search-reset="resetChange" @size-change="dataList" @current-change="dataList"
-      @selection-change="selectionChange">
+    <avue-crud
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-save="createRow"
+      @row-update="updateRow"
+      @row-del="deleteRow"
+      @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 v-if="row.state === '-1' || row.state === '0'"
-          @click="handleEdit(row, index)" type="primary" :size="size">编辑</el-button>
+        <el-button
+          icon="el-icon-edit"
+          text
+          v-if="row.state === '-1' || row.state === '0' || row.state === '1'"
+          @click="handleEdit(row, index)"
+          type="primary"
+          :size="size"
+          >编辑</el-button
+        >
       </template>
       <template #menu-left>
         <div id="charts"></div>
@@ -19,6 +38,7 @@ import { ref } from "vue";
 import { useCrud } from "@/hooks/userCrud";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import { queryStationByLineId } from "@/api/station";
+import { getUserList } from "@/api/system/user";
 import { useDictionaryStore } from "@/store";
 import { getStatistics } from "@/api/order/index";
 import * as echarts from "echarts";
@@ -38,11 +58,20 @@ const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等
 
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 const stationList = ref([]);
+const userList = ref([]);
 const charts = shallowRef(null);
 const handleEdit = (row, index) => {
   queryStationByLineId(row.productLineId).then((data) => {
     stationList.value = data.data;
   });
+  getUserList({}).then((data) => {
+    userList.value = data.data;
+  });
+  if (row.state === "1") {
+    option.value.column[2].editDisabled = true;
+    option.value.column[12].editDisabled = true;
+    option.value.column[13].editDisabled = true;
+  }
   crudRef.value && crudRef.value.rowEdit(row, index);
 };
 onMounted(() => {
@@ -115,6 +144,7 @@ option.value = Object.assign(option.value, {
       editDisabled: false,
       type: "select",
       dicData: stationList,
+      filterable: true,
       prop: "stationId",
       props: { label: "name", value: "id" },
       rules: [
@@ -126,6 +156,16 @@ option.value = Object.assign(option.value, {
       ],
     },
     {
+      label: "分配人员",
+      editDisabled: false,
+      type: "select",
+      dicData: userList,
+      filterable: true,
+      prop: "allocationUser",
+      dicMethod: "post",
+      props: { label: "userName", value: "userName" },
+    },
+    {
       label: "工单编码",
       prop: "workOrderCode",
       search: true,

+ 5 - 0
src/views/pro/traceability/components/updateExcel.vue

@@ -6,6 +6,8 @@
         :option="options"
         @confirm="confirm"
         v-model:data="exceldata"
+        :checkStatus="true"
+        :verifications="setting"
       />
     </div>
     <div class="btns" v-if="options.edit !== false">
@@ -24,6 +26,7 @@ import { useCrud } from "@/hooks/userCrud";
 import { setExcelData } from "@/api/excel/index.ts";
 import ExcelView from "@/components/ExcelView/index.vue";
 import { useDictionaryStore } from "@/store";
+const setting = ref([]);
 const props = defineProps({
   data: {
     type: Object,
@@ -317,11 +320,13 @@ watch(
   () => {
     //@ts-ignore
     rowData.value = props.data;
+   
     exceldata.value = JSON.parse(rowData.value.writeData);
     excelKey1.value = !excelKey1.value;
     if (rowData.value.lookStatus == true) {
       options.value.edit = false;
     }
+    setting.value = rowData.value.settings;
   },
   { immediate: true }
 );