Commit ca632d9f33276322c78787814abf2153ed85519e

Authored by fengtao
1 parent 860f43d1

pref:字典管理部分字典名称 状态不可点击

... ... @@ -117,7 +117,7 @@
117 117
118 118 function handleItem(record: Recordable) {
119 119 openItemDrawer(true, {
120   - id: record.id,
  120 + data: record,
121 121 });
122 122 }
123 123
... ...
... ... @@ -31,6 +31,16 @@
31 31 ]"
32 32 />
33 33 </template>
  34 + <template #status="{ record }">
  35 + <Switch
  36 + :disabled="disabled"
  37 + :checked="record.status === 1"
  38 + :loading="record.pendingStatus"
  39 + checkedChildren="启用"
  40 + unCheckedChildren="禁用"
  41 + @change="(checked:boolean)=>statusChange(checked,record)"
  42 + />
  43 + </template>
34 44 </BasicTable>
35 45 <ItemDrawer @register="registerDrawer" @success="handleSuccess" />
36 46 </div>
... ... @@ -38,30 +48,40 @@
38 48 </div>
39 49 </template>
40 50 <script lang="ts">
41   - import { defineComponent } from 'vue';
42   -
  51 + import { defineComponent, ref } from 'vue';
43 52 import { BasicTable, useTable, TableAction } from '/@/components/Table';
44 53 import { sysDictItemPage, deleteDictItem } from '/@/api/system/dict';
45   -
  54 + import { Switch } from 'ant-design-vue';
46 55 import { BasicDrawer, useDrawer, useDrawerInner } from '/@/components/Drawer';
47 56 import ItemDrawer from '/@/views/system/dict/item/ItemDrawer.vue';
48   -
49 57 import { columns, searchFormSchema } from './dict.item.data';
50 58 import { useMessage } from '/@/hooks/web/useMessage';
51 59 import Authority from '/@/components/Authority/src/Authority.vue';
  60 + import { setDictItemStatus } from '/@/api/system/dict';
52 61
53 62 export default defineComponent({
54 63 name: 'ItemIndex',
55   - components: { BasicDrawer, BasicTable, ItemDrawer, TableAction, Authority },
  64 + components: { BasicDrawer, BasicTable, ItemDrawer, TableAction, Authority, Switch },
56 65 setup() {
57 66 let dictId;
  67 + const disabled = ref(false);
58 68 const { createMessage } = useMessage();
59 69 const [registerDrawer, { openDrawer }] = useDrawer();
60 70 const [register] = useDrawerInner((data) => {
61   - dictId = data.id;
  71 + dictId = data.data.id;
  72 + if (
  73 + data.data.dictCode === 'enabled_platform_admin_auth' ||
  74 + data.data.dictCode === 'disabled_tenant_auth' ||
  75 + data.data.dictCode === 'enabled_sysadmin_auth'
  76 + ) {
  77 + disabled.value = true;
  78 + } else {
  79 + disabled.value = false;
  80 + }
  81 +
62 82 reload();
63 83 });
64   - const [registerTable, { reload }] = useTable({
  84 + const [registerTable, { reload, setSelectedRowKeys, setProps }] = useTable({
65 85 title: '字典值列表',
66 86 api: sysDictItemPage,
67 87 columns,
... ... @@ -117,7 +137,27 @@
117 137 function handleSuccess() {
118 138 reload();
119 139 }
120   -
  140 + const statusChange = async (checked, record) => {
  141 + setProps({
  142 + loading: true,
  143 + });
  144 + setSelectedRowKeys([]);
  145 + const newStatus = checked ? 1 : 0;
  146 + const { createMessage } = useMessage();
  147 + try {
  148 + await setDictItemStatus(record.id, newStatus);
  149 + if (newStatus) {
  150 + createMessage.success(`启用成功`);
  151 + } else {
  152 + createMessage.success('禁用成功');
  153 + }
  154 + } finally {
  155 + setProps({
  156 + loading: false,
  157 + });
  158 + reload();
  159 + }
  160 + };
121 161 return {
122 162 register,
123 163 registerTable,
... ... @@ -126,6 +166,8 @@
126 166 handleEdit,
127 167 handleDelete,
128 168 handleSuccess,
  169 + statusChange,
  170 + disabled,
129 171 };
130 172 },
131 173 });
... ...
1 1 import { BasicColumn } from '/@/components/Table';
2 2 import { FormSchema } from '/@/components/Table';
3   -import { h } from 'vue';
4   -import { Switch } from 'ant-design-vue';
5   -import { setDictItemStatus } from '/@/api/system/dict';
6   -import { useMessage } from '/@/hooks/web/useMessage';
  3 +
7 4 export const columns: BasicColumn[] = [
8 5 {
9 6 title: '文本值',
... ... @@ -24,30 +21,7 @@ export const columns: BasicColumn[] = [
24 21 title: '状态',
25 22 dataIndex: 'status',
26 23 width: 100,
27   - customRender: ({ record }) => {
28   - if (!Reflect.has(record, 'pendingStatus')) {
29   - record.pendingStatus = false;
30   - }
31   - return h(Switch, {
32   - checked: record.status === 1,
33   - checkedChildren: '已启用',
34   - unCheckedChildren: '已禁用',
35   - loading: record.pendingStatus,
36   - onChange(checked: boolean) {
37   - record.pendingStatus = true;
38   - const newStatus = checked ? 1 : 0;
39   - const { createMessage } = useMessage();
40   - setDictItemStatus(record.id, newStatus)
41   - .then(() => {
42   - record.status = newStatus;
43   - createMessage.success(`修改成功`);
44   - })
45   - .finally(() => {
46   - record.pendingStatus = false;
47   - });
48   - },
49   - });
50   - },
  24 + slots: { customRender: 'status' },
51 25 },
52 26 {
53 27 title: '排序',
... ...