@utogether/udp-core 1.0.1-beta.6 → 1.0.1-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{403-Co4hnzlW.js → 403-BQZ5OAKL.js} +1 -1
- package/dist/{404-BsseeBQQ.js → 404-H55ex36i.js} +1 -1
- package/dist/{500-DtKz7MA4.js → 500-bbrspTnK.js} +1 -1
- package/dist/{AuthorityInfo-iWYEWOmC.js → AuthorityInfo-BWni4UPQ.js} +1 -1
- package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-7WtOL6Hs.js +100 -0
- package/dist/{Company-CK8Zkcv3.js → Company-CuebFrQ0.js} +3 -3
- package/dist/{CompanyPanel-DL4UrYYG.js → CompanyPanel-DxPdJs6x.js} +1 -1
- package/dist/{Department-BPHn8to4.js → Department-D2a6Juur.js} +3 -3
- package/dist/{DepartmentPanel-Bqraa_NB.js → DepartmentPanel-C_s2R9yl.js} +1 -1
- package/dist/{DesignPanel-CFOIOZme.js → DesignPanel-CexZj3HF.js} +1 -1
- package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-H0FNG35Z.js → DesignPanel.vue_vue_type_style_index_0_lang-DfmysqwB.js} +19 -19
- package/dist/{DictView-CaD1yHQS.js → DictView-C0GS72rG.js} +19 -18
- package/dist/{InvOrganization-CoO0_wsY.js → InvOrganization-a1tQ2CEH.js} +1 -1
- package/dist/{Org-BU3oaFx3.js → Org-DifvzLLy.js} +1 -1
- package/dist/{Preview-B-K_bxDG.js → Preview-BOv5j9i6.js} +1 -1
- package/dist/{ReportDefine-DElbukSL.js → ReportDefine-Dli1Q0TB.js} +1 -1
- package/dist/{ReportDesign-DvUHOKDK.js → ReportDesign-zSWkcL_O.js} +26 -26
- package/dist/{ReportQuery-BcSYRNT3.js → ReportQuery-D5r3bvFc.js} +1 -1
- package/dist/{ReportQueryFrom-BGEA4Pqk.js → ReportQueryFrom-DiostHrX.js} +1 -1
- package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-B-KEPnfY.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Cr2eKMmr.js} +1 -1
- package/dist/{ReportTemplate-DnPtEoxn.js → ReportTemplate-CYy4cZHQ.js} +1 -1
- package/dist/{Role-CMKkWZil.js → Role-BFQFxfQS.js} +6 -6
- package/dist/{RoleAssign-BToNzG9a.js → RoleAssign-BIdWSLTR.js} +3 -3
- package/dist/{RolePanel-BikZ-D2u.js → RolePanel-C7ybSknr.js} +1 -1
- package/dist/{RolePanel-BNqd7-M6.js → RolePanel-KC-UgmtF.js} +1 -1
- package/dist/RolePanel.vue_vue_type_script_setup_true_lang-C91CJO4e.js +132 -0
- package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Nngq860f.js → RolePanel.vue_vue_type_script_setup_true_lang-C_ZsMf1f.js} +44 -38
- package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-BDRDD2FX.js → ScrollPanel.vue_vue_type_style_index_0_lang-botBBgto.js} +1 -1
- package/dist/{Staff-DBFATgM_.js → Staff-CY0DLsTN.js} +3 -3
- package/dist/{StaffInfo-CrfwZcEL.js → StaffInfo-DA7p265h.js} +1 -1
- package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-CE3_NJF_.js → StaffInfo.vue_vue_type_script_setup_true_lang-f29A44gS.js} +1 -1
- package/dist/{StaffPanel-D54Rl_Bg.js → StaffPanel-DYP-mMp9.js} +1 -1
- package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-B8wtuSZD.js → StaffPanel.vue_vue_type_script_setup_true_lang-C0YAG2xV.js} +2 -2
- package/dist/{SysUser-CsuovBei.js → SysUser-FqS3Ctne.js} +2 -2
- package/dist/{SysUserPanel-DNUwWEVp.js → SysUserPanel-C_t6F99T.js} +1 -1
- package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-CY6mhBV0.js → SysUserPanel.vue_vue_type_script_setup_true_lang-CKZjy0OF.js} +96 -92
- package/dist/{SystemMenu-oLmwvaqT.js → SystemMenu-ChFrMzRg.js} +2 -2
- package/dist/{UserInfo-LyrDwBG1.js → UserInfo-I36LAXVj.js} +1 -1
- package/dist/{UserInfo.vue_vue_type_style_index_0_lang-vinrRyOG.js → UserInfo.vue_vue_type_style_index_0_lang-BGY-LYeL.js} +30 -28
- package/dist/{childView-DGKp87fT.js → childView-CYpuOzRx.js} +1 -1
- package/dist/{childView-SmYl4G6c.js → childView-Csnlaqfs.js} +1 -1
- package/dist/{childView.vue_vue_type_style_index_0_lang-DU-Uun5d.js → childView.vue_vue_type_style_index_0_lang-B8EnA03l.js} +1 -1
- package/dist/{childView.vue_vue_type_style_index_0_lang-wVoPvyRY.js → childView.vue_vue_type_style_index_0_lang-DNVlDM_a.js} +1 -1
- package/dist/{code-rule-CfbGjmOs.js → code-rule-DHBSC5Qp.js} +1 -1
- package/dist/core.es.js +1 -1
- package/dist/{cron-task-DMfwGfms.js → cron-task-CiI1MFla.js} +1 -1
- package/dist/{frameView-D-hu_pqQ.js → frameView-ZWKlbz9p.js} +1 -1
- package/dist/index-COBMRlmJ.js +5379 -0
- package/dist/{layoutView-D3SikBPr.js → layoutView-5OsbpP0u.js} +2 -2
- package/dist/{login-CQ1yBBdY.js → login-C55sa9gN.js} +2 -2
- package/dist/{lov-view-CSobDBH7.js → lov-view-DFfaUQ5m.js} +2 -2
- package/dist/{menuInfo-mFuM30f1.js → menuInfo-CZdLtLjN.js} +1 -1
- package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BsIPzYg0.js → menuInfo.vue_vue_type_style_index_0_lang-DgG0aHRy.js} +1 -1
- package/dist/{pda-app-CIGFsvrX.js → pda-app-fLe8mrx-.js} +201 -189
- package/dist/{resource-mbd4LPi-.js → resource-ohWKO6Fh.js} +1 -1
- package/dist/{su-welcome-DruLsVvu.js → su-welcome-_UZTfrXX.js} +1 -1
- package/dist/{sys-config-TXb5cJM4.js → sys-config-DVuBsK7p.js} +1 -1
- package/dist/udp-core.css +1 -1
- package/dist/{utogether-Cv0UXnEX.js → utogether-CxobZqGL.js} +1 -1
- package/package.json +1 -1
- package/src/components/udp/index.ts +2 -2
- package/src/components/udp/modal-grid.vue +288 -297
- package/src/components/udp/utils.ts +4 -11
- package/src/main.ts +10 -2
- package/src/plugins/i18n/zh.ts +7 -1
- package/src/plugins/vxe-table/index.ts +2 -2
- package/src/plugins/vxe-table/render.tsx +90 -15
- package/src/views/system/role/AuthorityInfo.vue +19 -15
- package/src/views/system/role/Role.vue +1 -5
- package/src/views/system/role/RolePanel.vue +11 -2
- package/src/views/system/role/UserInfo.vue +5 -3
- package/src/views/system/role-assign/RolePanel.vue +139 -136
- package/src/views/system/sysUser/SysUserPanel.vue +28 -32
- package/src/views/uapp/pda/pda-app.vue +36 -11
- package/src/views/udev/dict/DictView.vue +6 -1
- package/src/views/udev/dict/childView.vue +1 -6
- package/src/views/urpt/design/DesignPanel.vue +10 -33
- package/src/views/urpt/design/ReportDesign.vue +7 -11
- package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BWp7PKyH.js +0 -102
- package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DYP3u1Nv.js +0 -126
- package/dist/index-ADANSV-q.js +0 -4278
|
@@ -217,8 +217,7 @@ export const getExportConfig = attrs => {
|
|
|
217
217
|
types: ['xlsx', 'csv'],
|
|
218
218
|
modes: ['current', 'selected', 'all'],
|
|
219
219
|
useStyle: true,
|
|
220
|
-
sheetMethod: ({ worksheet }) =>
|
|
221
|
-
attrs.onSheetMethod ? attrs.onSheetMethod(worksheet) : onSheetMethod(worksheet),
|
|
220
|
+
sheetMethod: ({ worksheet }) => (attrs.onSheetMethod ? attrs.onSheetMethod(worksheet) : onSheetMethod(worksheet)),
|
|
222
221
|
columnFilterMethod: ({ column }) =>
|
|
223
222
|
attrs.columnFilter
|
|
224
223
|
? !!attrs.columnFilter(column)
|
|
@@ -259,19 +258,14 @@ export const getToolBarConfig = (data, props, attrs, hasAuthority) => {
|
|
|
259
258
|
toolButtons.reverse().forEach(btn => {
|
|
260
259
|
!buttons.some(s => s.code === btn.code) && buttons.unshift(btn);
|
|
261
260
|
if (attrs.authPrefix && !['print', 'export'].includes(btn.auth)) {
|
|
262
|
-
btn.auth =
|
|
263
|
-
attrs.authPrefix +
|
|
264
|
-
btn.auth.slice(0, 1).toLocaleUpperCase() +
|
|
265
|
-
btn.auth.slice(1).toLocaleLowerCase();
|
|
261
|
+
btn.auth = attrs.authPrefix + btn.auth.slice(0, 1).toLocaleUpperCase() + btn.auth.slice(1).toLocaleLowerCase();
|
|
266
262
|
}
|
|
267
263
|
});
|
|
268
264
|
|
|
269
265
|
buttons = formatButton(buttons, props.auth).filter(button => {
|
|
270
266
|
const flag = button.auth ? hasAuthority(button.auth) : true;
|
|
271
267
|
if (button.dropdowns?.length) {
|
|
272
|
-
button.dropdowns = button.dropdowns.filter(
|
|
273
|
-
btn => !btn.auth || (btn.auth && hasAuthority(btn.auth))
|
|
274
|
-
);
|
|
268
|
+
button.dropdowns = button.dropdowns.filter(btn => !btn.auth || (btn.auth && hasAuthority(btn.auth)));
|
|
275
269
|
}
|
|
276
270
|
return flag;
|
|
277
271
|
});
|
|
@@ -400,8 +394,7 @@ export const formatItems = (items, status, span = 24) => {
|
|
|
400
394
|
disabled = true;
|
|
401
395
|
item.placeholder = null;
|
|
402
396
|
} else {
|
|
403
|
-
disabled =
|
|
404
|
-
item.disabled === false ? item.disabled : item.disabled || item.itemRender?.props?.disabled;
|
|
397
|
+
disabled = item.disabled === false ? item.disabled : item.disabled || item.itemRender?.props?.disabled;
|
|
405
398
|
}
|
|
406
399
|
let itemRender = {
|
|
407
400
|
name: 'VxeInput',
|
package/src/main.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: levi7754 levi7754@163.com
|
|
3
|
+
* @Date: 2025-07-25 13:38:20
|
|
4
|
+
* @LastEditors: levi7754 levi7754@163.com
|
|
5
|
+
* @LastEditTime: 2025-08-11 16:55:33
|
|
6
|
+
* @FilePath: \udp-front\packages\udp-core\src\main.ts
|
|
7
|
+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
|
+
*/
|
|
1
9
|
/*
|
|
2
10
|
* @Author: wei.li
|
|
3
11
|
* @Date: 2022-10-18 18:13:54
|
|
@@ -41,7 +49,7 @@ import {
|
|
|
41
49
|
// UtForm2,
|
|
42
50
|
// UtGrid2,
|
|
43
51
|
// UtContent,
|
|
44
|
-
|
|
52
|
+
UtModalGrid2
|
|
45
53
|
// UtUpload2
|
|
46
54
|
// UtIconSelect,
|
|
47
55
|
// UtCalendar
|
|
@@ -92,7 +100,7 @@ const init = ({ router, config, lang, views, env, tableConfig }) => {
|
|
|
92
100
|
// app.component('UtModalForm2', UtModalForm2);
|
|
93
101
|
// app.component('UtGrid2', UtGrid2);
|
|
94
102
|
// app.component('UtForm2', UtForm2);
|
|
95
|
-
app.component('
|
|
103
|
+
app.component('UtModalGrid2', UtModalGrid2);
|
|
96
104
|
// .component('UtIconSelect', UtIconSelect)
|
|
97
105
|
// app.component('UtUpload2', UtUpload2);
|
|
98
106
|
// .component('UtCalendar', UtCalendar)
|
package/src/plugins/i18n/zh.ts
CHANGED
|
@@ -85,7 +85,13 @@ export default {
|
|
|
85
85
|
appVersion: '版本号',
|
|
86
86
|
buildNo: '构建号',
|
|
87
87
|
versionInfo: '版本信息',
|
|
88
|
-
|
|
88
|
+
isForceUpdate: '安装方式',
|
|
89
|
+
downloadUrl: 'APK文件',
|
|
90
|
+
forceUpdate: '强制更新',
|
|
91
|
+
freeUpdate: '自主更新',
|
|
92
|
+
|
|
93
|
+
roleList: '角色列表',
|
|
94
|
+
userList: '用户列表'
|
|
89
95
|
},
|
|
90
96
|
btn: {
|
|
91
97
|
passwordReset: '密码重置',
|
|
@@ -10,8 +10,8 @@ import 'xe-utils';
|
|
|
10
10
|
import { merge } from 'xe-utils';
|
|
11
11
|
import { geti18n, transformI18n } from '../i18n/index';
|
|
12
12
|
// import { storageLocal } from '@utogether/utils';
|
|
13
|
-
import { VxetableRender } from '@utogether/utils';
|
|
14
|
-
|
|
13
|
+
// import { VxetableRender } from '@utogether/utils';
|
|
14
|
+
import { VxetableRender } from './render';
|
|
15
15
|
import { getServiceApi } from '../../api';
|
|
16
16
|
|
|
17
17
|
import VXETable, { VxeUI } from 'vxe-table';
|
|
@@ -409,6 +409,84 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
|
|
|
409
409
|
];
|
|
410
410
|
}
|
|
411
411
|
});
|
|
412
|
+
// 下拉选择
|
|
413
|
+
VXETable.renderer.add('#textarea', {
|
|
414
|
+
renderTableEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {
|
|
415
|
+
const { row, column } = params;
|
|
416
|
+
const { props, events } = renderOpts;
|
|
417
|
+
const { mapField } = props;
|
|
418
|
+
|
|
419
|
+
const componentHook = useComponent();
|
|
420
|
+
function onChange(val) {
|
|
421
|
+
componentHook.change(val, row, column.field, renderOpts, { column, datasource: 'row' });
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
function onClear() {
|
|
425
|
+
componentHook.clear(row, column.field, mapField, events, 'row');
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return [
|
|
429
|
+
<vxe-textarea
|
|
430
|
+
v-model={row[column.field]}
|
|
431
|
+
{...props}
|
|
432
|
+
style="width: 100%"
|
|
433
|
+
onChange={v => onChange(v)}
|
|
434
|
+
onClear={() => onClear()}
|
|
435
|
+
/>
|
|
436
|
+
];
|
|
437
|
+
},
|
|
438
|
+
renderTableDefault(renderOpts: VxeColumnPropTypes.EditRender, params) {
|
|
439
|
+
const { row, column } = params;
|
|
440
|
+
const { props, events } = renderOpts;
|
|
441
|
+
const { mapField } = props;
|
|
442
|
+
|
|
443
|
+
const componentHook = useComponent();
|
|
444
|
+
|
|
445
|
+
function onChange(val) {
|
|
446
|
+
componentHook.change(val, row, column.field, renderOpts, { column, datasource: 'row' });
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
function onClear() {
|
|
450
|
+
componentHook.clear(row, column.field, mapField, events, 'row');
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return [
|
|
454
|
+
<vxe-textarea v-model={row[column.field]} {...props} onChange={v => onChange(v)} onClear={() => onClear()} />
|
|
455
|
+
];
|
|
456
|
+
},
|
|
457
|
+
// 可编辑显示模板
|
|
458
|
+
renderTableCell(renderOpts, params) {
|
|
459
|
+
const { row, column } = params;
|
|
460
|
+
return row[column.field];
|
|
461
|
+
},
|
|
462
|
+
renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {
|
|
463
|
+
const { data, field } = params;
|
|
464
|
+
const { props, events } = renderOpts;
|
|
465
|
+
const componentHook = useComponent();
|
|
466
|
+
|
|
467
|
+
// 默认值
|
|
468
|
+
const { defaultValue, mapField } = props;
|
|
469
|
+
if (defaultValue) {
|
|
470
|
+
data[field] = defaultValue;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* @description: 选中值发生变化时触发
|
|
474
|
+
* @param {*} val 目前的选中值
|
|
475
|
+
*/
|
|
476
|
+
function onChange(val) {
|
|
477
|
+
componentHook.change(val, data, field, renderOpts, { datasource: 'data' });
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* @description: 可清空的单选模式下用户点击清空按钮时触发
|
|
482
|
+
*/
|
|
483
|
+
function onClear() {
|
|
484
|
+
componentHook.clear(data, field, mapField, events, 'data');
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
return [<vxe-textarea v-model={data[field]} {...props} onChange={v => onChange(v)} onClear={() => onClear()} />];
|
|
488
|
+
}
|
|
489
|
+
});
|
|
412
490
|
// Lov
|
|
413
491
|
VXETable.renderer.add('#lov', {
|
|
414
492
|
renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {
|
|
@@ -457,13 +535,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
|
|
|
457
535
|
}
|
|
458
536
|
|
|
459
537
|
return [
|
|
460
|
-
<ut-lov
|
|
461
|
-
record={data}
|
|
462
|
-
{...props}
|
|
463
|
-
mode="vxe"
|
|
464
|
-
onChange={(v, f) => onChange(v, f)}
|
|
465
|
-
onClear={() => onClear()}
|
|
466
|
-
/>
|
|
538
|
+
<ut-lov record={data} {...props} mode="vxe" onChange={(v, f) => onChange(v, f)} onClear={() => onClear()} />
|
|
467
539
|
];
|
|
468
540
|
},
|
|
469
541
|
// 单元格编辑
|
|
@@ -529,13 +601,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
|
|
|
529
601
|
}
|
|
530
602
|
|
|
531
603
|
return [
|
|
532
|
-
<ut-lov
|
|
533
|
-
record={row}
|
|
534
|
-
mode="ele"
|
|
535
|
-
{...props}
|
|
536
|
-
onChange={(v, f) => onChange(v, f)}
|
|
537
|
-
onClear={() => onClear()}
|
|
538
|
-
/>
|
|
604
|
+
<ut-lov record={row} mode="ele" {...props} onChange={(v, f) => onChange(v, f)} onClear={() => onClear()} />
|
|
539
605
|
];
|
|
540
606
|
},
|
|
541
607
|
// 可编辑显示模板
|
|
@@ -776,7 +842,16 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
|
|
|
776
842
|
}
|
|
777
843
|
events?.clear && events.clear({ [datasource]: data, field });
|
|
778
844
|
};
|
|
779
|
-
|
|
845
|
+
const change = (data, field, mapField, events, datasource) => {
|
|
846
|
+
data[field] = null;
|
|
847
|
+
if (!isEmpty(mapField)) {
|
|
848
|
+
for (const key in mapField) {
|
|
849
|
+
data[key] = null;
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
events?.change && events.change({ [datasource]: data, field });
|
|
853
|
+
};
|
|
854
|
+
return { clear, change, remote, selectChange, setDefaultValue };
|
|
780
855
|
};
|
|
781
856
|
|
|
782
857
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: wei.li
|
|
3
3
|
* @Date: 2021-11-22 19:50:48
|
|
4
4
|
* @LastEditors: levi7754 levi7754@163.com
|
|
5
|
-
* @LastEditTime: 2025-
|
|
5
|
+
* @LastEditTime: 2025-08-12 09:02:46
|
|
6
6
|
* @Description: file content
|
|
7
7
|
-->
|
|
8
8
|
|
|
@@ -14,32 +14,29 @@
|
|
|
14
14
|
:before-close="handleClose"
|
|
15
15
|
direction="rtl"
|
|
16
16
|
destroy-on-close
|
|
17
|
+
body-class="ut-draw-body"
|
|
17
18
|
size="40%"
|
|
18
19
|
>
|
|
19
|
-
<div
|
|
20
|
-
|
|
21
|
-
element-loading-text="Loading..."
|
|
22
|
-
style="position: relative; height: 80vh"
|
|
23
|
-
>
|
|
24
|
-
<div style="height: 85%; overflow: auto">
|
|
20
|
+
<div v-spinning="loading" style="position: relative; height: 100%">
|
|
21
|
+
<div>
|
|
25
22
|
<el-tree-v2
|
|
26
23
|
ref="xTree"
|
|
27
24
|
:data="data.dataList"
|
|
28
25
|
:props="{ children: 'children', label: 'menuName' }"
|
|
29
26
|
:default-checked-keys="data.defaultCheckedKeys"
|
|
30
|
-
:height="
|
|
27
|
+
:height="height"
|
|
31
28
|
show-checkbox
|
|
32
29
|
node-key="id"
|
|
33
30
|
/>
|
|
34
31
|
</div>
|
|
35
|
-
<div style="position: absolute; width: 100%; height: 15%">
|
|
36
|
-
<el-divider style="margin: 16px 0" />
|
|
37
|
-
<el-row type="flex" justify="end" style="padding-right: 20px">
|
|
38
|
-
<ut-button content="cancel" icon="ri-close-fill" status="warning" @tap="handleClose" />
|
|
39
|
-
<ut-button content="confirm" icon="ri-save-3-fill" status="u-cyan" @tap="onSubmit" />
|
|
40
|
-
</el-row>
|
|
41
|
-
</div>
|
|
42
32
|
</div>
|
|
33
|
+
<template #footer>
|
|
34
|
+
<el-divider style="margin: 16px 0" />
|
|
35
|
+
<el-row type="flex" justify="end" style="padding-right: 20px">
|
|
36
|
+
<ut-button content="cancel" icon="ri-close-fill" status="warning" @tap="handleClose" />
|
|
37
|
+
<ut-button content="confirm" icon="ri-save-3-fill" status="u-cyan" @tap="onSubmit" />
|
|
38
|
+
</el-row>
|
|
39
|
+
</template>
|
|
43
40
|
</el-drawer>
|
|
44
41
|
</div>
|
|
45
42
|
</template>
|
|
@@ -72,9 +69,12 @@ const data = reactive({
|
|
|
72
69
|
defaultCheckedKeys: [] // 默认权限
|
|
73
70
|
});
|
|
74
71
|
|
|
72
|
+
const height = window.innerHeight - 180;
|
|
73
|
+
|
|
75
74
|
const emit = defineEmits<{
|
|
76
75
|
(e: 'onClose'): void;
|
|
77
76
|
}>();
|
|
77
|
+
|
|
78
78
|
// 菜单列表
|
|
79
79
|
const getDataList = async () => {
|
|
80
80
|
const res = (await getServiceApi().get('/uums/menu/listMenuTree', {})) as [IRecord];
|
|
@@ -126,4 +126,8 @@ onBeforeMount(() => {
|
|
|
126
126
|
.el-drawer__header {
|
|
127
127
|
margin-bottom: 12px;
|
|
128
128
|
}
|
|
129
|
+
|
|
130
|
+
.ut-draw-body {
|
|
131
|
+
padding: 0 12px;
|
|
132
|
+
}
|
|
129
133
|
</style>
|
|
@@ -8,11 +8,7 @@
|
|
|
8
8
|
<template>
|
|
9
9
|
<div class="u-content-panel">
|
|
10
10
|
<div class="u-left-panel">
|
|
11
|
-
<ScrollPane
|
|
12
|
-
:title="$t('company')"
|
|
13
|
-
url="/uums/unit"
|
|
14
|
-
:tree-otions="{ children: 'children', label: 'unitName' }"
|
|
15
|
-
/>
|
|
11
|
+
<ScrollPane :title="$t('company')" url="/uums/unit" :tree-otions="{ children: 'children', label: 'unitName' }" />
|
|
16
12
|
</div>
|
|
17
13
|
<div class="content">
|
|
18
14
|
<role-panel />
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
ref="xgrid"
|
|
12
12
|
:items="formItems"
|
|
13
13
|
:columns="columns"
|
|
14
|
+
:check-method="checkMethod"
|
|
14
15
|
url="/uums/role"
|
|
15
16
|
mode="form"
|
|
16
17
|
@buttonClick="onButtonClick"
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
:url="url"
|
|
40
41
|
:method="method"
|
|
41
42
|
width="400"
|
|
42
|
-
height="
|
|
43
|
+
height="240"
|
|
43
44
|
data-status="update"
|
|
44
45
|
:title="$t('message.title.authEdit')"
|
|
45
46
|
@close="data.showModalView = false"
|
|
@@ -105,7 +106,7 @@ const columns = [
|
|
|
105
106
|
// <ut-button content="edit" onTap={() => handleShowChild(row, 'update')} />
|
|
106
107
|
return [
|
|
107
108
|
<>
|
|
108
|
-
<ut-button content="edit" auth="edit" onTap={() => handleEdit(row)} />
|
|
109
|
+
<ut-button content="edit" auth="edit" disabled={row.roleCode === 'admin'} onTap={() => handleEdit(row)} />
|
|
109
110
|
<ut-button
|
|
110
111
|
content="dispatchUser"
|
|
111
112
|
status="warning"
|
|
@@ -174,6 +175,10 @@ const handleDispathUser = record => {
|
|
|
174
175
|
};
|
|
175
176
|
// 启用/禁用
|
|
176
177
|
async function handleClick({ row }) {
|
|
178
|
+
if (row.roleCode === 'admin') {
|
|
179
|
+
row.enabled = '1';
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
177
182
|
await getServiceApi().put('/uums/role/singleUpdate', row);
|
|
178
183
|
xgrid.value.refreshData();
|
|
179
184
|
}
|
|
@@ -183,6 +188,10 @@ const onClose = () => {
|
|
|
183
188
|
data.showAuthView = false;
|
|
184
189
|
data.showUserView = false;
|
|
185
190
|
};
|
|
191
|
+
|
|
192
|
+
const checkMethod = row => {
|
|
193
|
+
return row.roleCode !== 'admin';
|
|
194
|
+
};
|
|
186
195
|
// 拷贝当前列表项的数据(字典类型)
|
|
187
196
|
// const { clipboardRef } = useCopyToClipboard();
|
|
188
197
|
// const cellDBLClickEvent: VxeTableEvents.CellDblclick = ({ row }) => {
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
:columns="modalColum"
|
|
18
18
|
:show-footer="true"
|
|
19
19
|
:editable="false"
|
|
20
|
+
:title="$t('message.udp.userList')"
|
|
20
21
|
width="60%"
|
|
22
|
+
height="75%"
|
|
21
23
|
@close="showModalView = false"
|
|
22
24
|
@confirm="onConfirm"
|
|
23
25
|
/>
|
|
@@ -114,8 +116,8 @@ const buttons = [
|
|
|
114
116
|
{ code: 'delete', name: 'message.btn.del', status: 'danger', icon: 'ri-delete-bin-5-fill' }
|
|
115
117
|
];
|
|
116
118
|
const modalFormItems = [
|
|
117
|
-
{ field: 'userName', title: 'message.userCode' },
|
|
118
|
-
{ field: 'name', title: 'message.userName' }
|
|
119
|
+
{ field: 'userName', title: 'message.userCode', span: 9 },
|
|
120
|
+
{ field: 'name', title: 'message.userName', span: 9 }
|
|
119
121
|
];
|
|
120
122
|
const modalColum = [
|
|
121
123
|
{ type: 'checkbox', width: 40 },
|
|
@@ -125,7 +127,7 @@ const modalColum = [
|
|
|
125
127
|
];
|
|
126
128
|
const xgrid = ref({} as VxeGridInstance);
|
|
127
129
|
const gridOptions = reactive<VxeGridProps>({
|
|
128
|
-
height:
|
|
130
|
+
height: 'auto',
|
|
129
131
|
border: true,
|
|
130
132
|
pagerConfig: {},
|
|
131
133
|
toolbarConfig: { buttons, perfect: true },
|