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