完成补正项目
This commit is contained in:
parent
8fa526386c
commit
b64d169428
@ -11,9 +11,9 @@ Component({
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
hintText:{
|
||||
type:String,
|
||||
value:'下载中...'
|
||||
hintText: {
|
||||
type: String,
|
||||
value: '下载中...'
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -29,8 +29,35 @@
|
||||
|
||||
.hint-text {
|
||||
font-size: 14px;
|
||||
color: black;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
animation: colorChange 3s infinite alternate;
|
||||
}
|
||||
|
||||
@keyframes colorChange {
|
||||
0% {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
20% {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
40% {
|
||||
color: #CCCCCC;
|
||||
}
|
||||
|
||||
60% {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
80% {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
100% {
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.loading {
|
||||
|
@ -1,4 +1,10 @@
|
||||
// pages/copyright/applyRepair/applyRepair.js
|
||||
import {
|
||||
uploadImgUrl
|
||||
} from '../../../net/http'
|
||||
import ProApi from '../../../net/api/projectApi'
|
||||
const Cache = require('../../../utils/storage')
|
||||
const data = require('../../../utils/data')
|
||||
const app = getApp()
|
||||
Page({
|
||||
/**
|
||||
@ -9,10 +15,16 @@ Page({
|
||||
msgHint: '',
|
||||
msgType: '',
|
||||
msgShow: false,
|
||||
selPro: '',
|
||||
selType: '',
|
||||
selPro: null,
|
||||
selType: null,
|
||||
files: [],
|
||||
|
||||
proList: [],
|
||||
tempSelPro: null,
|
||||
typeList: data.kindList,
|
||||
showSelPro: false,
|
||||
showSelType: false,
|
||||
tempSelType: null,
|
||||
remark: ''
|
||||
},
|
||||
|
||||
/**
|
||||
@ -30,9 +42,229 @@ Page({
|
||||
timingFunc: 'easeIn'
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
selectFile: this.selectFile.bind(this),
|
||||
uploadFile: this.uploadFile.bind(this)
|
||||
})
|
||||
//获取可以申请补正的列表
|
||||
this.getCanRepairList(false)
|
||||
},
|
||||
//获取可以补正的项目列表
|
||||
getCanRepairList(isShow) {
|
||||
const _self = this
|
||||
wx.showLoading({
|
||||
title: '加载中...',
|
||||
})
|
||||
const data = {
|
||||
page: 1,
|
||||
rows: 30
|
||||
}
|
||||
ProApi.doGetCanProRepairList(data)
|
||||
.then(res => {
|
||||
wx.hideLoading()
|
||||
if (res.rows && res.rows.length > 0) {
|
||||
_self.setData({
|
||||
proList: res.rows,
|
||||
showSelPro: isShow,
|
||||
tempSelPro: _self.data.selPro
|
||||
})
|
||||
} else {
|
||||
_self.setData({
|
||||
msgHint: '您暂无可以补正的软著',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
wx.hideLoading()
|
||||
_self.setData({
|
||||
msgHint: err.msg ? err.msg : '网络错误,请稍后重试',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
})
|
||||
},
|
||||
//显示补正软著选择
|
||||
showSelProDialog() {
|
||||
const _self = this
|
||||
if (_self.data.proList.length <= 0) {
|
||||
_self.getCanRepairList(true)
|
||||
} else {
|
||||
_self.setData({
|
||||
showSelPro: true,
|
||||
tempSelPro: _self.data.selPro
|
||||
})
|
||||
}
|
||||
},
|
||||
chooseType(e) {
|
||||
this.setData({
|
||||
tempSelType: e.currentTarget.dataset.value
|
||||
})
|
||||
},
|
||||
choosePro(e) {
|
||||
this.setData({
|
||||
tempSelPro: e.currentTarget.dataset.value
|
||||
})
|
||||
},
|
||||
//关闭补正软件选择
|
||||
closeDialog(e) {
|
||||
this.setData({
|
||||
showSelPro: false,
|
||||
showSelType: false
|
||||
})
|
||||
},
|
||||
showSelTypeDialog() {
|
||||
this.setData({
|
||||
showSelType: true,
|
||||
})
|
||||
},
|
||||
confirmSelType() {
|
||||
this.setData({
|
||||
showSelType: false,
|
||||
selType: this.data.tempSelType,
|
||||
tempSelType: null
|
||||
})
|
||||
},
|
||||
//确定选择补正软著
|
||||
confirmSelPro() {
|
||||
this.setData({
|
||||
showSelPro: false,
|
||||
selPro: this.data.tempSelPro,
|
||||
tempSelPro: null
|
||||
})
|
||||
},
|
||||
inputRemark(e) {
|
||||
this.setData({
|
||||
remark: e.detail.value
|
||||
})
|
||||
},
|
||||
deleteImage: function (e) {
|
||||
var index = e.detail.index;
|
||||
this.data.files.splice(index, 1);
|
||||
},
|
||||
previewImage(e) {
|
||||
wx.previewImage({
|
||||
current: e.currentTarget.id,
|
||||
urls: this.data.files
|
||||
})
|
||||
},
|
||||
selectFile(files) {
|
||||
console.log('files', files)
|
||||
},
|
||||
uploadFile(files) {
|
||||
console.log(files)
|
||||
const tempFilePaths = files.tempFilePaths;
|
||||
const token = Cache.get('token')
|
||||
const header = {}
|
||||
if (token) {
|
||||
header.Auth = `Bearer ${token}`;
|
||||
}
|
||||
|
||||
var that = this
|
||||
for (let i = 0; i < tempFilePaths.length; i++) {
|
||||
wx.uploadFile({
|
||||
url: uploadImgUrl,
|
||||
header: header,
|
||||
filePath: tempFilePaths[i],
|
||||
name: 'image',
|
||||
success(res) {
|
||||
console.log(res)
|
||||
let result = JSON.parse(res.data)
|
||||
that.data.files.push(result.data)
|
||||
},
|
||||
fail(err) {
|
||||
console.log(err);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 文件上传的函数,返回一个promise
|
||||
return new Promise((resolve, reject) => {
|
||||
var result = {};
|
||||
result['urls'] = tempFilePaths;
|
||||
resolve(result);
|
||||
})
|
||||
},
|
||||
//提交
|
||||
doApply() {
|
||||
const legal = this.checkParams()
|
||||
if (legal) {
|
||||
const _self = this
|
||||
wx.showLoading({
|
||||
title: '提交中...',
|
||||
})
|
||||
const ids = _self.data.files.map(item => item.fileId).join(',');
|
||||
const data = {
|
||||
correctionReason: _self.data.remark,
|
||||
correctionType: _self.data.selType.value,
|
||||
correctionVoucher: ids,
|
||||
projId: _self.data.selPro.projId
|
||||
}
|
||||
ProApi.doApplyProRepair(data)
|
||||
.then(res => {
|
||||
wx.hideLoading()
|
||||
_self.setData({
|
||||
msgHint: '提交成功,请耐心等待审核',
|
||||
msgType: 'success',
|
||||
msgShow: true
|
||||
})
|
||||
setTimeout(() => {
|
||||
_self.backPageRefresh()
|
||||
}, 2000);
|
||||
})
|
||||
.catch(err => {
|
||||
wx.hideLoading()
|
||||
_self.setData({
|
||||
msgHint: err.msg ? err.msg : '提交失败,请稍后重试',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
//校验参数
|
||||
checkParams() {
|
||||
const _self = this
|
||||
if (_self.data.selPro == null) {
|
||||
_self.setData({
|
||||
msgHint: '请选择补正软著',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (_self.data.selType == null) {
|
||||
_self.setData({
|
||||
msgHint: '请选择补正种类',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (_self.data.remark == '') {
|
||||
_self.setData({
|
||||
msgHint: '请输入补正原因',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (_self.data.files.length <= 0) {
|
||||
_self.setData({
|
||||
msgHint: '请上传补正凭证',
|
||||
msgType: 'error',
|
||||
msgShow: true
|
||||
})
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
backPageRefresh() {
|
||||
const _self = this
|
||||
let pages = getCurrentPages();
|
||||
let beforePage = pages[pages.length - 2];
|
||||
beforePage.doRefreshList()
|
||||
wx.navigateBack()
|
||||
}
|
||||
})
|
@ -12,30 +12,93 @@
|
||||
<text class="label">补正信息</text>
|
||||
<view class="apply-item-row mt-20 ml-10">
|
||||
<view class="apply-title star">补正软著</view>
|
||||
<view class="apply-content">
|
||||
<view class="{{selPro ==''? 'text-hint':'text-sel'}}">选择需要补正的软著</view>
|
||||
<view class="apply-content" bind:tap="showSelProDialog">
|
||||
<view class="{{selPro == null? 'text-hint':'text-sel'}}">{{selPro==null? '选择需要补正的软著' :selPro.projName}}</view>
|
||||
<view class="icon-arrow-down-line" style="width: 24rpx;height: 24rpx;margin:0rpx 20rpx;"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="apply-item-row mt-20 ml-10">
|
||||
<view class="apply-title star">补正种类</view>
|
||||
<view class="apply-content">
|
||||
<view class="{{selType==''?'text-hint':'text-sel'}}">选择种类</view>
|
||||
<view class="apply-content" bind:tap="showSelTypeDialog">
|
||||
<view class="{{selType==null?'text-hint':'text-sel'}}">{{selType==null?'选择种类':selType.title}}</view>
|
||||
<view class="icon-arrow-down-line" style="width: 24rpx;height: 24rpx;margin:0rpx 20rpx;"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="apply-item-column mt-20 ml-10">
|
||||
<view class="apply-title star">补正原因</view>
|
||||
<textarea placeholder="请输入补正原因" placeholder-style="font-size:28rpx;color:var(--text-gray-hint-color)" class="reason-content mt-10"></textarea>
|
||||
<textarea bindinput="inputRemark" value="{{remark}}" placeholder="请输入补正原因" placeholder-style="font-size:28rpx;color:var(--text-gray-hint-color)" class="reason-content mt-10"></textarea>
|
||||
</view>
|
||||
<view class="apply-item-column mt-20 ml-10">
|
||||
<view class="apply-title star">补正凭证</view>
|
||||
<view>
|
||||
<mp-uploader max-count="4" delete="true" bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uploadFile}}" bind:delete="deleteImage" files="{{files}}" title=""></mp-uploader>
|
||||
<mp-uploader max-count="4" delete="true" select="{{selectFile}}" upload="{{uploadFile}}" bind:delete="deleteImage" files="{{files}}" title=""></mp-uploader>
|
||||
</view>
|
||||
<view class="hint">
|
||||
*上传完整的补正通知书或者完整的补正通知书的截图,要求右上方的流水号和右下方的补正通知书的日期都得完整显示
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottom-fixed-footer">
|
||||
<view class="bottom-btn-green" bind:tap="doApply">提交</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 补正软著列表 -->
|
||||
<mp-half-screen-dialog show="{{showSelPro}}" bindclose="closeDialog">
|
||||
<view slot="title">补正软著</view>
|
||||
<view slot="desc">
|
||||
<scroll-view scroll-y style="height: 500rpx;">
|
||||
<view class="pro-list-box">
|
||||
<radio-group>
|
||||
<block wx:for="{{proList}}" wx:key="index">
|
||||
<view class="pro-list-item" bind:tap="" data-value="{{item}}">
|
||||
<radio class="custom-radio" style="margin-left: 5px;" checked="{{tempSelPro.projId==item.projId}}"></radio>
|
||||
<view class="pro-list-item-left" bind:tap="choosePro" data-value="{{item}}">
|
||||
<view class="pro-list-item-left-title">
|
||||
<view class="pro-list-name">{{item.projName}}</view>
|
||||
<rich-text class="pro-list-item-left-tag" nodes="已通过补正<span style='color:red;font-size:28rpx;font-weight:bold;'>{{item.approvedCount}}</span>次"></rich-text>
|
||||
</view>
|
||||
<view class="pro-list-item-left-footer">
|
||||
<view class="pro-list-item-left-tag">{{item.applyContactName}}</view>
|
||||
<view class="pro-list-item-left-tag">{{item.projContext}}</view>
|
||||
<view class="pro-list-item-left-tag">{{item.gmtCreate}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</radio-group>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view slot="footer">
|
||||
<view class="bottom-btn-green" bind:tap="confirmSelPro">确定</view>
|
||||
</view>
|
||||
</mp-half-screen-dialog>
|
||||
|
||||
<!-- 种类 -->
|
||||
<mp-half-screen-dialog show="{{showSelType}}" bindclose="closeDialog">
|
||||
<view slot="title">补正种类</view>
|
||||
<view slot="desc">
|
||||
<scroll-view scroll-y style="height: 500rpx;">
|
||||
<view class="pro-list-box">
|
||||
<radio-group>
|
||||
<block wx:for="{{typeList}}" wx:key="index">
|
||||
<view class="pro-list-item" bind:tap="" data-value="{{item}}">
|
||||
<radio class="custom-radio" style="margin-left: 5px;" checked="{{tempSelType.value==item.value}}"></radio>
|
||||
<view class="pro-list-item-left" bind:tap="chooseType" data-value="{{item}}">
|
||||
<view class="pro-list-item-left-title">
|
||||
<view class="pro-list-name">{{item.title}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</radio-group>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view slot="footer">
|
||||
<view class="bottom-btn-green" bind:tap="confirmSelType">确定</view>
|
||||
</view>
|
||||
</mp-half-screen-dialog>
|
||||
|
||||
<mp-toptips msg="{{msgHint}}" type="{{msgType}}" show="{{msgShow}}" :delay="2000"></mp-toptips>
|
@ -8,6 +8,11 @@
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.apply-item-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@ -47,6 +52,61 @@
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
.hint {
|
||||
margin-top: 10rpx;
|
||||
font-size: 26rpx;
|
||||
color: var(--red-color);
|
||||
}
|
||||
|
||||
.pro-list-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.pro-list-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background-color: var(--primary-color-light);
|
||||
border-radius: 10rpx;
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.pro-list-item:nth-of-type(n+2) {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.pro-list-item-left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.pro-list-item-left-title {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.pro-list-item-left-footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.pro-list-item-left-tag {
|
||||
font-size: 24rpx;
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
.pro-list-name {
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 上传图片 */
|
||||
@ -92,4 +152,36 @@
|
||||
.weui-uploader__input-box {
|
||||
background: white;
|
||||
border: 1px solid var(--divider-color);
|
||||
}
|
||||
|
||||
|
||||
/* 未选中状态 */
|
||||
.custom-radio .wx-radio-input {
|
||||
border-color: var(--primary-color);
|
||||
/* 自定义未选中时的边框颜色 */
|
||||
background-color: transparent;
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
}
|
||||
|
||||
/* 选中状态 */
|
||||
.custom-radio .wx-radio-input.wx-radio-input-checked {
|
||||
border-color: var(--primary-color);
|
||||
/* 自定义选中时的边框颜色 */
|
||||
background: linear-gradient(to right, var(--primary-color), var(--primary-color-light));
|
||||
/* 自定义选中时的背景颜色 */
|
||||
}
|
||||
|
||||
/* 选中状态下的内部圆圈 */
|
||||
.custom-radio .wx-radio-input.wx-radio-input-checked::before {
|
||||
color: #fff;
|
||||
/* 自定义选中时内部圆圈的颜色 */
|
||||
}
|
||||
|
||||
.weui-half-screen-dialog__bd {
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.weui-half-screen-dialog__ft {
|
||||
padding: 0rpx 0rpx 20rpx;
|
||||
}
|
@ -192,7 +192,6 @@ Page({
|
||||
if (token) {
|
||||
header.Auth = `Bearer ${token}`;
|
||||
}
|
||||
|
||||
var that = this
|
||||
for (let i = 0; i < tempFilePaths.length; i++) {
|
||||
wx.uploadFile({
|
||||
@ -204,11 +203,9 @@ Page({
|
||||
console.log(res)
|
||||
let result = JSON.parse(res.data)
|
||||
that.data.files.push(result.data)
|
||||
// do something,例如把上传成功后的图片地址保存起来
|
||||
},
|
||||
fail(err) {
|
||||
console.log(err);
|
||||
// do something when upload failed
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -1,9 +1,12 @@
|
||||
// pages/copyright/repair/repair.js
|
||||
import ProApi from '../../../net/api/projectApi'
|
||||
import {
|
||||
previewUrl
|
||||
previewUrl,
|
||||
copyrightUrl
|
||||
}
|
||||
from '../../../net/http.js'
|
||||
const jsonData = require('../../../utils/data')
|
||||
const Cache = require('../../../utils/storage')
|
||||
const app = getApp()
|
||||
Page({
|
||||
|
||||
@ -28,38 +31,11 @@ Page({
|
||||
isLoadMore: false,
|
||||
hasMore: true,
|
||||
repairList: [], //开票记录
|
||||
typeList: [{
|
||||
title: '一次补正',
|
||||
value: 'CORRECTION1'
|
||||
}, {
|
||||
title: '二次补正',
|
||||
value: 'CORRECTION2'
|
||||
}],
|
||||
typeList: jsonData.typeList,
|
||||
selectType: '',
|
||||
kindList: [{
|
||||
value: 'CODE',
|
||||
title: '代码'
|
||||
}, {
|
||||
title: '操作手册',
|
||||
value: 'MANUAL'
|
||||
}, {
|
||||
title: '全部',
|
||||
value: 'ALL'
|
||||
}],
|
||||
kindList: jsonData.kindList,
|
||||
selectKind: '',
|
||||
stateList: [{
|
||||
title: '待审核',
|
||||
value: 'PENDING'
|
||||
}, {
|
||||
title: '已通过',
|
||||
value: 'APPROVED'
|
||||
}, {
|
||||
title: '未通过',
|
||||
value: 'REJECTED'
|
||||
}, {
|
||||
title: '已取消',
|
||||
value: 'CANCELED'
|
||||
}],
|
||||
stateList: jsonData.stateList,
|
||||
selectState: '',
|
||||
buttons: [{
|
||||
text: '关闭'
|
||||
@ -70,7 +46,11 @@ Page({
|
||||
approveDesc: '',
|
||||
preUrl: previewUrl,
|
||||
approveStatus: false, //是否显示编辑提示
|
||||
slideBtns: app.globalData.cancelEditBtns
|
||||
slideBtns: app.globalData.cancelEditBtns,
|
||||
showDownloadDialog: false,
|
||||
downloadProgress: 0, //下载文件进度
|
||||
downloading: false, //下载文件中
|
||||
tempDownloadPro: null, //下载的item
|
||||
},
|
||||
|
||||
/**
|
||||
@ -269,9 +249,20 @@ Page({
|
||||
current: current
|
||||
})
|
||||
},
|
||||
closeDialog(e) {
|
||||
this.setData({
|
||||
showDownloadDialog: false
|
||||
})
|
||||
},
|
||||
//下载文件
|
||||
downloadFile(e) {
|
||||
const item = e.currentTarget.dataset.value
|
||||
console.log(item.correctionType)
|
||||
|
||||
this.setData({
|
||||
tempDownloadPro: item,
|
||||
showDownloadDialog: true
|
||||
})
|
||||
},
|
||||
closeHint(e) {
|
||||
this.setData({
|
||||
@ -287,5 +278,99 @@ Page({
|
||||
wx.navigateTo({
|
||||
url: '/pages/copyright/applyRepair/applyRepair',
|
||||
})
|
||||
},
|
||||
download(e) {
|
||||
const _self = this
|
||||
_self.setData({
|
||||
downloadProgress: 0,
|
||||
downloading: true, //显示下载进度
|
||||
showDownloadDialog: false, //关闭底部弹窗
|
||||
})
|
||||
const path = e.currentTarget.dataset.path
|
||||
const url = copyrightUrl + path + _self.data.tempDownloadPro.projId
|
||||
const token = Cache.get('token')
|
||||
const header = {}
|
||||
if (token) {
|
||||
header.Auth = `Bearer ${token}`;
|
||||
}
|
||||
const downloadTask = wx.downloadFile({
|
||||
url: url,
|
||||
header: header,
|
||||
success(res) {
|
||||
console.log('下载成功', res)
|
||||
_self.setData({
|
||||
downloadProgress: 0,
|
||||
downloading: false
|
||||
})
|
||||
if (res.statusCode === 200) {
|
||||
_self.setData({
|
||||
successHint: '下载成功',
|
||||
showSuccess: true
|
||||
})
|
||||
// 从响应头中获取文件名
|
||||
const contentDisposition = res.header['Content-Disposition'];
|
||||
let fileName = '';
|
||||
if (contentDisposition) {
|
||||
const match = contentDisposition.match(/filename=(.*)/);
|
||||
if (match && match[1]) {
|
||||
fileName = match[1].replace(/['"]/g, '');
|
||||
}
|
||||
}
|
||||
|
||||
if (fileName) {
|
||||
// 保存文件时使用获取到的文件名
|
||||
wx.getFileSystemManager().saveFile({
|
||||
tempFilePath: res.tempFilePath,
|
||||
filePath: wx.env.USER_DATA_PATH + '/' + fileName,
|
||||
success: function (res) {
|
||||
const savedFilePath = res.savedFilePath;
|
||||
console.log('文件下载并保存成功', savedFilePath);
|
||||
if (savedFilePath.endsWith(".txt")) {
|
||||
wx.navigateTo({
|
||||
url: '/pages/readTxt/readTxt?filePath=' + savedFilePath,
|
||||
})
|
||||
} else {
|
||||
wx.openDocument({
|
||||
filePath: savedFilePath,
|
||||
showMenu: true
|
||||
})
|
||||
}
|
||||
},
|
||||
fail: function (err) {
|
||||
console.error('文件保存失败', err);
|
||||
_self.showErr('很抱歉,文件下载出现问题。建议您稍作等待,之后再尝试下载。')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.error('未从响应头中获取到文件名');
|
||||
_self.showErr('很抱歉,文件下载出现问题。建议您稍作等待,之后再尝试下载。')
|
||||
}
|
||||
} else {
|
||||
_self.showErr('很抱歉,文件下载出现问题。建议您稍作等待,之后再尝试下载。')
|
||||
}
|
||||
},
|
||||
fail(err) {
|
||||
_self.showErr('很抱歉,文件下载出现问题。建议您稍作等待,之后再尝试下载。')
|
||||
console.log(`下载失败${err}`)
|
||||
}
|
||||
})
|
||||
downloadTask.onProgressUpdate(res => {
|
||||
console.log(res.progress)
|
||||
_self.setData({
|
||||
downloadProgress: res.progress
|
||||
})
|
||||
});
|
||||
},
|
||||
//显示错误信息
|
||||
showErr(msg) {
|
||||
const _self = this
|
||||
_self.setData({
|
||||
msgHint: msg,
|
||||
msgType: 'error',
|
||||
msgShow: true,
|
||||
showDownloadDialog: false,
|
||||
downloading: false,
|
||||
downloadProgress: 0
|
||||
})
|
||||
}
|
||||
})
|
@ -5,6 +5,7 @@
|
||||
"mp-toptips": "weui-miniprogram/toptips/toptips",
|
||||
"mp-dialog": "weui-miniprogram/dialog/dialog",
|
||||
"mp-half-screen-dialog": "weui-miniprogram/half-screen-dialog/half-screen-dialog",
|
||||
"mp-slideview": "weui-miniprogram/slideview/slideview"
|
||||
"mp-slideview": "weui-miniprogram/slideview/slideview",
|
||||
"down-progress": "/components/down-progress/down-progress"
|
||||
}
|
||||
}
|
@ -10,6 +10,10 @@
|
||||
<!-- 条件 -->
|
||||
<scroll-view scroll-x>
|
||||
<view class="options-list-box">
|
||||
<block wx:for="{{stateList}}" wx:key="index">
|
||||
<view class="{{selectState==item.value ? 'options-tab-select':'options-tab-normal'}} ml-20" data-value="{{item.value}}" bind:tap="chooseState">{{item.title}}</view>
|
||||
</block>
|
||||
<view class="divider-h-white"></view>
|
||||
<block wx:for="{{typeList}}" wx:key="index">
|
||||
<view class="{{selectType==item.value ? 'options-tab-select':'options-tab-normal'}} {{index>0 ? 'ml-20' :''}}" data-value="{{item.value}}" bind:tap="chooseType">{{item.title}}</view>
|
||||
</block>
|
||||
@ -17,10 +21,6 @@
|
||||
<block wx:for="{{kindList}}" wx:key="index">
|
||||
<view class="{{selectKind==item.value ? 'options-tab-select':'options-tab-normal'}} ml-20" data-value="{{item.value}}" bind:tap="chooseKind">{{item.title}}</view>
|
||||
</block>
|
||||
<view class="divider-h-white"></view>
|
||||
<block wx:for="{{stateList}}" wx:key="index">
|
||||
<view class="{{selectState==item.value ? 'options-tab-select':'options-tab-normal'}} ml-20" data-value="{{item.value}}" bind:tap="chooseState">{{item.title}}</view>
|
||||
</block>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
@ -74,5 +74,45 @@
|
||||
</view>
|
||||
</view>
|
||||
</mp-dialog>
|
||||
<!-- 下载dialog -->
|
||||
<mp-half-screen-dialog show="{{showDownloadDialog}}" bindclose="closeDialog">
|
||||
<view slot="title" style="font-size: 16px;font-weight: bold;">资料下载</view>
|
||||
<view slot="desc" style="margin-top: 10px;">
|
||||
<view class="download-item" wx:if="{{tempDownloadPro.correctionType=='MANUAL' || tempDownloadPro.correctionType=='ALL'}}">
|
||||
<view class="download-title">
|
||||
<view class="icon-source"></view>
|
||||
<view class="download-title-txt">操作手册</view>
|
||||
</view>
|
||||
<view class="download-btn-box">
|
||||
<view class="download-btn" bind:tap="download" data-path="/route/proj/download/manual/">
|
||||
<view class="ic-doc" style="width: 20px;height: 20px;"></view>
|
||||
<view class="download-btn-txt">Word格式下载</view>
|
||||
</view>
|
||||
<view class="download-btn" bind:tap="download" data-path="/route/proj/download/manual/pdf/">
|
||||
<view class="ic-pdf" style="width: 20px;height: 20px;"></view>
|
||||
<view class="download-btn-txt">PDF格式下载</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="download-item" wx:if="{{tempDownloadPro.correctionType=='CODE' || tempDownloadPro.correctionType=='ALL'}}">
|
||||
<view class="download-title">
|
||||
<view class="icon-tool"></view>
|
||||
<view class="download-title-txt">源代码</view>
|
||||
</view>
|
||||
<view class="download-btn-box">
|
||||
<view class="download-btn" bind:tap="download" data-path="/route/proj/download/code/">
|
||||
<view class="ic-doc" style="width: 20px;height: 20px;"></view>
|
||||
<view class="download-btn-txt">Word格式下载</view>
|
||||
</view>
|
||||
<view class="download-btn" bind:tap="download" data-path="/route/proj/download/code/pdf/">
|
||||
<view class="ic-pdf" style="width: 20px;height: 20px;"></view>
|
||||
<view class="download-btn-txt">PDF格式下载</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="hint mt-10">温馨提示:若您想把下载的文件留存到本地,打开预览页面后,在界面右上角操作栏内,选择使用其他软件打开或者保存文件功能就能实现。</view>
|
||||
</view>
|
||||
</mp-half-screen-dialog>
|
||||
<down-progress isShow="{{downloading}}" progress="{{downloadProgress}}"></down-progress>
|
||||
<mp-toptips msg="{{msgHint}}" type="{{msgType}}" show="{{msgShow}}" :delay="2000"></mp-toptips>
|
||||
<wxs src="../../../utils/comm.wxs" module="tools"></wxs>
|
@ -524,4 +524,103 @@
|
||||
|
||||
.weui-dialog__hd {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
|
||||
.download-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
background-color: var(--white-color);
|
||||
border-radius: 5px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.download-item:nth-of-type(n+2) {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.download-item:last-child {
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
.download-title {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
.download-title-txt {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.download-btn-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 70px;
|
||||
flex: .6;
|
||||
}
|
||||
|
||||
.download-btn {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
color: var(--text-color);
|
||||
padding: 5px 10px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid var(--divider-color);
|
||||
width: 105px;
|
||||
}
|
||||
|
||||
.download-btn-txt {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.download-btn:active {
|
||||
background-color: var(--divider-color);
|
||||
}
|
||||
|
||||
.icon-table {
|
||||
content: "";
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgc3R5bGU9IiIgZmlsdGVyPSJub25lIj4KICAgIAogICAgPGc+CiAgICA8cGF0aCBkPSJNMTYgMjFoLTR2Mmg0di0yek0xNyAyMWg0djJoLTR2LTJ6TTE2IDI2aC00di0yaDR2MnpNMTcgMjZoNHYtMmgtNHYyek0xNiAxOGgtNHYyaDR2LTJ6TTE3IDE4aDR2MmgtNHYtMnpNMTYgMTVoLTR2Mmg0di0yek0xNyAxNWg0djJoLTR2LTJ6TTE5IDN2Ni4wMDJjMCAxLjExMSAwLjg5OCAxLjk5OCAyLjAwNiAxLjk5OGg0Ljk5NHYxNy4wMDNjMCAxLjEwNy0wLjg5NCAxLjk5Ny0xLjk5NyAxLjk5N2gtMTUuMDA1Yy0xLjEwNyAwLTEuOTk3LTAuODk5LTEuOTk3LTIuMDA3di0yMi45ODVjMC0xLjEwOSAwLjg5OS0yLjAwNyAyLjAwOS0yLjAwN2g5Ljk5MXpNMjAgM3Y1Ljk5N2MwIDAuNTU0IDAuNDUxIDEuMDAzIDAuOTkxIDEuMDAzaDUuMDA5bC02LTd6TTExIDEzdjE0aDExdi0xNGgtMTF6IiBmaWxsPSJyZ2JhKDI1NSwxNjksMCwxKSI+PC9wYXRoPgogICAgPC9nPgogIDwvc3ZnPg==');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
|
||||
.icon-tool {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSI2NCA2NCA4OTYgODk2IiB3aWR0aD0iNTIiIGhlaWdodD0iNTIiIHN0eWxlPSIiIGZpbHRlcj0ibm9uZSI+CiAgICAKICAgIDxnPgogICAgPHBhdGggZD0iTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNTEzLjEgNTE4LjFsLTE5MiAxNjFjLTUuMiA0LjQtMTMuMS43LTEzLjEtNi4xdi02Mi43YzAtMi4zIDEuMS00LjYgMi45LTYuMUw0MjAuNyA1MTJsLTEwOS44LTkyLjJhNy42MyA3LjYzIDAgMCAxLTIuOS02LjFWMzUxYzAtNi44IDcuOS0xMC41IDEzLjEtNi4xbDE5MiAxNjAuOWMzLjkgMy4yIDMuOSA5LjEgMCAxMi4zek03MTYgNjczYzAgNC40LTMuNCA4LTcuNSA4aC0xODVjLTQuMSAwLTcuNS0zLjYtNy41LTh2LTQ4YzAtNC40IDMuNC04IDcuNS04aDE4NWM0LjEgMCA3LjUgMy42IDcuNSA4djQ4eiIgZmlsbD0icmdiYSg1MiwxMjQsMTc1LDEpIj48L3BhdGg+CiAgICA8L2c+CiAgPC9zdmc+');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
|
||||
.icon-source {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSI2NCA2NCA4OTYgODk2IiB3aWR0aD0iNTIiIGhlaWdodD0iNTIiIHN0eWxlPSIiIGZpbHRlcj0ibm9uZSI+CiAgICAKICAgIDxnPgogICAgPHBhdGggZD0iTTkyOCAxNjFINjk5LjJjLTQ5LjEgMC05Ny4xIDE0LjEtMTM4LjQgNDAuN0w1MTIgMjMzbC00OC44LTMxLjNBMjU1LjIgMjU1LjIgMCAwIDAgMzI0LjggMTYxSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjI4LjhjNDkuMSAwIDk3LjEgMTQuMSAxMzguNCA0MC43bDQ0LjQgMjguNmMxLjMuOCAyLjggMS4zIDQuMyAxLjNzMy0uNCA0LjMtMS4zbDQ0LjQtMjguNkM2MDIgODA3LjEgNjUwLjEgNzkzIDY5OS4yIDc5M0g5MjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkzYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00MDQgNTUzLjVjMCA0LjEtMy4yIDcuNS03LjEgNy41SDIxMS4xYy0zLjkgMC03LjEtMy40LTcuMS03LjV2LTQ1YzAtNC4xIDMuMi03LjUgNy4xLTcuNWgxODUuN2MzLjkgMCA3LjEgMy40IDcuMSA3LjV2NDV6bTAtMTQwYzAgNC4xLTMuMiA3LjUtNy4xIDcuNUgyMTEuMWMtMy45IDAtNy4xLTMuNC03LjEtNy41di00NWMwLTQuMSAzLjItNy41IDcuMS03LjVoMTg1LjdjMy45IDAgNy4xIDMuNCA3LjEgNy41djQ1em00MTYgMTQwYzAgNC4xLTMuMiA3LjUtNy4xIDcuNUg2MjcuMWMtMy45IDAtNy4xLTMuNC03LjEtNy41di00NWMwLTQuMSAzLjItNy41IDcuMS03LjVoMTg1LjdjMy45IDAgNy4xIDMuNCA3LjEgNy41djQ1em0wLTE0MGMwIDQuMS0zLjIgNy41LTcuMSA3LjVINjI3LjFjLTMuOSAwLTcuMS0zLjQtNy4xLTcuNXYtNDVjMC00LjEgMy4yLTcuNSA3LjEtNy41aDE4NS43YzMuOSAwIDcuMSAzLjQgNy4xIDcuNXY0NXoiIGZpbGw9InJnYmEoMTI5LDE3OSw1NSwxKSI+PC9wYXRoPgogICAgPC9nPgogIDwvc3ZnPg==');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
.hint {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
color: var(--primary-color);
|
||||
font-weight: bold;
|
||||
}
|
@ -108,7 +108,7 @@
|
||||
|
||||
.buy-all-btn {
|
||||
padding: 5rpx 35rpx;
|
||||
border-radius: 10rpx;
|
||||
border-radius: 5rpx;
|
||||
background-color: var(--btn-green-color);
|
||||
color: var(--white-color);
|
||||
font-size: 28rpx;
|
||||
@ -296,7 +296,7 @@
|
||||
background-color: var(--btn-green-color);
|
||||
font-size: 28rpx;
|
||||
padding: 20rpx 40rpx;
|
||||
border-radius: 10rpx;
|
||||
border-radius: 5rpx;
|
||||
color: var(--white-color);
|
||||
width: 83vw;
|
||||
text-align: center;
|
||||
|
@ -286,13 +286,13 @@ var timeSplit = function (value) {
|
||||
}
|
||||
|
||||
var repairStatusColor = function (status) {
|
||||
var color = 'repair-status-green'
|
||||
var color = 'repair-status-yellow'
|
||||
switch (status) {
|
||||
case 'PENDING':
|
||||
color = 'repair-status-green'
|
||||
color = 'repair-status-yellow'
|
||||
break
|
||||
case 'APPROVED':
|
||||
color = 'repair-status-yellow'
|
||||
color = 'repair-status-green'
|
||||
break
|
||||
case 'REJECTED':
|
||||
color = 'repair-status-red'
|
||||
|
35
utils/data.js
Normal file
35
utils/data.js
Normal file
@ -0,0 +1,35 @@
|
||||
const kindList = [{
|
||||
"value": "CODE",
|
||||
"title": "代码"
|
||||
}, {
|
||||
"title": "操作手册",
|
||||
"value": "MANUAL"
|
||||
}, {
|
||||
"title": "全部",
|
||||
"value": "ALL"
|
||||
}]
|
||||
const typeList = [{
|
||||
"title": "一次补正",
|
||||
"value": "CORRECTION1"
|
||||
}, {
|
||||
"title": "二次补正",
|
||||
"value": "CORRECTION2"
|
||||
}]
|
||||
const stateList = [{
|
||||
"title": "待审核",
|
||||
"value": "PENDING"
|
||||
}, {
|
||||
"title": "已通过",
|
||||
"value": "APPROVED"
|
||||
}, {
|
||||
"title": "未通过",
|
||||
"value": "REJECTED"
|
||||
}, {
|
||||
"title": "已取消",
|
||||
"value": "CANCELED"
|
||||
}]
|
||||
module.exports = {
|
||||
stateList,
|
||||
kindList,
|
||||
typeList
|
||||
}
|
Loading…
Reference in New Issue
Block a user