This commit is contained in:
zhaoyz 2024-04-28 18:08:16 +08:00
parent 7a6a21c52b
commit 0ef6c81f36
9 changed files with 395 additions and 245 deletions

View File

@ -28,7 +28,7 @@ export function handleHttpUploadUrl(options: any, url: string | undefined) {
let formData = new FormData(); let formData = new FormData();
formData.append('file', options.file); formData.append('file', options.file);
formData.append('dir', options.dir) formData.append('dir', options.dir)
return new Promise((resolve, reject) => { return new Promise((resolve) => {
try { try {
request({ request({
url: url, url: url,
@ -41,7 +41,7 @@ export function handleHttpUploadUrl(options: any, url: string | undefined) {
resolve(res.data) resolve(res.data)
}); });
} catch (error) { } catch (error) {
reject(error) resolve(error)
} }
}) })
} }

View File

@ -27,6 +27,16 @@ export function addRole(role: any) {
}) })
} }
export function updateRole(role: any) {
return new Promise(resolve => {
request.put(roleUrl, role).then(res => {
resolve(res.data);
}).catch(err => {
resolve(err);
})
})
}
export function saveRoleMenus(roleId: string, menuIds: string) { export function saveRoleMenus(roleId: string, menuIds: string) {
return new Promise(resolve => { return new Promise(resolve => {
request.put(saveRoleMenuUrl, {roleId, menuIds}) request.put(saveRoleMenuUrl, {roleId, menuIds})
@ -48,3 +58,14 @@ export function getDetails(id: string) {
}) })
} }
export function deleteById(ids: []) {
return new Promise(resolve => {
request.delete(roleUrl, {data: ids})
.then(res => {
resolve(res.data)
}).catch(err => {
resolve(err);
});
})
}

29
src/api/sys-message.ts Normal file
View File

@ -0,0 +1,29 @@
import request from "@/utils/request";
const saveUrl = "/admin/sysMessage/save";
const pageUrl = "/admin/sysMessage/page";
export function save(message: any, organization?: [], permissions?: []) {
return new Promise(resolve => {
request.postForm(saveUrl, message).then(res => {
resolve(res.data);
}).catch(err => {
resolve(err);
})
})
}
export function page(current: number, size: number, condition?: {category: string, message: string}) {
return new Promise(resolve => {
request.postForm(pageUrl, {
current: current,
size: size,
category: condition?.category,
message: condition?.message
}).then(res => {
resolve(res.data)
}).catch(err => {
resolve(err);
})
})
}

View File

@ -62,15 +62,19 @@ const importData = () => {
return return
} }
uploadRef.value.submit() uploadRef.value.submit()
ElMessage.success('上传成功')
close()
emit('success')
// emit('error') // emit('error')
} }
function handleUpload(options: any) { function handleUpload(options: any) {
handleHttpUploadUrl(options, props.importUrl).then((res: any) => { handleHttpUploadUrl(options, props.importUrl).then((res: any) => {
console.log(res) if (res.code == 0) {
ElMessage.success('上传成功')
close()
emit('success')
} else {
ElMessage.error(res.msg ? res.msg : "上传失败")
emit("error");
}
}) })
} }

View File

@ -1,139 +1,153 @@
<template> <template>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="100"> <el-form ref="formRef" :model="formData" :rules="rules" label-width="100">
<el-form-item label="消息类型" prop="type"> <el-form-item label="消息类型" prop="category">
<el-select v-model="formData.type" placeholder="请选择消息类型"> <el-select v-model="formData.category" placeholder="请选择消息类型">
<el-option v-for="item in getMessageType()" :key="item.value" :label="item.label" <el-option v-for="item in getMessageType()" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="所在医院" prop="hospital"> <!-- <el-form-item label="所在医院" prop="hospital">
<el-select v-model="formData.hospital" placeholder="请选择医院"> <el-select v-model="formData.hospital" placeholder="请选择医院">
<el-option v-for="item in hospitals" :key="item.value" :label="item.label" <el-option v-for="item in hospitals" :key="item.id" :label="item.name"
:value="item.value" /> :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label="消息内容" prop="content"> <el-form-item label="消息内容" prop="message">
<el-input v-model="formData.content" type="textarea" :rows="4" placeholder="请输入消息内容"></el-input> <el-input v-model="formData.message" type="textarea" :rows="4" placeholder="请输入消息内容"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="可见组织" prop="showDept"> <!-- <el-form-item label="可见组织" prop="organization">
<el-select v-model="formData.showDept" multiple placeholder="请选择组织"> <el-select v-model="formData.organization" multiple placeholder="请选择组织">
<el-option v-for="item in hospitals" :key="item.value" :label="item.label" <el-option v-for="item in hospitals" :key="item.id" :label="item.name"
:value="item.value" /> :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label="组织权限" prop="permissions"> <!-- <el-form-item label="组织权限" prop="permissions">
<el-select v-model="formData.permissions" placeholder="请选择组织权限"> <el-select v-model="formData.permissions" placeholder="请选择组织权限">
<el-option v-for="item in [{value: 'default', label: '当前组织和下一组织可见'}]" :key="item.value" :label="item.label" <el-option v-for="item in [{value: 'default', label: '当前组织和下一组织可见'}]" :key="item.value"
:value="item.value" /> :label="item.label"
</el-select> :value="item.value"/>
</el-form-item> </el-select>
<el-form-item label="跳转链接" prop="link"> </el-form-item>-->
<el-input v-model="formData.link" placeholder="跳转链接"></el-input> <el-form-item label="跳转链接" prop="href">
</el-form-item> <el-input v-model="formData.href" placeholder="跳转链接"></el-input>
<el-form-item label="是否热点" prop="isHot"> </el-form-item>
<el-switch v-model="formData.isHot" /> <el-form-item label="是否热点" prop="hotspots">
</el-form-item> <el-switch v-model="formData.hotspots"/>
</el-form-item>
<div style="text-align: right;"> <div style="text-align: right;">
<el-button class="f18" @click="close">取消</el-button> <el-button class="f18" @click="close">取消</el-button>
<el-button class="f18" type="primary" @click="saveData">确认</el-button> <el-button class="f18" type="primary" @click="saveData">确认</el-button>
</div> </div>
</el-form> </el-form>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref, toRefs, watch } from 'vue' import {onMounted, reactive, ref} from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import {ElMessage} from 'element-plus'
import { getHospitalsData, getMessageType } from '@/static-data/core' import {getMessageType} from '@/static-data/core'
import * as hospitalApi from "@/api/hospital";
import * as sysMessageApi from "@/api/sys-message";
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const props = defineProps({ const props = defineProps({
type: String type: String
}) })
const rules = reactive({ const rules = reactive({
type: [ category: [
{ required: true, message: '请选择类型', trigger: ['blur', 'change'] }, {required: true, message: '请选择类型', trigger: ['blur', 'change']},
], ],
hospital: [ hospital: [
{ required: true, message: '请选择医院', trigger: ['blur', 'change'] }, {required: true, message: '请选择医院', trigger: ['blur', 'change']},
], ],
content: [ message: [
{ required: true, message: '请输入消息内容', trigger: ['blur', 'change'] }, {required: true, message: '请输入消息内容', trigger: ['blur', 'change']},
], ],
showDept: [ // organization: [
{ required: true, message: '请选择可见组织', trigger: ['blur', 'change'] }, // {required: true, message: '', trigger: ['blur', 'change']},
], // ],
permissions: [ // permissions: [
{ required: true, message: '请选择组织权限', trigger: ['blur', 'change'] }, // {required: true, message: '', trigger: ['blur', 'change']},
], // ],
}) })
const formRef = ref() const formRef = ref()
const formData = ref({ const formData = ref({
type: '', category: '',
hospital: '', hospital: '',
content: '', message: '',
showDept: '', organization: '',
permissions: '', permissions: '',
link: '', href: '',
isHot: true, hotspots: false,
} as any) } as any)
const hospitals = ref([] as any) const hospitals = ref([] as any)
getHospitalsData().then((res: any) => {
hospitals.value = res
// console.log(res)
})
onMounted(() => { onMounted(() => {
resetData() resetData()
}) })
defineExpose({ defineExpose({
formData, formData,
resetData, resetData,
}) })
function close() { function close() {
emit('close') emit('close')
} }
function resetData() { function resetData() {
formRef.value.resetFields() getHospitalList()
formData.value = { formRef.value.resetFields()
type: '', formData.value = {
hospital: '', category: '',
content: '', hospital: '',
showDept: '', message: '',
permissions: '', organization: '',
link: '', permissions: '',
isHot: true, href: '',
} hotspots: false,
}
} }
const saveData = async () => {
await formRef.value.validate((valid: any, fields: any) => { const saveData = () => {
if (valid) { formRef.value.validate((valid: any, fields: any) => {
ElMessage.success('保存成功!') if (valid) {
close() sysMessageApi.save(formData.value).then((res: any) => {
} else { if (res.code == 0 && res.data) {
// console.log('error submit!', fields) ElMessage.success('保存成功!')
} close()
}) } else {
ElMessage.error(res.msg ? res.msg : "保存失败");
}
})
} else {
// console.log('error submit!', fields)
}
})
} }
const getHospitalList = () => {
hospitalApi.getHospitalList().then((res: any) => {
if (res.code == 0) {
hospitals.value = res.data;
}
});
}
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
:deep(.el-form-item) { :deep(.el-form-item) {
.el-form-item__label { .el-form-item__label {
display: block; display: block;
text-align: right; text-align: right;
// text-align: justify; // text-align: justify;
// text-align-last: justify; // text-align-last: justify;
// padding: 0 10px 0 20px; // padding: 0 10px 0 20px;
&:before { &:before {
display: none; display: none;
} }
} }
} }
</style> </style>

View File

@ -1,69 +1,68 @@
<template> <template>
<div class="table-page custom-table-table"> <div class="table-page custom-table-table">
<h3 class="main-color" style="font-size: 24px;line-height: 1;padding: 28px 0;">消息管理</h3> <h3 class="main-color" style="font-size: 24px;line-height: 1;padding: 28px 0;">消息管理</h3>
<div class="search-part " v-show="isSearch"> <div class="search-part " v-show="isSearch">
<div class="search-cell"> <div class="search-cell">
<span class="label">消息类型</span> <span class="label">消息类型</span>
<el-select v-model="queryParams.type" placeholder="请选择消息类型"> <el-select v-model="queryParams.type" placeholder="请选择消息类型">
<el-option v-for="item in getMessageType()" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in getMessageType()" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</div> </div>
<div class="search-cell"> <div class="search-cell">
<span class="label">消息内容</span> <span class="label">消息内容</span>
<el-input v-model="queryParams.content" placeholder="请输入消息内容"></el-input> <el-input v-model="queryParams.content" placeholder="请输入消息内容"></el-input>
</div> </div>
<el-button type="primary" icon="Search" @click="queryData(queryParams)">查询</el-button> <el-button type="primary" icon="Search" @click="queryData(queryParams)">查询</el-button>
<!-- <el-button icon="Refresh" @click="queryParams = {}">重置</el-button> --> <!-- <el-button icon="Refresh" @click="queryParams = {}">重置</el-button> -->
</div> </div>
<div class="button-part" style="justify-content: space-between;"> <div class="button-part" style="justify-content: space-between;">
<el-button type="primary" icon="FirstAidKit" @click="addData">新增</el-button> <el-button type="primary" icon="FirstAidKit" @click="addData">新增</el-button>
<TableAbility :isDownload="false" @searchBtn="isSearch = !isSearch" @refreshBtn="queryData({})"></TableAbility> <TableAbility :isDownload="false" @searchBtn="isSearch = !isSearch" @refreshBtn="queryData({})"></TableAbility>
</div> </div>
<div class="table-part"> <div class="table-part">
<el-table ref="tableRef" v-loading="loading" :data="tableData" height="100%" border show-overflow-tooltip> <el-table ref="tableRef" v-loading="loading" :data="tableData" height="100%" border show-overflow-tooltip>
<el-table-column property="type" label="消息类型" width="120" align="center" /> <el-table-column property="type" label="消息类型" width="120" align="center"/>
<el-table-column property="content" label="消息内容" width="120" align="center" /> <el-table-column property="content" label="消息内容" width="120" align="center"/>
<el-table-column property="creator" label="创建人" width="120" align="center" /> <el-table-column property="creator" label="创建人" width="120" align="center"/>
<el-table-column label="创建时间" width="220" align="center"> <el-table-column label="创建时间" width="220" align="center">
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.creatTime) }}</template> <template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.creatTime) }}</template>
</el-table-column> </el-table-column>
<el-table-column property="editor" label="修改人" width="120" align="center" /> <el-table-column property="editor" label="修改人" width="120" align="center"/>
<el-table-column label="修改时间" width="220" align="center"> <el-table-column label="修改时间" width="220" align="center">
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.editTime) }}</template> <template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.editTime) }}</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<span @click.stop> <span @click.stop>
<el-button link icon="EditPen" @click="editData(scope.row)">修改</el-button> <el-button link icon="EditPen" @click="editData(scope.row)">修改</el-button>
<el-button link icon="Delete" @click="removeData(scope.row)">删除</el-button> <el-button link icon="Delete" @click="removeData(scope.row)">删除</el-button>
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
<div class="pagination-part">
<CommonPagination :total="100" @paginationChange="paginationChange" />
</div>
</div> </div>
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="40%"> <div class="pagination-part">
<MessageForm ref="messageFormRef" :type="formDialogTitle === '新增消息' ? 'add' : 'edit'" <CommonPagination :total="100" @paginationChange="paginationChange"/>
@close="isFormDialog = false" /> </div>
</el-dialog> </div>
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="40%">
<MessageForm ref="messageFormRef" :type="formDialogTitle === '新增消息' ? 'add' : 'edit'"
@close="isFormDialog = false"/>
</el-dialog>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref, toRefs, watch } from 'vue' import {onMounted, ref} from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import {useRoute, useRouter} from 'vue-router'
import { useRouter, useRoute } from 'vue-router'
import CommonPagination from '@/components/common-pagination.vue' import CommonPagination from '@/components/common-pagination.vue'
import MessageForm from './form/message-form.vue' import MessageForm from './form/message-form.vue'
import { tableRemoveRow } from '@/utils/table-util' import {tableRemoveRow} from '@/utils/table-util'
import { getMessageType } from '@/static-data/core' import {getMessageType} from '@/static-data/core'
import { dateFormater } from '@/utils/date-util' import {dateFormater} from '@/utils/date-util'
import * as sysMessageApi from "@/api/sys-message";
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const tableRef = ref() const tableRef = ref()
const messageFormRef = ref() const messageFormRef = ref()
const isSearch = ref(true) const isSearch = ref(true)
@ -72,80 +71,108 @@ const isFormDialog = ref(false)
const formDialogTitle = ref('') const formDialogTitle = ref('')
const queryParams = ref({} as any) const queryParams = ref({} as any)
const tableData = ref([] as any) const tableData = ref([] as any)
let current = 0;
let size = 10;
const total = ref(0);
queryData({ type: '公告', content: '测试测试测试' }) onMounted(() => {
init();
})
const init = () => {
total.value = 0;
current = 0;
tableData.value = [];
getMessageList();
}
const getMessageList = () => {
sysMessageApi.page(current, size).then((res: any) => {
if (res.code == 0) {
total.value = res.data.total
tableData.value = res.data.records
}
})
}
queryData({type: '公告', content: '测试测试测试'})
function queryData(e: any) { function queryData(e: any) {
loading.value = true loading.value = true
tableData.value = [] tableData.value = []
setTimeout(() => { setTimeout(() => {
while (tableData.value.length < 10) { while (tableData.value.length < 10) {
tableData.value.push({ tableData.value.push({
type: e.type || '公告', type: e.type || '公告',
content: e.content || '测试测试测试', content: e.content || '测试测试测试',
creator: 'admin', creator: 'admin',
creatTime: new Date(), creatTime: new Date(),
editor: 'admin', editor: 'admin',
editTime: new Date(), editTime: new Date(),
hospital: '', hospital: '',
showDept: '', showDept: '',
permissions: '', permissions: '',
link: '', link: '',
isHot: true, isHot: true,
}) })
} }
loading.value = false loading.value = false
}, 200); }, 200);
} }
const addData = () => { const addData = () => {
isFormDialog.value = true isFormDialog.value = true
formDialogTitle.value = '新增消息' formDialogTitle.value = '新增消息'
setTimeout(() => { setTimeout(() => {
messageFormRef.value.resetData() messageFormRef.value.resetData()
}, 0) }, 0)
} }
const editData = (e: any) => {
isFormDialog.value = true
formDialogTitle.value = '修改'
setTimeout(() => {
messageFormRef.value.resetData()
messageFormRef.value.formData = JSON.parse(JSON.stringify(e))
}, 0)
}
const removeData = (e?: any) => {
const selectRow = e || tableRef.value.getSelectionRows()
tableRemoveRow({ data: selectRow }, (res: boolean) => {
if (res) {
// console.log('', selectRow)
}
})
}
const paginationChange = (page: number, size: number) => {
const editData = (e: any) => {
isFormDialog.value = true
formDialogTitle.value = '修改'
setTimeout(() => {
messageFormRef.value.resetData()
messageFormRef.value.formData = JSON.parse(JSON.stringify(e))
}, 0)
}
const removeData = (e?: any) => {
const selectRow = e || tableRef.value.getSelectionRows()
tableRemoveRow({data: selectRow}, (res: boolean) => {
if (res) {
// console.log('', selectRow)
}
})
}
const paginationChange = (page: number, s: number) => {
current = page;
size = s;
getMessageList();
} }
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.table-page.custom-table-table { .table-page.custom-table-table {
.search-part { .search-part {
padding: 40px 30px; padding: 40px 30px;
border: 1px solid $border-color; border: 1px solid $border-color;
&>.search-cell~.search-cell { & > .search-cell ~ .search-cell {
margin-left: 50px; margin-left: 50px;
}
.search-cell {
flex-grow: 1;
}
&>.el-button {
margin-left: 100px;
}
} }
.table-part { .search-cell {
height: calc(100% - 292px); flex-grow: 1;
} }
& > .el-button {
margin-left: 100px;
}
}
.table-part {
height: calc(100% - 292px);
}
}</style> }</style>

View File

@ -64,7 +64,8 @@
@save="doctorFormSave"/> @save="doctorFormSave"/>
</el-dialog> </el-dialog>
<ImportDialog ref="importDialogRef" title="用户导入" <ImportDialog ref="importDialogRef" title="用户导入"
templateUrl="/admin/sys-file/local/file/user.xlsx" importUrl="/admin/user/import"/> templateUrl="/admin/sys-file/local/file/user.xlsx"
importUrl="/admin/user/import"/>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>

View File

@ -79,34 +79,72 @@ function close() {
emit('close') emit('close')
} }
function resetData() { function resetData(form?: any) {
formRef.value.resetFields() formRef.value.resetFields()
formData.value = { if (form) {
roleId: '', form.menuIds = [];
roleName: '', formData.value = form;
roleCode: '', getRoleMenu(form.roleId);
roleDesc: '', } else {
dataPermissions: '', formData.value = {
roleId: '',
roleName: '',
roleCode: '',
roleDesc: '',
menuIds: []
}
} }
} }
const getRoleMenu = (roleId: string) => {
menuApi.getRoleTree(roleId).then((res: any) => {
treeRef.value.setCheckedKeys(res.data);
})
}
const saveData = async () => { const saveData = async () => {
await formRef.value.validate((valid: any, fields: any) => { await formRef.value.validate((valid: any, fields: any) => {
if (valid) { if (valid) {
const form = Object.assign({}, formData.value); const form = Object.assign({}, formData.value);
form.menuIds = form.menuIds.join(","); if (props.type == "edit") {
roleApi.addRole(form).then((res: any) => { updateRole(form);
if (res.code == 0) { } else {
ElMessage.success('保存成功!'); addRole(form);
close(); }
} else {
ElMessage.error(res.msg ? res.msg : "保存失败");
}
});
} }
}) })
} }
const addRole = (form: any) => {
form.menuIds = form.menuIds.join(",");
roleApi.addRole(form).then((res: any) => {
if (res.code == 0) {
ElMessage.success('保存成功!');
close();
} else {
ElMessage.error(res.msg ? res.msg : "保存失败");
}
});
}
const updateRole = async (form: any) => {
const menuIds = form.menuIds.join(",");
delete form.menuIds;
const res: any = await roleApi.updateRole(form);
const res1: any = await roleApi.saveRoleMenus(form.roleId, menuIds);
if (res.code == 0 && res1.code == 0) {
ElMessage.success("保存成功");
close();
} else {
if (res.code == 1) {
ElMessage.error(res.msg ? res.msg : "更新失败");
}
if (res1.code == 1) {
ElMessage.error(res.msg ? res.msg : "授权失败");
}
}
}
const checkChange = () => { const checkChange = () => {
formData.value.menuIds = treeRef.value.getCheckedKeys(); formData.value.menuIds = treeRef.value.getCheckedKeys();
} }

View File

@ -60,7 +60,8 @@
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="30%"> <el-dialog v-model="isFormDialog" :title="formDialogTitle" width="30%">
<RoleForm ref="RoleFormRef" :type="formDialogTitle === '添加' ? 'add' : 'edit'" @close="isFormDialog = false"/> <RoleForm ref="RoleFormRef" :type="formDialogTitle === '添加' ? 'add' : 'edit'" @close="isFormDialog = false"/>
</el-dialog> </el-dialog>
<ImportDialog ref="importDialogRef" title="角色导入" templateUrl="#" importUrl="#"/> <ImportDialog ref="importDialogRef" title="角色导入" templateUrl="/admin/sys-file/local/file/role.xlsx"
importUrl="/admin/role/import" @success="importSuccessEvent"/>
<EmpowerDialog ref="empowerDialogRef"/> <EmpowerDialog ref="empowerDialogRef"/>
</template> </template>
@ -73,6 +74,7 @@ import RoleForm from './form/role-form.vue'
import ImportDialog from '@/components/import-dialog.vue' import ImportDialog from '@/components/import-dialog.vue'
import EmpowerDialog from './form/empower-dialog.vue' import EmpowerDialog from './form/empower-dialog.vue'
import * as roleApi from "@/api/role"; import * as roleApi from "@/api/role";
import {ElMessage} from "element-plus";
const tableRef = ref() const tableRef = ref()
const RoleFormRef = ref() const RoleFormRef = ref()
@ -132,10 +134,21 @@ const importData = () => {
}, 0); }, 0);
} }
const removeData = (e?: any) => { const removeData = (e?: any) => {
const selectRow = e || tableRef.value.getSelectionRows() const selectRow = [e] || tableRef.value.getSelectionRows();
tableRemoveRow({data: selectRow}, (res: boolean) => { tableRemoveRow({data: selectRow}, (res: boolean) => {
if (res) { if (res) {
// console.log('', selectRow) const ids: any = [];
selectRow.forEach((row: any) => {
ids.push(row.roleId);
})
roleApi.deleteById(ids).then((res: any) => {
if (res.code == 0) {
ElMessage.success("删除成功");
init();
} else {
ElMessage.error(res.msg ? res.msg : "删除失败");
}
})
} }
}) })
} }
@ -148,8 +161,7 @@ const editData = (e: any) => {
isFormDialog.value = true isFormDialog.value = true
formDialogTitle.value = '修改' formDialogTitle.value = '修改'
setTimeout(() => { setTimeout(() => {
RoleFormRef.value.resetData() RoleFormRef.value.resetData(JSON.parse(JSON.stringify(e)))
// RoleFormRef.value.formData = JSON.parse(JSON.stringify(e))
}, 0) }, 0)
} }
const tableRowClick = (row: any) => { const tableRowClick = (row: any) => {
@ -161,6 +173,10 @@ const paginationChange = (page: number, s: number) => {
size = s size = s
getRoleList() getRoleList()
} }
const importSuccessEvent = () => {
init();
}
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>