import { ref, defineComponent, onMounted, computed, onUnmounted, reactive, watch, } from 'vue'; import { useRouter, useRoute } from 'vue-router'; import './index.scss'; import { upload, UploadData } from '@/api/common'; import { isArray } from 'lodash'; import { useCommonStore, useIncidentStore } from '@/store'; import { BaseMediaUrl, isImage, isVideo } from '@/utils'; import { DropdownItemOption, NavBar, DropdownMenu, DropdownItem, Icon, PullRefresh, Sticky, Collapse, CollapseItem, Field, Button, Loading, Toast, Step, Steps, Dialog, Popup, Uploader, UploaderFileListItem, ImagePreview, } from 'vant'; /** @ts-ignore */ import icon_communication from '@/assets/icons/incident/communication@2x.png'; /** @ts-ignore */ import icon_detail from '@/assets/icons/incident/detail@2x.png'; /** @ts-ignore */ import icon_information from '@/assets/icons/incident/information@2x.png'; /** @ts-ignore */ import icon_plan from '@/assets/icons/incident/plan@2x.png'; /** @ts-ignore */ import icon_yjck from '@/assets/icons/incident/yjck@2x.png'; /** @ts-ignore */ import icon_yjya from '@/assets/icons/incident/yjya@2x.png'; /** @ts-ignore */ import icon_video from '@/assets/icons/incident/video.png'; ; import { cloneDeep, take } from 'lodash'; export default defineComponent({ name: 'IncidentManagementDetail', setup() { const router = useRouter(); const route = useRoute(); const store = useIncidentStore(); const commonStore = useCommonStore(); const activeNames = ref([ '事件信息', '应急预案', '处置方案', '处置详情', '融合通信', ]); const activeoplanNames = ref([ ]); const message = ref(''); const dosubmitdata = () => { if (!store.incidentDetail.baseInfo?.id || message.value == "") { Toast.fail('信息不完整'); } store .addIncidentProcess({ incidentId: store.incidentDetail.baseInfo?.id, des: message.value, taskId: currenttaskid.value, video: videosrclist.map((i: UploadData) => i.url).join(','), pic: imagessrclist.map((i: UploadData) => i.url).join(','), }) .then(() => { message.value = ''; videosrclist.splice(0); imagessrclist.splice(0); form.value = { pic: [], video: [] }; store.getIncidentItem(store.incidentDetail.baseInfo?.id ?? ''); }); }; const dohs = () => { try { uni.postMessage({ data: { type: 'RHTX_gotoMeetMember', data: 'yjzh', }, }); } catch (E) { } } const planOptions = computed( () => Object.keys(store.incidentDetail?.baseTask ?? {}) .map((idx) => { const item = commonStore.globalDict['zhdd_incident_level']?.find( (i) => i.dictValue === store.incidentDetail?.baseTask?.[idx]?.[0].level?.toString(), ); const desc = store.incidentDetail?.baseTask?.[idx]?.map( (i) => i.taskDes, ); return { ...item, desc, }; }) ?.find( (item) => item.dictValue?.toString() === store.incidentDetail?.baseInfo?.level?.toString(), )?.desc, ); const currenttaskid = ref(''); const process = ref([]); const handleUpload = (file) => { Toast.loading({ message: '上传中...', duration: 0, forbidClick: true, }); upload(file) .then((res) => { Toast.clear(); let type = /\w+([.jpg|.png|.gif|.swf|.bmp|.jpeg]){1}$/.test( res.data.fileName?.substr( res.data.fileName?.lastIndexOf('.') + 1, ) ?? '', ); if (!type) { videosrclist.push(res.data); } else { imagessrclist.push(res.data); } }) .catch((error) => { Toast.clear(); }); }; watch( () => store.incidentDetail.process, () => { var mkdtemp = {}; store.incidentDetail.process?.map((i) => { var list = mkdtemp[i.taskId] ?? []; list.push(i); mkdtemp[i.taskId] = list; }); console.log(mkdtemp); process.value = []; store.incidentDetail.process?.map((i) => { var list = cloneDeep(mkdtemp[i.taskId] ?? []); if (i.taskId && list.length > 0 && list[0].id === i.id) { list.splice(0, 1); process.value.push({ ...i, child: list, }); } else { if (!i.taskId) { process.value.push({ ...i, }); } } }); }, ); const form = ref({pic:[],video:[]}); const videosrclist = reactive([]); const imagessrclist = reactive([]); const videop = ref(); const videopsrc = ref(''); const isshowprew = ref(false); onMounted(() => { commonStore.getGlobalDict('zhdd_incident_level'); commonStore.getGlobalDict('zhdd_incident_type'); commonStore.getGlobalDict('zhdd_incident_source'); route.query.id && store.getIncidentItem(route.query.id as string); if (route.query.taskid) { currenttaskid.value = route.query.taskid as string; } }); const getisbj = () => { if (currenttaskid.value == "") return true; var isok = false; store.incidentDetail.task?.map(ii => { if (ii.id == currenttaskid.value && ii.backLogFlag == "1") { isok = true; } }) return isok; } onUnmounted(() => { store.incidentDetail = {}; }); return () => (