Commit ca632d9f33276322c78787814abf2153ed85519e

Authored by fengtao
1 parent 860f43d1

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

@@ -117,7 +117,7 @@ @@ -117,7 +117,7 @@
117 117
118 function handleItem(record: Recordable) { 118 function handleItem(record: Recordable) {
119 openItemDrawer(true, { 119 openItemDrawer(true, {
120 - id: record.id, 120 + data: record,
121 }); 121 });
122 } 122 }
123 123
@@ -31,6 +31,16 @@ @@ -31,6 +31,16 @@
31 ]" 31 ]"
32 /> 32 />
33 </template> 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 </BasicTable> 44 </BasicTable>
35 <ItemDrawer @register="registerDrawer" @success="handleSuccess" /> 45 <ItemDrawer @register="registerDrawer" @success="handleSuccess" />
36 </div> 46 </div>
@@ -38,30 +48,40 @@ @@ -38,30 +48,40 @@
38 </div> 48 </div>
39 </template> 49 </template>
40 <script lang="ts"> 50 <script lang="ts">
41 - import { defineComponent } from 'vue';  
42 - 51 + import { defineComponent, ref } from 'vue';
43 import { BasicTable, useTable, TableAction } from '/@/components/Table'; 52 import { BasicTable, useTable, TableAction } from '/@/components/Table';
44 import { sysDictItemPage, deleteDictItem } from '/@/api/system/dict'; 53 import { sysDictItemPage, deleteDictItem } from '/@/api/system/dict';
45 - 54 + import { Switch } from 'ant-design-vue';
46 import { BasicDrawer, useDrawer, useDrawerInner } from '/@/components/Drawer'; 55 import { BasicDrawer, useDrawer, useDrawerInner } from '/@/components/Drawer';
47 import ItemDrawer from '/@/views/system/dict/item/ItemDrawer.vue'; 56 import ItemDrawer from '/@/views/system/dict/item/ItemDrawer.vue';
48 -  
49 import { columns, searchFormSchema } from './dict.item.data'; 57 import { columns, searchFormSchema } from './dict.item.data';
50 import { useMessage } from '/@/hooks/web/useMessage'; 58 import { useMessage } from '/@/hooks/web/useMessage';
51 import Authority from '/@/components/Authority/src/Authority.vue'; 59 import Authority from '/@/components/Authority/src/Authority.vue';
  60 + import { setDictItemStatus } from '/@/api/system/dict';
52 61
53 export default defineComponent({ 62 export default defineComponent({
54 name: 'ItemIndex', 63 name: 'ItemIndex',
55 - components: { BasicDrawer, BasicTable, ItemDrawer, TableAction, Authority }, 64 + components: { BasicDrawer, BasicTable, ItemDrawer, TableAction, Authority, Switch },
56 setup() { 65 setup() {
57 let dictId; 66 let dictId;
  67 + const disabled = ref(false);
58 const { createMessage } = useMessage(); 68 const { createMessage } = useMessage();
59 const [registerDrawer, { openDrawer }] = useDrawer(); 69 const [registerDrawer, { openDrawer }] = useDrawer();
60 const [register] = useDrawerInner((data) => { 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 reload(); 82 reload();
63 }); 83 });
64 - const [registerTable, { reload }] = useTable({ 84 + const [registerTable, { reload, setSelectedRowKeys, setProps }] = useTable({
65 title: '字典值列表', 85 title: '字典值列表',
66 api: sysDictItemPage, 86 api: sysDictItemPage,
67 columns, 87 columns,
@@ -117,7 +137,27 @@ @@ -117,7 +137,27 @@
117 function handleSuccess() { 137 function handleSuccess() {
118 reload(); 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 return { 161 return {
122 register, 162 register,
123 registerTable, 163 registerTable,
@@ -126,6 +166,8 @@ @@ -126,6 +166,8 @@
126 handleEdit, 166 handleEdit,
127 handleDelete, 167 handleDelete,
128 handleSuccess, 168 handleSuccess,
  169 + statusChange,
  170 + disabled,
129 }; 171 };
130 }, 172 },
131 }); 173 });
1 import { BasicColumn } from '/@/components/Table'; 1 import { BasicColumn } from '/@/components/Table';
2 import { FormSchema } from '/@/components/Table'; 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 export const columns: BasicColumn[] = [ 4 export const columns: BasicColumn[] = [
8 { 5 {
9 title: '文本值', 6 title: '文本值',
@@ -24,30 +21,7 @@ export const columns: BasicColumn[] = [ @@ -24,30 +21,7 @@ export const columns: BasicColumn[] = [
24 title: '状态', 21 title: '状态',
25 dataIndex: 'status', 22 dataIndex: 'status',
26 width: 100, 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 title: '排序', 27 title: '排序',