xiaodai2017 2 years ago
parent
commit
c70a7d0cd9

+ 8 - 9
src/store/modules/user.ts

@@ -27,15 +27,6 @@ export const useUserStore = defineStore({
     currentPage: 0,
     menuActions: getAction()
   }),
-  getters: {
-    getMenuActions() {
-      if (this.menuActions && this.menuActions.length > 0) {
-        return JSON.parse(this.menuActions);
-      } else {
-        return [];
-      }
-    }
-  },
   actions: {
     SET_TOKEN(token) {
       this.token = token;
@@ -118,6 +109,14 @@ export const useUserStore = defineStore({
           return data;
         }
       });
+    },
+    getMenuActions(code) {
+      if (this.menuActions && this.menuActions.length > 0) {
+        const powerHook = JSON.parse(this.menuActions);
+        return powerHook.find(i => i.menu_route == code)?.action || [];
+      } else {
+        return [];
+      }
     }
   }
 });

+ 130 - 125
src/views/InvoiceSales/invoiceApply/index.vue

@@ -15,8 +15,7 @@ const { logout } = useNav();
 defineOptions({
   name: "invoiceApply"
 });
-console.log(useUserStoreHook().getMenuActions("invoiceApply"));
-// const aa=ref([].push(useUserStoreHook().))
+const powers = ref([]);
 const initform = {
   inv_in: "", //客户公司
   inv_out: "", //业务企业公司
@@ -102,143 +101,149 @@ async function resetForm() {
 }
 
 onMounted(() => {
-  onSearch();
+  powers.value = useUserStoreHook().getMenuActions("invoiceApply");
+  if (powers.value.some(i => i == "001")) {
+    onSearch();
+  }
 });
 </script>
 
 <template>
   <div class="main">
-    <div class="bg-white p-4">
-      <el-row :gutter="10" class="pb-4">
-        <el-col :span="5">
-          <el-select
-            v-model="form.status"
-            style="width: 100%"
-            placeholder="发票申请状态"
-            clearable
-          >
-            <el-option
-              v-for="(si, sii) in statusList"
-              :key="'status' + si.value + sii"
-              :label="si.label"
-              :value="si.value"
+    <div v-if="powers.some(i => i == '001')">
+      <div class="bg-white p-4">
+        <el-row :gutter="10" class="pb-4">
+          <el-col :span="5">
+            <el-select
+              v-model="form.status"
+              style="width: 100%"
+              placeholder="发票申请状态"
+              clearable
+            >
+              <el-option
+                v-for="(si, sii) in statusList"
+                :key="'status' + si.value + sii"
+                :label="si.label"
+                :value="si.value"
+              />
+            </el-select>
+          </el-col>
+          <el-col :span="5">
+            <el-select
+              v-model="form.inv_type"
+              style="width: 100%"
+              placeholder="发票类型"
+              clearable
+            >
+              <el-option
+                v-for="(si, sii) in inv_type_list"
+                :key="'status' + si.value + sii"
+                :label="si.label"
+                :value="si.value"
+              />
+            </el-select>
+          </el-col>
+          <el-col :span="10">
+            <IntervalTime
+              v-model:startValue="form.start"
+              v-model:endValue="form.end"
+              @timeChange="timeChange"
+          /></el-col>
+          <el-col :span="4">
+            <el-input
+              v-model="form.apply_name"
+              placeholder="申请人"
+              style="width: 100%"
+              clearable
             />
-          </el-select>
-        </el-col>
-        <el-col :span="5">
-          <el-select
-            v-model="form.inv_type"
-            style="width: 100%"
-            placeholder="发票类型"
-            clearable
-          >
-            <el-option
-              v-for="(si, sii) in inv_type_list"
-              :key="'status' + si.value + sii"
-              :label="si.label"
-              :value="si.value"
+          </el-col>
+        </el-row>
+        <el-row :gutter="10">
+          <el-col :span="10">
+            <el-input
+              v-model="form.inv_in"
+              placeholder="企业客户名称"
+              style="width: 100%"
+              clearable
+            />
+          </el-col>
+
+          <el-col :span="10">
+            <el-input
+              v-model="form.inv_out"
+              placeholder="业务企业公司"
+              style="width: 100%"
+              clearable
             />
-          </el-select>
-        </el-col>
-        <el-col :span="10">
-          <IntervalTime
-            v-model:startValue="form.start"
-            v-model:endValue="form.end"
-            @timeChange="timeChange"
-        /></el-col>
-        <el-col :span="4">
-          <el-input
-            v-model="form.apply_name"
-            placeholder="申请人"
-            style="width: 100%"
-            clearable
-          />
-        </el-col>
-      </el-row>
-      <el-row :gutter="10">
-        <el-col :span="10">
-          <el-input
-            v-model="form.inv_in"
-            placeholder="企业客户名称"
-            style="width: 100%"
-            clearable
-          />
-        </el-col>
+          </el-col>
+          <el-col :span="4">
+            <el-button
+              type="primary"
+              :icon="useRenderIcon('search')"
+              :loading="loading"
+              class="fl"
+              @click="resetSearch"
+            >
+              搜索
+            </el-button>
+            <el-button
+              :icon="useRenderIcon('refresh')"
+              class="fl"
+              @click="resetForm()"
+            >
+              重置
+            </el-button>
+          </el-col>
+        </el-row>
+      </div>
 
-        <el-col :span="10">
-          <el-input
-            v-model="form.inv_out"
-            placeholder="业务企业公司"
-            style="width: 100%"
-            clearable
-          />
-        </el-col>
-        <el-col :span="4">
+      <TableProBar
+        title="发票申请管理"
+        :loading="loading"
+        :dataList="dataList"
+        @refresh="onSearch"
+      >
+        <template #buttons>
           <el-button
             type="primary"
-            :icon="useRenderIcon('search')"
-            :loading="loading"
-            class="fl"
-            @click="resetSearch"
+            :icon="useRenderIcon('add')"
+            @click="editItem('')"
           >
-            搜索
+            新增发票申请
           </el-button>
-          <el-button
-            :icon="useRenderIcon('refresh')"
-            class="fl"
-            @click="resetForm()"
+        </template>
+        <template v-slot="{ size, checkList }">
+          <PureTable
+            border
+            align="left"
+            showOverflowTooltip
+            table-layout="auto"
+            :size="size"
+            :data="dataList"
+            :columns="columns"
+            :checkList="checkList"
+            :pagination="pagination"
+            :paginationSmall="size === 'small' ? true : false"
+            :header-cell-style="{ background: '#fafafa', color: '#606266' }"
+            @selection-change="handleSelectionChange"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
           >
-            重置
-          </el-button>
-        </el-col>
-      </el-row>
+            <template #operation="{ row }">
+              <el-button
+                class="reset-margin"
+                link
+                type="primary"
+                :size="size"
+                @click="editItem(row.id)"
+                :icon="useRenderIcon('eye-view')"
+              />
+            </template>
+          </PureTable>
+        </template>
+      </TableProBar>
     </div>
-
-    <TableProBar
-      title="发票申请管理"
-      :loading="loading"
-      :dataList="dataList"
-      @refresh="onSearch"
-    >
-      <template #buttons>
-        <el-button
-          type="primary"
-          :icon="useRenderIcon('add')"
-          @click="editItem('')"
-        >
-          新增发票申请
-        </el-button>
-      </template>
-      <template v-slot="{ size, checkList }">
-        <PureTable
-          border
-          align="left"
-          showOverflowTooltip
-          table-layout="auto"
-          :size="size"
-          :data="dataList"
-          :columns="columns"
-          :checkList="checkList"
-          :pagination="pagination"
-          :paginationSmall="size === 'small' ? true : false"
-          :header-cell-style="{ background: '#fafafa', color: '#606266' }"
-          @selection-change="handleSelectionChange"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        >
-          <template #operation="{ row }">
-            <el-button
-              class="reset-margin"
-              link
-              type="primary"
-              :size="size"
-              @click="editItem(row.id)"
-              :icon="useRenderIcon('eye-view')"
-            />
-          </template>
-        </PureTable>
-      </template>
-    </TableProBar>
+    <NoAuth v-else />
   </div>
 </template>
 

+ 14 - 4
src/views/system/menuOperator/components/action-table.vue

@@ -7,12 +7,15 @@ import { TableProBar } from "/@/components/ReTable";
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
 import { useNav } from "/@/layout/hooks/nav";
 import { responseHandle } from "/@/utils/responseHandle";
+import { useUserStoreHook } from "/@/store/modules/user";
 const { logout } = useNav();
+// import modalProps from "../types1";
 const { columns } = useColumns();
 const dataList = ref([]);
+const powers = ref([]);
 const loading = ref(true);
 const tableRef = ref();
-
+powers.value = useUserStoreHook().getMenuActions("menuOperator");
 const emit = defineEmits(["edit", "create", "view"]);
 //更新状态
 const handleStatus = async row => {
@@ -54,7 +57,6 @@ async function onSearch() {
     message,
     logout,
     handler: () => {
-      console.log(111);
       dataList.value = handleTree(data ?? []);
     }
   });
@@ -82,6 +84,7 @@ defineExpose({
     >
       <template #buttons>
         <el-button
+          v-if="powers.some(i => i == '003')"
           type="primary"
           :icon="useRenderIcon('add')"
           @click="editItem(null, '', 'create')"
@@ -109,6 +112,7 @@ defineExpose({
             <el-button
               class="reset-margin"
               link
+              v-if="powers.some(i => i == '007')"
               type="primary"
               :size="size"
               @click="editItem(row, row.id, 'view')"
@@ -119,11 +123,13 @@ defineExpose({
               link
               type="primary"
               :size="size"
+              v-if="powers.some(i => i == '005')"
               @click="editItem(row, row.id, 'edit')"
               :icon="useRenderIcon('edits')"
             />
             <el-popconfirm
               :title="row.status === '1' ? '改为禁用?' : '改为启用?'"
+              v-if="powers.some(i => i == '004')"
               @confirm="handleStatus(row)"
             >
               <template #reference>
@@ -141,7 +147,11 @@ defineExpose({
                   "
                 /> </template
             ></el-popconfirm>
-            <el-popconfirm title="是否确认删除?" @confirm="handleDelete(row)">
+            <el-popconfirm
+              title="是否确认删除?"
+              v-if="powers.some(i => i == '006')"
+              @confirm="handleDelete(row)"
+            >
               <template #reference>
                 <el-button
                   class="reset-margin"
@@ -153,7 +163,7 @@ defineExpose({
               </template>
             </el-popconfirm>
             <el-button
-              v-if="row.menu_type + '' === '1'"
+              v-if="row.menu_type + '' === '1' && powers.some(i => i == '003')"
               class="reset-margin"
               link
               type="primary"

+ 21 - 10
src/views/system/menuOperator/index.vue

@@ -2,28 +2,39 @@
 import { ref, onMounted } from "vue";
 import ActionTable from "./components/action-table.vue";
 import EditModel from "./components/edit-dialog.vue";
-
+import { useUserStoreHook } from "/@/store/modules/user";
 const actionTableRef = ref<InstanceType<typeof ActionTable>>(null);
 const modelRef = ref<InstanceType<typeof EditModel>>(null);
-
+const powers = ref([]);
 //新建/编辑/查看
 function handleAddChangeCheck(item: any, id: string, type: string) {
   modelRef.value.show(item, id, type);
 }
 onMounted(() => {
-  actionTableRef.value.onSearch();
+  powers.value = useUserStoreHook().getMenuActions("menuOperator");
+  if (powers.value.some(i => i == "001")) {
+    console.log(actionTableRef.value);
+    if (actionTableRef.value) {
+      actionTableRef.value.onSearch();
+    }
+  }
 });
 </script>
 
 <template>
   <div class="main flex">
-    <ActionTable
-      ref="actionTableRef"
-      @edit="handleAddChangeCheck"
-      @create="handleAddChangeCheck"
-      @view="handleAddChangeCheck"
-    />
+    <!-- v-if="powers.some(i => i == '001')" -->
+    <div class="flex">
+      <ActionTable
+        ref="actionTableRef"
+        :powers="powers"
+        @edit="handleAddChangeCheck"
+        @create="handleAddChangeCheck"
+        @view="handleAddChangeCheck"
+      />
 
-    <EditModel ref="modelRef" @reload="actionTableRef.onSearch()" />
+      <EditModel ref="modelRef" @reload="actionTableRef.onSearch()" />
+    </div>
+    <!-- <NoAuth v-else /> -->
   </div>
 </template>

+ 6 - 0
src/views/system/menuOperator/types1.ts

@@ -0,0 +1,6 @@
+export const modalProps = {
+  examCode: {
+    type: String,
+    required: true
+  }
+};