ソースを参照

Merge remote-tracking branch 'origin/develop' into develop

ZZH-wl 2 年 前
コミット
ac69c89e27

+ 4 - 1
src/api/system/report.js

@@ -2,7 +2,7 @@
  * @Author: niezch@dashoo.cn
  * @Date: 2023-02-16 16:21:14
  * @LastEditors: niezch@dashoo.cn
- * @LastEditTime: 2023-02-17 14:50:54
+ * @LastEditTime: 2023-02-21 15:38:15
  * @Description: file content
  * @FilePath: \opms_frontend\src\api\system\report.js
  */
@@ -32,4 +32,7 @@ export default {
   addRoleReport(query) {
     return micro_request.postRequest(basePath, 'RoleReport', 'Add', query)
   },
+  roleList(query) {
+    return micro_request.postRequest(basePath, 'RoleReport', 'RoleList', query)
+  },
 }

+ 6 - 6
src/views/system/report/components/ReportEdit.vue

@@ -2,7 +2,7 @@
  * @Author: niezch@dashoo.cn
  * @Date: 2023-02-16 15:55:15
  * @LastEditors: niezch@dashoo.cn
- * @LastEditTime: 2023-02-17 15:53:42
+ * @LastEditTime: 2023-02-17 18:12:20
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\system\report\components\ReportEdit.vue
 -->
@@ -26,16 +26,14 @@
       <el-form-item label="报表代码" prop="reportCode">
         <el-input v-model="form.reportCode" placeholder="请输入报表代码" />
       </el-form-item>
-      <el-form-item label="报表图标" prop="reportIcon">
+      <el-form-item label="报表图标" prop="icon">
         <el-popover popper-class="icon-selector-popper" trigger="hover" width="292">
           <template #reference>
             <el-input v-model="form.reportIcon" />
           </template>
           <vab-icon-selector @handle-icon="handleIcon" />
         </el-popover>
-        <!-- <el-input v-model="form.reportIcon" placeholder="请输入报表图标" /> -->
       </el-form-item>
-
       <el-form-item label="备注" prop="remark">
         <el-input v-model="form.remark" placeholder="请输入内容" type="textarea" />
       </el-form-item>
@@ -50,9 +48,11 @@
 <script>
   import reportApi from '@/api/system/report'
   import roleApi from '@/api/system/role'
-
+  import VabIconSelector from '@/extra/VabIconSelector'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
   export default {
     name: 'PostEdit',
+    components: { VabIconSelector },
     data() {
       return {
         form: { reportType: '10', reportIcon: undefined },
@@ -74,7 +74,7 @@
     },
     methods: {
       handleIcon(item) {
-        this.form.icon = item
+        this.form.reportIcon = item
       },
       showEdit(row) {
         if (!row) {

+ 40 - 27
src/views/system/report/components/ReportList.vue

@@ -2,26 +2,28 @@
  * @Author: niezch@dashoo.cn
  * @Date: 2023-02-16 15:55:15
  * @LastEditors: niezch@dashoo.cn
- * @LastEditTime: 2023-02-17 15:41:28
+ * @LastEditTime: 2023-02-21 17:37:39
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\system\report\components\ReportList.vue
 -->
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="700px" @close="close">
-    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
+    <el-table
+      ref="RoleReportTable"
+      v-loading="listLoading"
+      border
+      :data="list"
+      height="500px"
+      @selection-change="setSelectRows">
+      <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column align="center" label="角色Id" prop="id" show-overflow-tooltip />
       <el-table-column align="center" label="角色名称" prop="roleName" show-overflow-tooltip />
-      <!-- <el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip /> -->
+      <el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
       <el-table-column align="center" label="创建时间" prop="createdTime">
         <template #default="scope">
           <span>{{ parseTime(scope.row.createdTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column align="center" label="操作" show-overflow-tooltip>
-        <template #default="{ row }">
-          <el-button type="text" @click="handleApplication(row)">应用</el-button>
-        </template>
-      </el-table-column>
       <template #empty>
         <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
       </template>
@@ -47,13 +49,13 @@
         form: { reportType: '10' },
         rules: {
           reportName: [{ required: true, message: '报表名称不能为空', trigger: 'blur' }],
-          // reportType: [{ required: true, message: '报表类型不能为空', trigger: 'blur' }],
           reportDesc: [{ required: true, message: '报表描述不能为空', trigger: 'blur' }],
         },
         title: '',
         dialogFormVisible: false,
         // 角色选项
         roleOptions: [],
+        //权限表
         listLoading: true,
         list: [],
         rid: '',
@@ -76,13 +78,7 @@
         return this.$baseTableHeight(1)
       },
     },
-    mounted() {
-      // 获取角色
-      // roleApi.getList({ status: '10' }).then((response) => {
-      //   this.roleOptions = response.data.list
-      //   console.log( this.roleOptions)
-      // })
-    },
+    mounted() {},
     methods: {
       //应用
       async handleApplication(row) {
@@ -96,10 +92,20 @@
       },
       setSelectRows(val) {
         this.selectRows = val
+        if (!this.rid) return this.$baseMessage('报表数据有误', 'error', 'vab-hey-message-error')
+        reportApi
+          .addRoleReport({ reportId: this.rid, roleList: val })
+          .then((res) => {
+            console.log(res)
+          })
+          .catch((error) => {
+            console.log(error)
+          })
       },
       showEdit(row) {
         this.title = '应用'
-        this.getRoleList()
+
+        this.getRoleList(row.id)
         this.rid = row.id
         this.dialogFormVisible = true
       },
@@ -109,17 +115,24 @@
         this.total = data.total
         this.listLoading = false
       },
-      async getRoleList() {
-        roleApi.getList({ status: '10' }).then((response) => {
-          this.roleOptions = response.data.list
-          console.log(this.roleOptions)
+      async getRoleList(rid) {
+        roleApi.getList({ status: '10' }).then(async (response) => {
+          this.list = response.data.list
+          this.total = response.data.total
+          this.listLoading = false
+          const { data: data } = await reportApi.roleList({ reportId: rid })
+          this.$refs.RoleReportTable.clearSelection()
+          if (this.list && this.list.length && data.list && data.list.length) {
+            for (let item of this.list) {
+              for (let it of data.list) {
+                console.log(it, item)
+                if (item.id == it.roleId) {
+                  this.$refs.RoleReportTable.toggleRowSelection(item, true)
+                }
+              }
+            }
+          }
         })
-        const { data: data } = await roleApi.getList({ status: '10' })
-
-        console.log(data)
-        this.list = data.list
-        this.total = data.total
-        this.listLoading = false
       },
       close() {
         this.dialogFormVisible = false

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

@@ -2,8 +2,16 @@
   <div class="user-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="5">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+        <el-button v-permissions="['system:report:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:report:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
@@ -36,7 +44,7 @@
       <el-table-column align="center" label="报表代码" prop="reportCode" show-overflow-tooltip />
       <el-table-column align="center" label="报表图标" prop="reportIcon" show-overflow-tooltip />
       <el-table-column align="center" label="报表名称" prop="reportName" show-overflow-tooltip />
-      <el-table-column align="center" label="正在使用的角色" prop="" show-overflow-tooltip />
+      <!-- <el-table-column align="center" label="正在使用的角色" prop="" show-overflow-tooltip /> -->
       <el-table-column align="center" label="报表描述" prop="reportDesc" show-overflow-tooltip />
       <el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
 
@@ -48,8 +56,8 @@
       <el-table-column align="center" label="操作" show-overflow-tooltip width="125">
         <template #default="{ row }">
           <el-button type="text" @click="handleApplication(row)">应用</el-button>
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:report:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:report:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>
@@ -128,7 +136,6 @@
           })
         } else {
           if (this.selectRows.length > 0) {
-            // const ids = this.selectRows.map((item) => item.id).join()
             let ids = []
             for (let item of this.selectRows) {
               ids.push(item.id)