一单四制优化及加入工作流
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
<view class="text-gray">下一步流程</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">隐患整改</view>
|
||||
<view class="static-field">{{ nextStepDisplay }}</view>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">整改责任人</view>
|
||||
@@ -33,7 +33,7 @@
|
||||
<view class="popup-title text-bold">选择整改责任人</view>
|
||||
<view class="popup-close" @click="cancelUserSelect">×</view>
|
||||
</view>
|
||||
<view v-if="userPickerSelectedId" class="selected-summary">
|
||||
<view v-if="userPickerSelectedIdentityId" class="selected-summary">
|
||||
<text class="summary-label">已选:</text>
|
||||
<text class="summary-text">{{ userPickerSelectedText }}</text>
|
||||
</view>
|
||||
@@ -55,12 +55,12 @@
|
||||
<view
|
||||
class="user-item"
|
||||
v-for="user in currentDeptUsers"
|
||||
:key="'user-' + user.userId"
|
||||
:class="{ active: String(userPickerSelectedId) === String(user.userId) }"
|
||||
@click="onUserItemClick(user.userId)"
|
||||
:key="'identity-' + user.identityId"
|
||||
:class="{ active: String(userPickerSelectedIdentityId) === String(user.identityId) }"
|
||||
@click="onUserItemClick(user.identityId)"
|
||||
>
|
||||
<text class="user-item-text">{{ formatUserDisplayName(user) }}</text>
|
||||
<text v-if="String(userPickerSelectedId) === String(user.userId)" class="cuIcon-check text-blue"></text>
|
||||
<text v-if="String(userPickerSelectedIdentityId) === String(user.identityId)" class="cuIcon-check text-blue"></text>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@@ -120,16 +120,32 @@
|
||||
// 页面参数
|
||||
const hazardId = ref('');
|
||||
const assignId = ref('');
|
||||
|
||||
// 整改人员选择
|
||||
const taskId = ref('');
|
||||
|
||||
// 下一步流程(固定为隐患整改)
|
||||
const nextStepDisplay = '隐患整改';
|
||||
// 整改人员选择(按身份 identityId 单选)
|
||||
const showUserPopup = ref(false);
|
||||
const selectedUser = ref('');
|
||||
const selectedIdentityId = ref('');
|
||||
const selectedUserId = ref('');
|
||||
const deptList = ref([]);
|
||||
const activeDeptIndex = ref(0);
|
||||
const userPickerSelectedId = ref('');
|
||||
const userPickerSelectedIdentityId = ref('');
|
||||
|
||||
const findUserByIdentityId = (identityId) => {
|
||||
if (!identityId) return null;
|
||||
for (const dept of deptList.value) {
|
||||
const user = (dept.users || []).find((u) => String(u.identityId) === String(identityId));
|
||||
if (user) return user;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const formatUserDisplayName = (user) => {
|
||||
if (user.identityName) {
|
||||
return `${user.nickName}_${user.identityName}`;
|
||||
}
|
||||
if (user.postName) {
|
||||
return `${user.nickName}_${user.postName}`;
|
||||
}
|
||||
@@ -142,27 +158,32 @@
|
||||
});
|
||||
|
||||
const userPickerSelectedText = computed(() => {
|
||||
if (!userPickerSelectedId.value) return '';
|
||||
for (const dept of deptList.value) {
|
||||
const user = (dept.users || []).find((u) => String(u.userId) === String(userPickerSelectedId.value));
|
||||
if (user) return formatUserDisplayName(user);
|
||||
}
|
||||
return '';
|
||||
const user = findUserByIdentityId(userPickerSelectedIdentityId.value);
|
||||
return user ? formatUserDisplayName(user) : '';
|
||||
});
|
||||
|
||||
const deptHasSelectedUser = (dept) => {
|
||||
if (!userPickerSelectedId.value || !dept.users?.length) return false;
|
||||
return dept.users.some((user) => String(user.userId) === String(userPickerSelectedId.value));
|
||||
if (!userPickerSelectedIdentityId.value || !dept.users?.length) return false;
|
||||
return dept.users.some((user) => String(user.identityId) === String(userPickerSelectedIdentityId.value));
|
||||
};
|
||||
|
||||
const onUserItemClick = (userId) => {
|
||||
userPickerSelectedId.value = String(userId);
|
||||
const onUserItemClick = (identityId) => {
|
||||
userPickerSelectedIdentityId.value = String(identityId);
|
||||
};
|
||||
|
||||
const openUserPopup = () => {
|
||||
userPickerSelectedId.value = selectedUserId.value;
|
||||
const firstDeptWithUsers = deptList.value.findIndex((dept) => dept.users?.length > 0);
|
||||
activeDeptIndex.value = firstDeptWithUsers >= 0 ? firstDeptWithUsers : 0;
|
||||
userPickerSelectedIdentityId.value = selectedIdentityId.value;
|
||||
let targetDeptIndex = 0;
|
||||
if (selectedIdentityId.value) {
|
||||
const deptIndex = deptList.value.findIndex((dept) =>
|
||||
(dept.users || []).some((user) => String(user.identityId) === String(selectedIdentityId.value))
|
||||
);
|
||||
if (deptIndex >= 0) targetDeptIndex = deptIndex;
|
||||
} else {
|
||||
const firstDeptWithUsers = deptList.value.findIndex((dept) => dept.users?.length > 0);
|
||||
if (firstDeptWithUsers >= 0) targetDeptIndex = firstDeptWithUsers;
|
||||
}
|
||||
activeDeptIndex.value = targetDeptIndex;
|
||||
showUserPopup.value = true;
|
||||
};
|
||||
|
||||
@@ -171,12 +192,18 @@
|
||||
};
|
||||
|
||||
const confirmUserSelect = () => {
|
||||
if (!userPickerSelectedId.value) {
|
||||
if (!userPickerSelectedIdentityId.value) {
|
||||
uni.showToast({ title: '请选择整改责任人', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
selectedUserId.value = String(userPickerSelectedId.value);
|
||||
selectedUser.value = userPickerSelectedText.value;
|
||||
const user = findUserByIdentityId(userPickerSelectedIdentityId.value);
|
||||
if (!user) {
|
||||
uni.showToast({ title: '所选身份无效,请重新选择', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
selectedIdentityId.value = String(user.identityId);
|
||||
selectedUserId.value = String(user.userId);
|
||||
selectedUser.value = formatUserDisplayName(user);
|
||||
showUserPopup.value = false;
|
||||
};
|
||||
|
||||
@@ -251,7 +278,7 @@
|
||||
|
||||
// 确认提交
|
||||
const handleSubmit = async () => {
|
||||
if (!selectedUserId.value) {
|
||||
if (!selectedIdentityId.value) {
|
||||
uni.showToast({ title: '请选择整改人员', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
@@ -259,11 +286,17 @@
|
||||
uni.showToast({ title: '请选择整改期限', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
if (!taskId.value) {
|
||||
uni.showToast({ title: '缺少任务ID', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
|
||||
// 构建请求参数
|
||||
const params = {
|
||||
hazardId: Number(hazardId.value), // 隐患ID
|
||||
assigneeId: Number(selectedUserId.value), // 被指派人ID
|
||||
taskId: taskId.value, // 流程任务ID(列表传入)
|
||||
assigneeId: Number(selectedUserId.value), // 被指派人用户ID
|
||||
assigneeIdentityId: Number(selectedIdentityId.value), // 被指派人身份ID
|
||||
deadline: selectedDate.value, // 处理期限
|
||||
assignRemark: '', // 交办备注(可选)
|
||||
sendMsgFlag: sendMsgFlag.value // 是否短信提醒
|
||||
@@ -291,6 +324,7 @@
|
||||
onLoad((options) => {
|
||||
if (options.hazardId) hazardId.value = options.hazardId;
|
||||
if (options.assignId) assignId.value = options.assignId;
|
||||
if (options.taskId) taskId.value = options.taskId;
|
||||
fetchDeptUsers();
|
||||
|
||||
// 恢复草稿 (不恢复任何人员选择器数据)
|
||||
|
||||
Reference in New Issue
Block a user