From a35f4b4d0c555493cc464bfd36d037230547f1aa Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期四, 20 三月 2025 09:44:44 +0800
Subject: [PATCH] 1.高级安全防护

---
 src/views/system/SecurityList.vue |  219 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 159 insertions(+), 60 deletions(-)

diff --git a/src/views/system/SecurityList.vue b/src/views/system/SecurityList.vue
index 24a044c..912acb2 100644
--- a/src/views/system/SecurityList.vue
+++ b/src/views/system/SecurityList.vue
@@ -9,13 +9,22 @@
             <a-row :gutter="24">
               <a-col :md="6" :sm="24">
                 <a-form-item label="关键词" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                  <a-input placeholder="请输入关键词查询" v-model="queryParam.name"></a-input>
+                  <a-input placeholder="请输入关键词查询" v-model="queryParam.keyword"></a-input>
                 </a-form-item>
               </a-col>
               <a-col :md="6" :sm="24">
-                <a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                  <a-input placeholder="请输入备注查询" v-model="queryParam.description"></a-input>
-                </a-form-item>
+                <a-form-item label="防护类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-select
+                      optionFilterProp="children"
+                      :dropdownMatchSelectWidth="false"
+                      showSearch allow-clear style="width: 100%"
+                      placeholder="请选择防护类型"
+                      v-model="queryParam.type">
+                      <a-select-option v-for="(type,index) in typeList" :value="type.itemValue" :key="index">
+                        {{ type.itemText }}
+                      </a-select-option>
+                    </a-select>
+                  </a-form-item>
               </a-col>
               <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                 <a-col :md="6" :sm="24">
@@ -28,10 +37,10 @@
         </div>
         <!-- 操作按钮区域 -->
         <div class="table-operator"  style="margin-top: 5px">
-          <a-button v-if="btnEnableList.indexOf(1)>-1" @click="handleAdd" type="primary" icon="plus">新增</a-button>
-          <a-button v-if="btnEnableList.indexOf(1)>-1" @click="batchDel" icon="delete">删除</a-button>
-          <a-button v-if="btnEnableList.indexOf(1)>-1" @click="batchSetStatus(true)" icon="check-square">启用</a-button>
-          <a-button v-if="btnEnableList.indexOf(1)>-1" @click="batchSetStatus(false)" icon="close-square">禁用</a-button>
+          <a-button  @click="handleAdd" type="primary" icon="plus">新增</a-button>
+          <a-button  @click="batchDel" icon="delete">删除</a-button>
+          <a-button  @click="batchSetStatus(true)" icon="check-square">启用</a-button>
+          <a-button  @click="batchSetStatus(false)" icon="close-square">禁用</a-button>
         </div>
         <!-- table区域-begin -->
         <div>
@@ -48,27 +57,26 @@
             :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
             @change="handleTableChange">
             <span slot="action" slot-scope="text, record">
-              <a @click="handleSetFunction(record)">分配功能</a>
-              <a-divider type="vertical" />
-              <a @click="handleSetPushBtn(record.id, record.name)">分配按钮</a>
-              <a-divider type="vertical" />
               <a @click="handleEdit(record)">编辑</a>
-              <a-divider v-if="btnEnableList.indexOf(1)>-1" type="vertical" />
-              <a-popconfirm v-if="btnEnableList.indexOf(1)>-1" title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+              <a-divider  type="vertical" />
+              <a-popconfirm  title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                 <a>删除</a>
               </a-popconfirm>
-              <a-modal v-model="roleModalVisible" title="操作提示" @ok="handleRoleTip(record)">
-                <p>保存角色已经操作成功!现在继续<b>分配功能</b>吗?</p>
-              </a-modal>
+          
             </span>
-            <span slot="typeTitle">
+            <!-- <span slot="typeTitle">
               防护类型
-              <a-tooltip title="1、全部数据-该角色对应的用户可以看到全部单据;2、本机构数据-该角色对应的用户可以看到自己所在机构的全部单据;
-                3、个人数据-该角色对应的用户只可以看到自己的单据。单据是指采购入库、销售出库等">
+              <a-tooltip title="">
                 <a-icon type="question-circle" />
               </a-tooltip>
-            </span>
+            </span> -->
             <!-- 状态渲染模板 -->
+
+            
+            <template slot="type" slot-scope="type">
+              <a-tag color="green">{{ getDictItemLabel(typeList,type) }}</a-tag>
+            </template>
+
             <template slot="customRenderFlag" slot-scope="enabled">
               <a-tag v-if="enabled" color="green">启用</a-tag>
               <a-tag v-if="!enabled" color="orange">禁用</a-tag>
@@ -77,36 +85,34 @@
         </div>
         <!-- table区域-end -->
         <!-- 表单区域 -->
-        <role-modal ref="modalForm" @ok="roleModalFormOk"></role-modal>
+        <security-modal ref="modalForm" @ok="roleModalFormOk"></security-modal>
         <role-function-modal ref="roleFunctionModal" @ok="roleFunctionModalFormOk"></role-function-modal>
         <role-push-btn-modal ref="rolePushBtnModal" @ok="modalFormOk"></role-push-btn-modal>
-        <a-modal v-model="roleFunctionModalVisible" title="操作提示" @ok="handleRoleFunctionTip">
-          <p>分配功能已经操作成功!现在继续<b>分配按钮</b>吗?</p>
-        </a-modal>
+        
       </a-card>
     </a-col>
   </a-row>
 </template>
 <!-- f r o m 7 5  2 7 1  8 9 2 0 -->
 <script>
-  import RoleModal from './modules/RoleModal'
+  import SecurityModal from './modules/SecurityModal'
   import RoleFunctionModal from './modules/RoleFunctionModal'
   import RolePushBtnModal from './modules/RolePushBtnModal'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import JDate from '@/components/jeecg/JDate'
+  import {getAction,deleteAction,postAction } from '@/api/manage'
   export default {
-    name: "RoleList",
+    name: "SecurityList",
     mixins:[JeecgListMixin],
     components: {
-      RoleModal,
+      SecurityModal,
       RoleFunctionModal,
       RolePushBtnModal,
       JDate
     },
     data () {
       return {
-        description: '角色管理页面',
-        roleModalVisible: false,
+        description: '高级安全防护管理页面',
         roleFunctionModalVisible: false,
         currentRoleId: '',
         labelCol: {
@@ -118,8 +124,8 @@
         },
         // 查询条件
         queryParam: {
-          name: '',
-          description: '',
+          keyword: '',
+          type: '',
         },
         // 表头
         columns: [
@@ -144,8 +150,9 @@
             title: '关键词', align:"left", dataIndex: 'keyword', width: 120
           },
           {
-            align:"left", dataIndex: 'type', width: 100,
-            slots: { title: 'typeTitle' }
+            title:'	防护类型',align:"left", dataIndex: 'type', width: 100,
+            slots: { title: 'typeTitle' },
+            scopedSlots: { customRender: 'type' }
           },
           { title: '状态',dataIndex: 'status',width:60,align:"center",
             scopedSlots: { customRender: 'customRenderFlag' }
@@ -157,6 +164,7 @@
           deleteBatch: "/config-security/deleteBatch",
           batchSetStatusUrl: "/config-security/batchSetStatus"
         },
+        typeList:[],
       }
     },
     computed: {
@@ -164,11 +172,56 @@
         return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
       }
     },
+    
+    mounted(){
+      this.loadDictData();
+    },
     methods: {
-      handleSetFunction(record) {
-        this.$refs.roleFunctionModal.edit(record);
-        this.$refs.roleFunctionModal.title = "分配功能给:" + record.name + "【分配之后请继续分配按钮】"
-        this.$refs.roleFunctionModal.disableSubmit = false;
+
+      searchQuery() {
+        this.ipagination.current = 1;
+        this.loadData();
+      },
+
+      loadData(arg) {
+        //加载数据 若传入参数1则加载第一页的内容
+        // this.ipagination.current = 1;
+
+        let params = this.queryParam
+        params.currentPage = this.ipagination.current;
+        params.pageSize = this.ipagination.pageSize;
+       
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.code===200) {
+            this.dataSource = res.data.rows;
+            this.ipagination.total = res.data.total;
+            this.tableAddTotalRow(this.columns, this.dataSource)
+            this.realityPriceTotal = res.data.realityPriceTotal
+          } else if(res.code===510){
+            this.$message.warning(res.data)
+          } else {
+            this.$message.warning(res.data.message)
+          }
+          this.loading = false;
+        })
+      },
+
+      loadDictData() {
+        // 安全防护类型
+        var dictCode='securityType'
+        getAction(`/sysDict/items/dict-code/${dictCode}`).then((res)=>{
+          if(res.code === 200){
+            this.typeList = res.data;
+          }else{
+            this.$message.info(res.data);
+          }
+        })
+      },
+
+      getDictItemLabel(list, value) {
+        const item = list.find(item => item.itemValue === value);
+        return item ? item.itemText : null;
       },
       handleSetPushBtn(roleId, roleName) {
         this.$refs.rolePushBtnModal.edit(roleId);
@@ -178,7 +231,6 @@
       roleModalFormOk() {
         //重载列表
         this.loadData()
-        this.roleModalVisible = true
       },
       roleFunctionModalFormOk(id) {
         //重载列表
@@ -186,37 +238,84 @@
         this.roleFunctionModalVisible = true
         this.currentRoleId = id
       },
-      handleRoleTip(record) {
-        if(record) {
-          this.roleModalVisible = false
-          this.handleSetFunction(record)
-        }
-      },
-      handleRoleFunctionTip() {
-        if(this.currentRoleId) {
-          this.roleFunctionModalVisible = false
-          let roleName = ''
-          for (let i = 0; i < this.dataSource.length; i++) {
-            if(this.dataSource[i].id == this.currentRoleId) {
-              roleName = this.dataSource[i].name
-            }
-          }
-          this.handleSetPushBtn(this.currentRoleId, roleName)
-        }
-      },
+  
       handleAdd: function () {
         this.$refs.modalForm.add();
-        this.$refs.modalForm.title = "新增【保存之后请继续分配功能】";
+        this.$refs.modalForm.title = "新增";
         this.$refs.modalForm.disableSubmit = false;
       },
       handleEdit: function (record) {
+        console.log("edit", record);
         this.$refs.modalForm.edit(record);
-        this.$refs.modalForm.title = "编辑【保存之后请继续分配功能】";
+        this.$refs.modalForm.title = "编辑";
         this.$refs.modalForm.disableSubmit = false;
         if(this.btnEnableList.indexOf(1)===-1) {
           this.$refs.modalForm.isReadOnly = true
         }
-      }
+      },
+      handleDelete(id) {
+        deleteAction(this.url.delete+`/${id}`, {id: id}).then((res) => {
+          if (res.code === 200) {
+            this.loadData();
+            this.$message.success(res.message);
+          } else {
+            this.$message.warning(res.message);
+          }
+        });
+      },
+      batchDel() {
+        if (this.selectedRowKeys.length <= 0) {
+          this.$message.warning('请选择一条记录!');
+          return;
+        }
+        let ids = "";
+        this.selectedRowKeys.forEach(function(val) {
+          ids+=val+",";
+        });
+        ids = ids.substring(0,ids.length-1);
+        deleteAction(this.url.deleteBatch, {ids: ids}).then((res) => {
+          if(res.code === 200){
+            this.$message.success(res.msg);
+            this.loadData();
+            this.selectedRowKeys = [];
+          } else {
+            this.$message.warning(res.msg);
+          }
+        });
+      },
+       batchSetStatus: function (status) {
+            if(!this.url.batchSetStatusUrl){
+              this.$message.error("请设置url.batchSetStatusUrl属性!")
+              return
+            }
+            if (this.selectedRowKeys.length <= 0) {
+              this.$message.warning('请选择一条记录!');
+              return;
+            } else {
+              var ids = "";
+              for (var a = 0; a < this.selectedRowKeys.length; a++) {
+                ids += this.selectedRowKeys[a] + ",";
+              }
+              var that = this;
+              this.$confirm({
+                title: "确认操作",
+                content: "是否操作选中数据?",
+                onOk: function () {
+                  that.loading = true;
+                  postAction(that.url.batchSetStatusUrl, {status: status, ids: ids}).then((res) => {
+                    if(res.code === 200){
+                      that.loadData()
+                    } else {
+                      that.$message.warning(res.data.message);
+                    }
+                  }).finally(() => {
+                    that.loading = false;
+                  });
+                }
+              });
+            }
+          },
+
     }
   }
 </script>

--
Gitblit v1.9.3