فهرست منبع

添加设备维护

qinhb 1 سال پیش
والد
کامیت
351f92b231

+ 6 - 1
src/common/configs/dictDataUtil.ts

@@ -13,7 +13,12 @@ const DictDataUtil = {
     //设备类型
     device_type: "device_type",
     //设备状态
-    device_status: "device_status"
+    device_status: "device_status",
+    //设备运行状态
+    device_run_status: "device_run_status",
+    //设备维护频率
+    device_maintenance_cycle: "device_maintenance_cycle",
+    //设备
   },
   EXPAND_FIELD_TABLE: {
     //映射表列表

+ 2 - 0
src/hooks/userCrud.ts

@@ -29,6 +29,8 @@ export const useCrud = (config?: UseCrudConfig) => {
     searchIcon: true,
     searchIndex: 3, //searchIcon是否启用功能按钮, searchIndex配置收缩展示的个数,默认为2个
     index: true, //是否显示第几项
+    indexLabel: '序号',
+    indexWidth: "55px",
     refreshBtn: false,
     border: true,
     viewBtn: true,

+ 90 - 24
src/views/device/allocate/index.vue

@@ -1,16 +1,20 @@
 <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"
-      @selection-change="selectionChange"
+        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-left="{ size }">
         <el-button
@@ -41,11 +45,11 @@ const test = () => {
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
-    src: "/api/v1/sys/alias",
+    src: "/api/v1/device",
   });
-const { dataList, createRow, updateRow, deleteRow } = Methords; //增删改查
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm } = Utils; //按钮权限等工具
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
 // const permission = reactive({
 //   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
@@ -62,37 +66,99 @@ option.value = Object.assign(option.value, {
   selection: true,
   column: [
     {
-      label: "所属模块",
-      prop: "tableType",
+      label: "设备编号",
+      prop: "deviceNo",
       search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备编号不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备名称",
+      prop: "deviceName",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备名称不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备类型",
+      prop: "deviceType",
       type: "select",
+      search: true,
       dicUrl:
         dictDataUtil.request_url +
-        dictDataUtil.EXPAND_FIELD_TABLE.expand_table_list,
+        dictDataUtil.TYPE_CODE.device_type,
       props: {
         label: "dictLabel",
         value: "dictValue",
       },
+      rules: [
+        {
+          required: true,
+          message: "设备类型不能为空",
+          trigger: "trigger",
+        },
+      ],
     },
     {
-      label: "拓展字段",
-      prop: "field",
+      label: "设备状态",
+      prop: "state",
       type: "select",
+      search: true,
       dicUrl:
-        dictDataUtil.request_url +
-        dictDataUtil.EXPAND_FIELD_TABLE.expand_field_list,
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.device_status,
       props: {
         label: "dictLabel",
         value: "dictValue",
       },
+      rules: [
+        {
+          required: true,
+          message: "设备状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "负责人",
+      prop: "head",
+      rules: [
+        {
+          required: true,
+          message: "负责人不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "供应厂商",
+      prop: "manufacturer",
+    },
+    {
+      label: "所在车间",
+      prop: "workshop",
+    },
+    {
+      label: "所在工位",
+      prop: "station",
     },
     {
-      label: "页面显示",
-      prop: "label",
+      label: "规格",
+      prop: "specifications",
     },
     {
-      label: "排序",
-      prop: "fieldSort",
+      label: "品牌",
+      prop: "brand",
     },
   ],
 });

+ 162 - 0
src/views/device/instance/components/index.vue

@@ -0,0 +1,162 @@
+<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>
+  </div>
+</template>
+<script setup>
+import { ref } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+
+import { useCommonStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+
+// 传入一个url,后面不带/
+const { form, data, option, search, page, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/device",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange } = Methords; //选中和批量删除事件
+const { downloadTemplate } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: true,
+  column: [
+    {
+      label: "设备编号",
+      prop: "deviceNo",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备编号不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备名称",
+      prop: "deviceName",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备名称不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备类型",
+      prop: "deviceType",
+      type: "select",
+      search: true,
+      dicUrl:
+        dictDataUtil.request_url +
+        dictDataUtil.TYPE_CODE.device_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "设备类型不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.device_status,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "设备状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "负责人",
+      prop: "head",
+      rules: [
+        {
+          required: true,
+          message: "负责人不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "供应厂商",
+      prop: "manufacturer",
+    },
+    {
+      label: "所在车间",
+      prop: "workshop",
+    },
+    {
+      label: "所在工位",
+      prop: "station",
+    },
+    {
+      label: "设备位置",
+      prop: "devicePosition",
+    },
+    {
+      label: "规格",
+      prop: "specifications",
+    },
+    {
+      label: "品牌",
+      prop: "brand",
+    },
+  ],
+});
+watch?.(
+    () => props.typeCode,
+    (newVal: string) => {
+      queryParams.dictCode = newVal;
+      formData.dictCode = newVal;
+      resetQuery();
+    }
+);
+onMounted(() => {
+  dataList();
+});
+</script>

+ 97 - 16
src/views/device/instance/index.vue

@@ -1,16 +1,20 @@
 <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"
-      @selection-change="selectionChange"
+        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-left="{ size }">
         <el-button
@@ -22,7 +26,31 @@
           >删除</el-button
         >
       </template>
+      <template #menu-right="{}">
+        <el-dropdown split-button
+        >导入
+          <template #dropdown>
+            <el-dropdown-menu>
+              <el-dropdown-item
+                  @click="downloadTemplate('/api/v1/device/template')"
+              >
+                <i-ep-download />下载模板
+              </el-dropdown-item>
+              <el-dropdown-item @click="importExcelData">
+                <i-ep-top />导入数据
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </template>
+        </el-dropdown>
+        <el-button
+            class="ml-3"
+            @click="exportData('/api/v1/device/export')"
+        >
+          <template #icon> <i-ep-download /> </template>导出
+        </el-button>
+      </template>
     </avue-crud>
+    <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
   </div>
 </template>
 <script setup>
@@ -43,9 +71,9 @@ const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
     src: "/api/v1/device",
   });
-const { dataList, createRow, updateRow, deleteRow } = Methords; //增删改查
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm } = Utils; //按钮权限等工具
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
 // const permission = reactive({
 //   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
@@ -64,12 +92,26 @@ option.value = Object.assign(option.value, {
     {
       label: "设备编号",
       prop: "deviceNo",
-      search: true
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备编号不能为空",
+          trigger: "trigger",
+        },
+      ],
     },
     {
       label: "设备名称",
       prop: "deviceName",
-      search: true
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备名称不能为空",
+          trigger: "trigger",
+        },
+      ],
     },
     {
       label: "设备类型",
@@ -83,6 +125,13 @@ option.value = Object.assign(option.value, {
         label: "dictLabel",
         value: "dictValue",
       },
+      rules: [
+        {
+          required: true,
+          message: "设备类型不能为空",
+          trigger: "trigger",
+        },
+      ],
     },
     {
       label: "设备状态",
@@ -96,6 +145,24 @@ option.value = Object.assign(option.value, {
         label: "dictLabel",
         value: "dictValue",
       },
+      rules: [
+        {
+          required: true,
+          message: "设备状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "负责人",
+      prop: "head",
+      rules: [
+        {
+          required: true,
+          message: "负责人不能为空",
+          trigger: "trigger",
+        },
+      ],
     },
     {
       label: "供应厂商",
@@ -110,8 +177,8 @@ option.value = Object.assign(option.value, {
       prop: "station",
     },
     {
-      label: "负责人",
-      prop: "head",
+      label: "设备位置",
+      prop: "devicePosition",
     },
     {
       label: "规格",
@@ -128,4 +195,18 @@ onMounted(() => {
   // console.log("crudRef", crudRef)
   dataList();
 });
+/**
+ * 上传excel相关
+ */
+const uploadRef = ref(null);
+const uploadFinished = () => {
+  // 上传完成后的刷新操作
+  page.currentPage = 1;
+  dataList();
+};
+const importExcelData = () => {
+  if (uploadRef.value) {
+    uploadRef.value.show("/api/v1/device/import");
+  }
+};
 </script>

+ 209 - 0
src/views/device/maintenance/index.vue

@@ -0,0 +1,209 @@
+<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"
+    >
+      <template #menu-left="{ size }">
+        <el-button
+          :disabled="toDeleteIds.length < 1"
+          type="danger"
+          icon="el-icon-delete"
+          :size="size"
+          @click="multipleDelete"
+          >删除</el-button
+        >
+      </template>
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import { useCommonStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+
+// 传入一个url,后面不带/
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/device/maintenance",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+// checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
+// const permission = reactive({
+//   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
+//   addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
+//   editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
+//   menu: true,
+// });
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: true,
+  labelWidth: 150,
+  column: [
+    {
+      label: "设备编号",
+      prop: "deviceNo",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备编号不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备名称",
+      prop: "deviceName",
+      display: false,
+    },
+    {
+      label: "设备类型",
+      prop: "deviceType",
+      type: "select",
+      search: true,
+      display: false,
+      dicUrl:
+        dictDataUtil.request_url +
+        dictDataUtil.TYPE_CODE.device_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "设备类型不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备位置",
+      prop: "devicePosition",
+      display: false,
+    },
+    {
+      label: "维护类型",
+      prop: "type",
+      type: "select",
+      search: true,
+      dicData: [{label: '点检',value:0},{label: '保养',value:1}],
+      rules: [
+        {
+          required: true,
+          message: "维护类型不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "维护频次",
+      prop: "cycle",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.device_maintenance_cycle,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "维护频次不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "运行状态",
+      prop: "runState",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.device_run_status,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "运行状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "维护状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicData: [{label: '待维护',value:0},{label: '已维护',value:1}],
+      rules: [
+        {
+          required: true,
+          message: "维护状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "下次维护日期",
+      prop: "nextTime",
+      type: "date",
+      width: "120",
+      format: "YYYY-MM-DD", //前端展示格式
+      valueFormat: "YYYY-MM-DD", //设置后端接收的日期格式
+      rules: [
+        {
+          required: true,
+          message: "维护日期不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "备注",
+      prop: "remark",
+      minRows: 2, //最小行/最小值
+      type: "textarea", //类型为多行文本域框
+      maxlength: 512, //最大输入长度
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+</script>

+ 170 - 0
src/views/device/repair/index.vue

@@ -0,0 +1,170 @@
+<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"
+    >
+      <template #menu-left="{ size }">
+        <el-button
+          :disabled="toDeleteIds.length < 1"
+          type="danger"
+          icon="el-icon-delete"
+          :size="size"
+          @click="multipleDelete"
+          >删除</el-button
+        >
+      </template>
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import { useCommonStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+
+// 传入一个url,后面不带/
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/device",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+// checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
+// const permission = reactive({
+//   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
+//   addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
+//   editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
+//   menu: true,
+// });
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: true,
+  column: [
+    {
+      label: "设备编号",
+      prop: "deviceNo",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备编号不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备名称",
+      prop: "deviceName",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "设备名称不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备类型",
+      prop: "deviceType",
+      type: "select",
+      search: true,
+      dicUrl:
+        dictDataUtil.request_url +
+        dictDataUtil.TYPE_CODE.device_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "设备类型不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "设备状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.device_status,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "设备状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "负责人",
+      prop: "head",
+      rules: [
+        {
+          required: true,
+          message: "负责人不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "供应厂商",
+      prop: "manufacturer",
+    },
+    {
+      label: "所在车间",
+      prop: "workshop",
+    },
+    {
+      label: "所在工位",
+      prop: "station",
+    },
+    {
+      label: "规格",
+      prop: "specifications",
+    },
+    {
+      label: "品牌",
+      prop: "brand",
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+</script>

+ 14 - 12
src/views/system/dict/components/dict-item.vue

@@ -30,7 +30,7 @@ const props = defineProps({
   },
 });
 
-watch(
+watch?.(
   () => props.typeCode,
   (newVal: string) => {
     queryParams.dictCode = newVal;
@@ -89,7 +89,6 @@ function handleQuery() {
  * 重置查询
  */
 function resetQuery() {
-  queryFormRef.value.resetFields();
   queryParams.pageNo = 1;
   handleQuery();
 }
@@ -115,6 +114,8 @@ function openDialog(form?: any) {
     Object.assign(formData, form);
   } else {
     dialog.title = "新增字典";
+    dataFormRef.label = ''
+    dataFormRef.value = ''
   }
 }
 
@@ -162,7 +163,7 @@ function resetForm() {
   dataFormRef.value.clearValidate();
 
   formData.id = undefined;
-  formData.state = 1;
+  formData.state = 0;
   formData.dictSort = 1;
   formData.dictCode = props.typeCode;
 }
@@ -191,15 +192,15 @@ function handleDelete(dictId?: string) {
   });
 }
 
-onMounted(() => {
+onMounted?.(() => {
   handleQuery();
 });
 </script>
 
 <template>
   <div class="app-container">
-    <div class="search-container">
-      <!-- 搜索表单 -->
+<!--    <div class="search-container">
+      &lt;!&ndash; 搜索表单 &ndash;&gt;
       <el-form ref="queryFormRef" :model="queryParams" :inline="true">
         <el-form-item label="关键字" prop="name">
           <el-input
@@ -215,7 +216,7 @@ onMounted(() => {
           <el-button @click="resetQuery"> <i-ep-refresh />重置</el-button>
         </el-form-item>
       </el-form>
-    </div>
+    </div>-->
     <el-card shadow="never">
       <template #header>
         <el-button
@@ -224,13 +225,13 @@ onMounted(() => {
           @click="openDialog()"
           ><i-ep-plus />新增</el-button
         >
-        <el-button
+<!--        <el-button
           v-hasPerm="[ButtonPermKeys.SYSTEM.BTNS.dict_del]"
           type="danger"
           :disabled="ids.length === 0"
           @click="handleDelete()"
           ><i-ep-delete />删除</el-button
-        >
+        >-->
       </template>
 
       <!-- 数据表格 -->
@@ -259,13 +260,13 @@ onMounted(() => {
               @click="openDialog(scope.row)"
               ><i-ep-edit />编辑</el-button
             >
-            <el-button
+<!--            <el-button
               v-hasPerm="[ButtonPermKeys.SYSTEM.BTNS.dict_del]"
               type="primary"
               link
               @click.stop="handleDelete(scope.row.id)"
               ><i-ep-delete />删除</el-button
-            >
+            >-->
           </template>
         </el-table-column>
       </el-table>
@@ -296,7 +297,8 @@ onMounted(() => {
           <el-input v-model="formData.dictLabel" placeholder="请输入字典名称" />
         </el-form-item>
         <el-form-item label="字典值" prop="dictValue">
-          <el-input v-model="formData.dictValue" placeholder="字典值" />
+          <el-input v-if="formData.id" disabled v-model="formData.dictValue" placeholder="字典值" />
+          <el-input v-if="!formData.id" v-model="formData.dictValue" placeholder="字典值" />
         </el-form-item>
 
         <el-form-item label="排序" prop="dictSort">

+ 16 - 5
src/views/system/dict/index.vue

@@ -88,6 +88,10 @@ function openDialog(row?: any) {
     dialog.title = "修改字典类型";
     Object.assign(formData, row);
   } else {
+    formData.id = null
+    formData.dictName = ''
+    formData.dictType = ''
+    formData.remark = ''
     dialog.title = "新增字典类型";
   }
 }
@@ -174,7 +178,7 @@ function closeDictDialog() {
   dictDataDialog.visible = false;
 }
 
-onMounted(() => {
+onMounted?.(() => {
   handleQuery();
 });
 </script>
@@ -249,14 +253,14 @@ onMounted(() => {
               @click.stop="openDialog(scope.row)"
               ><i-ep-edit />编辑</el-button
             >
-            <el-button
+<!--            <el-button
               v-hasPerm="[ButtonPermKeys.SYSTEM.BTNS.dictType_del]"
               type="primary"
               link
               size="small"
               @click.stop="handleDelete(scope.row.id)"
               ><i-ep-delete />删除</el-button
-            >
+            >-->
           </template>
         </el-table-column>
       </el-table>
@@ -287,7 +291,14 @@ onMounted(() => {
         </el-form-item>
         <el-form-item label="字典编码" prop="dictType">
           <el-input
+              v-model="formData.dictType"
+              v-if="formData.id"
+              disabled
+              placeholder="请输入字典编码 sys_test user_test"
+          />
+          <el-input
             v-model="formData.dictType"
+            v-if="!formData.id"
             placeholder="请输入字典编码 sys_test user_test"
           />
         </el-form-item>
@@ -297,12 +308,12 @@ onMounted(() => {
             <el-radio :value="0">停用</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="字典类别" prop="type">
+<!--        <el-form-item label="字典类别" prop="type">
           <el-radio-group v-model="formData.type">
             <el-radio value="0">用户字典</el-radio>
             <el-radio value="1">系统字典</el-radio>
           </el-radio-group>
-        </el-form-item>
+        </el-form-item>-->
         <el-form-item label="备注" prop="remark">
           <el-input
             v-model="formData.remark"

+ 16 - 12
src/views/system/expand/index.vue

@@ -1,16 +1,20 @@
 <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"
-      @selection-change="selectionChange"
+        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-left="{ size }">
         <el-button
@@ -43,9 +47,9 @@ const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
     src: "/api/v1/sys/alias",
   });
-const { dataList, createRow, updateRow, deleteRow } = Methords; //增删改查
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm } = Utils; //按钮权限等工具
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
 // const permission = reactive({
 //   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),