Ver código fonte

fix:状态改动

lupeng 10 meses atrás
pai
commit
f06e349596

+ 7 - 6
src/common/configs/buttonPermission.ts

@@ -63,9 +63,10 @@ const ButtonPermKeys = {
     },
   },
   //设备管理
-  DEVICE:{
+  DEVICE: {
     MENUS: {
       maintenance: "device:maintenance",
+      instance: "device:instance",
     },
     BTNS: {
       maintenance_add: "device:maintenance:add",
@@ -86,11 +87,12 @@ const ButtonPermKeys = {
       allocate_audit: "device:allocate:audit",
       allocate_export: "device:allocate:export",
       disable_process: "device:disable:process",
-    }
+      device_edit: "device:instance:edit",
+    },
   },
 
   //报故处理
-  FAULT:{
+  FAULT: {
     MENUS: {
       faultHandle: "quality::faultHandle",
     },
@@ -98,9 +100,8 @@ const ButtonPermKeys = {
       faultHandle_handle: "quality::faultHandle::handle",
       faultHandle_thaw: "quality::faultHandle::thaw",
       faultHandle_examine: "quality::faultHandle::examine",
-
-    }
-  }
+    },
+  },
 };
 
 export default ButtonPermKeys;

+ 124 - 109
src/views/device/instance/index.vue

@@ -1,22 +1,23 @@
 <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"
+      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"
+      :permission="permission"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @selection-change="selectionChange"
     >
-<!--      <template #collect="scope">
+      <!--      <template #collect="scope">
         <el-switch
             active-value="1"
             inactive-value="0"
@@ -29,7 +30,7 @@
             style="&#45;&#45;el-switch-on-color: #13ce66; &#45;&#45;el-switch-off-color: #ff4949"
         />
       </template>-->
-<!--      <template #menu="{size,row,index}">
+      <!--      <template #menu="{size,row,index}">
         <el-button
             v-hasPerm="[buttonPermission.DEVICE.BTNS.maintenance_edit]"
             type="primary"
@@ -51,11 +52,11 @@
       </template>
       <template #menu-right="{}">
         <el-dropdown split-button
-        >导入
+          >导入
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item
-                  @click="downloadTemplate('/api/v1/device/template')"
+                @click="downloadTemplate('/api/v1/device/template')"
               >
                 <i-ep-download />下载模板
               </el-dropdown-item>
@@ -65,62 +66,64 @@
             </el-dropdown-menu>
           </template>
         </el-dropdown>
-        <el-button
-            class="ml-3"
-            @click="exportData('/api/v1/device/export')"
-        >
+        <el-button class="ml-3" @click="exportData('/api/v1/device/export')">
           <template #icon> <i-ep-download /> </template>导出
         </el-button>
       </template>
     </avue-crud>
     <el-dialog
-        v-model="dialog.visible"
-        :title="dialog.title"
-        width="30%"
-        @close="dialog.visible = false"
+      v-model="dialog.visible"
+      :title="dialog.title"
+      width="30%"
+      @close="dialog.visible = false"
     >
-      <el-button type="primary" @click="addItem" icon="el-icon-plus" style="margin-left:15px;width:25px;height:25px;" circle />
+      <el-button
+        type="primary"
+        @click="addItem"
+        icon="el-icon-plus"
+        style="margin-left: 15px; width: 25px; height: 25px"
+        circle
+      />
       <el-table
-          v-loading="loading"
-          ref="ruleListRef"
-          :data="pageData"
-          style="height: 280px"
+        v-loading="loading"
+        ref="ruleListRef"
+        :data="pageData"
+        style="height: 280px"
       >
-        <el-table-column
-            label="参数"
-            prop="fieldCode"
-        >
-          <template v-slot="{ row}">
-            <el-input v-model="row.fieldCode"/>
+        <el-table-column label="参数" prop="fieldCode">
+          <template v-slot="{ row }">
+            <el-input v-model="row.fieldCode" />
           </template>
         </el-table-column>
-        <el-table-column
-            label="参数名称"
-            prop="fieldLabel"
-        >
-          <template v-slot="{ row}">
-            <el-input v-model="row.fieldLabel"/>
+        <el-table-column label="参数名称" prop="fieldLabel">
+          <template v-slot="{ row }">
+            <el-input v-model="row.fieldLabel" />
           </template>
         </el-table-column>
-        <el-table-column
-            label="参数值"
-            prop="fieldValue"
-        >
-          <template v-slot="{ row}">
-            <el-input v-model="row.fieldValue"/>
+        <el-table-column label="参数值" prop="fieldValue">
+          <template v-slot="{ row }">
+            <el-input v-model="row.fieldValue" />
           </template>
         </el-table-column>
-        <el-table-column
-            label="操作"
-            align="center"
-        >
-          <template v-slot="{ row}">
-            <el-button type="danger" @click="minusItem(row)" icon="el-icon-minus" style="margin-left:15px;width:25px;height:25px;" circle />
+        <el-table-column label="操作" align="center">
+          <template v-slot="{ row }">
+            <el-button
+              type="danger"
+              @click="minusItem(row)"
+              icon="el-icon-minus"
+              style="margin-left: 15px; width: 25px; height: 25px"
+              circle
+            />
           </template>
         </el-table-column>
       </el-table>
-      <div class="dialog-footer" style="margin-top:20px"  align="center">
-        <el-button type="primary" v-if="pageData.length>0" @click="handleSubmit">保 存</el-button>
+      <div class="dialog-footer" style="margin-top: 20px" align="center">
+        <el-button
+          type="primary"
+          v-if="pageData.length > 0"
+          @click="handleSubmit"
+          >保 存</el-button
+        >
         <el-button @click="dialog.visible = false">取消</el-button>
       </div>
     </el-dialog>
@@ -130,10 +133,11 @@
 <script setup>
 import { ref, getCurrentInstance } from "vue";
 import { useCrud } from "@/hooks/userCrud";
-import buttonPermission from "@/common/configs/buttonPermission";
-import {configSave,configList,deviceUpdateCollect} from "@/api/device";
+import { checkPerm } from "@/directive/permission";
+import { configSave, configList, deviceUpdateCollect } from "@/api/device";
 import { useCommonStoreHook } from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const test = () => {
   isShowTable.value = true;
@@ -141,64 +145,79 @@ const test = () => {
 };
 const pageData = ref([]);
 const loading = ref(false); //  加载状态
-const addItem = () =>{
-  pageData.value.push({deviceType: clickRow.value.deviceType,deviceNo: clickRow.value.deviceNo,type: 1})
-}
-const minusItem = (row) =>{
-  pageData.value = pageData.value.filter(item=>item.fieldCode !== row.fieldCode)
-}
-const changeItem =(obj,row) => {
-    deviceUpdateCollect({id: row.id,collect: row.collect,deviceNo: row.deviceNo}).then((data)=>{
-      if(data.code === '200'){
-        ElMessage.success(data.msg);
-      }else{
-        ElMessage.error(data.msg);
-      }
-    })
-}
-const clickRow = ref(null)
-const showParamsPage = (row)=>{
-  clickRow.value = row
-  configList({deviceNo: row.deviceNo}).then((data)=>{
-    pageData.value = data.data
-    dialog.visible = true
-  })
-}
+const addItem = () => {
+  pageData.value.push({
+    deviceType: clickRow.value.deviceType,
+    deviceNo: clickRow.value.deviceNo,
+    type: 1,
+  });
+};
+const minusItem = (row) => {
+  pageData.value = pageData.value.filter(
+    (item) => item.fieldCode !== row.fieldCode
+  );
+};
+const permission = reactive({
+  editBtn: checkPerm(ButtonPermKeys.DEVICE.BTNS.device_edit),
+  menu: true,
+});
+const changeItem = (obj, row) => {
+  deviceUpdateCollect({
+    id: row.id,
+    collect: row.collect,
+    deviceNo: row.deviceNo,
+  }).then((data) => {
+    if (data.code === "200") {
+      ElMessage.success(data.msg);
+    } else {
+      ElMessage.error(data.msg);
+    }
+  });
+};
+const clickRow = ref(null);
+const showParamsPage = (row) => {
+  clickRow.value = row;
+  configList({ deviceNo: row.deviceNo }).then((data) => {
+    pageData.value = data.data;
+    dialog.visible = true;
+  });
+};
 const dialog = reactive({
   title: "模型设置",
   visible: false,
 });
 const handleSubmit = () => {
   //判断参数
-  let errorData = pageData.value.filter(item=>!item.fieldCode)
-  if(errorData.length > 0){
+  let errorData = pageData.value.filter((item) => !item.fieldCode);
+  if (errorData.length > 0) {
     ElMessage.warning("请填写参数");
-    return
+    return;
   }
-  errorData = pageData.value.filter(item=>!item.fieldLabel)
-  if(errorData.length > 0){
+  errorData = pageData.value.filter((item) => !item.fieldLabel);
+  if (errorData.length > 0) {
     ElMessage.warning("请填写参数名");
-    return
+    return;
   }
-  errorData = pageData.value.filter(item=>!item.fieldValue)
-  if(errorData.length > 0){
+  errorData = pageData.value.filter((item) => !item.fieldValue);
+  if (errorData.length > 0) {
     ElMessage.warning("请填写参数值");
-    return
+    return;
   }
-  configSave(pageData.value).then((data)=>{
-    if(data.code === '200'){
+  configSave(pageData.value).then((data) => {
+    if (data.code === "200") {
       ElMessage.success(data.msg);
-    }else{
+    } else {
       ElMessage.error(data.msg);
     }
-  })
+  });
 };
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
     src: "/api/v1/device",
   });
-const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
 const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
@@ -274,8 +293,8 @@ option.value = Object.assign(option.value, {
       prop: "serialDate",
       type: "date",
       width: 100,
-      format: 'YYYY-MM-DD',
-      valueFormat: 'YYYY-MM-DD',
+      format: "YYYY-MM-DD",
+      valueFormat: "YYYY-MM-DD",
       overHidden: true,
     },
     {
@@ -283,8 +302,8 @@ option.value = Object.assign(option.value, {
       prop: "activationDate",
       type: "date",
       width: 100,
-      format: 'YYYY-MM-DD',
-      valueFormat: 'YYYY-MM-DD',
+      format: "YYYY-MM-DD",
+      valueFormat: "YYYY-MM-DD",
       overHidden: true,
     },
     {
@@ -332,9 +351,7 @@ option.value = Object.assign(option.value, {
       width: 120,
       overHidden: true,
       search: true,
-      dicUrl:
-        dictDataUtil.request_url +
-        dictDataUtil.TYPE_CODE.device_status,
+      dicUrl: dictDataUtil.request_url + dictDataUtil.TYPE_CODE.device_status,
       props: {
         label: "dictLabel",
         value: "dictValue",
@@ -375,9 +392,7 @@ option.value = Object.assign(option.value, {
       width: 130,
       overHidden: true,
       search: true,
-      dicUrl:
-        dictDataUtil.request_url +
-        dictDataUtil.TYPE_CODE.device_type,
+      dicUrl: dictDataUtil.request_url + dictDataUtil.TYPE_CODE.device_type,
       props: {
         label: "dictLabel",
         value: "dictValue",
@@ -424,8 +439,8 @@ option.value = Object.assign(option.value, {
       prop: "meteringDate",
       type: "date",
       width: 160,
-      format: 'YYYY-MM-DD',
-      valueFormat: 'YYYY-MM-DD',
+      format: "YYYY-MM-DD",
+      valueFormat: "YYYY-MM-DD",
       overHidden: true,
       rules: [
         {
@@ -435,7 +450,7 @@ option.value = Object.assign(option.value, {
         },
       ],
     },
-   /* {
+    /* {
       label: "所属PAC",
       prop: "terminal",
       type: "select",

+ 23 - 13
src/views/system/role/index.vue

@@ -44,7 +44,7 @@ const formData = ref({
   roleName: "",
 });
 
-const  rules = reactive({
+const rules = reactive({
   roleName: [{ required: true, message: "请输入角色名称", trigger: "blur" }],
   roleCode: [{ required: true, message: "请输入角色编码", trigger: "blur" }],
   scope: [{ required: true, message: "请选择数据权限", trigger: "blur" }],
@@ -93,11 +93,11 @@ function openDialog(row?: any) {
     Object.assign(formData.value, row);
   } else {
     dialog.title = "新增角色";
-    formData.value.id = undefined
-    formData.value.scope = 0
-    formData.value.state = 0
-    formData.value.roleCode = ""
-    formData.value.roleName = ""
+    formData.value.id = undefined;
+    formData.value.scope = 0;
+    formData.value.state = 0;
+    formData.value.roleCode = "";
+    formData.value.roleName = "";
   }
 }
 
@@ -183,7 +183,7 @@ function openMenuDialog(row: any) {
       menuList.value = response.data;
       // 回显角色已拥有的菜单
       getRoleMenuIds(roleId)
-        .then(({ data}) => {
+        .then(({ data }) => {
           const checkedMenuIds = data;
           checkedMenuIds.forEach((menuId) =>
             menuRef.value.setChecked(menuId, true, false)
@@ -203,7 +203,8 @@ function handleRoleMenuSubmit() {
     const checkedMenuIds: number[] = menuRef.value
       .getCheckedNodes(false, true)
       .map((node: any) => {
-        return node.id});
+        return node.id;
+      });
 
     loading.value = true;
     updateRoleMenus(roleId, checkedMenuIds)
@@ -247,7 +248,10 @@ onMounted?.(() => {
 
     <el-card shadow="never" class="table-container">
       <template #header>
-        <el-button type="primary" v-hasPerm="['sys:role:add']" @click="openDialog()"
+        <el-button
+          type="primary"
+          v-hasPerm="['sys:role:add']"
+          @click="openDialog()"
           ><i-ep-plus />新增</el-button
         >
         <el-button
@@ -268,8 +272,8 @@ onMounted?.(() => {
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55" align="center" />
-        <el-table-column label="角色编码" prop="roleCode"/>
-        <el-table-column label="角色名称" prop="roleName"/>
+        <el-table-column label="角色编码" prop="roleCode" />
+        <el-table-column label="角色名称" prop="roleName" />
         <el-table-column label="状态" align="center" width="100">
           <template #default="scope">
             <el-tag v-if="scope.row.state === 0" type="success">正常</el-tag>
@@ -299,7 +303,7 @@ onMounted?.(() => {
             >
               <i-ep-edit />编辑
             </el-button>
-<!--            <el-button
+            <!--            <el-button
               type="primary"
               size="small"
               link
@@ -377,7 +381,13 @@ onMounted?.(() => {
           ref="menuRef"
           node-key="id"
           show-checkbox
-          :props="{ children: 'childs', label: 'menuName',value: 'id', disabled: '' }"
+          :check-strictly="true"
+          :props="{
+            children: 'childs',
+            label: 'menuName',
+            value: 'id',
+            disabled: '',
+          }"
           :data="menuList"
           :default-expand-all="false"
         >