软测宝小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
keysass_app/pages/index/testcrowdsourc/crowdsourcingdetails.vue

985 lines
30 KiB

<template>
<view v-if="crowddata" style="padding-bottom:70px;">
<view class="schedule" style="padding:25rpx 0">
<view style="margin:0 25rpx 36rpx 25rpx">
<view style="display:flex;font-size:35rpx;font-weight:bold;justify-content: space-between;">
<p style='color: #333333;'>{{crowddata.task.project_name}} </p>
<p v-if="crowddata.task.price == 0" style="color:#FD461A;">面议</p>
<p v-else style="color:#FD461A;">¥{{crowddata.task.price}}</p>
</view>
<view style="display:flex;margin-top:15px;flex-wrap: wrap;">
<view class='tabone' style="margin-right:8rpx">
<span v-if="crowddata.task.task_status==0">竞标中</span>
<span v-if="crowddata.task.task_status==1">竞标成功</span>
<span v-if="crowddata.task.task_status==2">竞标失败</span>
</view>
<view class='tabone' style="background: #E8EEF5;color:#525B65;margin-right: 8rpx;"
v-for="itema in findLabelValueByPropnew(tasktypelist, crowddata.task.test_type, 'dictValue', 'dictLabel').split(',')">
<span>
{{itema}}
</span>
</view>
<block v-if="crowddata.task.language">
<view class="tabone tabone1" v-for="it in crowddata.task.language.split(/[,、]/)" :key="it">
{{it}}
</view>
</block>
</view>
</view>
<u-line></u-line>
<view style="color:#808080;font-size: 24rpx;margin:36rpx 25rpx 0 25rpx">
<p style='margin-bottom:10px'>发布日期{{crowddata.task.create_time.slice(0,10)}}</p>
<p style='margin-bottom:10px'>需要人数{{crowddata.task.need_person}}</p>
<p style='margin-bottom:10px'>项目周期{{crowddata.task.period}}</p>
<p style='margin-bottom:10px'>驻场需求
<span v-if="crowddata.task.onsite_type==0"> 无需驻场</span>
<span v-if="crowddata.task.onsite_type==1"> 偶尔驻场</span>
<span v-if="crowddata.task.onsite_type==2"> 定期驻场</span>
</p>
<p style='margin-bottom:10px'>技能要求{{crowddata.task.tech_need}}</p>
<p style='margin-bottom:10px'>地域要求{{crowddata.task.area}}</p>
<p style='margin-bottom:10px'>有效天数{{crowddata.task.valid_days}}</p>
</view>
</view>
<view class="schedule">
<view style='display:flex;align-items: center;margin-bottom: 10px;'>
<view class='vertical'></view>
<view style="font-size: 15px;font-weight: bold;">需求描述</view>
</view>
<view v-if="crowddata.task.project_desc">
<!-- <div class="article-body" v-html='industryinform.content'></div> -->
<rich-text class="article-body"
:nodes="crowddata.task&&crowddata.task.project_desc | filtersRichText"></rich-text>
</view>
<p v-else style="color:#808080;line-height:23px;font-size: 24rpx;white-space:pre-line;"></p>
</view>
<view class="schedule">
<view style='display:flex;align-items: center;margin-bottom: 10px;'>
<view class='vertical'></view>
<view style="font-size: 15px;font-weight: bold;">联系方式</view>
</view>
<view style="color:#808080;font-size: 24rpx; ">
<p style='margin-bottom:10px'>联系人{{crowddata.task.contact_name}}</p>
<p style='margin-bottom:10px'>联系人{{crowddata.task.contact_tel}}</p>
</view>
</view>
<view class="schedule">
<view style='display:flex;align-items: center;margin-bottom: 10px;'>
<view class='vertical'></view>
<view style="font-size: 15px;font-weight: bold;">附件</view>
</view>
<view style='margin-bottom: 10px;'>
<!-- <div style='display:flex;align-items: center;margin-bottom: 10px;' v-if="crowddata.task.attachment&&crowddata.task.attachment.indexOf('/upload')>0">
<img style="width:17px;height:20px;margin-right:5px;" src="/static/crowd/upload.png" alt="" />
<p @click="openurl(crowddata.task.attachment)" style="color:#1578ED;font-size: 12px;cursor: pointer;">项目附件</p>
</div> -->
<template v-if="crowddata.task.attachment">
<div style='display:flex;align-items: center;margin-bottom: 10px;'
v-for="(it,index) in crowddata.task.attachment.split(',')">
<img style="width:17px;height:20px;margin-right:5px;" src="/static/crowd/upload.png" alt="" />
<p @click="openurl(it)" style="color:#1578ED;font-size: 12px;cursor: pointer;">项目附件{{index+1}}
</p>
</div>
</template>
<!-- -->
<p v-else style="color:#808080;font-size: 12px;">无</p>
<!-- <p style="color:#1578ED;font-size: 12px;">项目附件.zip</p> -->
</view>
</view>
<view class="schedule">
<view style='display:flex;align-items: center;margin-bottom: 10px;'>
<view class='vertical'></view>
<view style="font-size: 15px;font-weight: bold;">报名列表</view>
</view>
<view v-if="crowddata.entrants.length>0" style="display: flex;flex-wrap: wrap;">
<view v-for="(item,key) of crowddata.entrants" class="signst" @click="goUserDetail(item)">
<view v-if="item.avatar">
<img v-if="item.avatar.indexOf('http')==0" :src="item.avatar" alt="">
<img v-else :src="base+item.avatar" alt="" />
</view>
<img style="margin-bottom: 4px;" v-else src="../../../static/crowd/defaultAva.jpg" alt="" />
<p>{{item.nick_name.slice(0,1)}}**</p>
<view class="success" v-if="item.status != 0 && item.status != 2">
<image src="/static/index/success.png" mode=""></image>
竞标成功
</view>
<view class="success1" v-else>
</view>
</view>
</view>
<view v-else style="color: #808080;font-size: 12px;">
</view>
<!-- <img style="width:280px;height:50px;" src="/static/crowd/signlist.png" alt="" /> -->
</view>
<view class="schedule">
<view style='display:flex;align-items: center;margin-bottom: 10px;'>
<view class='vertical'></view>
<view style="font-size: 15px;font-weight: bold;">发布者信息</view>
</view>
<view style='display:flex;align-items: center;margin-bottom:15px;'>
<!-- <img style="width:50px;height:50px;margin-right:5px" src="/static/crowd/crowdlogo.png" alt="" /> -->
<img style="width:50px;height:50px;margin-right:5px;border-radius: 50%;" :src="crowddata.task.avatar"
alt="" @click="goCompanyInfo" />
<view>
<view style="display: flex;margin:5px 0;align-items: center;">
<p style="color:#4D4D4D ; font-size:13px ;font-weight: bold;">{{crowddata.task.company_name}}
</p>
</view>
<p class="ratebox" style="color:#808080;font-size:12px;align-items: center;">
<span>发包总数:</span>
<span style="color:#1578ED;">{{crowddata.task.publish_task_count}}</span>
<!-- <span style="color:#1578ED;">{{(crowddata.task.company_app_count + crowddata.task.personal_app_count) == 20 ? "已满":(crowddata.task.company_app_count + crowddata.task.personal_app_count)}}</span> -->
<span style="margin:0 6px"> l </span>
<block v-if="crowddata.task.commentsStar && crowddata.task.commentsStar != 0">
<span> 评分:</span>
<span style="color: #FA9C22;margin-right: 5rpx;">{{crowddata.task.commentsStar}}</span>
<u-rate :current="crowddata.task.commentsStar" :disabled="true" active-color="#fa9c22"
inactive-color="#CDCECE"></u-rate>
</block>
<span v-else>暂无评价</span>
</p>
</view>
</view>
<view style='margin-bottom:10px;font-size: 24rpx;'>
<span style="color:#4D4D4D">公司简介:</span>
<span style="color:#808080;line-height:23px;">{{crowddata.task.company_desc}}</span>
</view>
</view>
<view v-if='type==1' class="schedule" style="margin: 12px 3vw 25px 3vw;">
<view style='display:flex;align-items: center;margin-bottom: 10px;'>
<view class='vertical'></view>
<view style="font-size: 15px;font-weight: bold;">竞标方案</view>
</view>
<div v-if="userprogramme && userprogramme.period"
style="font-size: 14px;text-align:left;color: #333333;margin:10px 0px;line-height:25px;">
<p>竞标日期:{{userprogramme.apply_time?userprogramme.apply_time.slice(0,10):'无'}}</p>
<p>竞标工期:{{userprogramme.period?userprogramme.period+'天':'无'}}</p>
<p>竞标优势:{{userprogramme.competition_edge?userprogramme.competition_edge:'无'}}</p>
<p>竞标附件:
<span @click="openurl(userprogramme.attachment)" v-if="userprogramme.attachment"
style="color:#1578ED;cursor: pointer;">项目附件</span>
<span v-else style="margin-left: -3px">无</span>
</p>
</div>
</view>
<view class="submitt" v-if="crowddata.task.task_status == 0">
<!-- style="letter-spacing:0.5rem" -->
<view v-if='type==1' class="button-g"
style="width:100%;margin-left:0;border-radius: 10px;background: #909399;">
<p>已竞标</p>
</view>
<view v-else class="button-g" style="width:100%;margin-left:0;border-radius: 10px;" @click="application">
<p>竞标报名</p>
</view>
</view>
<view class="submitt" v-else>
<!-- style="letter-spacing:0.5rem" -->
<view class="button-g" style="width:100%;margin-left:0;border-radius: 10px;background: #A8Aeb6;">
<p>报名结束</p>
</view>
</view>
<u-popup v-model="isPopupShow" @close="close" @open="open" mode="bottom" length="80%" height='350px'
border-radius="15" :closeable='true' :mask-close-able="false">
<!-- <view class='peodi'>
<u-icon name="error-circle-fill" color="#FE5517" size="35"></u-icon>
<span class="poptext">确定要竞标此众包任务吗?</span>
</view> -->
<view style="background:#66666;padding:20px 0px 30px 10px; ">
<view class='peodi'>提交竞标方案</view>
<u-line></u-line>
<view class="sinput">
<p style="color:#fa3534;margin-right:3px">* </p>
<img src="/static/crowd/commny.png" alt="">
<view style="display: flex;align-items: center;">
<u-input v-model="biddingobj.period" placeholder='请输入预算周期' borrder="true" />
<span style="margin-left:5px;">天</span>
</view>
</view>
<view class="sinputrt">
<p style="color:#fa3534;margin-right:3px">* </p>
<img src="/static/crowd/like.png" alt="">
<u-input v-model="biddingobj.competitionEdge" placeholder='请输入竞标优势...' type="textarea"
auto-height="true" />
</view>
<!-- <view class="sinput" style="align-items: baseline;margin:20px 0 50px 0;">
<img src="/static/crowd/fjupload.png" alt="">
<u-upload ref="upload" width='100px' height='100px'
max-count="1"
:action="action"
:header="headers"
:auto-upload="true"
:custom-btn="true"
:show-progress="false"
:limitType='typeupload'
:deletable="true"
:file-list="biddingobj.attachment"
@on-success="(data,index,lists) => {fielUploadSuc(data,index,lists) }"
@on-remove="(index, lists, name)=>{deleteUpfile(index)}"
@on-error="(data,index, lists)=>{errorUpfile(data,index, lists)}"
>
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<view >
<u-icon name="arrow-upward" color="#B3B3B3" size='40'></u-icon>
</view>
</view>
</u-upload>
</view>
<p style="margin:-83px 0 0 40px;color: #1578ED;" v-if="biddingobj.attachment">已上传</p>
<p v-if="biddingobj.attachment==''" style="margin-left: 30px;">上传文件最大限 <span style="color: #F0AA2F;">20M</span> </p>
-->
</view>
<!-- <u-line ></u-line> -->
<view class="submitt" style="display: flex;justify-content: space-between;">
<view class="button-g"
style="width:43vw;background:#FFFFFF;border: 1px solid #D9D9D9;color: #666666;margin-left:0"
@click="popcilk('cancel')">取消</view>
<view @click="popcilk('determine')" class="button-g"
style="width:43vw;background:linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF;margin-left:0">
确定</view>
</view>
</u-popup>
<u-toast ref="uToast" />
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下'
show-cancel-button='true' cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirmtt"
@cancel='tokenshow=false'></u-modal>
<u-modal v-model="totalshow" @confirm="taskconfirm" content='恭喜您竞标成功,请等待竞标结果通知。' ref="uModal" confirm-text='确定'
:show-title='false'></u-modal>
<u-modal title='提示' v-model="certifshow" @confirm="certifconfirm" content='未实名认证的用户无法报名,请先去个人中心做实名认证'
ref="ucertif" confirm-text='去实名认证' :show-title='false'></u-modal>
<!-- :async-close="true" -->
</view>
</template>
<script>
import {
findLabelValueByPropnew
} from '@/utils/util.js'
import mixin from '@/utils/mixin/index.js'
export default {
mixins: [mixin],
data() {
return {
base: this.http.baseUrl,
certifshow: false,
isPopupShow: false,
crowddata: null,
totalshow: false,
tokenshow: false,
biddingobj: {
taskId: '',
applicantId: '',
period: '',
competitionEdge: '',
attachment: ''
},
typeupload: ['pdf', 'doc', 'docx', ],
headers: {
Authorization: 'Bearer ' + uni.getStorageSync('accessToken'),
},
action: 'https://www.keyitest.cn/prod-api/upload',
//竞标者要求
applicantlist: [{
label: '个人测试者',
value: '0'
},
{
label: '认证测试公司',
value: '1'
},
{
label: '个人测试者/认证测试公司',
value: '2'
},
],
//驻场要求
onsiteTypelist: [{
label: '无需驻场',
value: '0'
},
{
label: '偶尔驻场',
value: '1'
},
{
label: '定期驻场',
value: '2'
},
],
//任务状态
processStatuslist: [{
label: '竞标中',
value: 0
},
{
label: '竞标成功',
value: 1
},
{
label: '待验收',
value: 3
},
{
label: '确认完成',
value: 4
},
// {label: '没有竞标者,过期下架', value:4},
// {label: '未指定测试者,过期下架', value:5},
// {label: '未上传结果,过期下架', value:6},
// {label: '未确认测试结果,过期下架', value:7},
// {label: '测试结果不合格', value:8},
],
userinform: null,
type: '',
testerdata: {}, //实名认证信息
userprogramme: {}, //当前用户竞标方案
}
},
filters: {
filtersRichText(html) { //控制小程序中图片大小
if (html) {
let newContent = html.replace(/<img[^>]*>/gi, (match, capture) => {
match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
return match;
});
newContent = newContent.replace(/style="[^"]+"/gi, (match, capture) => {
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi,
'max-width:100%;');
return match;
});
// let newContentsss = html.replace(/<span[^>]*>/gi, (match, capture)=>{
// console.log('sss---',match, capture)
// if(capture==12428 || capture==12693){
// match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
// match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
// match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
// }
// return match;
// });
newContent = newContent.replace(/<br[^>]*\/>/gi, '');
newContent = newContent.replace(/\<img/gi,
'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"');
// newContentsss = newContentsss.replace(/\<span/gi,
// '<span style="word-wrap:break-word;width:90vw;display:block;margin:10rpx auto;"');newContentsss;
return newContent;
}
}
},
onShow() {
// let Token = uni.getStorageSync('accessToken');
// this.userinform = uni.getStorageSync('wxUserInfo');
// if (Token && this.userinform) {
// console.log('this.userinform---', this.userinform)
// this.http.quickGet(`/tester/cert/apply/${this.userinform.userId}`, true).then(res => {
// console.log('实名认证信息onShow---', res)
// if (res.data.code == 200) {
// this.testerdata = res.data.data
// }
// })
// }
let allPages = getCurrentPages(); //获取当前页面栈的实例;
let lastPages = allPages.length - 1; // 获得倒数第二个元素的索引;
console.log('212',lastPages);
let options = allPages[lastPages].options;
this.userinform = uni.getStorageSync('wxUserInfo');
const url = this.userinform && this.userinform.userId ? `?userId=${this.userinform.userId}` : ''
this.http.quickGet(`/crowdsource/detail/${options.id}${url}`, false).then(res => {
this.crowddata = res.data;
this.userprogramme = res.data.user_plan ? res.data.user_plan : {}
let currentis = null
if (this.crowddata.entrants.length > 0) {
this.crowddata.entrants.forEach(item => {
if (this.userinform.userId == item.user_id) {
currentis = item
}
})
}
if (currentis) {
this.type = 1
}
})
},
onLoad(options) {
this.type = options.type;
if (this.type && this.type == 1) {
uni.setNavigationBarTitle({
title: '我的众包'
});
} else {
uni.setNavigationBarTitle({
title: '任务详情'
});
}
// this.userinform = uni.getStorageSync('wxUserInfo');
// const url = this.userinform && this.userinform.userId ? `?userId=${this.userinform.userId}` : ''
// this.http.quickGet(`/crowdsource/detail/${options.id}${url}`, false).then(res => {
// this.crowddata = res.data;
// this.userprogramme = res.data.user_plan ? res.data.user_plan : {}
// let currentis = null
// if (this.crowddata.entrants.length > 0) {
// this.crowddata.entrants.forEach(item => {
// if (this.userinform.userId == item.user_id) {
// currentis = item
// }
// })
// }
// if (currentis) {
// this.type = 1
// }
// })
},
methods: {
// 报名用户详情
goUserDetail(item) {
let accessToken = uni.getStorageSync('accessToken');
if (!accessToken) {
this.tokenshow = true
} else {
const data = {
commentsStar: 0,
publisher_id: item.user_id,
name: item.nick_name,
avatar: item.avatar,
userId: item.user_id,
taskId: this.crowddata.task.task_id
}
uni.navigateTo({
url: `/pages/index/testcrowdsourc/userInfo?taskInfo=${encodeURIComponent(JSON.stringify(data))}`
})
}
},
findLabelValueByPropnew,
// 公司主页
goCompanyInfo() {
uni.navigateTo({
url: `/pages/index/testcrowdsourc/companyInfo?taskInfo=${encodeURIComponent(JSON.stringify(this.crowddata.task))}`
})
},
//文件上传成功回调
fielUploadSuc(data, index, lists) {
console.log('-', data, '*', index, lists)
if (data.code === 200) {
this.biddingobj.attachment = data.filePath
console.log('竞标附件', this.biddingobj.attachment)
}
},
//移除
deleteUpfile(index, lists) {
console.log('del头像', this.biddingobj.attachment)
this.biddingobj.attachment = ''
},
errorUpfile(data, index) {
},
application() {
this.userinform = uni.getStorageSync('wxUserInfo');
let accessToken = uni.getStorageSync('accessToken');
console.log('open', this.userinform, this.crowddata.task);
if (!accessToken) {
this.tokenshow = true
} else {
this.http.quickGet(`/tester/cert/apply/${this.userinform.userId}`, true).then(res => {
// console.log('竞标实名认证信息---',res)
if (res.data.code == 200) {
if (res.data.data.applyId) {
if (res.data.data.status == 1) {
this.isPopupShow = true
this.biddingobj = {
taskId: '',
applicantId: '',
period: '',
competitionEdge: '',
attachment: '',
status: res.data.data.status
}
} else {
this.certifshow = true;
}
} else if (res.data.data.companyApplyId) {
uni.showToast({
title: '仅支持个人用户竞标报名',
icon: 'none',
duration: 2000
});
} else {
this.certifshow = true;
}
}
})
}
},
open() {
// console.log('open');
},
close() {
this.isPopupShow = false
// console.log('close');
},
confirmtt() {
uni.navigateTo({
url: '/pages/personal/login'
})
},
taskconfirm() {
// setTimeout(() => {
// 3秒后自动关闭
// this.totalshow = false;
// 如果不想关闭,而单是清除loading状态,需要通过ref手动调用方法
// this.$refs.uModal.clearLoading();
uni.navigateTo({
url: '/pages/personal/mycrowdtest/mycrowdtest'
})
// }, 1000)
},
//竞标时没有认证的让跳去认证
certifconfirm() {
this.certifshow = false;
uni.navigateTo({
url: '/pages/personal/setup/certification'
})
},
popcilk(type) {
if (type == 'cancel') {
this.isPopupShow = false
} else if (type == 'determine') {
let attachment = '';
console.log('附件', this.biddingobj.attachment)
if (this.biddingobj.attachment.indexOf('https') == 0) {
attachment = this.biddingobj.attachment
} else {
if (this.biddingobj.attachment == '') {
attachment = ''
} else {
attachment = 'https://www.keyitest.cn/prod-api' + this.biddingobj.attachment
}
}
if (!this.biddingobj.period) {
this.$refs.uToast.show({
title: '请输入预算周期',
type: 'info'
})
return;
}
if (!/^[1-9]\d*$/.test(this.biddingobj.period)) {
this.$refs.uToast.show({
title: '周期需填写正整数',
type: 'info'
})
return;
}
if (this.biddingobj.period > 1000) {
this.$refs.uToast.show({
title: '周期最多为1000天',
type: 'info'
})
return;
}
if (!this.biddingobj.competitionEdge) {
this.$refs.uToast.show({
title: '请输入竞标优势',
type: 'info'
})
return;
}
if (this.biddingobj.competitionEdge.length > 2800) {
this.$refs.uToast.show({
title: '最多输入2800字',
type: 'info'
})
return;
}
let data = {
taskId: this.crowddata.task.task_id,
applicantId: this.userinform.userId,
period: parseInt(this.biddingobj.period),
competitionEdge: this.biddingobj.competitionEdge,
attachment,
status: this.biddingobj.status
}
console.log('竞标数据', data)
// return;
this.http.quickPost(`/crowdsource/bidding`, data, true).then(res => {
console.log('竞标结果', res)
// return;
this.isPopupShow = false
if (res.data.data.code == 200) {
this.totalshow = true
// this.$refs.uToast.show({ title: '竞标成功', type: 'success'})
} else {
this.$refs.uToast.show({
title: res.data.msg,
type: 'info'
})
}
// let reuse=parseInt(res.data.data)
// console.log('竞标结果',res.data.data,typeof(res.data.data),typeof(reuse))
// if(reuse){
// if(reuse==1){
// this.$refs.uToast.show({
// title: "该任务竞标者人数已满。",
// type: 'warning',
// duration: 2000,
// })
// }else{
// this.totalshow=true
// }
// }else{
// if(reuse==0){
// this.totalshow=true
// }
// }
})
}
},
// 拨打电话
callingphone(phone) {
uni.makePhoneCall({
// 手机号
phoneNumber: phone,
// 成功回调
success: (res) => {
console.log('调用成功!')
// uni.showToast({
// title: '拨打成功'
// })
},
// 失败回调
fail: (res) => {
console.log('调用失败!')
}
});
},
openurl(url) {
// uni.downloadFile({
// url:url, //仅为示例,并非真实的资源
// success: (res) => {
// if (res.statusCode === 200) {
// console.log('下载成功');
// }
// }
// });
// return;
if (url != '') {
// console.log('999---',url,url.lastIndexOf('https'),url.slice(32))
var index = url.indexOf('https'); // 字符出现的位置
var num = 0; // 这个字符出现的次数
while (index !== -1) {
// console.log(index); // 打印字符串出现的位置
num++; // 每出现一次 次数加一
index = url.indexOf('https', index + 1); // 从字符串出现的位置的下一位置开始继续查找
}
if (num == 1) {
// this.$message.success('下载成功')
// var wxFile = uni.getFileSystemManager()
uni.downloadFile({
url, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
// wxFile.saveFile({
// tempFilePath:filePaths,
// //将该文件从临时路径tempFilePath转移到本地文件filePath中,并重新给他起一个文件名
// filePath:`${wx.env.USER_DATA_PATH}/a.docx`,
// })
uni.openDocument({
showMenu: true,
filePath: res.tempFilePath,
success: function(res) {
console.log('打开文档成功');
}
});
}
}
});
} else {
console.log('num2---', url.slice(32 * (num - 1)))
// this.$message.success('下载成功')
let uelt = url.slice(32 * (num - 1))
// window.location.href=uelt
uni.downloadFile({
url: url, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
// console.log('下载成功');
uni.openDocument({
showMenu: true,
filePath: res.tempFilePath,
success: function(res) {
console.log('打开文档成功');
}
});
}
}
});
}
}
},
}
}
</script>
<style>
.ratebox ::v-deep .u-icon {
font-size: 13px !important;
}
.logobg {
width: 100vw;
object-fit: contain;
}
.schedule {
width: 94vw;
margin: 12px 3vw;
background: #FFFFFF;
padding: 25rpx;
border-radius: 10rpx;
}
.tabone {
padding: 10rpx 15rpx;
color: #FFFFFF;
background: #2286FA;
border-radius: 5rpx;
font-size: 20rpx;
text-align: center;
margin-bottom: 10rpx;
}
.tabone1 {
background: #FCF0E6;
font-weight: 500;
font-size: 20rpx;
color: #544841;
margin-right: 10rpx;
}
.vertical {
width: 6rpx;
height: 26rpx;
background: #1578ED;
border-radius: 10rpx;
margin-right: 5px;
}
.submitt {
height: 70px;
font-size: 20px;
background: #FFFFFF;
box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33);
position: fixed;
bottom: 0;
width: 100vw;
padding: 10px 20px;
}
.success {
width: 130rpx;
height: 40rpx;
background: #21B96C;
border-radius: 22rpx;
font-weight: 500;
font-size: 22rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
.success image {
width: 20rpx;
height: 20rpx;
}
.success1 {
width: 130rpx;
height: 40rpx;
}
.button-g {
width: 280rpx;
height: 80rpx;
background: linear-gradient(90deg, #5EA6FD, #1A81F9);
border-radius: 43rpx;
text-align: center;
line-height: 80rpx;
color: #FFFFFF;
font-size: 33rpx;
margin-left: 13px;
}
/* line-height: 15%; */
.peodi {
/* line-height: 15%; */
margin: 5px auto 15px;
width: 260px;
text-align: center;
color: #1A1A1A;
font-size: 36rpx;
font-weight: bold;
}
.poptext {
font-size: 33rpx;
font-weight: 500;
color: #333333;
line-height: 24rpx;
margin-left: 5px;
}
.signst {
display: flex;
flex-direction: column;
align-items: center;
margin: 5px;
}
.signst img {
width: 40px;
height: 40px;
border-radius: 50%;
}
.signst p {
font-size: 11px;
margin-top: 5px;
}
.article-body {
line-height: 26px !important;
/* width: 100%; */
/* color:rgb(17, 16, 16)!important; */
}
.article-body p {
font-size: 34rpx !important;
color: #666666 !important;
line-height: 35rpx !important;
background-color: transparent !important;
}
.article-body>>>span {
font-size: 34rpx !important;
color: #666666 !important;
line-height: 35rpx !important;
background-color: transparent !important;
}
.sinput {
display: flex;
align-items: center;
height: 50px;
padding: 10px 0;
margin: 10px 0 0 0;
}
.sinput img {
width: 20px;
height: 20px;
margin-right: 10px;
}
.sinput .u-input {
width: 75vw;
height: 35px;
border: 1px solid #E6E6E6;
background: #FFFFFF;
border-radius: 10rpx 10rpx 0rpx 0rpx;
padding: 0 10px !important;
}
.sinputrt {
display: flex;
/* align-items: center; */
height: 50px;
padding: 10px 0;
margin: 0px 0 70px 0;
}
.sinputrt img {
width: 20px;
height: 20px;
margin-right: 10px;
}
.sinputrt .u-input {
width: 75vw;
height: 100px;
border: 1px solid #E6E6E6;
background: #FFFFFF;
border-radius: 10rpx 10rpx 0rpx 0rpx;
padding-left: 10px !important;
}
.slot-btn {
/* width:75vw;
height: 45px;
display: flex;
justify-content: center;
align-items: center;
background: rgb(244, 245, 246);
border-radius: 10rpx;
border: 1px solid #C2C2C2;
zIndex:99; */
width: 80px;
height: 80px;
background: #FFFFFF;
border-radius: 4rpx;
border: 1px solid #E6E6E6;
line-height: 80px;
text-align: center;
}
.slot-btn__hover {
background-color: rgb(235, 236, 238);
}
.u-list-item {
margin: 0 !important;
background: transparent !important;
color: #000000 !important;
width: 100px !important;
height: 28px !important;
zIndex: 0 !important;
border-radius: 0 !important;
border: none !important;
}
/* .u-list-item :before {
content: "已上传";
position: absolute;
left: 7px;
} */
</style>