| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 | <template>	<view class="container">		<page-title>问题录入</page-title>		<view class="cards-list">			<view class="card only-card">				<!-- 项目名称 -->				<view class="card-item first-card-item">					<view class="card-item-name">项目名称</view>					<view class="card-item-description">{{pageForm.subName || "--"}}</view>				</view>				<!-- 监管单位 -->				<view class="card-item">					<view class="card-item-name">监管单位</view>					<view class="card-item-description">{{pageForm.manage || "--"}}</view>				</view>				<!-- 项目内容 -->				<view class="card-item">					<view class="card-item-name">项目内容</view>				</view>				<view class="card-item">					<u--textarea v-model="pageForm.subContent" disabled class="card-item-textarea"></u--textarea>				</view>				<!-- 问题类型 -->				<view class="card-item">					<view class="card-item-name">问题类型</view>					<view class="card-item-description" @click="kindChooseOpen()">						<view v-if="pageForm.kind">{{pageForm.kind}}</view>						<view v-else class="remind-text">请选择类型</view>						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin:auto 0 auto 10rpx"></u-icon>					</view>				</view>				<!-- 问题来源 -->				<view class="card-item">					<view class="card-item-name">问题来源</view>					<view class="card-item-description" @click="sourceChooseOpen()">						<view v-if="pageForm.source">{{pageForm.source}}</view>						<view v-else class="remind-text">请选择来源</view>						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin:auto 0 auto 10rpx"></u-icon>					</view>				</view>				<!-- 当前问题描述 -->				<view class="card-item">					<view class="card-item-name">当前问题描述</view>				</view>				<view class="card-item">					<u--textarea v-model="pageForm.title" class="card-item-textarea"></u--textarea>				</view>				<!-- 要求完成日期 -->				<view class="card-item">					<view class="card-item-name">要求完成日期</view>					<view class="card-item-description" @click="timeChooseOpen()">						<view v-if="pageForm.date_conf">{{pageForm.date_conf}}</view>						<view v-else class="remind-text">请选择日期</view>						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin:auto 0 auto 10rpx"></u-icon>					</view>				</view>				<!-- 附件 -->				<view class="card-item flex-align-start">					<view class="card-item-name">附件</view>					<u-upload :fileList="uploadList" :maxCount="1" @afterRead="afterRead" @delete="delFile" name="file"						uploadIcon="plus"></u-upload>				</view>			</view>			<view class="confirm-btn" @click="confirmParams()">保存</view>			<!-- 问题类型选择 -->			<u-picker :show="kindShow" :columns="kindList" @confirm="kindChooseClose" @cancel="kindChooseClose"				@close="kindChooseClose" closeOnClickOverlay></u-picker>			<!-- 问题来源选择 -->			<u-picker :show="sourceShow" :columns="sourceList" @confirm="sourceChooseClose" @cancel="sourceChooseClose"				@close="sourceChooseClose" closeOnClickOverlay></u-picker>			<!-- 要求完成日期选择 -->			<u-datetime-picker :show="timeShow" @confirm="timeChooseClose" @cancel="timeChooseClose" @close="timeChooseClose"				v-model="date_conf" mode="date" closeOnClickOverlay></u-datetime-picker>		</view>	</view></template><script setup>	import {		ref	} from "vue"	import {		onLoad,	} from "@dcloudio/uni-app"	import config from '@/config.js'	import {		timeFormat	} from "@/utils/timeFormatter.js"	import {		uploadFilePromise	} from "@/utils/request_new.js"	import {		getQuestionInputById,		saveQuestionInputById	} from "@/api/work/questionInputAndTrace.js"	// 获取问题详情	function getQuestionDetail(paramData) {		getQuestionInputById(paramData).then(res => {			pageForm.value.id = res.data.subId;			pageForm.value.subName = res.data.subName;			pageForm.value.manage = res.data.manage;			pageForm.value.subContent = res.data.subContent;			kindList.value.push(res.data.wtlx.map(item => item.title));			kindChooseList.value = res.data.wtlx;			sourceList.value.push(res.data.wtly.map(item => item.title));			sourceChooseList.value = res.data.wtly;		})	}	// 主要数据	let pageForm = ref({		id: null,		subName: null,		manage: null,		subContent: null,		kind: null,		source: null,		title: null,		date_conf: null,		file_name: null,		file_addre: null,		file_type: null,	})	// ====================类型列表	let kindList = ref([]);	let kindChooseList = ref([]);	let kindShow = ref(false);	function kindChooseOpen() {		kindShow.value = true	}	function kindChooseClose(e) {		if (e) pageForm.value.kind = e.value[0]		kindShow.value = false	}	// ====================来源列表	let sourceList = ref([]);	let sourceChooseList = ref([]);	let sourceShow = ref(false);	function sourceChooseOpen() {		sourceShow.value = true	}	function sourceChooseClose(e) {		if (e) pageForm.value.source = e.value[0]		sourceShow.value = false	}	// ====================要求完成日期	let date_conf = ref(null);	let timeShow = ref(false);	function timeChooseOpen() {		timeShow.value = true;	}	function timeChooseClose(e) {		if (e) {			let time = timeFormat(e.value);			pageForm.value.date_conf = time;		}		timeShow.value = false;	}	// ====================附件上传	let uploadList = ref([])	// 上传文件操作	async function afterRead(event) {		let lists = [].concat(event.file);		let fileListLen = uploadList.value.length;		lists.map((item) => {			uploadList.value.push({				...item,				status: 'uploading',				message: '上传中'			})		})		for (let i = 0; i < lists.length; i++) {			const resultObj = await uploadFilePromise(lists[i].url);			// let resultObj = JSON.parse(result);			// 给表单赋值			pageForm.value.file_name = resultObj.data.resultList[0].name;			pageForm.value.file_addre = resultObj.data.resultList[0].id;			pageForm.value.file_type = resultObj.data.resultList[0].ftype			// 取消上传中状态			let item = uploadList.value[fileListLen]			uploadList.value.splice(fileListLen, 1, Object.assign(item, {				status: 'success',				message: '',				url: resultObj.data.resultList[0].pathName			}))			fileListLen++		}	}	// 删除文件	function delFile(event) {		uploadList.value.splice(event.index, 1);		pageForm.value.file_name = null;		pageForm.value.file_addre = null;		pageForm.value.file_type = null;	}	// ====================提交数据	function confirmParams() {		let kind_sourceid = sourceChooseList.value.find(item => item.title === pageForm.value.source)?.id;		let kind_typeid = kindChooseList.value.find(item => item.title === pageForm.value.kind)?.id;		let date_conf = pageForm.value.date_conf ? pageForm.value.date_conf.replaceAll("/", "-") : null		let params = {			kind_sourceid,			kind_typeid,			date_conf,			sub_id: pageForm.value.id,			title: pageForm.value.title,			file_name: pageForm.value.file_name,			file_addre: pageForm.value.file_addre,			file_type: pageForm.value.file_type,		}		saveQuestionInputById(params).then(res => {			if (res.success) {				uni.showToast({					title: "提交成功。",					icon: "success",					duration: 2000				})			}		})	}	onLoad(options => {		let now = new Date()		date_conf.value = timeFormat(now)		getQuestionDetail(options)	})</script><style lang="scss">	::v-deep .u-upload__button {		margin-left: 30rpx;		background-color: #EAF0FA;		border-radius: 20rpx;	}</style>
 |