Bläddra i källkod

数字员工新建头像、视频可输入连接

kyoyue 5 månader sedan
förälder
incheckning
90ece0ee6a
1 ändrade filer med 97 tillägg och 49 borttagningar
  1. 97 49
      src/views/wechat/employee/EmployeeDrawer.vue

+ 97 - 49
src/views/wechat/employee/EmployeeDrawer.vue

@@ -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>