页面修改
This commit is contained in:
parent
eca744e099
commit
dcf5a1a22f
15
api/task.js
15
api/task.js
@ -97,4 +97,19 @@ export const commit_town_service_manager_task_6API = (data) => oahttp.post('/tas
|
||||
* 促成村联络人员入股
|
||||
*/
|
||||
export const commit_town_master_task_6API = (data) => oahttp.post('/task/commit_town_master_task_6',
|
||||
data)
|
||||
/**
|
||||
* 应用软件推广
|
||||
*/
|
||||
export const commit_town_master_task_type_2API = (data) => oahttp.post('/task/commit_town_master_task_type_2',
|
||||
data)
|
||||
/**
|
||||
* 应用软件推广
|
||||
*/
|
||||
export const commit_town_master_task_type_7API = (data) => oahttp.post('/task/commit_town_master_task_type_7',
|
||||
data)
|
||||
/**
|
||||
* 应用软件推广
|
||||
*/
|
||||
export const commit_town_master_task_type_8API = (data) => oahttp.post('/task/commit_town_master_task_type_8',
|
||||
data)
|
@ -145,11 +145,10 @@
|
||||
"village_task_type_7",
|
||||
], // 村管理跳转/subpkg/townTask/townTask的任务 1
|
||||
navToVillageListA: [
|
||||
"town_task_type_master_2",
|
||||
"town_task_type_master_4",
|
||||
"town_task_type_master_5",
|
||||
"town_task_type_master_7",
|
||||
"town_task_type_master_8"
|
||||
// "",
|
||||
|
||||
], // 村管理跳转/subpkg/townTask/townTask的任务 1
|
||||
navToList: ["village_task_type_4", "village_task_type_5", "town_task_type_6", "town_task_type_master_6", ],
|
||||
|
||||
@ -243,9 +242,24 @@
|
||||
case "village_task_type_8":
|
||||
this.navTo(`/subpkg/townTask/villageTask6?task_id=${this.$props.datas?.id}`);
|
||||
break;
|
||||
case "town_task_type_master_2":
|
||||
this.navTo(
|
||||
`/subpkg/townTask/villageTask6?task_id=${this.$props.datas?.id}&type_value=${this.$props.datas.task_type_value}`
|
||||
);
|
||||
break;
|
||||
case "town_task_type_master_3":
|
||||
this.navTo(`/subpkg/townTask/gatherRecords?task_id=${this.$props.datas?.id}`);
|
||||
break;
|
||||
case "town_task_type_master_7":
|
||||
this.navTo(
|
||||
`/subpkg/townTask/villageTask6?task_id=${this.$props.datas?.id}&type_value=${this.$props.datas.task_type_value}`
|
||||
);
|
||||
break;
|
||||
case "town_task_type_master_8":
|
||||
this.navTo(
|
||||
`/subpkg/townTask/villageTask6?task_id=${this.$props.datas?.id}&type_value=${this.$props.datas.task_type_value}`
|
||||
);
|
||||
break;
|
||||
default:
|
||||
this.navTo('');
|
||||
break;
|
||||
|
@ -5,7 +5,7 @@
|
||||
lineWidth='100' inactiveStyle='color:white' activeStyle="color:white"></u-tabs>
|
||||
<view class="" style="height: 20rpx;">
|
||||
</view>
|
||||
<view class="card" v-for="(item,index) in gatherList" :key="item.id" v-if="page==1&&item.planting"
|
||||
<view class="card" v-for="(item,index) in gatherList.planting" :key="item.id" v-if="page==1"
|
||||
@click="navgo(`/subpkg/townTask/townGather?type=plant&task_id=${task_id}&index=${index}`)">
|
||||
|
||||
<view class="card_head">
|
||||
@ -18,14 +18,14 @@
|
||||
</view>
|
||||
<view class="card_content">
|
||||
<view class="" style="margin-bottom: 20rpx;">
|
||||
法人姓名: {{item.planting[0].entityName}}
|
||||
法人姓名: {{item.entityName}}
|
||||
</view>
|
||||
<view class="">
|
||||
联系电话: {{item.planting[0].phone}}
|
||||
联系电话: {{item.phone}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="card" v-for="(item,index) in gatherList" :key="index" v-if="page==2&&item.supply"
|
||||
<view class="card" v-for="(item,index) in gatherList.supply" :key="index" v-if="page==2"
|
||||
@click="navgo(`/subpkg/townTask/townGather?type=supply&task_id=${task_id}&index=${index}`)">
|
||||
<view class="card_head">
|
||||
<view class="">
|
||||
@ -37,10 +37,10 @@
|
||||
</view>
|
||||
<view class="card_content">
|
||||
<view class="" style="margin-bottom: 20rpx;">
|
||||
店主姓名: {{item.supply[0].storeName}}
|
||||
店主姓名: {{item.storeName}}
|
||||
</view>
|
||||
<view class="">
|
||||
联系电话: {{item.supply[0].shopkeeperPhone}}
|
||||
联系电话: {{item.shopkeeperPhone}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -72,7 +72,7 @@
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
gatherList: [],
|
||||
gatherList: {},
|
||||
page: 1,
|
||||
task_id: "",
|
||||
tabLists: [{
|
||||
|
@ -381,6 +381,7 @@
|
||||
taskId: "",
|
||||
readonly: false,
|
||||
landPlanList: ['自己养', '出租', '代养', '租更多地扩大养殖'],
|
||||
pas_Info: {},
|
||||
breedingTypeList: [{
|
||||
id: 1,
|
||||
name: "水产"
|
||||
@ -460,23 +461,37 @@
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
|
||||
|
||||
this.taskId = option.task_id
|
||||
if (option.type == 'supply') this.page = 0
|
||||
if (option.index) {
|
||||
townMasterTask3List({
|
||||
id: option.task_id
|
||||
}).then(res => {
|
||||
|
||||
townMasterTask3List({
|
||||
id: option.task_id
|
||||
}).then(res => {
|
||||
this.pas_Info = res.data.template_info.extend.purchase_sales_info
|
||||
if (option.index) {
|
||||
this.readonly = true
|
||||
this.flag = true
|
||||
console.log(option, 6464)
|
||||
if (option.type == 'supply') {
|
||||
this.formData1 = res.data.template_info.extend.purchase_sales_info[option.index]?.supply[0]
|
||||
this.formData1 = this.pas_Info.supply[option.index]
|
||||
} else {
|
||||
this.formData = res.data.template_info.extend.purchase_sales_info[option.index]?.planting[
|
||||
0]
|
||||
this.formData = this.pas_Info.planting[option.index]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// if (option.type == 'supply') {
|
||||
// this.formData1 = res.data.template_info.extend.purchase_sales_info[option.index]?.supply[0]
|
||||
// } else {
|
||||
// this.formData = res.data.template_info.extend.purchase_sales_info[option.index]?.planting[
|
||||
// 0]
|
||||
// }
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// }
|
||||
this.flag = true
|
||||
@ -580,26 +595,20 @@
|
||||
this.formData[data.value] = e.detail.value;
|
||||
},
|
||||
async commit() {
|
||||
|
||||
if (this.page) {
|
||||
this.pas_Info.planting.push(this.formData)
|
||||
|
||||
await townMasterTask3Commit({
|
||||
id: Number(this.taskId),
|
||||
purchase_sales_info: {
|
||||
planting: [{
|
||||
...this.formData
|
||||
}],
|
||||
|
||||
}
|
||||
purchase_sales_info: this.pas_Info
|
||||
})
|
||||
|
||||
|
||||
} else {
|
||||
this.pas_Info.supply.push(this.formData1)
|
||||
await townMasterTask3Commit({
|
||||
id: Number(this.taskId),
|
||||
purchase_sales_info: {
|
||||
supply: [{
|
||||
...this.formData1
|
||||
}],
|
||||
}
|
||||
purchase_sales_info: this.pas_Info
|
||||
})
|
||||
}
|
||||
Toast("操作成功")
|
||||
|
@ -1,401 +1,444 @@
|
||||
<template>
|
||||
<view style="padding-top: 28rpx;padding-bottom: 160rpx;">
|
||||
<view class="card">
|
||||
<view class="title">任务名称: {{taskInfo.title}}</view>
|
||||
<view>{{taskInfo.content||''}}</view>
|
||||
</view>
|
||||
<view class="card">
|
||||
<view class="title">任务描述</view>
|
||||
<u-line style="margin: 14rpx 0;"></u-line>
|
||||
<view class="text">{{taskInfo.content}}</view>
|
||||
</view>
|
||||
<view class="card" v-if="approve_status==3">
|
||||
<view class="title" style="color: #FF7C32;">驳回提示</view>
|
||||
<u-line style="margin: 14rpx 0;"></u-line>
|
||||
<view class="text" style="color: #FF7C32;">{{deny_notes}}</view>
|
||||
<button v-if="other.is_commit==1" class="btn" @click="toUpdate">去修改</button>
|
||||
</view>
|
||||
<view class="card">
|
||||
<!-- 图片 -->
|
||||
<view class="title" style="margin-bottom: 16rpx;">图片凭证</view>
|
||||
<view class="file">
|
||||
<view class="file_item" v-for="(item, index) in fileList" :key="'file'+index">
|
||||
<image class="image" :src="item" @click="priview(index)"></image>
|
||||
<image v-if="!other.is_commit" class="del" src="/static/icons/delete.png" @click.stop="deleteFile(index)">
|
||||
</image>
|
||||
</view>
|
||||
<view v-if="!other.is_commit && this.fileList.length<9" class="file_btn" @click="chooseFile">
|
||||
<image src="/static/icons/plus.png"></image>
|
||||
</view>
|
||||
<view class="file_empty" v-for="k in placeholderLength" :key="'empty'+k"></view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="card">
|
||||
<!-- 视频 -->
|
||||
<view class="title" style="margin-bottom: 16rpx;">视频凭证</view>
|
||||
<view class="file">
|
||||
<view class="file_item" v-for="(item, index) in videoList" :key="'file_v'+index">
|
||||
<image class="image" src="/static/img/task/video_bg.png" @click="videoshow(item)"></image>
|
||||
<image v-if="!other.is_commit" class="del" src="/static/icons/delete.png"
|
||||
@click.stop="deleteFile(index, 'video')">
|
||||
</image>
|
||||
</view>
|
||||
<view v-if="!other.is_commit && this.videoList.length<9" class="file_btn" @click="chooseVideo">
|
||||
<image src="/static/icons/plus.png"></image>
|
||||
</view>
|
||||
<view class="file_empty" v-for="k in placeholderLengthVideo" :key="'empty_v'+k"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="card">
|
||||
<view class="title" style="margin-bottom: 16rpx;">补充说明</view>
|
||||
<u--textarea :disabled="other.is_commit==1" v-model="note" placeholder="请输入内容"
|
||||
placeholderStyle="font-size: 22rpx;" style="font-size: 28rpx;background-color: #eee;min-height: 100px;"
|
||||
autoHeight maxlength="-1"></u--textarea>
|
||||
</view>
|
||||
<!-- <mybtn text="确认提交" @click="$u.throttle(submit, 1500)"></mybtn> -->
|
||||
<mybtn v-if="!other.is_commit" text="确认提交" @click="$u.throttle(submit, 1500)"></mybtn>
|
||||
<mybtn v-else-if="taskInfo.status==3" text="已完成" :my_btn_disabled="true" @click="showToast('任务已完成')"></mybtn>
|
||||
<mybtn v-else-if="taskInfo.status==5" text="已关闭" :my_btn_disabled="true" @click="showToast('任务已关闭!')"></mybtn>
|
||||
<mybtn v-else-if="approve_status==3" text="已驳回,请重新提交" @click="toUpdate"></mybtn>
|
||||
<mybtn v-else text="已提交,请等待审核" :my_btn_disabled="true" @click="showToast('请耐心等待审核结果')"></mybtn>
|
||||
<!--视频预览弹窗-->
|
||||
<view v-if="show_video" class="video-count">
|
||||
<video id="myVideo" class="videoLink" autoplay loop muted show-mute-btn enable-play-gesture
|
||||
vslide-gesture-in-fullscreen :src="video_src"></video>
|
||||
</view>
|
||||
<view class='mask' catchtouchmove="true" :hidden='show_video==false' @tap="show_video=false"></view>
|
||||
</view>
|
||||
<view style="padding-top: 28rpx;padding-bottom: 160rpx;">
|
||||
<view class="card">
|
||||
<view class="title">任务名称: {{taskInfo.title}}</view>
|
||||
<view>{{taskInfo.content||''}}</view>
|
||||
</view>
|
||||
<view class="card">
|
||||
<view class="title">任务描述</view>
|
||||
<u-line style="margin: 14rpx 0;"></u-line>
|
||||
<view class="text">{{taskInfo.content}}</view>
|
||||
</view>
|
||||
<view class="card" v-if="approve_status==3">
|
||||
<view class="title" style="color: #FF7C32;">驳回提示</view>
|
||||
<u-line style="margin: 14rpx 0;"></u-line>
|
||||
<view class="text" style="color: #FF7C32;">{{deny_notes}}</view>
|
||||
<button v-if="other.is_commit==1" class="btn" @click="toUpdate">去修改</button>
|
||||
</view>
|
||||
<view class="card">
|
||||
<!-- 图片 -->
|
||||
<view class="title" style="margin-bottom: 16rpx;">图片凭证</view>
|
||||
<view class="file">
|
||||
<view class="file_item" v-for="(item, index) in fileList" :key="'file'+index">
|
||||
<image class="image" :src="item" @click="priview(index)"></image>
|
||||
<image v-if="!other.is_commit" class="del" src="/static/icons/delete.png"
|
||||
@click.stop="deleteFile(index)">
|
||||
</image>
|
||||
</view>
|
||||
<view v-if="!other.is_commit && this.fileList.length<9" class="file_btn" @click="chooseFile">
|
||||
<image src="/static/icons/plus.png"></image>
|
||||
</view>
|
||||
<view class="file_empty" v-for="k in placeholderLength" :key="'empty'+k"></view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="card">
|
||||
<!-- 视频 -->
|
||||
<view class="title" style="margin-bottom: 16rpx;">视频凭证</view>
|
||||
<view class="file">
|
||||
<view class="file_item" v-for="(item, index) in videoList" :key="'file_v'+index">
|
||||
<image class="image" src="/static/img/task/video_bg.png" @click="videoshow(item)"></image>
|
||||
<image v-if="!other.is_commit" class="del" src="/static/icons/delete.png"
|
||||
@click.stop="deleteFile(index, 'video')">
|
||||
</image>
|
||||
</view>
|
||||
<view v-if="!other.is_commit && this.videoList.length<9" class="file_btn" @click="chooseVideo">
|
||||
<image src="/static/icons/plus.png"></image>
|
||||
</view>
|
||||
<view class="file_empty" v-for="k in placeholderLengthVideo" :key="'empty_v'+k"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="card">
|
||||
<view class="title" style="margin-bottom: 16rpx;">补充说明</view>
|
||||
<u--textarea :disabled="other.is_commit==1" v-model="note" placeholder="请输入内容"
|
||||
placeholderStyle="font-size: 22rpx;" style="font-size: 28rpx;background-color: #eee;min-height: 100px;"
|
||||
autoHeight maxlength="-1"></u--textarea>
|
||||
</view>
|
||||
<!-- <mybtn text="确认提交" @click="$u.throttle(submit, 1500)"></mybtn> -->
|
||||
<mybtn v-if="!other.is_commit" text="确认提交" @click="$u.throttle(submit, 1500)"></mybtn>
|
||||
<mybtn v-else-if="taskInfo.status==3" text="已完成" :my_btn_disabled="true" @click="showToast('任务已完成')"></mybtn>
|
||||
<mybtn v-else-if="taskInfo.status==5" text="已关闭" :my_btn_disabled="true" @click="showToast('任务已关闭!')"></mybtn>
|
||||
<mybtn v-else-if="approve_status==3" text="已驳回,请重新提交" @click="toUpdate"></mybtn>
|
||||
<mybtn v-else text="已提交,请等待审核" :my_btn_disabled="true" @click="showToast('请耐心等待审核结果')"></mybtn>
|
||||
<!--视频预览弹窗-->
|
||||
<view v-if="show_video" class="video-count">
|
||||
<video id="myVideo" class="videoLink" autoplay loop muted show-mute-btn enable-play-gesture
|
||||
vslide-gesture-in-fullscreen :src="video_src"></video>
|
||||
</view>
|
||||
<view class='mask' catchtouchmove="true" :hidden='show_video==false' @tap="show_video=false"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
upLoadImage,
|
||||
VIDEO_URL
|
||||
} from "@/api/file.js"
|
||||
import {
|
||||
taskOtherTaskDetail,
|
||||
taskOtherTaskCommit,
|
||||
villageTask6Commit
|
||||
} from "@/api/task.js"
|
||||
import { Toast } from "../../libs/uniApi";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
task_id: -1,
|
||||
taskInfo: {},
|
||||
approve_status: 0, // 审核状态: 1待审核,2已通过,3已驳回
|
||||
deny_notes: '', // 驳回提示
|
||||
other: {
|
||||
annex: [], // 图片列表
|
||||
is_commit: 0, // 是否提交
|
||||
note: "", // 详情描述
|
||||
video_annex: [] // 视频列表
|
||||
},
|
||||
list1: [{
|
||||
name: '图片',
|
||||
}, {
|
||||
name: '视频',
|
||||
}],
|
||||
current: 0,
|
||||
note: '',
|
||||
fileList: [],
|
||||
videoList: [],
|
||||
video_src: '',
|
||||
show_video: false
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.task_id = options.task_id;
|
||||
this.initDetail();
|
||||
},
|
||||
computed: {
|
||||
// 占位长度
|
||||
placeholderLength() {
|
||||
if(this.fileList.length==9)return 0;
|
||||
if (this.other.is_commit == 1) return this.fileList.length % 3 == 0 ? 0 : 3 - this.fileList.length % 3;
|
||||
return (this.fileList.length + 1) % 3 == 0 ? 0 : 3 - (this.fileList.length + 1) % 3;
|
||||
},
|
||||
placeholderLengthVideo() {
|
||||
if(this.videoList.length==9)return 0;
|
||||
if (this.other.is_commit == 1) return this.videoList.length % 3 == 0 ? 0 : 3 - this.videoList.length % 3;
|
||||
return (this.videoList.length + 1) % 3 == 0 ? 0 : 3 - (this.videoList.length + 1) % 3;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 初始化
|
||||
initDetail() {
|
||||
taskOtherTaskDetail({ id: this.task_id }).then((res) => {
|
||||
this.taskInfo = res.data;
|
||||
this.other = JSON.parse(JSON.stringify(res.data?.extend?.other||{})); // 深拷贝
|
||||
this.approve_status = res.data?.approve_status;
|
||||
this.deny_notes = res.data?.deny_notes;
|
||||
res.data?.extend?.other?.note ? this.note = res.data?.extend?.other?.note : null;
|
||||
res.data?.extend?.other?.annex ? this.fileList = res.data?.extend?.other?.annex : null;
|
||||
res.data?.extend?.other?.video_annex ? this.videoList = res.data?.extend?.other?.video_annex : null;
|
||||
// this.other.is_commit = 0;
|
||||
})
|
||||
},
|
||||
// 被驳回时点击重新修改
|
||||
toUpdate() {
|
||||
this.other.is_commit = 0;
|
||||
},
|
||||
// 判断内容是否更改, 返回true代表更改
|
||||
isReject(){
|
||||
if (this.approve_status == 3) { // 被驳回,重新提交需要修改内容后方可提交
|
||||
let other = {
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
}
|
||||
let flag = true;
|
||||
if(JSON.stringify(other)==JSON.stringify({
|
||||
note: this.other.note,
|
||||
annex: this.other.annex,
|
||||
video_annex: this.other.video_annex
|
||||
})) flag = false;
|
||||
if (!flag) {
|
||||
Toast('未检测到您的修改,请修改后提交')
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
else return true;
|
||||
},
|
||||
// 提交
|
||||
async submit() {
|
||||
if(!this.isReject())return; // 判断是否进行更改
|
||||
if (this.note.trim() == '') return Toast('详情描述不能为空');
|
||||
await villageTask6Commit({
|
||||
id: this.task_id,
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
});
|
||||
this.other.is_commit = 1;
|
||||
this.approve_status = 1;
|
||||
Toast('提交成功');
|
||||
this.$u.sleep(500).then(()=>{
|
||||
uni.navigateBack()
|
||||
})
|
||||
},
|
||||
clickTabs(item) {
|
||||
this.current = item.index;
|
||||
},
|
||||
showToast(str) {
|
||||
Toast(str)
|
||||
},
|
||||
chooseFile() {
|
||||
uni.chooseImage({
|
||||
sizeType: ['compressed'],
|
||||
success: async (res) => {
|
||||
for (let item of res.tempFiles) {
|
||||
let ul = await upLoadImage({
|
||||
filePath: item.path,
|
||||
name: 'file'
|
||||
});
|
||||
this.fileList.push(ul.data.uri);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
chooseVideo() {
|
||||
uni.chooseVideo({
|
||||
sourceType: ['album', 'camera'], // 视频选择的来源,可以是相册或摄像头
|
||||
maxDuration: 60, // 视频最大时长,单位秒
|
||||
success: (res) => {
|
||||
const video = res.tempFilePath;
|
||||
let timer;
|
||||
let title = '上传中';
|
||||
timer = setInterval(() => {
|
||||
uni.showLoading({
|
||||
title: title
|
||||
})
|
||||
}, 1000)
|
||||
// 上传视频文件
|
||||
let uploadTask = uni.uploadFile({
|
||||
url: VIDEO_URL,
|
||||
filePath: video,
|
||||
name: 'file',
|
||||
header: {
|
||||
token: this.$store.state.app.token
|
||||
},
|
||||
success: (uploadFileRes) => {
|
||||
clearInterval(timer);
|
||||
uni.hideLoading();
|
||||
uploadFileRes.data = JSON.parse(uploadFileRes.data)
|
||||
if (uploadFileRes.data.code == 1) {
|
||||
this.videoList.push(uploadFileRes.data.data.uri)
|
||||
} else Toast('网络错误')
|
||||
},
|
||||
fail: (err) => {
|
||||
clearInterval(timer);
|
||||
uni.hideLoading();
|
||||
Toast('网络错误')
|
||||
}
|
||||
})
|
||||
uploadTask.onProgressUpdate((fileRes) => {
|
||||
title = `上传中...${fileRes.progress}%`;
|
||||
})
|
||||
},
|
||||
fail() {
|
||||
Toast('用户取消上传')
|
||||
}
|
||||
});
|
||||
},
|
||||
priview(index) {
|
||||
uni.previewImage({
|
||||
urls: this.fileList,
|
||||
current: index,
|
||||
longPressActions: {
|
||||
itemList: ['删除'],
|
||||
itemColor: '#ff0000',
|
||||
success(e) {
|
||||
if (e.tapIndex == 0) this.deleteFile(e.index);
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
/*查看视频*/
|
||||
videoshow(src) {
|
||||
this.video_src = src;
|
||||
this.show_video = true;
|
||||
this.$nextTick(() => {
|
||||
this.videoContext = uni.createVideoContext('myVideo', this);
|
||||
this.videoContext.play();
|
||||
})
|
||||
},
|
||||
// 删除已上传文件
|
||||
deleteFile(index, type = 'image') {
|
||||
if (type == 'image') this.fileList.splice(index, 1);
|
||||
else if (type == 'video') this.videoList.splice(index, 1);
|
||||
},
|
||||
navTo(url) {
|
||||
if (url) {
|
||||
uni.showLoading({
|
||||
title: '加载中',
|
||||
mask: true
|
||||
});
|
||||
uni.navigateTo({
|
||||
url: url,
|
||||
success() {
|
||||
uni.hideLoading()
|
||||
}
|
||||
})
|
||||
} else Toast('暂未开放')
|
||||
},
|
||||
}
|
||||
}
|
||||
import {
|
||||
upLoadImage,
|
||||
VIDEO_URL
|
||||
} from "@/api/file.js"
|
||||
import {
|
||||
taskOtherTaskDetail,
|
||||
taskOtherTaskCommit,
|
||||
villageTask6Commit,
|
||||
commit_town_master_task_type_2API,
|
||||
commit_town_master_task_type_7API,
|
||||
commit_town_master_task_type_8API
|
||||
|
||||
} from "@/api/task.js"
|
||||
import {
|
||||
Toast
|
||||
} from "../../libs/uniApi";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
task_id: -1,
|
||||
taskInfo: {},
|
||||
approve_status: 0, // 审核状态: 1待审核,2已通过,3已驳回
|
||||
deny_notes: '', // 驳回提示
|
||||
other: {
|
||||
annex: [], // 图片列表
|
||||
is_commit: 0, // 是否提交
|
||||
note: "", // 详情描述
|
||||
video_annex: [] // 视频列表
|
||||
},
|
||||
list1: [{
|
||||
name: '图片',
|
||||
}, {
|
||||
name: '视频',
|
||||
}],
|
||||
current: 0,
|
||||
note: '',
|
||||
fileList: [],
|
||||
videoList: [],
|
||||
video_src: '',
|
||||
show_video: false,
|
||||
type_value: ""
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.task_id = options.task_id;
|
||||
this.type_value = options?.type_value || ""
|
||||
this.initDetail();
|
||||
},
|
||||
computed: {
|
||||
// 占位长度
|
||||
placeholderLength() {
|
||||
if (this.fileList.length == 9) return 0;
|
||||
if (this.other.is_commit == 1) return this.fileList.length % 3 == 0 ? 0 : 3 - this.fileList.length % 3;
|
||||
return (this.fileList.length + 1) % 3 == 0 ? 0 : 3 - (this.fileList.length + 1) % 3;
|
||||
},
|
||||
placeholderLengthVideo() {
|
||||
if (this.videoList.length == 9) return 0;
|
||||
if (this.other.is_commit == 1) return this.videoList.length % 3 == 0 ? 0 : 3 - this.videoList.length % 3;
|
||||
return (this.videoList.length + 1) % 3 == 0 ? 0 : 3 - (this.videoList.length + 1) % 3;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 初始化
|
||||
initDetail() {
|
||||
taskOtherTaskDetail({
|
||||
id: this.task_id
|
||||
}).then((res) => {
|
||||
this.taskInfo = res.data;
|
||||
this.other = JSON.parse(JSON.stringify(res.data?.extend?.other || {})); // 深拷贝
|
||||
this.approve_status = res.data?.approve_status;
|
||||
this.deny_notes = res.data?.deny_notes;
|
||||
res.data?.extend?.other?.note ? this.note = res.data?.extend?.other?.note : null;
|
||||
res.data?.extend?.other?.annex ? this.fileList = res.data?.extend?.other?.annex : null;
|
||||
res.data?.extend?.other?.video_annex ? this.videoList = res.data?.extend?.other?.video_annex :
|
||||
null;
|
||||
// this.other.is_commit = 0;
|
||||
})
|
||||
},
|
||||
// 被驳回时点击重新修改
|
||||
toUpdate() {
|
||||
this.other.is_commit = 0;
|
||||
},
|
||||
// 判断内容是否更改, 返回true代表更改
|
||||
isReject() {
|
||||
if (this.approve_status == 3) { // 被驳回,重新提交需要修改内容后方可提交
|
||||
let other = {
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
}
|
||||
let flag = true;
|
||||
if (JSON.stringify(other) == JSON.stringify({
|
||||
note: this.other.note,
|
||||
annex: this.other.annex,
|
||||
video_annex: this.other.video_annex
|
||||
})) flag = false;
|
||||
if (!flag) {
|
||||
Toast('未检测到您的修改,请修改后提交')
|
||||
}
|
||||
return flag;
|
||||
} else return true;
|
||||
},
|
||||
// 提交
|
||||
async submit() {
|
||||
if (!this.isReject()) return; // 判断是否进行更改
|
||||
if (this.note.trim() == '') return Toast('详情描述不能为空');
|
||||
if (this.type_value == 'town_task_type_master_2') {
|
||||
await commit_town_master_task_type_2API({
|
||||
id: this.task_id,
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
});
|
||||
|
||||
}
|
||||
if (this.type_value == 'town_task_type_master_7') {
|
||||
await commit_town_master_task_type_7API({
|
||||
id: this.task_id,
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
});
|
||||
|
||||
}
|
||||
if (this.type_value == 'town_task_type_master_8') {
|
||||
|
||||
await commit_town_master_task_type_8API({
|
||||
id: this.task_id,
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
});
|
||||
|
||||
} else {
|
||||
await villageTask6Commit({
|
||||
id: this.task_id,
|
||||
note: this.note,
|
||||
annex: this.fileList,
|
||||
video_annex: this.videoList
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.other.is_commit = 1;
|
||||
this.approve_status = 1;
|
||||
Toast('提交成功');
|
||||
this.$u.sleep(500).then(() => {
|
||||
uni.navigateBack()
|
||||
})
|
||||
},
|
||||
clickTabs(item) {
|
||||
this.current = item.index;
|
||||
},
|
||||
showToast(str) {
|
||||
Toast(str)
|
||||
},
|
||||
chooseFile() {
|
||||
uni.chooseImage({
|
||||
sizeType: ['compressed'],
|
||||
success: async (res) => {
|
||||
for (let item of res.tempFiles) {
|
||||
let ul = await upLoadImage({
|
||||
filePath: item.path,
|
||||
name: 'file'
|
||||
});
|
||||
this.fileList.push(ul.data.uri);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
chooseVideo() {
|
||||
uni.chooseVideo({
|
||||
sourceType: ['album', 'camera'], // 视频选择的来源,可以是相册或摄像头
|
||||
maxDuration: 60, // 视频最大时长,单位秒
|
||||
success: (res) => {
|
||||
const video = res.tempFilePath;
|
||||
let timer;
|
||||
let title = '上传中';
|
||||
timer = setInterval(() => {
|
||||
uni.showLoading({
|
||||
title: title
|
||||
})
|
||||
}, 1000)
|
||||
// 上传视频文件
|
||||
let uploadTask = uni.uploadFile({
|
||||
url: VIDEO_URL,
|
||||
filePath: video,
|
||||
name: 'file',
|
||||
header: {
|
||||
token: this.$store.state.app.token
|
||||
},
|
||||
success: (uploadFileRes) => {
|
||||
clearInterval(timer);
|
||||
uni.hideLoading();
|
||||
uploadFileRes.data = JSON.parse(uploadFileRes.data)
|
||||
if (uploadFileRes.data.code == 1) {
|
||||
this.videoList.push(uploadFileRes.data.data.uri)
|
||||
} else Toast('网络错误')
|
||||
},
|
||||
fail: (err) => {
|
||||
clearInterval(timer);
|
||||
uni.hideLoading();
|
||||
Toast('网络错误')
|
||||
}
|
||||
})
|
||||
uploadTask.onProgressUpdate((fileRes) => {
|
||||
title = `上传中...${fileRes.progress}%`;
|
||||
})
|
||||
},
|
||||
fail() {
|
||||
Toast('用户取消上传')
|
||||
}
|
||||
});
|
||||
},
|
||||
priview(index) {
|
||||
uni.previewImage({
|
||||
urls: this.fileList,
|
||||
current: index,
|
||||
longPressActions: {
|
||||
itemList: ['删除'],
|
||||
itemColor: '#ff0000',
|
||||
success(e) {
|
||||
if (e.tapIndex == 0) this.deleteFile(e.index);
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
/*查看视频*/
|
||||
videoshow(src) {
|
||||
this.video_src = src;
|
||||
this.show_video = true;
|
||||
this.$nextTick(() => {
|
||||
this.videoContext = uni.createVideoContext('myVideo', this);
|
||||
this.videoContext.play();
|
||||
})
|
||||
},
|
||||
// 删除已上传文件
|
||||
deleteFile(index, type = 'image') {
|
||||
if (type == 'image') this.fileList.splice(index, 1);
|
||||
else if (type == 'video') this.videoList.splice(index, 1);
|
||||
},
|
||||
navTo(url) {
|
||||
if (url) {
|
||||
uni.showLoading({
|
||||
title: '加载中',
|
||||
mask: true
|
||||
});
|
||||
uni.navigateTo({
|
||||
url: url,
|
||||
success() {
|
||||
uni.hideLoading()
|
||||
}
|
||||
})
|
||||
} else Toast('暂未开放')
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
::v-deep .u-tabs__wrapper__nav__item__text {
|
||||
font-size: 28rpx !important;
|
||||
}
|
||||
::v-deep .u-tabs__wrapper__nav__item__text {
|
||||
font-size: 28rpx !important;
|
||||
}
|
||||
|
||||
.video-count {
|
||||
position: fixed;
|
||||
width: 600rpx;
|
||||
height: 500rpx;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -300rpx;
|
||||
margin-top: -250rpx;
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.video-count {
|
||||
position: fixed;
|
||||
width: 600rpx;
|
||||
height: 500rpx;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -300rpx;
|
||||
margin-top: -250rpx;
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.videoLink {
|
||||
width: 600rpx;
|
||||
height: 500rpx;
|
||||
}
|
||||
}
|
||||
.videoLink {
|
||||
width: 600rpx;
|
||||
height: 500rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 0 auto;
|
||||
margin-bottom: 28rpx;
|
||||
width: 694rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 14rpx;
|
||||
padding: 28rpx;
|
||||
.card {
|
||||
margin: 0 auto;
|
||||
margin-bottom: 28rpx;
|
||||
width: 694rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 14rpx;
|
||||
padding: 28rpx;
|
||||
|
||||
.title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333333;
|
||||
}
|
||||
.title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.text {
|
||||
line-height: 50rpx;
|
||||
}
|
||||
.text {
|
||||
line-height: 50rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background-color: $theme-oa-color;
|
||||
color: #FFFFFF;
|
||||
font-size: 28rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
.btn {
|
||||
background-color: $theme-oa-color;
|
||||
color: #FFFFFF;
|
||||
font-size: 28rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
.file {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
flex-wrap: wrap;
|
||||
.file {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
flex-wrap: wrap;
|
||||
|
||||
&_item {
|
||||
flex-shrink: 0;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 16rpx;
|
||||
border: 2px solid #ccc;
|
||||
border-radius: 10rpx;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
&_item {
|
||||
flex-shrink: 0;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 16rpx;
|
||||
border: 2px solid #ccc;
|
||||
border-radius: 10rpx;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
||||
.image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.del {
|
||||
position: absolute;
|
||||
height: 40rpx;
|
||||
width: 40rpx;
|
||||
top: 10rpx;
|
||||
right: 10rpx;
|
||||
}
|
||||
}
|
||||
.del {
|
||||
position: absolute;
|
||||
height: 40rpx;
|
||||
width: 40rpx;
|
||||
top: 10rpx;
|
||||
right: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
&_btn {
|
||||
flex-shrink: 0;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 16rpx;
|
||||
border: 2px solid #ccc;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
border-radius: 10rpx;
|
||||
&_btn {
|
||||
flex-shrink: 0;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 16rpx;
|
||||
border: 2px solid #ccc;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
border-radius: 10rpx;
|
||||
|
||||
image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
}
|
||||
}
|
||||
image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
}
|
||||
}
|
||||
|
||||
&_empty {
|
||||
flex-shrink: 0;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 16rpx;
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
}
|
||||
&_empty {
|
||||
flex-shrink: 0;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 16rpx;
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
x
Reference in New Issue
Block a user