|
@@ -19,17 +19,33 @@
|
|
|
:options="categoryList"
|
|
|
></Select>
|
|
|
</FormItem>
|
|
|
- <FormItem label="头像" name="avatar" :rules="{ required: true, message: '请上传头像' }">
|
|
|
- <BasicUpload
|
|
|
- :maxSize="100"
|
|
|
- :maxNumber="1"
|
|
|
- @change="handleChange"
|
|
|
- :api="uploadApi"
|
|
|
+ <FormItem name="avatar" :rules="{ required: true, message: '请上传头像' }">
|
|
|
+ <template #label>
|
|
|
+ 头像
|
|
|
+ <Tooltip>
|
|
|
+ <template #title>上传本地图片或输入头像链接</template>
|
|
|
+ <QuestionCircleOutlined />
|
|
|
+ </Tooltip>
|
|
|
+ </template>
|
|
|
+ <!-- <div :class="isUploadDisabled ? 'disabled-upload ' : ''"> -->
|
|
|
+ <BasicUpload
|
|
|
+ :maxSize="100"
|
|
|
+ :maxNumber="1"
|
|
|
+ :api="uploadApi"
|
|
|
+ v-model:value="formModel.avatar"
|
|
|
+ :accept="['image/*']"
|
|
|
+ :showPreviewNumber="false"
|
|
|
+ emptyHidePreview
|
|
|
+ />
|
|
|
+ <!-- </div> @input="handleInputChange" -->
|
|
|
+ <FormItem>
|
|
|
+ <Input
|
|
|
+ style="width: 600px; margin-top: 10px"
|
|
|
v-model:value="formModel.avatar"
|
|
|
- :accept="['image/*']"
|
|
|
- :showPreviewNumber="false"
|
|
|
- emptyHidePreview
|
|
|
+ placeholder="请输头像链接"
|
|
|
+ allowClear
|
|
|
/>
|
|
|
+ </FormItem>
|
|
|
</FormItem>
|
|
|
|
|
|
<FormItem label="标签" name="tags" :rules="[{ required: true, message: '请选择标签' }]">
|
|
@@ -169,19 +185,32 @@
|
|
|
</FormItem>
|
|
|
|
|
|
<FormItem
|
|
|
- label="视频链接"
|
|
|
name="videoUrl"
|
|
|
:rules="[{ required: true, message: '请上传视频' }]"
|
|
|
>
|
|
|
+ <template #label>
|
|
|
+ 视频链接
|
|
|
+ <Tooltip>
|
|
|
+ <template #title>上传本地视频或输入视频链接</template>
|
|
|
+ <QuestionCircleOutlined />
|
|
|
+ </Tooltip>
|
|
|
+ </template>
|
|
|
<BasicUpload
|
|
|
:maxSize="1000"
|
|
|
:maxNumber="1"
|
|
|
- @change="handleVideoChange"
|
|
|
:api="uploadApi"
|
|
|
v-model:value="formModel.videoUrl"
|
|
|
:showPreviewNumber="false"
|
|
|
emptyHidePreview
|
|
|
/>
|
|
|
+ <FormItem>
|
|
|
+ <Input
|
|
|
+ style="width: 600px; margin-top: 10px"
|
|
|
+ v-model:value="formModel.videoUrl"
|
|
|
+ placeholder="请输视频链接"
|
|
|
+ allowClear
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
</FormItem>
|
|
|
|
|
|
<FormItem
|
|
@@ -224,7 +253,15 @@
|
|
|
</BasicDrawer>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
- import { defineComponent, ref, computed, unref, reactive, onMounted, defineEmits } from 'vue';
|
|
|
+ import {
|
|
|
+ defineComponent,
|
|
|
+ ref,
|
|
|
+ computed,
|
|
|
+ unref,
|
|
|
+ reactive,
|
|
|
+ onMounted,
|
|
|
+ defineEmits,
|
|
|
+ } from 'vue';
|
|
|
import { BasicForm, useForm } from '@/components/Form/index';
|
|
|
import {
|
|
|
Form,
|
|
@@ -236,8 +273,9 @@
|
|
|
DatePicker,
|
|
|
Select,
|
|
|
message,
|
|
|
+ Tooltip,
|
|
|
} from 'ant-design-vue';
|
|
|
- import { PlusOutlined, MinusCircleOutlined } from '@ant-design/icons-vue';
|
|
|
+ import { PlusOutlined, MinusCircleOutlined, QuestionCircleOutlined } from '@ant-design/icons-vue';
|
|
|
import { BasicUpload } from '@/components/Upload';
|
|
|
import { deleteFile, downloadFile, getFileList, uploadApi } from '@/api/fms/file';
|
|
|
import { formSchema } from './employee.data';
|
|
@@ -245,7 +283,12 @@
|
|
|
import { useI18n } from 'vue-i18n';
|
|
|
import dayjs from 'dayjs';
|
|
|
import { getLabelSelectList } from '@/api/wechat/label';
|
|
|
- import { createEmployee, updateEmployee, getEmployeeTypes,getEmployeeCategory } from '@/api/wechat/employee';
|
|
|
+ import {
|
|
|
+ createEmployee,
|
|
|
+ updateEmployee,
|
|
|
+ getEmployeeTypes,
|
|
|
+ getEmployeeCategory,
|
|
|
+ } from '@/api/wechat/employee';
|
|
|
const emit = defineEmits<{
|
|
|
(event: 'update:getList', value: { value: boolean }): void;
|
|
|
}>();
|
|
@@ -261,7 +304,7 @@
|
|
|
title: '',
|
|
|
avatar: [],
|
|
|
tags: [],
|
|
|
- categoryId:undefined,
|
|
|
+ categoryId: undefined,
|
|
|
hireCount: undefined,
|
|
|
serviceCount: undefined,
|
|
|
achievementCount: undefined,
|
|
@@ -283,11 +326,12 @@
|
|
|
videoUrl: [],
|
|
|
workExperience: [],
|
|
|
});
|
|
|
+
|
|
|
const updateId = ref(undefined);
|
|
|
const initialForm = reactive({
|
|
|
id: '',
|
|
|
title: '',
|
|
|
- categoryId:undefined,
|
|
|
+ categoryId: undefined,
|
|
|
avatar: [],
|
|
|
tags: [],
|
|
|
hireCount: undefined,
|
|
@@ -370,10 +414,11 @@
|
|
|
Object.assign(formModel, initialForm);
|
|
|
}
|
|
|
let res = await getLabelSelectList({ page: 1, pageSize: 1000, type: 1 });
|
|
|
- actionLabel.value = res.data.map((item) => ({
|
|
|
- label: item.label,
|
|
|
- value: item.label,
|
|
|
- }));
|
|
|
+ // actionLabel.value = res.data.map((item) => ({
|
|
|
+ // label: item.label,
|
|
|
+ // value: item.label,
|
|
|
+ // }));
|
|
|
+ actionLabel.value = res.data;
|
|
|
let result = await getEmployeeTypes();
|
|
|
configs_scene.value = result.data.scene.map((item) => ({
|
|
|
label: item.title,
|
|
@@ -384,12 +429,12 @@
|
|
|
value: item.id,
|
|
|
}));
|
|
|
|
|
|
- let res2 = await getEmployeeCategory({page: 1, pageSize: 50,});
|
|
|
+ let res2 = await getEmployeeCategory({ page: 1, pageSize: 50 });
|
|
|
categoryList.value = res2.data.data.map((item) => ({
|
|
|
label: item.name,
|
|
|
value: item.id,
|
|
|
- }))
|
|
|
- console.log(res2.data.data)
|
|
|
+ }));
|
|
|
+ console.log(res2.data.data);
|
|
|
});
|
|
|
const getTitle = computed(() =>
|
|
|
!unref(isUpdate) ? t('wechat.employee.addEmployee') : t('wechat.employee.editEmployee'),
|
|
@@ -407,30 +452,32 @@
|
|
|
}
|
|
|
values.tags = values.tags.map((tag) => `"${tag}"`).join(', ');
|
|
|
values.abilityType = formModel.abilityType_title + '-' + formModel.abilityType_content;
|
|
|
- console.log(values.scene,values.scene[0])
|
|
|
+ console.log(values.scene, values.scene[0]);
|
|
|
|
|
|
- const descriptionToValueMap = new Map(
|
|
|
+ const descriptionToValueMap = new Map(
|
|
|
configs_scene.value.map((item) => [item.label, item.value]),
|
|
|
);
|
|
|
- values.scene = values.scene.map(item => {
|
|
|
- if (typeof item === 'string') {
|
|
|
- return descriptionToValueMap.get(item) || item; // 找不到就返回原值,防止出错
|
|
|
- }
|
|
|
- return item;
|
|
|
- }).filter(value => typeof value === 'number') // 只保留数字,移除无法匹配的描述
|
|
|
- .join(','); // 转换为逗号分隔的字符串
|
|
|
+ values.scene = values.scene
|
|
|
+ .map((item) => {
|
|
|
+ if (typeof item === 'string') {
|
|
|
+ return descriptionToValueMap.get(item) || item; // 找不到就返回原值,防止出错
|
|
|
+ }
|
|
|
+ return item;
|
|
|
+ })
|
|
|
+ .filter((value) => typeof value === 'number') // 只保留数字,移除无法匹配的描述
|
|
|
+ .join(','); // 转换为逗号分隔的字符串
|
|
|
+
|
|
|
+ const descriptionToMap = new Map(configs_switch.value.map((item) => [item.label, item.value]));
|
|
|
+ values.switchIn = values.switchIn
|
|
|
+ .map((item) => {
|
|
|
+ if (typeof item === 'string') {
|
|
|
+ return descriptionToMap.get(item) || item; // 找不到就返回原值,防止出错
|
|
|
+ }
|
|
|
+ return item;
|
|
|
+ })
|
|
|
+ .filter((value) => typeof value === 'number') // 只保留数字,移除无法匹配的描述
|
|
|
+ .join(',');
|
|
|
|
|
|
- const descriptionToMap = new Map(
|
|
|
- configs_switch.value.map((item) => [item.label, item.value]),
|
|
|
- );
|
|
|
- values.switchIn = values.switchIn.map(item => {
|
|
|
- if (typeof item === 'string') {
|
|
|
- return descriptionToMap.get(item) || item; // 找不到就返回原值,防止出错
|
|
|
- }
|
|
|
- return item;
|
|
|
- }).filter(value => typeof value === 'number') // 只保留数字,移除无法匹配的描述
|
|
|
- .join(',');
|
|
|
-
|
|
|
// 将 hireCount, serviceCount, achievementCount 转换为整数
|
|
|
values.hireCount = parseInt(values.hireCount, 10);
|
|
|
values.serviceCount = parseInt(values.serviceCount, 10);
|
|
@@ -471,12 +518,6 @@
|
|
|
console.error('Validation failed:', error);
|
|
|
}
|
|
|
}
|
|
|
- function handleChange(list: string[]) {
|
|
|
- // if (msgDisabled.value) {
|
|
|
- // return
|
|
|
- // }
|
|
|
- // createMessage.info(`已上传文件${JSON.stringify(list)}`);
|
|
|
- }
|
|
|
function addTutorial() {
|
|
|
if (Array.isArray(formModel.tutorial)) {
|
|
|
formModel.tutorial.push({ index: '', title: '', content: '' });
|
|
@@ -522,3 +563,10 @@
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
+<style lang="less" scoped>
|
|
|
+ .disabled-upload {
|
|
|
+ cursor: not-allowed;
|
|
|
+ pointer-events: none;
|
|
|
+ opacity: 0.5;
|
|
|
+ }
|
|
|
+</style>
|