保存进度!

This commit is contained in:
2022-12-15 09:25:51 +08:00
parent 5c72437e2d
commit 5dcff64bf5
130 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,324 @@
<template>
<BasisTable
:columns="table_config.table_header"
:config="table_config.config"
:request="table_config.request"
>
<template v-slot:operation="slotData">
<el-button type="danger" @click="handlerMenu('edit', slotData.data.menu_id)" v-has-button="'menu:edit'">编辑</el-button>
<el-button type="danger" @click="handlerMenu('add_sub', slotData.data.menu_id)" v-has-button="'menu:add_sub'">添加子菜单</el-button>
</template>
</BasisTable>
<el-dialog :title="data.title" @closed="dislogClose" @open="dialogOpen" v-model="dialogVisible" width="30%" :close-on-click-modal="false" :close-on-press-escape="false">
<BasisForm
ref="basisFormRef"
label-width="100px"
:item="form_config.form_item"
:button="form_config.form_button"
:field="form_config.form_data"
:loading="form_config.form_loading"
@callback="handlerSubmit"
>
<template v-slot:menu_function>
<el-row :gutter="10">
<el-col :span="9">页面元素</el-col>
<el-col :span="9">标识符</el-col>
<el-col :span="4">操作</el-col>
</el-row>
<el-row :gutter="10" v-for="(item, index) in form_config.page_item" :key="item.id">
<el-col :span="9"><el-input v-model.trim="item.label" size="small" /></el-col>
<el-col :span="9"><el-input v-model.trim="item.value" size="small" /></el-col>
<el-col :span="4"><el-button size="small" @click="handlerDel(index)">删除</el-button></el-col>
</el-row>
<el-button type="primary" @click="handlerPush">添加功能</el-button>
</template>
</BasisForm>
</el-dialog>
</template>
<script>
import { useRouter } from "vue-router";
import{ reactive, provide, ref } from "vue";
// store
import { useStore } from "vuex";
// components
import BasisTable from "@c/table";
import BasisForm from "@c/form";
// 全局数据
import globalData from "@/js/data";
// API
import { MenuCreate, MenuDetailed, MenuUpdate } from "@/api/menu";
// utils
import { formatRequestData, formatTree } from "@/utils/format";
export default {
name: 'MenuIndex',
components: { BasisTable, BasisForm },
props: {},
setup(props){
const dialogVisible = ref(false);
// router
const { push } = useRouter();
// store
const store = useStore();
// 页面功能初始参数
const page_fun_json = { value: "", label: "" };
const data = reactive({
menu_handler_flag: "",
row_id: 0,
title: "",
title_item: {
add: "添加一级菜单",
edit: "编辑菜单",
add_sub: "添加子级菜单"
}
})
// 列表表格配置
const table_config = reactive({
table_header: [
{ label: "菜单名称", prop: "menu_name" },
{ label: "菜单路径", prop: "menu_path" },
{ label: "映射组件", prop: "menu_component" },
{ label: "重定向", prop: "menu_redirect" },
{
label: "是否隐藏",
prop: "menu_hidden",
type: "switch",
key_id: "menu_id",
api_module: "menu",
api_key: "hidden_status",
},
{
label: "是否禁用",
prop: "menu_disabled",
type: "switch",
key_id: "menu_id",
api_module: "menu",
api_key: "disabled_status",
},
{ label: "操作", type: "slot", slot_name: "operation", width: "280", delete_elem: true }
],
config: {
selection: false,
batch_delete: false,
pagination: false,
action_request: true,
row_key: "menu_id"
},
request: {
url: "menu",
data: {},
delete_key: "menu_id",
format_data: (data) => formatTree(data, "menu_id", "parent_id", "children", 0)
}
})
const search_config = reactive({
label_width: "70px",
form_button_group: [
{ label: "新增一级菜单", type: "danger", callback: () => handlerMenu('add') },
],
form_button: {
reset_button: true
},
form_item: [
{
type: "select",
label: "禁启用",
prop: "menu_disabled",
width: "100px",
options: globalData.whether
},
{
type: "keyword",
label: "关键字",
prop: "keyword",
options: [
{ label: "菜单名称", value: "menu_name" },
{ label: "菜单路径", value: "menu_path" },
{ label: "组件名称", value: "menu_component" }
]
},
],
form_data: {
menu_disabled: ""
}
})
provide("search_config", search_config);
const form_config = reactive({
form_item: [
{
type: "input",
label: "菜单名称",
prop: "menu_name",
width: "300px",
required: true
},
{
type: "input",
label: "菜单路径",
prop: "menu_path",
width: "300px",
required: true
},
{
type: "input",
label: "路由名称",
prop: "menu_router",
width: "300px",
required: true
},
{
type: "input",
label: "映射组件",
prop: "menu_component",
width: "300px",
required: true
},
{ type: "upload", label: "图标", prop: "menu_icon" },
{ type: "inputNumber", label: "排序", prop: "menu_sort", required: true },
{
type: "radio",
label: "是否禁用",
prop: "menu_disabled",
options: globalData.whether
},
{
type: "radio",
label: "是否隐藏",
prop: "menu_hidden",
options: globalData.whether
},
{
type: "radio",
label: "是否缓存",
prop: "menu_keep",
options: globalData.whether
},
{
type: "input",
label: "重定向",
prop: "menu_redirect",
width: "300px"
},
{
type: "slot",
label: "页面功能",
slot_name: "menu_function"
}
],
form_button: [
{ label: "确认提交", type: "danger", key: "submit" }
],
form_data: {
menu_name: "",
menu_path: "",
menu_router: "",
menu_component: "",
menu_sort: 0,
menu_disabled: "2",
menu_hidden: "2",
menu_keep: "2",
menu_redirect: "",
menu_icon: ""
},
form_loading: false,
page_item: [JSON.parse(JSON.stringify(page_fun_json))]
})
const handlerSubmit = (value) => {
if(data.menu_handler_flag === "edit" && data.row_id) {
handlerMenuEdit();
}
if(data.menu_handler_flag === "add" || data.menu_handler_flag === "add_sub") {
handlerMenuCreate();
}
}
const basisFormRef = ref(null);
const dislogClose = () => {
form_config.page_item = [JSON.parse(JSON.stringify(page_fun_json))];
data.row_id = "";
data.menu_handler_flag = "";
basisFormRef.value && basisFormRef.value.handlerFormReset();
dialogVisible.value = false;
}
const dialogOpen = () => {
if(data.menu_handler_flag === "edit" && data.row_id) {
handlerMenuDetailed();
}
}
const handlerPush = () => {
form_config.page_item.push(JSON.parse(JSON.stringify(page_fun_json)));
}
const handlerDel = (index) => {
form_config.page_item.splice(index, 1);
}
const formatPageItem = () => {
const data = Object.assign([], form_config.page_item);
const dataItem = data.filter(item => item.label && item.value);
return JSON.stringify(dataItem);
}
const handlerMenu = (type, id = "") => {
data.menu_handler_flag = type;
data.row_id = id;
dialogVisible.value = true;
// 更新标题
data.title = data.title_item[type];
}
const handlerMenuDetailed = () => {
form_config.form_loading = true;
MenuDetailed({menu_id: data.row_id}).then(response => {
form_config.form_loading = false;
// form表单赋值
form_config.form_data = formatRequestData(response.data, form_config.form_data);
// 页面功能选值还原
const pageItemInit = response.data.menu_fun;
pageItemInit && (form_config.page_item = JSON.parse(pageItemInit));
}).catch(error => {
form_config.form_loading = false;
})
}
const handlerMenuEdit = () => {
form_config.form_loading = true;
MenuUpdate({
...form_config.form_data,
menu_fun: formatPageItem(),
menu_id: data.row_id
}).then(response => {
form_config.form_loading = false;
dislogClose();
store.commit("app/SET_TABLE_REQUEST");
}).catch(error => {
form_config.form_loading = false;
})
}
const handlerMenuCreate = () => {
form_config.form_loading = true;
const request_data = {
...form_config.form_data,
menu_fun: formatPageItem()
}
if(data.menu_handler_flag === "add_sub") { request_data.parent_id = data.row_id; }
MenuCreate(request_data).then(response => {
form_config.form_loading = false;
dislogClose();
store.commit("app/SET_TABLE_REQUEST");
}).catch(error => {
form_config.form_loading = false;
})
}
return {
table_config,
dialogVisible,
form_config,
basisFormRef,
handlerSubmit,
dislogClose,
dialogOpen,
handlerDel,
handlerPush,
handlerMenu,
data
}
}
}
</script>
<style lang="scss" scoped></style>

View File

@@ -0,0 +1,100 @@
<template>
<BasisTable :columns="table_config.table_header" :config="table_config.config" :request="table_config.request">
<template v-slot:operation="slotData">
<el-button type="danger" @click="handlerRole(slotData.data.role_id)">编辑</el-button>
</template>
</BasisTable>
<DialogRole v-model:flag="data.dialogFlag" v-model:row-id="data.row_id" />
</template>
<script>
import{ reactive, provide } from "vue";
// components
import BasisTable from "@c/table";
import DialogRole from "./components/dialogRole";
// 全局数据
import globalData from "@/js/data";
export default {
name: 'InfoIndex',
components: { BasisTable, DialogRole },
props: {},
setup(props){
const data = reactive({
dialogFlag: false,
row_id: ""
})
const table_config = reactive({
table_header: [
{ label: "角色名称", prop: "role_name" },
{
label: "是否禁用",
prop: "role_disabled",
type: "switch",
key_id: "role_id",
api_module: "role",
api_key: "status"
},
{
label: "操作",
type: "slot",
slot_name: "operation",
width: "200",
delete_elem: true
}
],
config: {
action_request: true,
has_button_delete: "role:delete",
has_button_batch_delete: "role:batch_delete"
},
request: {
url: "role",
data: {
pageNumber: 1,
pageSize: 10,
},
delete_key: "role_id"
}
})
const search_config = reactive({
label_width: "80px",
form_button_group: [
{ label: "添加角色", type: "danger", callback: () => handlerRole() },
],
form_button: {
reset_button: true
},
form_item: [
{
type: "input",
label: "角色名称",
prop: "role_name",
placeholder: "请输入角色名称"
},
{
type: "select",
label: "禁用状态",
prop: "role_disabled",
width: "100px",
options: globalData.whether
},
],
form_data: {
role_name: "",
role_disabled: ""
}
})
provide("search_config", search_config);
const handlerRole = (id = "") => {
data.row_id = id;
data.dialogFlag = true;
}
return {
table_config,
data,
handlerRole
}
}
}
</script>
<style lang="scss" scoped></style>

View File

@@ -0,0 +1,115 @@
<template>
<BasisTable
:columns="table_config.table_header"
:config="table_config.config"
:request="table_config.request"
>
<template v-slot:operation="slotData">
<el-button type="danger" @click="handlerDialog(slotData.data.id)" v-has-button="'user:edit'">编辑</el-button>
<el-button type="danger" @click="handlerPassword(slotData.data.id)" v-has-button="'user:password'">修改密码</el-button>
</template>
</BasisTable>
<DialogUser v-model:flag="dialogFlag" v-model:row-id="row_id" />
<DialogPass v-model:flag="dialogPassFlag" v-model:row-id="row_id" title="修改密码" />
</template>
<script>
import { reactive, provide, toRefs } from "vue";
// components
import BasisTable from "@c/table";
import DialogUser from "./components/dialogUser";
import DialogPass from "./components/dialogPassword";
// 全局数据
import globalData from "@/js/data";
export default {
name: "SystemUser",
components: { BasisTable, DialogUser, DialogPass },
props: {},
setup(props){
const data = reactive({
dialogFlag: false,
dialogPassFlag: false,
row_id: ""
})
// 列表表格配置
const table_config = reactive({
table_header: [
{ label: "用户名", prop: "username" },
{ label: "真实姓名", prop: "truename" },
{ label: "角色类型", prop: "role_type" },
{
label: "帐号状态",
prop: "user_disabled",
type: "switch",
key_id: "id",
api_module: "user",
api_key: "status"
},
{ label: "创建时间", prop: "user_createtime" },
{ label: "操作", type: "slot", slot_name: "operation", width: "280", delete_elem: true }
],
config: {
action_request: true,
has_button_delete: "user:delete",
has_button_batch_delete: "user:batch_delete"
},
request: {
url: "user",
data: {
pageSize: 10,
pageNumber: 1
},
delete_key: "id"
}
})
// 搜索项配置
const search_config = reactive({
label_width: "70px",
form_button_group: [
{ label: "添加用户", type: "danger", callback: () => handlerDialog() },
],
form_button: {
reset_button: true
},
form_item: [
{
type: "select",
label: "禁启用",
prop: "user_disabled",
width: "100px",
options: globalData.whether
},
{
type: "keyword",
label: "关键字",
prop: "keyword",
options: [
{ label: "用户名", value: "username" },
{ label: "真实姓名", value: "truename" },
{ label: "角色类型", value: "role_type" }
]
},
],
form_data: {
user_disabled: ""
}
})
provide("search_config", search_config);
const handlerDialog = (id = '') => {
data.row_id = id;
data.dialogFlag = true;
}
const handlerPassword = (id) => {
data.row_id = id;
data.dialogPassFlag = true;
}
return {
table_config,
handlerDialog,
handlerPassword,
...toRefs(data)
}
}
}
</script>
<style lang="scss" scoped></style>

View File

@@ -0,0 +1,95 @@
<template>
<el-dialog
v-model="dialogVisible"
:title="title"
:width="width"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="dialogClose"
@open="dialogOpen"
>
<BasisForm @callback="handlerSubmit" ref="basisFormRef" label-width="100px" :item="form_config.form_item" :button="form_config.form_button" :field="form_config.form_data" :loading="form_config.form_loading">
</BasisForm>
</el-dialog>
</template>
<script setup>
import { ref, watch, reactive, getCurrentInstance, defineProps, defineEmits } from "vue";
// components
import BasisForm from "@c/form";
// validate
import { checkPassword } from "@/utils/validate";
// hook
import { propsType, dialogHook } from "@/hook/dialogHook.js";
// sha1
import sha1 from "js-sha1";
// API
import { UpdatePass } from "@/api/user";
// store
import { useStore } from "vuex";
// Props对象
const props = defineProps({
...propsType,
rowId: {
type: [String, Number],
default: ""
}
})
const emit = defineEmits(["update:flag"])
// 变量
const dialogVisible = ref(props.flag);
const width = ref(props.width);
const title = ref(props.title);
const basisFormRef = ref(null);
// 获取实例上下文
const { proxy } = getCurrentInstance();
// dialog
const { close } = dialogHook(emit);
// store
const store = useStore();
// form表单配置
const form_config = reactive({
form_item: [
{
type: "input",
label: "密码",
prop: "password",
width: "300px",
value_type: "password",
required: true
}
],
form_button: [
{ label: "确认修改", type: "danger", key: "submit" }
],
form_data: {
password: "",
},
form_loading: false
})
const dialogClose = () => {
dialogVisible.value = false;
close(basisFormRef);
}
const dialogOpen = () => {}
watch(() => props.flag, (newValue, oldValue) => {
dialogVisible.value = newValue;
})
/** 表单提交 */
const handlerSubmit = () => {
if(!props.rowId) { return false; } // 不存在ID
form_config.form_loading = true; // 添加表单遮罩
UpdatePass({
password: sha1(form_config.form_data.password),
id: props.rowId
}).then(response => {
form_config.form_loading = false; // 清除表单遮罩
proxy.$message.success(response.message); // 成功弹窗提示
dialogClose(); // 关闭弹窗
}).catch(error => {
form_config.form_loading = false; // 清除表单遮罩
})
}
</script>
<style lang='scss' scoped></style>

View File

@@ -0,0 +1,204 @@
<template>
<el-dialog v-model="dialogVisible" :title="title" :width="width" :close-on-click-modal="false" :close-on-press-escape="false" @close="dialogClose" @open="dialogOpen">
<BasisForm ref="basisFormRef" label-width="100px"
:item="form_config.form_item"
:button="form_config.form_button"
:field="form_config.form_data"
:loading="form_config.form_loading"
@callback="handlerSubmit">
<template v-slot:permit>
<el-tree
ref="treeRef"
:data="datas.tree_data"
node-key="menu_id"
:props="{label: 'menu_name', class: customNodeClass}"
:expand-on-click-node="false"
show-checkbox
default-expand-all
/>
</template>
</BasisForm>
</el-dialog>
</template>
<script setup>
import { ref, reactive, defineProps, watch, defineEmits, nextTick } from "vue";
// store
import { useStore } from "vuex";
// components
import BasisForm from "@c/form";
// 全局数据
import globalData from "@/js/data";
// API
import { RoleCreate, RoleDetailed, RoleUpdate } from "@/api/role";
import { MenuListTree } from "@/api/menu";
// utils
import { formatRequestData } from "@/utils/format";
const store = useStore();
// props对象
const props = defineProps({
flag: {
type: Boolean,
default: false
},
width: {
type: String,
default: "30%"
},
title: {
type: String,
default: "消息"
},
rowId: {
type: [String, Number],
default: ""
}
})
// 变量
const dialogVisible = ref(props.flag);
const width = ref(props.width);
const title = ref(props.title);
const datas = reactive({
tree_data: []
})
const basisFormRef = ref(null);
const treeRef = ref(null);
// emit对象
const emit = defineEmits(["update:flag", "update:rowId"])
// 角色form表单配置
const form_config = reactive({
form_item: [
{ type: "input", label: "角色名称", prop: "role_name", required: true },
{ type: "input", label: "角色标识", prop: "role_value", required: true },
{
type: "radio",
label: "是否超管",
prop: "has_admin",
options: globalData.whether,
relation_hidden: [
['role_name', {"1":true, "0": false}],
['role_value', {"1":true, "0": false}]
]
},
{ type: "radio", label: "是否启用", prop: "role_disabled", options: globalData.whether },
{ type: "slot", label: "角色权限", prop: "role_permit", slot_name: "permit" }
],
form_button: [
{ label: "确认提交", type: "danger", key: "submit" }
],
form_data: { role_name: "", role_value: "", role_disabled: "1", has_admin: "0" },
form_loading: false,
form_hidden: {}
})
// 函数
const dialogOpen = async () => {
try {
await getMenuList();
}catch {
console.log("权限数据请求失败")
}
props.rowId && getDetailed();
title.value = props.rowId ? "编辑角色" : "添加角色";
}
const handlerSubmit = () => {
props.rowId ? handlerEdit() : handlerAdd();
}
/** 角色新增函数接口 */
const handlerAdd = () => {
const request_data = formatRequest();
form_config.form_loading = true;
RoleCreate(request_data).then(response => {
form_config.form_loading = false;
store.commit("app/SET_TABLE_REQUEST");
dialogClose();
}).catch(error => {
form_config.form_loading = false;
})
}
/** 角色编辑函数接口 */
const handlerEdit = () => {
const request_data = formatRequest();
form_config.form_loading = true;
RoleUpdate(request_data).then(response => {
form_config.form_loading = false;
store.commit("app/SET_TABLE_REQUEST");
dialogClose();
}).catch(error => {
form_config.form_loading = false;
})
}
/** 接口参数格式化 */
const formatRequest = () => {
const id = treeRef.value.getCheckedKeys().concat(treeRef.value.getHalfCheckedKeys());
const request_data = {
...form_config.form_data,
menu_id: id,
}
// 编辑状态
if(props.rowId) { request_data.role_id = props.rowId; }
return request_data;
}
const dialogClose = () => {
basisFormRef.value.handlerFormReset();
treeRef.value.setCheckedKeys([]);
dialogVisible.value = false;
emit("update:flag", false);
}
const getMenuList = () => {
if(datas.tree_data.length !== 0) { return false; }
return new Promise((resolve, reject) => {
MenuListTree().then(response => {
resolve()
datas.tree_data = response.data.data;
})
})
}
const getDetailed= () => {
form_config.form_loading = true;
RoleDetailed({role_id: props.rowId}).then(response => {
// 响应报文数据
const response_data = response.data;
// 表单数据赋值
form_config.form_data = formatRequestData(response_data, form_config.form_data);
// 菜单复选框赋值
nextTick(() => {
const menu_id = response_data.menu_id || [];
menu_id.length > 0 && menu_id.forEach(item => {
// 获取node节点
const node = treeRef.value.getNode(item);
// 判断node是否为子节点非半选状态
node.isLeaf && treeRef.value.setChecked(node, true)
});
})
form_config.form_loading = false;
}).catch(error => {
form_config.form_loading = false;
})
}
const customNodeClass = (data, node) => {
return `tree-level-${node.level}`
}
// 监听
watch(() => props.flag, (newValue, oldValue) => {
dialogVisible.value = newValue;
})
</script>
<style lang='scss' scoped>
:deep(.tree-level-2) {
margin-bottom: 8px;
> .el-tree-node__children {
display: flex;
flex-wrap: wrap;
}
}
:deep(.tree-level-3) {
width: 33.33333%;
}
</style>

View File

@@ -0,0 +1,193 @@
<template>
<el-dialog
v-model="dialogVisible"
:title="title"
:width="width"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="dialogClose"
@open="dialogOpen"
>
<BasisForm ref="basisFormRef" @callback="handlerSubmit" label-width="100px" :item="form_config.form_item" :button="form_config.form_button" :field="form_config.form_data" :loading="form_config.form_loading" :hidden="form_config.form_hidden" />
</el-dialog>
</template>
<script setup>
import { ref, reactive, watch, defineProps, defineEmits, getCurrentInstance } from "vue";
// API
import { RoleListAll } from "@/api/role";
// components
import BasisForm from "@c/form";
// 全局数据
import globalData from "@/js/data";
// 验证
import { validate_email, validate_password } from "@/utils/validate";
// hook
import { propsType, dialogHook } from "@/hook/dialogHook.js";
// API
import { UserCreate, UserDetailed, UserUpdate } from "@/api/user";
// sha1
import sha1 from "js-sha1";
// vuex
import { useStore } from "vuex";
// store
const store = useStore();
// props 对象
const props = defineProps({
...propsType,
rowId: {
type: [String, Number],
default: ""
}
})
// emit 对象
const emit = defineEmits(["update:flag", "update:rowId"])
// dialoghook
const { close } = dialogHook(emit);
// 获取实例上下文
const { proxy } = getCurrentInstance();
// 变量
const dialogVisible = ref(props.flag);
const width = ref(props.width);
const title = ref(props.title);
const basisFormRef = ref(null);
const form_config = reactive({
form_item: [
{
type: "input",
value_type: "username",
label: "用户名",
prop: "username",
width: "300px",
required: true
},
{ type: "input", label: "真实姓名", prop: "truename" },
{
type: "input",
value_type: "password",
label: "密码",
prop: "password",
width: "300px",
required: true
},
{ type: "radio", label: "是否启用", prop: "user_disabled", options: globalData.whether, required: true },
{
type: "radio",
label: "角色类型",
prop: "role_type",
required: true,
key_label: "role_name",
key_value: "role_id",
callback: async (row) => {
let result = []
try {
result = await getRoleList();
} catch (error) {
console.log("角色数据获取失败")
}
row.options = result
}
}
],
form_button: [
{ label: "确认提交", type: "danger", key: "submit" }
],
form_data: { username: "", password: "", truename: "", role_type: "", user_disabled: "1" },
form_loading: false,
form_hidden: {}
})
/** dialog关闭 */
const dialogClose = () => {
close(basisFormRef);
emit("update:rowId", "");
}
/** dialog打开 */
const dialogOpen = async () => {
form_config.form_hidden.password = !!props.rowId;
props.rowId && getUserDetailed();
}
/** 监听 */
watch(() => props.flag, (newValue, oldValue) => {
dialogVisible.value = newValue;
})
// 获取角色列表
const getRoleList = () => {
return new Promise((resolve, reject) => {
RoleListAll().then(response => {
resolve(response.data)
})
})
}
/** 表单提交 */
const handlerSubmit = () => {
props.rowId ? handlerEdit() : handlerAdd();
}
const handlerAdd= () => {
// 表单加载遮罩
form_config.form_loading = true;
// 拷贝数据
const request_data = Object.assign({}, form_config.form_data);
// 密码加密
request_data.password = sha1(request_data.password);
// 调用创建用户接口
UserCreate(request_data).then(response => {
userResponse(response);
}).catch(error => {
// 清除表单遮罩
form_config.form_loading = false;
})
}
/** 修改用户 */
const handlerEdit = () => {
// 表单加载遮罩
form_config.form_loading = true;
// 拷贝数据
const request_data = Object.assign({}, form_config.form_data);
// 删除密码参数
delete request_data.password;
// 调用修改用户接口
UserUpdate({...request_data, id: props.rowId}).then(response => {
userResponse(response);
}).catch(error => {
// 清除表单遮罩
form_config.form_loading = false;
})
}
/** 获取用户详情 */
const getUserDetailed = () => {
form_config.form_loading = true; // 表单加载遮罩
UserDetailed({id: props.rowId}).then(response => {
form_config.form_loading = false; // 清除表单遮罩
form_config.form_data = response.data; // 表单赋值
}).catch(error => {
form_config.form_loading = false; // 清除表单遮罩
})
}
/** 接口响应结果 */
const userResponse = (params) => {
// 清除表单遮罩
form_config.form_loading = false;
// 获取报文
const response_data = params;
// 判断状态
if(!response_data.data.user) {
// 失败弹窗提示
proxy.$message.error(response_data.message);
return false;
}
// 成功弹窗提示
proxy.$message.success(response_data.message);
// 刷新列表
store.commit("app/SET_TABLE_REQUEST");
// 关闭弹窗
dialogClose();
}
</script>
<style lang='scss' scoped></style>