|
@@ -37,19 +37,22 @@
|
|
|
prop="handlerClassifiesOrgin"
|
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
|
>
|
|
|
- <el-select-v2
|
|
|
+ <el-select
|
|
|
v-model="form.handlerClassifiesOrgin"
|
|
|
- class="w100"
|
|
|
+ multiple
|
|
|
filterable
|
|
|
- :options="usetList"
|
|
|
- :loading="loading"
|
|
|
+ remote
|
|
|
+ class="w100"
|
|
|
+ reserve-keyword
|
|
|
placeholder="请输入用户名称"
|
|
|
- multiple
|
|
|
+ remote-show-suffix
|
|
|
:remote-method="remoteMethod"
|
|
|
- clearable
|
|
|
- remote
|
|
|
+ :loading="loading"
|
|
|
@change="getSelectValue"
|
|
|
- />
|
|
|
+ value-key="id"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in usetList" :key="item.id" :label="item.name" :value="item" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<!-- 部门 -->
|
|
|
<el-form-item
|
|
@@ -182,24 +185,38 @@ const checkChange = () => {
|
|
|
// 使用模板字符串
|
|
|
form.handlerClassifies = `${JSON.stringify(arr)}`;
|
|
|
};
|
|
|
+const removeDuplicateObj = (arr: any[]) => {
|
|
|
+ let obj = {};
|
|
|
+ arr = arr.reduce((newArr: any, next: any) => {
|
|
|
+ obj[next.id] ? '' : (obj[next.id] = true && newArr.push(next));
|
|
|
+ return newArr;
|
|
|
+ }, []);
|
|
|
+ return arr;
|
|
|
+};
|
|
|
+
|
|
|
// 远程搜索用户名称
|
|
|
const remoteMethod = (query: string) => {
|
|
|
if (query !== '') {
|
|
|
loading.value = true;
|
|
|
queryUser({ name: query }).then((res: any) => {
|
|
|
loading.value = false;
|
|
|
- usetList.value = res.result ?? [];
|
|
|
- usetList.value = usetList.value.map((item: any) => ({
|
|
|
- value: item.id,
|
|
|
- label: item.name + '-' + item.orgName,
|
|
|
- }));
|
|
|
+ usetList.value.push(...res.result);
|
|
|
+ usetList.value = removeDuplicateObj(usetList.value);
|
|
|
+ usetList.value = usetList.value.map((item: any) => {
|
|
|
+ if (!item.name.includes('-')) {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ name: item.name + '-' + item.organization.orgName,
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ return { ...item };
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
- } else {
|
|
|
- usetList.value = [];
|
|
|
}
|
|
|
};
|
|
|
// 获取选择对象
|
|
|
-const getSelectValue = (query: string) => {
|
|
|
+const getSelectValue = (query: any) => {
|
|
|
// 提炼函数
|
|
|
const getSelectedItems = (list: any[]) => {
|
|
|
return list.filter((item) => query.includes(item.value)).map((item) => ({ name: item.label, id: item.value }));
|
|
@@ -208,7 +225,7 @@ const getSelectValue = (query: string) => {
|
|
|
if (form.handlerType !== 3) {
|
|
|
arr = getSelectedItems(selectList.value);
|
|
|
} else {
|
|
|
- arr = getSelectedItems(usetList.value);
|
|
|
+ arr = query.map((item: any) => ({ name: item.name, id: item.id }));
|
|
|
}
|
|
|
// 使用模板字符串
|
|
|
form.handlerClassifies = `${JSON.stringify(arr)}`;
|
|
@@ -276,9 +293,8 @@ onMounted(async () => {
|
|
|
// 合并表单
|
|
|
Object.assign(form, props.modelValue);
|
|
|
if (form.handlerClassifies.includes('[')) {
|
|
|
- form.handlerClassifiesOrgin = JSON.parse(form.handlerClassifies).map((item: any) => {
|
|
|
- return item.id;
|
|
|
- });
|
|
|
+ form.handlerClassifiesOrgin = JSON.parse(form.handlerClassifies);
|
|
|
+ usetList.value = JSON.parse(form.handlerClassifies);
|
|
|
}
|
|
|
if ([0, 1, 2].includes(form.handlerType)) {
|
|
|
const res: any = await getSelectList(form.handlerType);
|