yuang-framework-ui-pc
Version:
yuang-framework-ui-pc Library
277 lines (276 loc) • 9.16 kB
JavaScript
"use strict";
const vue = require("vue");
const iconsVue = require("@element-plus/icons-vue");
const UserQuery = require("./user-query");
const icons = require("../../icons");
const httpConfig = require("yuang-framework-ui-common/lib/config/httpConfig");
const uimsUser = require("yuang-framework-ui-common/lib/hooks/uims/uimsUser");
const objectUtils = require("yuang-framework-ui-common/lib/utils/objectUtils");
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{ name: "UimsUserList" },
__name: "user-list",
props: {
param: {},
uimsOrganization: {},
selectionList: {}
},
emits: ["update:selectionList"],
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const queryRef = vue.ref(null);
const tableRef = vue.ref(null);
const columns = vue.ref([
{
type: "selection",
columnKey: "selection",
width: 50,
align: "center",
fixed: "left",
selectable: (row) => {
return !row.isUserExistsRole;
}
},
{
type: "index",
columnKey: "index",
label: "编号",
width: 70,
align: "center",
fixed: "left"
},
{
prop: "name",
label: "用户姓名",
sortable: "custom",
minWidth: 200,
align: "left",
slot: "name"
},
{
prop: "account",
label: "用户账号",
sortable: "custom",
minWidth: 130,
align: "left"
},
{
prop: "avatar",
label: "用户头像",
minWidth: 100,
align: "center",
slot: "avatar"
},
{
prop: "gender",
label: "用户性别",
sortable: "custom",
width: 110,
align: "center",
formatter: (row) => {
if (row.gender == "male") {
return "男性";
} else if (row.gender == "female") {
return "女性";
} else if (row.gender == "secret") {
return "保密";
}
return "";
}
},
{
prop: "status",
label: "用户状态",
width: 110,
align: "center",
sortable: "custom",
slot: "status"
},
{
prop: "uimsOrganizationUnit.name",
label: "所属单位",
width: 180,
align: "center"
},
{
prop: "uimsOrganizationDept.name",
label: "所属部门",
width: 120,
align: "center"
},
{
prop: "sequence",
label: "排序号",
sortable: "custom",
width: 100,
align: "center"
},
{
prop: "createUserName",
label: "创建人",
sortable: "custom",
width: 100,
align: "center"
},
{
prop: "createTime",
label: "创建时间",
sortable: "custom",
width: 180,
align: "center"
},
{
prop: "lastUpdateUserName",
label: "最后更新人",
sortable: "custom",
width: 120,
align: "center"
},
{
prop: "lastUpdateTime",
label: "最后更新时间",
sortable: "custom",
width: 180,
align: "center"
}
]);
const selections = vue.ref([]);
const tableList = vue.ref([]);
const { statusEnumList } = uimsUser.useStatusEnumList();
vue.onMounted(() => {
initSelectionList();
});
const initSelectionList = () => {
selections.value = objectUtils.deepClone(props.selectionList ?? []);
console.log("props.param", props.param);
console.log("selections.value", selections.value);
};
const datasource = async ({ queryParam, pageParam, orderParamList }) => {
var _a, _b;
const data = {
...queryParam,
...pageParam,
orderParamList,
queryForMode: "organization",
organizationIdForEqual: props.uimsOrganization.id,
// 查询用户存在的角色id
selectUserExistsRoleIdForEqual: ((_a = props.param) == null ? void 0 : _a.isDisableSelectUserOfExistsRole) && ((_b = props.param) == null ? void 0 : _b.selectUserExistsRoleId)
};
const res = await httpConfig.http.post(`/uims-api/admin/uims-user/selectPage`, data);
tableList.value = res.data.data.records;
return res.data.data;
};
const queryPage = () => {
var _a, _b, _c;
selections.value = [];
(_c = (_a = tableRef.value) == null ? void 0 : _a.reload) == null ? void 0 : _c.call(_a, { currentPage: 1, queryParam: (_b = queryRef.value) == null ? void 0 : _b.queryForm });
};
vue.watch(
() => props.uimsOrganization.id,
() => {
var _a, _b;
(_b = (_a = queryRef.value) == null ? void 0 : _a.resetFields) == null ? void 0 : _b.call(_a);
queryPage();
initSelectionList();
}
);
vue.watch(
() => selections.value,
(newSelections) => {
let tempSelections = objectUtils.deepClone(newSelections ?? []);
let updateSelectionList = objectUtils.deepClone(props.selectionList ?? []);
tempSelections.forEach((item) => {
const isRepeat = updateSelectionList.some((old) => old.id === item.id);
if (!isRepeat) {
updateSelectionList.push(item);
}
});
updateSelectionList = updateSelectionList.filter((item) => {
return tempSelections.some((newItem) => newItem.id === item.id) || !tableList.value.some((t) => t.id === item.id);
});
console.log("updateSelectionList", updateSelectionList);
emit("update:selectionList", updateSelectionList);
}
);
return (_ctx, _cache) => {
const _component_el_icon = vue.resolveComponent("el-icon");
const _component_el_tag = vue.resolveComponent("el-tag");
const _component_el_avatar = vue.resolveComponent("el-avatar");
const _component_ele_pro_table = vue.resolveComponent("ele-pro-table");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(UserQuery, {
ref_key: "queryRef",
ref: queryRef,
style: { "margin-bottom": "-14px" },
onQuery: queryPage
}, null, 512),
vue.createVNode(_component_ele_pro_table, {
ref_key: "tableRef",
ref: tableRef,
"row-key": "id",
border: "",
sticky: false,
columns: columns.value,
datasource,
"show-overflow-tooltip": true,
selections: selections.value,
"onUpdate:selections": _cache[0] || (_cache[0] = ($event) => selections.value = $event),
"highlight-current-row": true,
"header-cell-style": { "text-align": "center" },
"footer-style": { paddingBottom: "16px" }
}, {
name: vue.withCtx(({ row }) => [
vue.createVNode(_component_el_icon, {
size: 15,
style: { "margin-right": "8px", "vertical-align": "-2px" }
}, {
default: vue.withCtx(() => [
vue.createVNode(vue.unref(iconsVue.User))
]),
_: 1
}),
vue.createElementVNode("span", null, vue.toDisplayString(row.name), 1),
row.isSystemUser ? (vue.openBlock(), vue.createBlock(_component_el_tag, {
key: 0,
type: "warning",
"disable-transitions": true,
class: "yu-name-tag"
}, {
default: vue.withCtx(() => _cache[1] || (_cache[1] = [
vue.createTextVNode("系统用户")
])),
_: 1,
__: [1]
})) : vue.createCommentVNode("", true)
]),
avatar: vue.withCtx(({ row }) => [
vue.createVNode(_component_el_avatar, {
size: 28,
src: row.avatarUrl,
icon: row.avatarUrl ? void 0 : vue.unref(icons.UserOutlined),
style: vue.normalizeStyle(row.avatarUrl ? "transform: translateY(2px);" : "transform: translateY(2px);margin-bottom: 7px;")
}, null, 8, ["src", "icon", "style"])
]),
status: vue.withCtx(({ row }) => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(statusEnumList), (item, index) => {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
row.status == item.value ? (vue.openBlock(), vue.createBlock(_component_el_tag, {
type: item.tagType,
"disable-transitions": true,
key: index
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.name), 1)
]),
_: 2
}, 1032, ["type"])) : vue.createCommentVNode("", true)
], 64);
}), 256))
]),
_: 1
}, 8, ["columns", "selections"])
], 64);
};
}
});
module.exports = _sfc_main;