隐患详情重新设计,检查计划重新设计成做题排查式

This commit is contained in:
王利强
2026-06-21 16:30:12 +08:00
parent 1fe87ec438
commit cc94d3e3e9
256 changed files with 12542 additions and 5956 deletions

View File

@@ -39,10 +39,10 @@ const _sfc_main = {
const userInfoStr = common_vendor.index.getStorageSync("userInfo");
if (userInfoStr) {
userInfo.value = JSON.parse(userInfoStr);
common_vendor.index.__f__("log", "at pages/membermanagemen/membermanagemen.vue:147", "用户信息:", userInfo.value);
common_vendor.index.__f__("log", "at pages/membermanagemen/membermanagemen.vue:166", "用户信息:", userInfo.value);
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:150", "获取用户信息失败:", error);
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:169", "获取用户信息失败:", error);
}
};
const list = common_vendor.ref([]);
@@ -51,43 +51,103 @@ const _sfc_main = {
const res = await request_api.getMemberList();
if (res.code === 0 && res.data) {
list.value = res.data;
common_vendor.index.__f__("log", "at pages/membermanagemen/membermanagemen.vue:163", "成员列表:", res.data);
common_vendor.index.__f__("log", "at pages/membermanagemen/membermanagemen.vue:182", "成员列表:", res.data);
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:166", "获取成员列表失败:", error);
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:185", "获取成员列表失败:", error);
}
};
const showPopup = common_vendor.ref(false);
const showRolePicker = common_vendor.ref(false);
const showPostPicker = common_vendor.ref(false);
const selectedRoleName = common_vendor.ref("");
const selectedPostName = common_vendor.ref("");
const formData = common_vendor.reactive({
username: "",
nickname: "",
phone: "",
password: "",
roleType: ""
roleType: "",
postId: ""
});
const roleColumns = common_vendor.reactive([
["管理员", "普通成员"]
]);
const roleMap = {
"管理员": "manage",
"普通成员": "common"
const roleOptions = common_vendor.ref([]);
const roleColumns = common_vendor.ref([[]]);
const postOptions = common_vendor.ref([]);
const postColumns = common_vendor.ref([[]]);
const postPlaceholder = common_vendor.computed(() => {
if (!userInfo.value.deptId)
return "请先登录并确认部门信息";
return postOptions.value.length ? "请选择岗位" : "暂无可用岗位";
});
const openAddMemberPopup = async () => {
getUserInfo();
const deptId = userInfo.value.deptId;
if (!deptId) {
common_vendor.index.showToast({ title: "缺少部门信息,无法添加成员", icon: "none" });
return;
}
try {
common_vendor.index.showLoading({ title: "加载中..." });
const [optionsRes, postRes] = await Promise.all([
request_api.getSystemUserFormOptions(),
request_api.listPostByDeptId(deptId)
]);
common_vendor.index.hideLoading();
if (optionsRes.code !== 0 || !Array.isArray(optionsRes.roles) || !optionsRes.roles.length) {
common_vendor.index.showToast({ title: optionsRes.msg || "获取角色列表失败", icon: "none" });
return;
}
roleOptions.value = optionsRes.roles.filter((item) => item.status === "0");
roleColumns.value = [roleOptions.value.map((item) => item.roleName)];
const posts = postRes.data || postRes.rows || [];
postOptions.value = posts.filter((item) => item.status === "0");
postColumns.value = [postOptions.value.map((item) => item.postName)];
showPopup.value = true;
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:251", "获取表单选项失败:", error);
common_vendor.index.showToast({
title: (error == null ? void 0 : error.msg) || "获取表单选项失败",
icon: "none"
});
}
};
const openPostPicker = () => {
if (!postOptions.value.length) {
common_vendor.index.showToast({ title: "当前部门暂无可用岗位", icon: "none" });
return;
}
showPostPicker.value = true;
};
const onRoleConfirm = (e) => {
if (e.value && e.value.length > 0) {
selectedRoleName.value = e.value[0];
formData.roleType = roleMap[e.value[0]];
const roleName = e.value[0];
const role = roleOptions.value.find((item) => item.roleName === roleName);
selectedRoleName.value = roleName;
formData.roleType = (role == null ? void 0 : role.roleKey) || "";
}
showRolePicker.value = false;
};
const onPostConfirm = (e) => {
if (e.value && e.value.length > 0) {
const postName = e.value[0];
const post = postOptions.value.find((item) => item.postName === postName);
selectedPostName.value = postName;
formData.postId = (post == null ? void 0 : post.postId) ?? "";
}
showPostPicker.value = false;
};
const resetForm = () => {
formData.username = "";
formData.nickname = "";
formData.phone = "";
formData.password = "";
formData.roleType = "";
formData.postId = "";
selectedRoleName.value = "";
selectedPostName.value = "";
postOptions.value = [];
postColumns.value = [[]];
};
const handleSubmit = async () => {
if (!formData.username) {
@@ -102,13 +162,23 @@ const _sfc_main = {
common_vendor.index.showToast({ title: "请选择角色类型", icon: "none" });
return;
}
getUserInfo();
const deptId = userInfo.value.deptId;
if (!deptId) {
common_vendor.index.showToast({ title: "缺少部门信息,无法添加成员", icon: "none" });
return;
}
const params = {
userName: formData.username,
nickName: formData.nickname || "",
phonenumber: formData.phone || "",
password: formData.password,
roleType: formData.roleType
roleType: formData.roleType,
deptId
};
if (formData.postId) {
params.postId = formData.postId;
}
try {
const res = await request_api.addMember(params);
if (res.code === 0) {
@@ -120,7 +190,7 @@ const _sfc_main = {
common_vendor.index.showToast({ title: res.msg || "添加失败", icon: "none" });
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:249", "添加成员失败:", error);
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:349", "添加成员失败:", error);
common_vendor.index.showToast({ title: "请求失败", icon: "none" });
}
};
@@ -147,7 +217,7 @@ const _sfc_main = {
common_vendor.index.showToast({ title: result.msg || `${actionText}失败`, icon: "none" });
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:280", `${actionText}成员失败:`, error);
common_vendor.index.__f__("error", "at pages/membermanagemen/membermanagemen.vue:380", `${actionText}成员失败:`, error);
common_vendor.index.showToast({ title: "请求失败", icon: "none" });
}
}
@@ -174,7 +244,7 @@ const _sfc_main = {
h: index < list.value.length - 1 ? 1 : ""
};
}),
d: common_vendor.o(($event) => showPopup.value = true),
d: common_vendor.o(openAddMemberPopup),
e: common_vendor.o(($event) => showPopup.value = false),
f: common_vendor.o(($event) => formData.username = $event),
g: common_vendor.p({
@@ -205,23 +275,33 @@ const _sfc_main = {
n: common_vendor.t(selectedRoleName.value || "请选择角色类型"),
o: common_vendor.n(selectedRoleName.value ? "" : "text-gray"),
p: common_vendor.o(($event) => showRolePicker.value = true),
q: common_vendor.o(($event) => showPopup.value = false),
r: common_vendor.o(handleSubmit),
s: common_vendor.o(($event) => showPopup.value = false),
t: common_vendor.p({
q: common_vendor.t(selectedPostName.value || postPlaceholder.value),
r: common_vendor.n(selectedPostName.value ? "" : "text-gray"),
s: common_vendor.o(openPostPicker),
t: common_vendor.o(($event) => showPopup.value = false),
v: common_vendor.o(handleSubmit),
w: common_vendor.o(($event) => showPopup.value = false),
x: common_vendor.p({
show: showPopup.value,
mode: "center",
round: "20",
safeAreaInsetBottom: false
}),
v: common_vendor.o(onRoleConfirm),
w: common_vendor.o(($event) => showRolePicker.value = false),
x: common_vendor.o(($event) => showRolePicker.value = false),
y: common_vendor.p({
show: showRolePicker.value,
columns: roleColumns
y: common_vendor.o(onPostConfirm),
z: common_vendor.o(($event) => showPostPicker.value = false),
A: common_vendor.o(($event) => showPostPicker.value = false),
B: common_vendor.p({
show: showPostPicker.value,
columns: postColumns.value
}),
z: common_vendor.gei(_ctx, "")
C: common_vendor.o(onRoleConfirm),
D: common_vendor.o(($event) => showRolePicker.value = false),
E: common_vendor.o(($event) => showRolePicker.value = false),
F: common_vendor.p({
show: showRolePicker.value,
columns: roleColumns.value
}),
G: common_vendor.gei(_ctx, "")
};
};
}

View File

@@ -1 +1 @@
<view class="{{['page', 'padding', 'data-v-06d9f81b', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{z}}"><view class="member-card bg-white radius data-v-06d9f81b"><view class="card-header data-v-06d9f81b"><view class="flex align-center data-v-06d9f81b"><view class="border-line data-v-06d9f81b"></view><view class="text-bold margin-left-sm data-v-06d9f81b">{{a}}</view></view><view class="role-tag data-v-06d9f81b">{{b}}</view></view><view class="member-list data-v-06d9f81b"><view wx:for="{{c}}" wx:for-item="item" wx:key="g" class="{{['member-item', 'data-v-06d9f81b', item.h && 'border-bottom']}}"><view class="cu-avatar radius lg bg-gray data-v-06d9f81b" style="background-image:url(https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png)"></view><view class="member-info data-v-06d9f81b"><view class="flex align-center data-v-06d9f81b"><text class="member-name data-v-06d9f81b">{{item.a}}</text><view class="{{['status-tag', 'data-v-06d9f81b', item.c]}}">{{item.b}}</view></view><view class="member-phone text-gray data-v-06d9f81b"><text class="data-v-06d9f81b">手机:{{item.d}}</text></view></view><button class="btn-lock bg-blue data-v-06d9f81b" bindtap="{{item.f}}">{{item.e}}</button></view></view><view class="add-btn-wrapper data-v-06d9f81b"><button class="add-btn data-v-06d9f81b" bindtap="{{d}}"><text class="cuIcon-add data-v-06d9f81b"></text><text class="data-v-06d9f81b">添加成员</text></button></view></view><u-popup wx:if="{{t}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-s="{{['d']}}" bindclose="{{s}}" u-i="06d9f81b-0" bind:__l="__l" u-p="{{t}}"><view class="popup-content data-v-06d9f81b"><view class="popup-header data-v-06d9f81b"><view class="popup-title text-bold data-v-06d9f81b">添加成员</view><view class="popup-close data-v-06d9f81b" bindtap="{{e}}">×</view></view><scroll-view class="popup-body data-v-06d9f81b" scroll-y><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">用户名<text class="text-red data-v-06d9f81b">*</text></view><up-input wx:if="{{g}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-1,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{f}}" u-p="{{g}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">昵称</view><up-input wx:if="{{i}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-2,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{h}}" u-p="{{i}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">手机号</view><up-input wx:if="{{k}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-3,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{j}}" u-p="{{k}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">密码<text class="text-red data-v-06d9f81b">*</text></view><up-input wx:if="{{m}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-4,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{l}}" u-p="{{m}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">角色类型<text class="text-red data-v-06d9f81b">*</text></view><view class="form-select data-v-06d9f81b" bindtap="{{p}}"><text class="{{['data-v-06d9f81b', o]}}">{{n}}</text><text class="cuIcon-unfold data-v-06d9f81b"></text></view></view><view class="data-v-06d9f81b" style="height:40rpx"></view></scroll-view><view class="popup-footer data-v-06d9f81b"><button class="btn-cancel data-v-06d9f81b" bindtap="{{q}}">取消</button><button class="btn-confirm bg-blue data-v-06d9f81b" bindtap="{{r}}">确定</button></view></view></u-popup><up-picker wx:if="{{y}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" bindconfirm="{{v}}" bindcancel="{{w}}" bindclose="{{x}}" u-i="06d9f81b-5" bind:__l="__l" u-p="{{y}}"></up-picker><tab-bar class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-6" bind:__l="__l"/></view>
<view class="{{['page', 'padding', 'data-v-06d9f81b', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{G}}"><view class="member-card bg-white radius data-v-06d9f81b"><view class="card-header data-v-06d9f81b"><view class="flex align-center data-v-06d9f81b"><view class="border-line data-v-06d9f81b"></view><view class="text-bold margin-left-sm data-v-06d9f81b">{{a}}</view></view><view class="role-tag data-v-06d9f81b">{{b}}</view></view><view class="member-list data-v-06d9f81b"><view wx:for="{{c}}" wx:for-item="item" wx:key="g" class="{{['member-item', 'data-v-06d9f81b', item.h && 'border-bottom']}}"><view class="cu-avatar radius lg bg-gray data-v-06d9f81b" style="background-image:url(https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png)"></view><view class="member-info data-v-06d9f81b"><view class="flex align-center data-v-06d9f81b"><text class="member-name data-v-06d9f81b">{{item.a}}</text><view class="{{['status-tag', 'data-v-06d9f81b', item.c]}}">{{item.b}}</view></view><view class="member-phone text-gray data-v-06d9f81b"><text class="data-v-06d9f81b">手机:{{item.d}}</text></view></view><button class="btn-lock bg-blue data-v-06d9f81b" bindtap="{{item.f}}">{{item.e}}</button></view></view><view class="add-btn-wrapper data-v-06d9f81b"><button class="add-btn data-v-06d9f81b" bindtap="{{d}}"><text class="cuIcon-add data-v-06d9f81b"></text><text class="data-v-06d9f81b">添加成员</text></button></view></view><u-popup wx:if="{{x}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-s="{{['d']}}" bindclose="{{w}}" u-i="06d9f81b-0" bind:__l="__l" u-p="{{x}}"><view class="popup-content data-v-06d9f81b"><view class="popup-header data-v-06d9f81b"><view class="popup-title text-bold data-v-06d9f81b">添加成员</view><view class="popup-close data-v-06d9f81b" bindtap="{{e}}">×</view></view><scroll-view class="popup-body data-v-06d9f81b" scroll-y><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">用户名<text class="text-red data-v-06d9f81b">*</text></view><up-input wx:if="{{g}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-1,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{f}}" u-p="{{g}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">昵称</view><up-input wx:if="{{i}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-2,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{h}}" u-p="{{i}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">手机号</view><up-input wx:if="{{k}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-3,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{j}}" u-p="{{k}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">密码<text class="text-red data-v-06d9f81b">*</text></view><up-input wx:if="{{m}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-4,06d9f81b-0" bind:__l="__l" bindupdateModelValue="{{l}}" u-p="{{m}}"></up-input></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">角色类型<text class="text-red data-v-06d9f81b">*</text></view><view class="form-select data-v-06d9f81b" bindtap="{{p}}"><text class="{{['data-v-06d9f81b', o]}}">{{n}}</text><text class="cuIcon-unfold data-v-06d9f81b"></text></view></view><view class="form-item data-v-06d9f81b"><view class="form-label data-v-06d9f81b">岗位</view><view class="form-select data-v-06d9f81b" bindtap="{{s}}"><text class="{{['data-v-06d9f81b', r]}}">{{q}}</text><text class="cuIcon-unfold data-v-06d9f81b"></text></view></view><view class="data-v-06d9f81b" style="height:40rpx"></view></scroll-view><view class="popup-footer data-v-06d9f81b"><button class="btn-cancel data-v-06d9f81b" bindtap="{{t}}">取消</button><button class="btn-confirm bg-blue data-v-06d9f81b" bindtap="{{v}}">确定</button></view></view></u-popup><up-picker wx:if="{{B}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" bindconfirm="{{y}}" bindcancel="{{z}}" bindclose="{{A}}" u-i="06d9f81b-5" bind:__l="__l" u-p="{{B}}"></up-picker><up-picker wx:if="{{F}}" class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" bindconfirm="{{C}}" bindcancel="{{D}}" bindclose="{{E}}" u-i="06d9f81b-6" bind:__l="__l" u-p="{{F}}"></up-picker><tab-bar class="data-v-06d9f81b" virtualHostClass="data-v-06d9f81b" u-i="06d9f81b-7" bind:__l="__l"/></view>