import { defineComponent, reactive, ref, onMounted, computed } from "vue"; import styles from "./index.module.less"; import { Button, Cell, Field, Tab, Tabs, showToast, DropdownMenu, DropdownItem, Uploader } from "vant"; import { sysSuggestionAdd, getSuggestionList } from "/src/page-instrument/api"; import { storeData } from "/src/store"; import state, { IPlatform } from "/src/state"; import { headImg } from "/src/page-instrument/header-top/image"; import { fileUpload } from "/src/helpers/oss-file-upload" export default defineComponent({ name: "recommendation", emits: ["close"], setup(props, { emit }) { const suggestionTypeList = ref([]); const recommenData = reactive({ message: "", suggestId: "", }); const fileList = ref([]) // 上传列表 // 获取建议类别 const getTypeList = async () => { try { const res = await getSuggestionList({ rows: 9999, page: 1 }); const data = res.data || []; suggestionTypeList.value = data.map((item:any) => { return { text: item.type, value: item.id } }) } catch (e) { // } }; /** 提交意见反馈 */ const handleSubmit = async () => { if (!recommenData.message || !recommenData.suggestId) { const desc = !recommenData.suggestId ? '请先选择反馈类型' : '请先填写意见反馈' showToast({ message: desc, position: "top", }); return; } try { const attachmentUrlsArr = fileList.value.reduce((arr,item)=>{ item.url && arr.push(item.url) return arr },[]) await sysSuggestionAdd({ content: recommenData.message, type: 'APP', suggestionType: recommenData.suggestId, mobileNo: storeData.user?.phone, url: attachmentUrlsArr.join(",") }); showToast({ message: "意见反馈已提交", position: "top", }); emit("close"); recommenData.suggestId = "" recommenData.message = '' fileList.value = [] } catch (error) {} }; const currItem = computed(()=>{ const currItem = suggestionTypeList.value.find((item:any)=>{ return item.value === recommenData.suggestId }) return currItem }) /* 文件上传 */ const afterRead = (file:any[]|Record) => { let files:any[] = [] if(Array.isArray(file)){ files = file.map(item =>{ item.status = 'uploading'; item.message = '上传中...'; item.key = new Date().getTime() + item.file.name return item }) } else { file.status = 'uploading'; file.message = '上传中...'; file.key = new Date().getTime() + file.file.name files.push(file) } files.map(async item=>{ try { const url = await fileUpload(item.key,item.file) item.status = "" item.url = url }catch{ item.status = "failed" item.message = "上传失败" } }) }; const maxSize = 5 const onOversize = () => { showToast(`文件大小不能超过 ${maxSize}M`); }; onMounted(() => { getTypeList(); }); function beforeRead(file:any[]){ if(file.length + fileList.value.length > 5){ showToast(`最多只能选择5张图片`); } return true } return () => (
{ emit("close") }} />
{`${recommenData.message.length >= 200 ? 200 : recommenData.message.length }/200`}
上传图片
{ emit("close") }}>
); }, });