mirror of
https://gitee.com/xiongmao1988/rax-medical.git
synced 2025-08-24 13:04:57 +08:00
juese
This commit is contained in:
parent
7a6a21c52b
commit
0ef6c81f36
|
@ -28,7 +28,7 @@ export function handleHttpUploadUrl(options: any, url: string | undefined) {
|
|||
let formData = new FormData();
|
||||
formData.append('file', options.file);
|
||||
formData.append('dir', options.dir)
|
||||
return new Promise((resolve, reject) => {
|
||||
return new Promise((resolve) => {
|
||||
try {
|
||||
request({
|
||||
url: url,
|
||||
|
@ -41,7 +41,7 @@ export function handleHttpUploadUrl(options: any, url: string | undefined) {
|
|||
resolve(res.data)
|
||||
});
|
||||
} catch (error) {
|
||||
reject(error)
|
||||
resolve(error)
|
||||
}
|
||||
})
|
||||
}
|
|
@ -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) {
|
||||
return new Promise(resolve => {
|
||||
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);
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
})
|
||||
})
|
||||
}
|
|
@ -62,15 +62,19 @@ const importData = () => {
|
|||
return
|
||||
}
|
||||
uploadRef.value.submit()
|
||||
ElMessage.success('上传成功')
|
||||
close()
|
||||
emit('success')
|
||||
// emit('error')
|
||||
}
|
||||
|
||||
function handleUpload(options: 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");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -1,139 +1,153 @@
|
|||
<template>
|
||||
<el-form ref="formRef" :model="formData" :rules="rules" label-width="100">
|
||||
<el-form-item label="消息类型" prop="type">
|
||||
<el-select v-model="formData.type" placeholder="请选择消息类型">
|
||||
<el-option v-for="item in getMessageType()" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在医院" prop="hospital">
|
||||
<el-select v-model="formData.hospital" placeholder="请选择医院">
|
||||
<el-option v-for="item in hospitals" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="消息内容" prop="content">
|
||||
<el-input v-model="formData.content" type="textarea" :rows="4" placeholder="请输入消息内容"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="可见组织" prop="showDept">
|
||||
<el-select v-model="formData.showDept" multiple placeholder="请选择组织">
|
||||
<el-option v-for="item in hospitals" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="组织权限" prop="permissions">
|
||||
<el-select v-model="formData.permissions" placeholder="请选择组织权限">
|
||||
<el-option v-for="item in [{value: 'default', label: '当前组织和下一组织可见'}]" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="跳转链接" prop="link">
|
||||
<el-input v-model="formData.link" placeholder="跳转链接"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否热点" prop="isHot">
|
||||
<el-switch v-model="formData.isHot" />
|
||||
</el-form-item>
|
||||
<el-form ref="formRef" :model="formData" :rules="rules" label-width="100">
|
||||
<el-form-item label="消息类型" prop="category">
|
||||
<el-select v-model="formData.category" placeholder="请选择消息类型">
|
||||
<el-option v-for="item in getMessageType()" :key="item.value" :label="item.label"
|
||||
:value="item.value"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="所在医院" prop="hospital">
|
||||
<el-select v-model="formData.hospital" placeholder="请选择医院">
|
||||
<el-option v-for="item in hospitals" :key="item.id" :label="item.name"
|
||||
:value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="消息内容" prop="message">
|
||||
<el-input v-model="formData.message" type="textarea" :rows="4" placeholder="请输入消息内容"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="可见组织" prop="organization">
|
||||
<el-select v-model="formData.organization" multiple placeholder="请选择组织">
|
||||
<el-option v-for="item in hospitals" :key="item.id" :label="item.name"
|
||||
:value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
<!-- <el-form-item label="组织权限" prop="permissions">
|
||||
<el-select v-model="formData.permissions" placeholder="请选择组织权限">
|
||||
<el-option v-for="item in [{value: 'default', label: '当前组织和下一组织可见'}]" :key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"/>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="跳转链接" prop="href">
|
||||
<el-input v-model="formData.href" placeholder="跳转链接"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否热点" prop="hotspots">
|
||||
<el-switch v-model="formData.hotspots"/>
|
||||
</el-form-item>
|
||||
|
||||
<div style="text-align: right;">
|
||||
<el-button class="f18" @click="close">取消</el-button>
|
||||
<el-button class="f18" type="primary" @click="saveData">确认</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
<div style="text-align: right;">
|
||||
<el-button class="f18" @click="close">取消</el-button>
|
||||
<el-button class="f18" type="primary" @click="saveData">确认</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script lang='ts' setup>
|
||||
import { onMounted, reactive, ref, toRefs, watch } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { getHospitalsData, getMessageType } from '@/static-data/core'
|
||||
import {onMounted, reactive, ref} from 'vue'
|
||||
import {ElMessage} from 'element-plus'
|
||||
import {getMessageType} from '@/static-data/core'
|
||||
import * as hospitalApi from "@/api/hospital";
|
||||
import * as sysMessageApi from "@/api/sys-message";
|
||||
|
||||
const emit = defineEmits(['close'])
|
||||
|
||||
const props = defineProps({
|
||||
type: String
|
||||
type: String
|
||||
})
|
||||
|
||||
const rules = reactive({
|
||||
type: [
|
||||
{ required: true, message: '请选择类型', trigger: ['blur', 'change'] },
|
||||
],
|
||||
hospital: [
|
||||
{ required: true, message: '请选择医院', trigger: ['blur', 'change'] },
|
||||
],
|
||||
content: [
|
||||
{ required: true, message: '请输入消息内容', trigger: ['blur', 'change'] },
|
||||
],
|
||||
showDept: [
|
||||
{ required: true, message: '请选择可见组织', trigger: ['blur', 'change'] },
|
||||
],
|
||||
permissions: [
|
||||
{ required: true, message: '请选择组织权限', trigger: ['blur', 'change'] },
|
||||
],
|
||||
category: [
|
||||
{required: true, message: '请选择类型', trigger: ['blur', 'change']},
|
||||
],
|
||||
hospital: [
|
||||
{required: true, message: '请选择医院', trigger: ['blur', 'change']},
|
||||
],
|
||||
message: [
|
||||
{required: true, message: '请输入消息内容', trigger: ['blur', 'change']},
|
||||
],
|
||||
// organization: [
|
||||
// {required: true, message: '请选择可见组织', trigger: ['blur', 'change']},
|
||||
// ],
|
||||
// permissions: [
|
||||
// {required: true, message: '请选择组织权限', trigger: ['blur', 'change']},
|
||||
// ],
|
||||
})
|
||||
|
||||
const formRef = ref()
|
||||
const formData = ref({
|
||||
type: '',
|
||||
hospital: '',
|
||||
content: '',
|
||||
showDept: '',
|
||||
permissions: '',
|
||||
link: '',
|
||||
isHot: true,
|
||||
category: '',
|
||||
hospital: '',
|
||||
message: '',
|
||||
organization: '',
|
||||
permissions: '',
|
||||
href: '',
|
||||
hotspots: false,
|
||||
} as any)
|
||||
const hospitals = ref([] as any)
|
||||
getHospitalsData().then((res: any) => {
|
||||
hospitals.value = res
|
||||
// console.log(res)
|
||||
})
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
resetData()
|
||||
resetData()
|
||||
})
|
||||
|
||||
defineExpose({
|
||||
formData,
|
||||
resetData,
|
||||
formData,
|
||||
resetData,
|
||||
})
|
||||
|
||||
function close() {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
function resetData() {
|
||||
formRef.value.resetFields()
|
||||
formData.value = {
|
||||
type: '',
|
||||
hospital: '',
|
||||
content: '',
|
||||
showDept: '',
|
||||
permissions: '',
|
||||
link: '',
|
||||
isHot: true,
|
||||
}
|
||||
getHospitalList()
|
||||
formRef.value.resetFields()
|
||||
formData.value = {
|
||||
category: '',
|
||||
hospital: '',
|
||||
message: '',
|
||||
organization: '',
|
||||
permissions: '',
|
||||
href: '',
|
||||
hotspots: false,
|
||||
}
|
||||
}
|
||||
const saveData = async () => {
|
||||
await formRef.value.validate((valid: any, fields: any) => {
|
||||
if (valid) {
|
||||
ElMessage.success('保存成功!')
|
||||
close()
|
||||
} else {
|
||||
// console.log('error submit!', fields)
|
||||
}
|
||||
})
|
||||
|
||||
const saveData = () => {
|
||||
formRef.value.validate((valid: any, fields: any) => {
|
||||
if (valid) {
|
||||
sysMessageApi.save(formData.value).then((res: any) => {
|
||||
if (res.code == 0 && res.data) {
|
||||
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>
|
||||
|
||||
<style lang='scss' scoped>
|
||||
:deep(.el-form-item) {
|
||||
.el-form-item__label {
|
||||
display: block;
|
||||
text-align: right;
|
||||
// text-align: justify;
|
||||
// text-align-last: justify;
|
||||
// padding: 0 10px 0 20px;
|
||||
.el-form-item__label {
|
||||
display: block;
|
||||
text-align: right;
|
||||
// text-align: justify;
|
||||
// text-align-last: justify;
|
||||
// padding: 0 10px 0 20px;
|
||||
|
||||
&:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,69 +1,68 @@
|
|||
<template>
|
||||
<div class="table-page custom-table-table">
|
||||
<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-cell">
|
||||
<span class="label">消息类型</span>
|
||||
<el-select v-model="queryParams.type" placeholder="请选择消息类型">
|
||||
<el-option v-for="item in getMessageType()" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-cell">
|
||||
<span class="label">消息内容</span>
|
||||
<el-input v-model="queryParams.content" placeholder="请输入消息内容"></el-input>
|
||||
</div>
|
||||
<el-button type="primary" icon="Search" @click="queryData(queryParams)">查询</el-button>
|
||||
<!-- <el-button icon="Refresh" @click="queryParams = {}">重置</el-button> -->
|
||||
</div>
|
||||
<div class="button-part" style="justify-content: space-between;">
|
||||
<el-button type="primary" icon="FirstAidKit" @click="addData">新增</el-button>
|
||||
<TableAbility :isDownload="false" @searchBtn="isSearch = !isSearch" @refreshBtn="queryData({})"></TableAbility>
|
||||
</div>
|
||||
<div class="table-part">
|
||||
<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="content" label="消息内容" width="120" align="center" />
|
||||
<el-table-column property="creator" label="创建人" width="120" align="center" />
|
||||
<el-table-column label="创建时间" width="220" align="center">
|
||||
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.creatTime) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column property="editor" label="修改人" width="120" align="center" />
|
||||
<el-table-column label="修改时间" width="220" align="center">
|
||||
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.editTime) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<div class="table-page custom-table-table">
|
||||
<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-cell">
|
||||
<span class="label">消息类型</span>
|
||||
<el-select v-model="queryParams.type" placeholder="请选择消息类型">
|
||||
<el-option v-for="item in getMessageType()" :key="item.value" :label="item.label" :value="item.value"/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-cell">
|
||||
<span class="label">消息内容</span>
|
||||
<el-input v-model="queryParams.content" placeholder="请输入消息内容"></el-input>
|
||||
</div>
|
||||
<el-button type="primary" icon="Search" @click="queryData(queryParams)">查询</el-button>
|
||||
<!-- <el-button icon="Refresh" @click="queryParams = {}">重置</el-button> -->
|
||||
</div>
|
||||
<div class="button-part" style="justify-content: space-between;">
|
||||
<el-button type="primary" icon="FirstAidKit" @click="addData">新增</el-button>
|
||||
<TableAbility :isDownload="false" @searchBtn="isSearch = !isSearch" @refreshBtn="queryData({})"></TableAbility>
|
||||
</div>
|
||||
<div class="table-part">
|
||||
<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="content" label="消息内容" width="120" align="center"/>
|
||||
<el-table-column property="creator" label="创建人" width="120" align="center"/>
|
||||
<el-table-column label="创建时间" width="220" align="center">
|
||||
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.creatTime) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column property="editor" label="修改人" width="120" align="center"/>
|
||||
<el-table-column label="修改时间" width="220" align="center">
|
||||
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm:ss', scope.row.editTime) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<span @click.stop>
|
||||
<el-button link icon="EditPen" @click="editData(scope.row)">修改</el-button>
|
||||
<el-button link icon="Delete" @click="removeData(scope.row)">删除</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="pagination-part">
|
||||
<CommonPagination :total="100" @paginationChange="paginationChange" />
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="40%">
|
||||
<MessageForm ref="messageFormRef" :type="formDialogTitle === '新增消息' ? 'add' : 'edit'"
|
||||
@close="isFormDialog = false" />
|
||||
</el-dialog>
|
||||
<div class="pagination-part">
|
||||
<CommonPagination :total="100" @paginationChange="paginationChange"/>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="40%">
|
||||
<MessageForm ref="messageFormRef" :type="formDialogTitle === '新增消息' ? 'add' : 'edit'"
|
||||
@close="isFormDialog = false"/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang='ts' setup>
|
||||
import { onMounted, reactive, ref, toRefs, watch } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import {onMounted, ref} from 'vue'
|
||||
import {useRoute, useRouter} from 'vue-router'
|
||||
import CommonPagination from '@/components/common-pagination.vue'
|
||||
import MessageForm from './form/message-form.vue'
|
||||
import { tableRemoveRow } from '@/utils/table-util'
|
||||
import { getMessageType } from '@/static-data/core'
|
||||
import { dateFormater } from '@/utils/date-util'
|
||||
import {tableRemoveRow} from '@/utils/table-util'
|
||||
import {getMessageType} from '@/static-data/core'
|
||||
import {dateFormater} from '@/utils/date-util'
|
||||
import * as sysMessageApi from "@/api/sys-message";
|
||||
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
|
||||
const tableRef = ref()
|
||||
const messageFormRef = ref()
|
||||
const isSearch = ref(true)
|
||||
|
@ -72,80 +71,108 @@ const isFormDialog = ref(false)
|
|||
const formDialogTitle = ref('')
|
||||
const queryParams = 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) {
|
||||
loading.value = true
|
||||
tableData.value = []
|
||||
setTimeout(() => {
|
||||
while (tableData.value.length < 10) {
|
||||
tableData.value.push({
|
||||
type: e.type || '公告',
|
||||
content: e.content || '测试测试测试',
|
||||
creator: 'admin',
|
||||
creatTime: new Date(),
|
||||
editor: 'admin',
|
||||
editTime: new Date(),
|
||||
hospital: '',
|
||||
showDept: '',
|
||||
permissions: '',
|
||||
link: '',
|
||||
isHot: true,
|
||||
})
|
||||
}
|
||||
loading.value = false
|
||||
}, 200);
|
||||
loading.value = true
|
||||
tableData.value = []
|
||||
setTimeout(() => {
|
||||
while (tableData.value.length < 10) {
|
||||
tableData.value.push({
|
||||
type: e.type || '公告',
|
||||
content: e.content || '测试测试测试',
|
||||
creator: 'admin',
|
||||
creatTime: new Date(),
|
||||
editor: 'admin',
|
||||
editTime: new Date(),
|
||||
hospital: '',
|
||||
showDept: '',
|
||||
permissions: '',
|
||||
link: '',
|
||||
isHot: true,
|
||||
})
|
||||
}
|
||||
loading.value = false
|
||||
}, 200);
|
||||
}
|
||||
|
||||
const addData = () => {
|
||||
isFormDialog.value = true
|
||||
formDialogTitle.value = '新增消息'
|
||||
setTimeout(() => {
|
||||
messageFormRef.value.resetData()
|
||||
}, 0)
|
||||
isFormDialog.value = true
|
||||
formDialogTitle.value = '新增消息'
|
||||
setTimeout(() => {
|
||||
messageFormRef.value.resetData()
|
||||
}, 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>
|
||||
|
||||
<style lang='scss' scoped>
|
||||
.table-page.custom-table-table {
|
||||
.search-part {
|
||||
padding: 40px 30px;
|
||||
border: 1px solid $border-color;
|
||||
.search-part {
|
||||
padding: 40px 30px;
|
||||
border: 1px solid $border-color;
|
||||
|
||||
&>.search-cell~.search-cell {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.search-cell {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
&>.el-button {
|
||||
margin-left: 100px;
|
||||
}
|
||||
& > .search-cell ~ .search-cell {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.table-part {
|
||||
height: calc(100% - 292px);
|
||||
.search-cell {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
& > .el-button {
|
||||
margin-left: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.table-part {
|
||||
height: calc(100% - 292px);
|
||||
}
|
||||
}</style>
|
||||
|
|
|
@ -64,7 +64,8 @@
|
|||
@save="doctorFormSave"/>
|
||||
</el-dialog>
|
||||
<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>
|
||||
|
||||
<script lang='ts' setup>
|
||||
|
|
|
@ -79,34 +79,72 @@ function close() {
|
|||
emit('close')
|
||||
}
|
||||
|
||||
function resetData() {
|
||||
function resetData(form?: any) {
|
||||
formRef.value.resetFields()
|
||||
formData.value = {
|
||||
roleId: '',
|
||||
roleName: '',
|
||||
roleCode: '',
|
||||
roleDesc: '',
|
||||
dataPermissions: '',
|
||||
if (form) {
|
||||
form.menuIds = [];
|
||||
formData.value = form;
|
||||
getRoleMenu(form.roleId);
|
||||
} else {
|
||||
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 () => {
|
||||
await formRef.value.validate((valid: any, fields: any) => {
|
||||
if (valid) {
|
||||
const form = Object.assign({}, formData.value);
|
||||
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 : "保存失败");
|
||||
}
|
||||
});
|
||||
if (props.type == "edit") {
|
||||
updateRole(form);
|
||||
} else {
|
||||
addRole(form);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
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 = () => {
|
||||
formData.value.menuIds = treeRef.value.getCheckedKeys();
|
||||
}
|
||||
|
|
|
@ -60,7 +60,8 @@
|
|||
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="30%">
|
||||
<RoleForm ref="RoleFormRef" :type="formDialogTitle === '添加' ? 'add' : 'edit'" @close="isFormDialog = false"/>
|
||||
</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"/>
|
||||
</template>
|
||||
|
||||
|
@ -73,6 +74,7 @@ import RoleForm from './form/role-form.vue'
|
|||
import ImportDialog from '@/components/import-dialog.vue'
|
||||
import EmpowerDialog from './form/empower-dialog.vue'
|
||||
import * as roleApi from "@/api/role";
|
||||
import {ElMessage} from "element-plus";
|
||||
|
||||
const tableRef = ref()
|
||||
const RoleFormRef = ref()
|
||||
|
@ -132,10 +134,21 @@ const importData = () => {
|
|||
}, 0);
|
||||
}
|
||||
const removeData = (e?: any) => {
|
||||
const selectRow = e || tableRef.value.getSelectionRows()
|
||||
const selectRow = [e] || tableRef.value.getSelectionRows();
|
||||
tableRemoveRow({data: selectRow}, (res: boolean) => {
|
||||
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
|
||||
formDialogTitle.value = '修改'
|
||||
setTimeout(() => {
|
||||
RoleFormRef.value.resetData()
|
||||
// RoleFormRef.value.formData = JSON.parse(JSON.stringify(e))
|
||||
RoleFormRef.value.resetData(JSON.parse(JSON.stringify(e)))
|
||||
}, 0)
|
||||
}
|
||||
const tableRowClick = (row: any) => {
|
||||
|
@ -161,6 +173,10 @@ const paginationChange = (page: number, s: number) => {
|
|||
size = s
|
||||
getRoleList()
|
||||
}
|
||||
|
||||
const importSuccessEvent = () => {
|
||||
init();
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='scss' scoped>
|
||||
|
|
Loading…
Reference in New Issue
Block a user