wms_vue/src/view/dict/index.vue

284 lines
6.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<a-list-layout>
<template #search>
<a-alert message="数据字典用户Online列表用于系统在线用户监控" type="info" style="margin-top: 1px;" />
</template>
<pro-table rowKey="id" ref="tableRef" :fetch="fetch" :columns="columns" :toolbar="toolbar" :operate="operate"
:param="state.param" :pagination="pagination"
:row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }">
</pro-table>
<!-- 字典数据抽屉容器统一用抽屉承载内部组件负责渲染内容 -->
<a-drawer
:visible="state.visibleData"
:width="720"
title="字典数据"
destroyOnClose
@close="state.visibleData = false"
>
<dictData :visible="true" :record="state.recordData" @close="state.visibleData = false" />
</a-drawer>
</a-list-layout>
<save :visible="state.visibleSave" @close="closeSave"></save>
<edit :visible="state.visibleEdit" @close="closeEdit" :record="state.recordEdit"></edit>
</template>
<script>
import save from './modal/save.vue';
import edit from './modal/edit.vue';
import data from './modal/data.vue';
import {
message,
Modal as modal
} from '@hwork/ant-design-vue';
import {
ExclamationCircleOutlined
} from '@ant-design/icons-vue';
import {
page,
change,
remove,
removeBatch
} from "@/api/module/dict";
import {
reactive,
createVNode,
ref
} from 'vue';
const removeKey = "remove";
const removeBatchKey = "removeBatch";
export default {
components: {
save,
edit,
dictData: data,
},
setup() {
const tableRef = ref()
const switchFormat = {
yes: true,
no: false,
event: function (value, record) {
// record.enable = !record.enable;
record.enable = value;
change({
"id": record.id,
"enable": record.enable
})
tableRef.value.reload();
return record;
// return value;
}
}
const columns = [
{
dataIndex: "index",
key: "index",
title: "序号",
width: 60,
fixed: 'left',
align: 'center'
},
{
dataIndex: "code",
key: "code",
title: "标识",
width: 150
},
{
dataIndex: "enable",
key: "enable",
title: "状态",
width: 100,
switch: switchFormat
},
{
dataIndex: "name",
key: "name",
title: "名称",
}
];
/// 数据来源 [模拟]
const fetch = async (param) => {
var response = await page(param);
return {
total: response.data.total,
data: response.data.record,
};
};
/// 删除角色
const removeMethod = (record) => {
modal.confirm({
title: '您是否确定要删除此字典?',
icon: createVNode(ExclamationCircleOutlined),
okText: '确定',
cancelText: '取消',
onOk() {
message.loading({
content: "提交中...",
key: removeKey
});
remove({
"id": record.id
}).then((response) => {
if (response.success) {
message.success({
content: "删除成功",
key: removeKey,
duration: 1
}).then(() => {
tableRef.value.reload()
})
} else {
message.error({
content: "删除失败",
key: removeKey,
duration: 1
})
}
})
}
});
}
/// 批量删除
const removeBatchMethod = (ids) => {
modal.confirm({
title: '您是否确定要删除选择字典?',
icon: createVNode(ExclamationCircleOutlined),
okText: '确定',
cancelText: '取消',
onOk() {
message.loading({
content: "提交中...",
key: removeBatchKey
});
removeBatch({
"ids": ids
}).then((response) => {
if (response.success) {
message.success({
content: "删除成功",
key: removeBatchKey,
duration: 1
}).then(() => {
tableRef.value.reload()
})
} else {
message.error({
content: "删除失败",
key: removeBatchKey,
duration: 1
})
}
})
}
});
}
/// 工具栏
const toolbar = [{
label: "新增",
icon: 'PlusOutlined',
event: function () {
state.visibleSave = true
}
},
{
label: "删除",
icon: 'DeleteOutlined',
danger: true,
event: function () {
removeBatchMethod(state.selectedRowKeys)
}
},
{
label: "强制更新缓存",
icon: 'ReloadOutlined',
event: function () {
removeBatchMethod(state.selectedRowKeys)
}
},
];
/// 行操作
const operate = [{
label: "查看",
event: function (record) {
state.visibleData = true, state.recordData = record
}
},
{
label: "修改",
event: function (record) {
state.visibleEdit = true, state.recordEdit = record
},
},
{
label: "删除",
isDel: true,
event: function (record) {
removeMethod(record)
}
},
];
const pagination = {
pageNum: 1,
pageSize: 20,
showSizeChanger: true, // 显示可改变每页条数
pageSizeOptions: ["10", "20", "50", "100"], // 每页条数选项设置
showTotal: total => `${total} 条记录`, // 显示总条数
showSizeChange: (current, pageSize) => (this.pageSize = pageSize) // 改变每页条数时更新显示
};
const state = reactive({
selectedRowKeys: [],
param: {
name: "",
code: ""
},
visibleEdit: false,
visibleSave: false,
visibleData: false,
recordData: {},
recordEdit: {},
});
const onSelectChange = selectedRowKeys => {
state.selectedRowKeys = selectedRowKeys;
};
const closeSave = function () {
state.visibleSave = false
tableRef.value.reload()
}
const closeEdit = function () {
state.visibleEdit = false
tableRef.value.reload()
}
return {
state,
fetch,
toolbar,
columns,
operate,
closeSave,
closeEdit,
pagination,
onSelectChange,
tableRef
};
},
};
</script>