|
@@ -42,6 +42,13 @@
|
|
|
<t-col :span="12">
|
|
|
<t-form-item label="人员调配" labelAlign="top">
|
|
|
<div>
|
|
|
+ <div style="text-align: right">
|
|
|
+ <t-checkbox
|
|
|
+ v-model="regionUseManage"
|
|
|
+ @change="regionUseManageChange"
|
|
|
+ >区域协调人由大区经理兼仕</t-checkbox
|
|
|
+ >
|
|
|
+ </div>
|
|
|
<t-table
|
|
|
size="small"
|
|
|
row-key="roleId"
|
|
@@ -89,7 +96,7 @@
|
|
|
:key="item.id"
|
|
|
:value="item.id"
|
|
|
:label="item.name"
|
|
|
- :disabled="configRoleIds.includes(item.id)"
|
|
|
+ :disabled="checkRoleDisabled(item)"
|
|
|
></t-option>
|
|
|
</t-select>
|
|
|
<t-button
|
|
@@ -130,11 +137,27 @@ const props = defineProps({
|
|
|
visible: Boolean,
|
|
|
curRow: Object,
|
|
|
});
|
|
|
+const regionUseManage = ref(false);
|
|
|
+
|
|
|
+const regionUseManageChange = () => {
|
|
|
+ if (regionUseManage.value) {
|
|
|
+ formData.roleConfigInfo = formData.roleConfigInfo.filter(
|
|
|
+ (item) => item.roleType !== 'REGION_COORDINATOR'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ selectedRoleId.value = null;
|
|
|
+ selectedRole.value = null;
|
|
|
+};
|
|
|
|
|
|
const configRoleIds = computed(() => {
|
|
|
return formData.roleConfigInfo.map((item) => item.roleId);
|
|
|
});
|
|
|
|
|
|
+const checkRoleDisabled = (item) => {
|
|
|
+ if (item.type === 'REGION_COORDINATOR' && regionUseManage.value) return true;
|
|
|
+ return configRoleIds.value.includes(item.id);
|
|
|
+};
|
|
|
+
|
|
|
const formRef = ref(null);
|
|
|
let selectedRole = ref(null);
|
|
|
let selectedRoleId = ref(null);
|
|
@@ -188,6 +211,16 @@ const getDetail = async () => {
|
|
|
};
|
|
|
});
|
|
|
}
|
|
|
+ const regionUserInfo = formData.roleConfigInfo.find(
|
|
|
+ (item) => item.roleType === 'REGION_COORDINATOR'
|
|
|
+ );
|
|
|
+ if (
|
|
|
+ regionUserInfo &&
|
|
|
+ regionUserInfo.userIdList[0] === props.curRow.regionManagerId
|
|
|
+ ) {
|
|
|
+ regionUseManage.value = true;
|
|
|
+ regionUseManageChange();
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
const { formData } = useClearDialog(
|
|
@@ -226,6 +259,17 @@ const roleChange = () => {
|
|
|
(item) => item.id === selectedRoleId.value
|
|
|
);
|
|
|
};
|
|
|
+const sortRole = () => {
|
|
|
+ const roleIndexs = {
|
|
|
+ REGION_COORDINATOR: 1,
|
|
|
+ EFFECT_ENGINEER: 2,
|
|
|
+ ASSISTANT_ENGINEER: 3,
|
|
|
+ };
|
|
|
+ formData.roleConfigInfo.sort(
|
|
|
+ (a, b) => roleIndexs[a.roleType] - roleIndexs[b.roleType]
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
const toAddRole = () => {
|
|
|
if (
|
|
|
formData.roleConfigInfo.some(
|
|
@@ -243,6 +287,7 @@ const toAddRole = () => {
|
|
|
roleName: selectedRole.value.name,
|
|
|
roleType: selectedRole.value.type,
|
|
|
});
|
|
|
+ sortRole();
|
|
|
|
|
|
selectedRole.value = null;
|
|
|
selectedRoleId.value = null;
|
|
@@ -282,10 +327,15 @@ const save = async () => {
|
|
|
};
|
|
|
}),
|
|
|
};
|
|
|
- const regionUserInfo = formData.roleConfigInfo.find(
|
|
|
- (item) => item.roleType === 'REGION_COORDINATOR'
|
|
|
- );
|
|
|
- if (regionUserInfo) data.regionUserId = regionUserInfo.userIdList[0];
|
|
|
+
|
|
|
+ if (regionUseManage.value) {
|
|
|
+ data.regionUserId = props.curRow.regionManagerId;
|
|
|
+ } else {
|
|
|
+ const regionUserInfo = formData.roleConfigInfo.find(
|
|
|
+ (item) => item.roleType === 'REGION_COORDINATOR'
|
|
|
+ );
|
|
|
+ if (regionUserInfo) data.regionUserId = regionUserInfo.userIdList[0];
|
|
|
+ }
|
|
|
|
|
|
const res = await personAllocateDeployApi(data).catch(() => {});
|
|
|
if (!res) return;
|