This commit is contained in:
jia 2023-11-20 18:23:46 +08:00
parent 35db378ced
commit b51981f093
49 changed files with 5720 additions and 953 deletions

View File

@ -115,6 +115,7 @@ export const deletelink= (data) => oahttp.post('/project_index/delete_link',data
//获取项目任务列表 //获取项目任务列表
export const projecttasklist = (data) => oahttp.get('/project_task/index',data) export const projecttasklist = (data) => oahttp.get('/project_task/index',data)
//新增项目任务 //新增项目任务
@ -155,7 +156,7 @@ export const appmessageinbox = (data) => oahttp.get('/message_index/inbox',data)
//获取审批消息 //获取审批消息
export const appmessageread = (data) => oahttp.get('/message_index/read',data) export const appmessageread = (data) => oahttp.get('/message_index/read',data)
//流程审批 //流程审批
export const appflow_check = (data) => oahttp.post('/oa_approve/flow_check',data) export const appflow_check = (data) => oahttp.post('/common/flow_check',data)
//获取审批消息 //获取审批消息
export const appapproveview= (data) => oahttp.get('/oa_approve/view',data) export const appapproveview= (data) => oahttp.get('/oa_approve/view',data)
@ -193,6 +194,8 @@ export const topayview = (data) => oahttp.get('/finance_expense/topay',data)
//获取报销打款 //获取报销打款
export const checkedlist = (data) => oahttp.get('/finance_expense/checkedlist',data) export const checkedlist = (data) => oahttp.get('/finance_expense/checkedlist',data)
//报销设置打款状态
export const expenstopay = (data) => oahttp.post('/finance_expense/topay',data)
//发票 //发票
//我申请的发票 //我申请的发票
@ -254,5 +257,13 @@ export const deleteincome = (data) => oahttp.post('/finance_income/delete',data)
// 获取未读消息数 // 获取未读消息数
export const msgcount = (data) => oahttp.get('/common/msg_count',data) export const msgcount = (data) => oahttp.get('/common/msg_count',data)
//删除审批消息
export const deletemessage = (data) => oahttp.post('/message_index/delete',data) export const deletemessage = (data) => oahttp.post('/message_index/delete',data)
//获取审批审核人员所有审批】
export const flowusers = (data) => oahttp.post('/common/get_flow_users',data)
//获取审批审核人员所有审批】
export const flownodes = (data) => oahttp.post('/common/get_flow_nodes',data)

View File

@ -8,7 +8,7 @@ let header = HEADER;
} }
function uploads(src, type) { function uploads(src, type) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// console.log('上传', type === 'img' ? '图片' : '视频', '', src) // //console.log('上传', type === 'img' ? '图片' : '视频', '', src)
let a = uni.uploadFile({ let a = uni.uploadFile({
// url: base.baseUrl + '/upload?token=', // url: base.baseUrl + '/upload?token=',
url: HTTP_REQUEST_URL_TWO + '/api' + '/upload?token=', url: HTTP_REQUEST_URL_TWO + '/api' + '/upload?token=',
@ -25,7 +25,7 @@ function uploads(src, type) {
}, },
fail: (err) => { fail: (err) => {
reject(err) reject(err)
console.log('upload-上传失败', err) //console.log('upload-上传失败', err)
} }
}); });
}) })
@ -33,7 +33,7 @@ function uploads(src, type) {
function oaUploads(src, type) { function oaUploads(src, type) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// console.log('上传', type === 'img' ? '图片' : '视频', '', src) // //console.log('上传', type === 'img' ? '图片' : '视频', '', src)
let a = uni.uploadFile({ let a = uni.uploadFile({
url: HTTP_REQUEST_URL_THREE + '/api/common/upload', url: HTTP_REQUEST_URL_THREE + '/api/common/upload',
@ -52,7 +52,7 @@ function oaUploads(src, type) {
}, },
fail: (err) => { fail: (err) => {
reject(err) reject(err)
console.log('upload-上传失败', err) //console.log('upload-上传失败', err)
} }
}); });
}) })

View File

@ -98,7 +98,7 @@ export default {
// }); // });
}, },
handleUploadCallback(e) { handleUploadCallback(e) {
console.log('UploadCallback', e); //console.log('UploadCallback', e);
if (['choose', 'success'].includes(e.type)) { if (['choose', 'success'].includes(e.type)) {
// response // response
const tmpFiles = (e.data || []).map(({ response, tempFilePath, name, fileType }) => { const tmpFiles = (e.data || []).map(({ response, tempFilePath, name, fileType }) => {
@ -125,25 +125,25 @@ export default {
}, },
// //
handleUploadFile({ url }) { handleUploadFile({ url }) {
console.log('UploadFile', url); //console.log('UploadFile', url);
uni.uploadFile({ uni.uploadFile({
url: 'http://192.168.31.185:3000/api/upload', url: 'http://192.168.31.185:3000/api/upload',
filePath: url, filePath: url,
name: 'file', name: 'file',
success: (res) => { success: (res) => {
console.log('handleUpload success', res); //console.log('handleUpload success', res);
const tmpData = JSON.parse(res.data); const tmpData = JSON.parse(res.data);
uni.showToast({ title: tmpData.success ? '上传成功' : '上传失败', icon: 'none' }); uni.showToast({ title: tmpData.success ? '上传成功' : '上传失败', icon: 'none' });
}, },
fail: (err) => { fail: (err) => {
console.log('handleUpload fail', err); //console.log('handleUpload fail', err);
uni.showToast({ title: '出错啦', icon: 'none' }); uni.showToast({ title: '出错啦', icon: 'none' });
}, },
}); });
}, },
// //
handlePreview({ url }) { handlePreview({ url }) {
console.log('PreviewFile', url); //console.log('PreviewFile', url);
const fileType = this.getFileType(url); const fileType = this.getFileType(url);
if (fileType === 'image') { if (fileType === 'image') {
return uni.previewImage({ return uni.previewImage({
@ -156,7 +156,7 @@ export default {
return uni.openDocument({ return uni.openDocument({
filePath: url, filePath: url,
fail: (err) => { fail: (err) => {
console.log(err); //console.log(err);
uni.showToast({ icon: 'none', title: '文件预览失败' }); uni.showToast({ icon: 'none', title: '文件预览失败' });
}, },
}); });

View File

@ -35,7 +35,7 @@
} }
}, },
mounted() { mounted() {
console.log(this.isshow) //console.log(this.isshow)
}, },
methods: { methods: {
close(){ close(){
@ -46,7 +46,7 @@
returnbom() { returnbom() {
uni.sendHostEvent('closeApp', (ret) => { uni.sendHostEvent('closeApp', (ret) => {
// //
console.log('关闭应用' + JSON.stringify(ret)); //console.log('' + JSON.stringify(ret));
}); });
} }
} }

View File

@ -168,7 +168,7 @@
break; break;
} }
if(!strReg.test(value)){ if(!strReg.test(value)){
console.log(new Error("请传入与mode、fields匹配的value值例value="+example+"")) //console.log(new Error("modefieldsvaluevalue="+example+""))
} }
return strReg.test(value); return strReg.test(value);
}, },

View File

@ -67,7 +67,7 @@
checkValue(value){ checkValue(value){
let strReg=/^\d{4}-\d{2}-\d{2} [\u4e00-\u9fa5]{2}$/,example; let strReg=/^\d{4}-\d{2}-\d{2} [\u4e00-\u9fa5]{2}$/,example;
if(!strReg.test(value)){ if(!strReg.test(value)){
console.log(new Error("请传入与mode、fields匹配的value值例value="+example+"")) //console.log(new Error("modefieldsvaluevalue="+example+""))
} }
return strReg.test(value); return strReg.test(value);
}, },

View File

@ -74,7 +74,7 @@
checkValue(value){ checkValue(value){
let strReg=/^\d{4}-\d{2}-\d{2}$/,example="2020-04-03"; let strReg=/^\d{4}-\d{2}-\d{2}$/,example="2020-04-03";
if(!strReg.test(value[0])||!strReg.test(value[1])){ if(!strReg.test(value[0])||!strReg.test(value[1])){
console.log(new Error("请传入与mode匹配的value值例["+example+","+example+"]")) //console.log(new Error("modevalue["+example+","+example+"]"))
} }
return strReg.test(value[0])&&strReg.test(value[1]); return strReg.test(value[0])&&strReg.test(value[1]);
}, },

View File

@ -56,7 +56,7 @@
checkValue(value){ checkValue(value){
let strReg=/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(:\d{2})?$/,example="2019-12-12 18:05:00或者2019-12-12 18:05"; let strReg=/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(:\d{2})?$/,example="2019-12-12 18:05:00或者2019-12-12 18:05";
if(!strReg.test(value)){ if(!strReg.test(value)){
console.log(new Error("请传入与mode、fields匹配的value值例value="+example+"")) //console.log(new Error("modefieldsvaluevalue="+example+""))
} }
return strReg.test(value); return strReg.test(value);
}, },

View File

@ -56,7 +56,7 @@
checkValue(value){ checkValue(value){
let strReg=/^\d{2}:\d{2}:\d{2}$/,example="18:00:05"; let strReg=/^\d{2}:\d{2}:\d{2}$/,example="18:00:05";
if(!strReg.test(value)){ if(!strReg.test(value)){
console.log(new Error("请传入与mode、fields匹配的value值例value="+example+"")) //console.log(new Error("modefieldsvaluevalue="+example+""))
} }
return strReg.test(value); return strReg.test(value);
}, },

View File

@ -23,7 +23,7 @@ import {
function prePage() { function prePage() {
let pages = getCurrentPages(); let pages = getCurrentPages();
console.log(pages) //console.log(pages)
let prePage = pages[pages.length - 2]; let prePage = pages[pages.length - 2];
// #ifdef H5 // #ifdef H5
return prePage; return prePage;

View File

@ -1,7 +1,7 @@
// import uniCopy from '@/js_sdk/xb-copy/uni-copy.js'; // 拷贝功能插件 // import uniCopy from '@/js_sdk/xb-copy/uni-copy.js'; // 拷贝功能插件
// import compressImage from './compressImage.js'; // 解决图片旋转90°问题 // import compressImage from './compressImage.js'; // 解决图片旋转90°问题
// const device = uni.getSystemInfoSync(); // const device = uni.getSystemInfoSync();
// console.log("device:======================== " + JSON.stringify(device)); // //console.log("device:======================== " + JSON.stringify(device));
/* /*
参数说明 参数说明
@url @url
@ -180,7 +180,7 @@ export function GetUserInfo() {
return new Promise((reslove, reject) => { return new Promise((reslove, reject) => {
uni.getUserInfo({ uni.getUserInfo({
success(res) { success(res) {
console.log(res); //console.log(res);
reslove(res); reslove(res);
}, },
fail(rej) { fail(rej) {
@ -258,9 +258,9 @@ export function chooseImage(count) {
} }
// function compressImageHandler(src) { // function compressImageHandler(src) {
// // console.log('platform===' + device.platform) // // //console.log('platform===' + device.platform)
// const tempPath = compressImage(src, device.platform); // const tempPath = compressImage(src, device.platform);
// // console.log('tempPath-----' + tempPath); // // //console.log('tempPath-----' + tempPath);
// return tempPath // return tempPath
// } // }
//序列化对象和数组 //序列化对象和数组

View File

@ -5,7 +5,10 @@
"path": "pages/index/index", "path": "pages/index/index",
"style": { "style": {
"navigationBarTitleText": "首页", "navigationBarTitleText": "首页",
"navigationStyle": "custom"
"navigationStyle": "custom",
"enablePullDownRefresh": true
} }
}, },
{ {
@ -37,6 +40,13 @@
"navigationBarBackgroundColor": "#3274F9", "navigationBarBackgroundColor": "#3274F9",
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
},{
"path": "pages/oaTask/detail",
"style": {
"navigationBarTitleText": "任务详情",
"navigationBarBackgroundColor": "#3274F9",
"navigationBarTextStyle": "white"
}
}, },
{ {
"path": "pages/employees/index", "path": "pages/employees/index",
@ -46,6 +56,7 @@
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
}, },
{ {
"path": "pages/structure/index", "path": "pages/structure/index",
"style": { "style": {
@ -174,6 +185,13 @@
"navigationBarBackgroundColor": "#3274F9", "navigationBarBackgroundColor": "#3274F9",
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
}, {
"path": "pages/project/detail",
"style": {
"navigationBarTitleText": "项目详情",
"navigationBarBackgroundColor": "#3274F9",
"navigationBarTextStyle": "white"
}
}, },
{ {
"path": "pages/addproject/index", "path": "pages/addproject/index",

View File

@ -233,7 +233,7 @@
}) })
this.companydetail(option.data) this.companydetail(option.data)
// this.buname= // this.buname=
// console.log(this.columns3[0]) // //console.log(this.columns3[0])
} }
this.getDocumentList() this.getDocumentList()
@ -328,7 +328,7 @@
this.flag1 = false this.flag1 = false
}, },
confirm1(e) { confirm1(e) {
console.log(e) //console.log(e)
this.merchantData.position_id = e.value[0].id this.merchantData.position_id = e.value[0].id
this.companygw = e.value[0].title this.companygw = e.value[0].title
this.flag2 = false this.flag2 = false
@ -337,7 +337,7 @@
validateForm: function() { validateForm: function() {
let that = this, let that = this,
value = that.merchantData; value = that.merchantData;
console.log(that.merchantData) //console.log(that.merchantData)
if (!value.thumb) return Toast( if (!value.thumb) return Toast(
'请选择头像' '请选择头像'
); );
@ -386,7 +386,7 @@
}, },
async submit() { async submit() {
let that = this let that = this
console.log(that.validate) //console.log(that.validate)
if (this.validateForm() && this.validate) { if (this.validateForm() && this.validate) {
const res = await addcomanyer(this.merchantData) const res = await addcomanyer(this.merchantData)
Toast(res.msg); Toast(res.msg);
@ -413,12 +413,12 @@
Toast('上传成功') Toast('上传成功')
}).catch(err => { }).catch(err => {
console.log('err', err); //console.log('err', err);
Toast('上传失败') Toast('上传失败')
}) })
}, },
fail: function(err) { fail: function(err) {
console.log('choose失败'); //console.log('choose');
Toast('添加失败') Toast('添加失败')
} }
}); });

View File

@ -9,13 +9,13 @@
<input type="text" v-model="listobj.amount" placeholder="开票金额"> <input type="text" v-model="listobj.amount" placeholder="开票金额">
</view> </view>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">开票类型</view> <view class="title">开票类型</view>
<input type="text" v-model="project1" placeholder="请选择" disabled @click="leavaTypeShow2=true"> <input type="text" v-model="project1" placeholder="请选择" disabled @click="leavaTypeShow2=true">
</view> </view>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">开票主体</view> <view class="title">开票主体</view>
<input type="text" v-model="project2" placeholder="请选择" disabled @click="leavaShow1"> <input type="text" v-model="project2" placeholder="请选择" disabled @click="leavaShow1">
</view> </view>
@ -79,49 +79,67 @@
</view> </view>
<!-- <view class="leave_box" style="padding-top: 100rpx;"> --> <view class="leave_box" style="padding-top: 30rpx;">
<!-- 附件 --> <!-- 附件 -->
<!-- <block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i" >
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view> <view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
</view> </view>
</block> --> </block>
<!-- <view class="upload_box flex_a_c_j_sb"> <view class="upload_box flex_a_c_j_sb">
<view> <view>
<view class="title">选择文件并上传</view> <view class="title">选择文件并上传</view>
<view class="text"> <view class="text">
上传前请规范命名最大只能上传100M的文件<br /> 上传前请规范命名最大只能上传100M的文件<br />
超过请压缩成多个文件上传 超过请压缩成多个文件上传
</view> </view>
</view> --> </view>
<!-- <view class="" style="margin-top: 60rpx;"> <view class="" style="margin-top: 60rpx;">
<lsjUpload ref="lsjUpload" childId="upload1" :size="10" :option="fileOption" height="200rpx" <lsjUpload ref="lsjUpload" childId="upload1" :size="10" :option="fileOption" height="200rpx"
style="margin-top: 28rpx;" :debug="false" style="margin-top: 28rpx;" :debug="false"
:formats="'pdf,txt,zip,rar,jpg,png,mp3,avi,mov,mp4,gif'" :multiple="false" :count="3" :formats="'pdf,txt,zip,rar,jpg,png,mp3,avi,mov,mp4,gif'" :multiple="false" :count="3"
:instantly="true" @change="changeFile" @uploadEnd='onuploadEnd' @progress='onprogre'> --> :instantly="true" @change="changeFile" @uploadEnd='onuploadEnd' @progress='onprogre'>
<!-- <view class="change-file">请选择PDF类型的发票</view> --> <!-- <view class="change-file">请选择PDF类型的发票</view> -->
<!-- <u-icon name="plus-circle" color="#333333" size="28" <!-- <u-icon name="plus-circle" color="#333333" size="28"
style="margin-top: 40rpx; margin-left: 60rpx;"></u-icon> --> style="margin-top: 40rpx; margin-left: 60rpx;"></u-icon> -->
<!-- <u-icon name="plus-circle" color="#333333" size="28"></u-icon> <u-icon name="plus-circle" color="#333333" size="28"></u-icon>
</lsjUpload> </lsjUpload>
</view> </view>
</view>--> </view>
<!-- </view> --> </view>
<view class="flow_path"> <view class="flow_path">
<view class="cont_cell"> <view class="cont_cell">
<view class="title">选择审批流程</view> <view class="title">选择审批流程</view>
<input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true"> <input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true">
</view> </view>
<view class="cont_cell" @click="branchShow = true"> <view class="cont_cell" @click="branchShow = true" v-if="flowShow">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
<view v-else>
<block v-for="(item,i) in sprecord" :key="i">
<view class="record" style="display: flex;">
<view class="circle"></view>
<text class="text">{{i+1}} {{item.flow_type_txt}}
</text>
</view>
<view class="" v-if="item.user_id_info.length>0&&item.user_id_info" style='padding-left: 20rpx;padding-right: 20rpx;margin-bottom: 20rpx;'>
<view class="" v-for="(items,k) in item.user_id_info" style="display: flex;margin-right: 20rpx;">
<view class="" style="width: 30rpx;height: 30rpx;border-radius: 50%; margin-left: 20rpx;margin-right: 10rpx;">
<image :src="`${httpRequestUrl}`+items.thumb" mode="" style="width: 30rpx;height: 30rpx;border-radius: 50%;margin-top: 5rpx;"></image>
</view>
<view class=""> {{items.name}}</view>
</view>
</view>
</block>
</view>
<view class="cont_cell" @click="branchShow1 = true"> <view class="cont_cell" @click="branchShow1 = true">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
@ -145,17 +163,17 @@
<!-- 选择审批流程 --> <!-- 选择审批流程 -->
<u-action-sheet :actions="flowPathSheet" @select="flowPathSelect" title="选择审批流程" :show="flowPathShow" <u-action-sheet :actions="flowPathSheet" @select="flowPathSelect" title="选择审批流程" :show="flowPathShow"
@close="flowPathShow=false" :closeOnClickOverlay="true" :closeOnClickAction="true"> @close="flowPathShow=false" @cancel="flowPathShow=false" :closeOnClickOverlay="true" :closeOnClickAction="true">
</u-action-sheet> </u-action-sheet>
<!-- 部门选择 --> <!-- 部门选择 -->
<u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns" <u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns"
@confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true" @close="branchShowclose" @confirm="branchConfirm" @change="columnCode" @cancel="branchShowclose" :closeOnClickOverlay="true" @close="branchShowclose"
keyName="name"> keyName="name">
</u-picker> </u-picker>
<u-picker :show="branchShow1" :defaultIndex='defaultIndex1' ref="branchRef" :columns="branchColumns1" <u-picker :show="branchShow1" :defaultIndex='defaultIndex1' ref="branchRef" :columns="branchColumns1"
@confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1" @confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1" @cancel="branchShowclose1"
keyName="name"> keyName="name">
</u-picker> </u-picker>
<!-- 选择时间 --> <!-- 选择时间 -->
@ -178,7 +196,7 @@
import { import {
flowusers,
userdepartment, userdepartment,
getemployee, getemployee,
addinvoice, addinvoice,
@ -191,6 +209,9 @@
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
export default { export default {
components: { components: {
lsjUpload lsjUpload
@ -243,11 +264,17 @@
fileOption: {}, fileOption: {},
files: new Map(), files: new Map(),
fileArray: [], fileArray: [],
dnum: 0 dnum: 0,
flowShow: true
} }
}, },
onLoad() { onLoad() {
},
computed: {
httpRequestUrl() {
return HTTP_REQUEST_URL;
}
}, },
onShow() { onShow() {
this.fileOption = { this.fileOption = {
@ -269,7 +296,20 @@
methods: { methods: {
//id
async flowuser(id) {
let res = await flowusers({
id: id
})
if (res.data.flow_data.length > 0) {
this.flowShow = false
this.sprecord = res.data.flow_data
} else {
this.flowShow = true
}
},
reset() { reset() {
this.list = [{ this.list = [{
name: "", name: "",
@ -415,7 +455,7 @@
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[2].name)
if (this.listobj.copy_uids) { if (this.listobj.copy_uids) {
this.listobj.copy_uids += e.value[2].id this.listobj.copy_uids += e.value[2].id+ ','
} else { } else {
this.listobj.copy_uids = e.value[2].id this.listobj.copy_uids = e.value[2].id
} }
@ -425,15 +465,15 @@
}, },
async submiteBtn() { async submiteBtn() {
console.log(this.listobj) // console.log(this.listobj)
// let fileIds = []; let fileIds = [];
// this.fileArray.map((item, i) => { this.fileArray.map((item, i) => {
// fileIds.push(item.id) fileIds.push(item.id)
// }); });
// if (this.fileArray.length > 0) { if (this.fileArray.length > 0) {
// this.listobj.file_ids = fileIds.join(','); this.listobj.file_ids = fileIds.join(',');
// } }
this.listobj.flow_id = this.flow_id this.listobj.flow_id = this.flow_id
if (this.listobj.invoice_phone) { if (this.listobj.invoice_phone) {
const pattern = /^1[3456789]\d{9}$/; const pattern = /^1[3456789]\d{9}$/;
@ -450,6 +490,11 @@
const res = await addinvoice(this.listobj) const res = await addinvoice(this.listobj)
if (res.code == 0) {
uni.navigateBack({
delta: 1
})
}
Toast('提交成功') Toast('提交成功')
@ -484,6 +529,8 @@
this.flowPath = value.name this.flowPath = value.name
this.flow_id = value.id this.flow_id = value.id
this.flowuser(value.id)
}, },
/** 类型 */ /** 类型 */
leavaType(e) { leavaType(e) {
@ -574,7 +621,8 @@
position: relative; position: relative;
padding-bottom: 100px; padding-bottom: 100px;
} }
/deep/.u-action-sheet item-wrap{
/deep/.u-action-sheet__item-wrap {
overflow: auto; overflow: auto;
max-height: 50vh; max-height: 50vh;
} }
@ -630,10 +678,53 @@
width: 100%; width: 100%;
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
input {
width: 460rpx;
.title {
}
font-size: 31.58rpx; font-size: 31.58rpx;
} }
.record {
position: relative;
margin-bottom: 14.04rpx;
.circle {
width: 31.58rpx;
height: 31.58rpx;
background-color: #fff;
border: 2px solid #34A853;
border-radius: 50%;
margin: 5px;
display: flex;
flex-direction: column;
align-items: center;
&::before {
content: "";
display: block;
position: absolute;
clear: both;
width: 1px;
height: 100%;
background-color: rgba(204, 204, 204, 0.5);
margin: 31.58rpx;
}
}
.text {
flex: 1;
margin-left: 7.02rpx;
}
}
:last-child {
.circle {
&::before {
display: none;
}
}
} }
// //

View File

@ -9,13 +9,13 @@
<input type="text" v-model="listobj.amount" placeholder="开票金额"> <input type="text" v-model="listobj.amount" placeholder="开票金额">
</view> </view>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">开票类型</view> <view class="title">开票类型</view>
<input type="text" v-model="project1" placeholder="请选择" disabled @click="leavaTypeShow2=true"> <input type="text" v-model="project1" placeholder="请选择" disabled @click="leavaTypeShow2=true">
</view> </view>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">开票主体</view> <view class="title">开票主体</view>
<input type="text" v-model="project2" placeholder="请选择" disabled @click="leavaShow1"> <input type="text" v-model="project2" placeholder="请选择" disabled @click="leavaShow1">
</view> </view>
@ -79,49 +79,69 @@
</view> </view>
<!-- <view class="leave_box" style="padding-top: 100rpx;"> --> <view class="leave_box" style="padding-top: 100rpx;">
<!-- 附件 --> <!-- 附件 -->
<!-- <block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i">
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
</view> </view>
</block> --> </block>
<!-- <view class="upload_box flex_a_c_j_sb"> <view class="upload_box flex_a_c_j_sb">
<view> <view>
<view class="title">选择文件并上传</view> <view class="title">选择文件并上传</view>
<view class="text"> <view class="text">
上传前请规范命名最大只能上传100M的文件<br /> 上传前请规范命名最大只能上传100M的文件<br />
超过请压缩成多个文件上传 超过请压缩成多个文件上传
</view> </view>
</view> --> </view>
<!-- <view class="" style="margin-top: 60rpx;"> <view class="" style="margin-top: 60rpx;">
<lsjUpload ref="lsjUpload" childId="upload1" :size="10" :option="fileOption" height="200rpx" <lsjUpload ref="lsjUpload" childId="upload1" :size="10" :option="fileOption" height="200rpx"
style="margin-top: 28rpx;" :debug="false" style="margin-top: 28rpx;" :debug="false"
:formats="'pdf,txt,zip,rar,jpg,png,mp3,avi,mov,mp4,gif'" :multiple="false" :count="3" :formats="'pdf,txt,zip,rar,jpg,png,mp3,avi,mov,mp4,gif'" :multiple="false" :count="3"
:instantly="true" @change="changeFile" @uploadEnd='onuploadEnd' @progress='onprogre'> --> :instantly="true" @change="changeFile" @uploadEnd='onuploadEnd' @progress='onprogre'>
<!-- <view class="change-file">请选择PDF类型的发票</view> --> <!-- <view class="change-file">请选择PDF类型的发票</view> -->
<!-- <u-icon name="plus-circle" color="#333333" size="28" <!-- <u-icon name="plus-circle" color="#333333" size="28"
style="margin-top: 40rpx; margin-left: 60rpx;"></u-icon> --> style="margin-top: 40rpx; margin-left: 60rpx;"></u-icon> -->
<!-- <u-icon name="plus-circle" color="#333333" size="28"></u-icon> <u-icon name="plus-circle" color="#333333" size="28"></u-icon>
</lsjUpload> </lsjUpload>
</view> </view>
</view>--> </view>
<!-- </view> --> </view>
<view class="flow_path"> <view class="flow_path">
<view class="cont_cell"> <view class="cont_cell">
<view class="title">选择审批流程</view> <view class="title">选择审批流程</view>
<input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true"> <input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true">
</view> </view>
<view class="cont_cell" @click="branchShow = true">
<view class="cont_cell" @click="branchShow = true" v-if="flowShow">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
<view v-else>
<block v-for="(item,i) in sprecord" :key="i">
<view class="record" style="display: flex;">
<view class="circle"></view>
<text class="text">{{i+1}} {{item.flow_type_txt}}
</text>
</view>
<view class="" v-if="item.user_id_info.length>0&&item.user_id_info" style='padding-left: 20rpx;padding-right: 20rpx;margin-bottom: 20rpx;'>
<view class="" v-for="(items,k) in item.user_id_info" style="display: flex;margin-right: 20rpx;">
<view class=""
style="width: 30rpx;height: 30rpx;border-radius: 50%; margin-left: 20rpx;margin-right: 10rpx;">
<image :src="`${httpRequestUrl}`+items.thumb" mode=""
style="width: 30rpx;height: 30rpx;border-radius: 50%;margin-top: 5rpx;"></image>
</view>
<view class=""> {{items.name}}</view>
</view>
</view>
</block>
</view>
<view class="cont_cell" @click="branchShow1 = true"> <view class="cont_cell" @click="branchShow1 = true">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
@ -178,7 +198,7 @@
import { import {
flowusers,
userdepartment, userdepartment,
getemployee, getemployee,
addinvoice, addinvoice,
@ -191,6 +211,9 @@
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
export default { export default {
components: { components: {
lsjUpload lsjUpload
@ -223,6 +246,8 @@
check_admin_name: '', check_admin_name: '',
copy_names: '', copy_names: '',
isshow: true, isshow: true,
flowShow: true,
sprecord: [],
columns1: [{ columns1: [{
name: '增值税专用发票', name: '增值税专用发票',
id: 1, id: 1,
@ -268,8 +293,26 @@
}, },
computed: {
httpRequestUrl() {
return HTTP_REQUEST_URL;
}
},
methods: { methods: {
//id
async flowuser(id) {
let res = await flowusers({
id: id
})
if (res.data.flow_data.length > 0) {
this.flowShow = false
this.sprecord = res.data.flow_data
} else {
this.flowShow = true
}
},
async detail(id) { async detail(id) {
let res = await invoiceview({ let res = await invoiceview({
id: id id: id
@ -279,6 +322,7 @@
this.project1 = this.columns1.find(obj => obj.id === res.data.detail.type).name; this.project1 = this.columns1.find(obj => obj.id === res.data.detail.type).name;
this.project2 = this.actions4.find(obj => obj.id === res.data.detail.invoice_subject).name; this.project2 = this.actions4.find(obj => obj.id === res.data.detail.invoice_subject).name;
// this.copy_names = res.data.detail.copy_user // this.copy_names = res.data.detail.copy_user
this.listobj.id = res.data.detail.id
this.listobj.invoice_account = res.data.detail.invoice_account this.listobj.invoice_account = res.data.detail.invoice_account
this.listobj.invoice_address = res.data.detail.invoice_address this.listobj.invoice_address = res.data.detail.invoice_address
this.listobj.invoice_bank = res.data.detail.invoice_bank this.listobj.invoice_bank = res.data.detail.invoice_bank
@ -445,7 +489,7 @@
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[2].name)
if (this.listobj.copy_uids) { if (this.listobj.copy_uids) {
this.listobj.copy_uids += e.value[2].id this.listobj.copy_uids += e.value[2].id + ','
} else { } else {
this.listobj.copy_uids = e.value[2].id this.listobj.copy_uids = e.value[2].id
} }
@ -456,14 +500,14 @@
async submiteBtn() { async submiteBtn() {
console.log(this.listobj) console.log(this.listobj)
// let fileIds = []; let fileIds = [];
// this.fileArray.map((item, i) => { this.fileArray.map((item, i) => {
// fileIds.push(item.id) fileIds.push(item.id)
// }); });
// if (this.fileArray.length > 0) { if (this.fileArray.length > 0) {
// this.listobj.file_ids = fileIds.join(','); this.listobj.file_ids = fileIds.join(',');
// } }
this.listobj.flow_id = this.flow_id this.listobj.flow_id = this.flow_id
if (this.listobj.invoice_phone) { if (this.listobj.invoice_phone) {
const pattern = /^1[3456789]\d{9}$/; const pattern = /^1[3456789]\d{9}$/;
@ -480,6 +524,11 @@
const res = await addinvoice(this.listobj) const res = await addinvoice(this.listobj)
if (res.code == 0) {
uni.navigateBack({
delta: 1
})
}
Toast('提交成功') Toast('提交成功')
@ -513,7 +562,7 @@
flowPathSelect(value) { flowPathSelect(value) {
this.flowPath = value.name this.flowPath = value.name
this.flow_id = value.id this.flow_id = value.id
this.flowuser(value.id)
}, },
/** 类型 */ /** 类型 */
leavaType(e) { leavaType(e) {
@ -604,10 +653,12 @@
position: relative; position: relative;
padding-bottom: 100px; padding-bottom: 100px;
} }
/deep/.u-action-sheet__item-wrap { /deep/.u-action-sheet__item-wrap {
overflow: auto; overflow: auto;
max-height: 50vh; max-height: 50vh;
} }
.leave_box, .leave_box,
.flow_path { .flow_path {
width: 100%; width: 100%;
@ -659,7 +710,11 @@
width: 100%; width: 100%;
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
input {
width: 460rpx;
}
.title { .title {
font-size: 31.58rpx; font-size: 31.58rpx;
} }

View File

@ -6,7 +6,7 @@
<view class="cont_cell"> <view class="cont_cell">
<view class="title">开票金额</view> <view class="title">开票金额</view>
<input type="text" v-model="listobj.amount" placeholder="开票金额"> <input type="text" v-model="listobj.amount" disabled placeholder="开票金额">
</view> </view>
<view class="leava_type flex_a_c"> <view class="leava_type flex_a_c">
@ -78,19 +78,19 @@
</view> </view>
<!-- <view class="leave_box" style="padding-top: 100rpx;"> --> <view class="leave_box" style="padding-top: 100rpx;" v-if="fileArray.length>0">
<!-- 附件 --> <!-- 附件 -->
<!-- <block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i">
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb" @click="downloadFile(item)">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
</view> </view>
</block> --> </block>
<!-- <view class="upload_box flex_a_c_j_sb"> <!-- <view class="upload_box flex_a_c_j_sb">
<view> <view>
<view class="title">选择文件并上传</view> <view class="title">选择文件并上传</view>
@ -111,23 +111,157 @@
</lsjUpload> </lsjUpload>
</view> </view>
</view>--> </view>-->
<!-- </view> --> </view>
<view class="flow_path" v-if="listobj.check_status!= 5&&listobj.check_status!= 2&& ktype!=0"> <view class="flow_path" v-if="listobj.check_status!= 5&&listobj.check_status!= 2&& ktype!=0">
<view class="cont_cell" style="padding-top: 20rpx;" v-if="listobj.check_status!= 4"> <view class="cont_cell" style="padding-top: 20rpx;" v-if="listobj.check_status== 3&&is_create_admin==1">
<view class="title" style="width: 200rpx;">撤回意见</view> <view class="title" style="width: 200rpx;">撤回意见</view>
<textarea v-model="mscontent" placeholder="请输入撤回意见" /> <textarea v-model="mscontent" placeholder="请输入撤回意见"
style="padding-top: 20rpx;padding-left: 20rpx;border:1px solid#f1f1f1;padding :20rpx;20rpx;" />
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审批流程</view> <view class="title">审批流程</view>
</view> </view>
<view class="" style="border-bottom: 1px solid #f7f7f7;border-top: 1px solid #f7f7f7;">
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="text">{{nodelist.create_user}}创建</view>
</view>
<view class="" v-for="(itemh,m) in nodelist.flows" :key='m'>
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="" v-if='itemh.flow_type==1||itemh.flow_type==2' style="display: flex;">
<view class="text">{{itemh.flow_type==1?'部门负责人':'上级部门负责人'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==7||itemh.flow_type== 6' style="display: flex;">
<view class="text">{{itemh.flow_type==7?'部门分管领导':'上级部门分管领导'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==0'>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length<=0">
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==3' style="display: flex;">
<view class="text">指定人或签</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=1&&itemh.user_id_info[0].status!=2">
<view class="text">待审核</view>
</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info" :key='o'>
<view class="text" v-if="itemk.status == 1">通过</view>
<view class="text" v-else-if="itemk.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==4' style="display: flex;">
<view class="text">指定人员(会签)</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="" v-if="itemh.user_id_info.length>0">
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==5' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view style="padding-bottom: 40px; border-bottom: 1px solid #f7f7f7;" v-if="check_record.length>0">
<block v-for="(item,i) in check_record" :key="i"> <block v-for="(item,i) in check_record" :key="i">
<view class="record" style="display: flex;"> <view class="record" style="display: flex;">
<view class="circle"></view> <view class="circle"></view>
<text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}} <text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}}了此申请操作意见{{item.content}}</text>
了此申请操作意见{{item.content}}</text>
</view> </view>
</block> </block>
</view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审核状态</view> <view class="title">审核状态</view>
@ -145,19 +279,20 @@
</view> </view>
</view> </view>
<view class="" v-if="ktype!=0&&listobj.check_status!= 5&&listobj.check_status!= 2 ">
<view class="bot_btn" v-if="listobj.check_status!= 4">
<view class="bot_btn" v-if="listobj.check_status== 3&&is_create_admin==1">
<!-- <view class="reset" @click="reset">重置</view> --> <!-- <view class="reset" @click="reset">重置</view> -->
<view class="submit_btn" @click="submiteBtn">撤回</view> <view class="submit_btn" @click="submiteBtn">撤回</view>
</view> </view>
<view class="bot_btn" v-else> <view class="bot_btn" v-if="listobj.check_status== 4&&is_create_admin==1">
<!-- <view class="reset" @click="reset">重置</view> --> <!-- <view class="reset" @click="reset">重置</view> -->
<view class="submit_btn" @click="bianjiBtn">重新编辑</view> <view class="submit_btn" @click="bianjiBtn">重新编辑</view>
</view> </view>
</view>
@ -220,12 +355,16 @@
invoicecate, invoicecate,
appflow_check, appflow_check,
invoiceview, invoiceview,
invoiceflow invoiceflow,
flownodes
} from '@/api/oa.js' } from '@/api/oa.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue' import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
export default { export default {
components: { components: {
lsjUpload lsjUpload
@ -283,6 +422,9 @@
check_record: [], check_record: [],
dnum: 0, dnum: 0,
ktype: 1, ktype: 1,
nodelist: {},
check_step_sort: '',
is_create_admin:0,
} }
}, },
onLoad(option) { onLoad(option) {
@ -309,29 +451,45 @@
methods: { methods: {
//
async flownodes(val) {
let res = await flownodes({
id: val,
type: 3
})
this.nodelist = res.data
// console.log(res)
},
async detail(id) { async detail(id) {
let res = await invoiceview({ let res = await invoiceview({
id: id id: id
}) })
this.flownodes(id)
this.listobj = res.data.detail this.listobj = res.data.detail
this.check_step_sort = res.data.detail.check_step_sort
this.is_create_admin= res.data.detail.is_create_admin
this.project1 = this.columns1.find(obj => obj.id === res.data.detail.type).name; this.project1 = this.columns1.find(obj => obj.id === res.data.detail.type).name;
this.project2 = this.actions4.find(obj => obj.id === res.data.detail.invoice_subject).name; this.project2 = this.actions4.find(obj => obj.id === res.data.detail.invoice_subject).name;
this.check_record = res.data.check_record this.check_record = res.data.check_record
this.check_admin_name = res.data.detail.check_user this.check_admin_name = res.data.detail.check_user
this.copy_names = res.data.detail.copy_user this.copy_names = res.data.detail.copy_user
if (res.data && res.data.detail && res.data.detail.fileArray) {
this.fileArray = res.data.detail.fileArray.map(function(obj) {
return {
name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize
};
});
}
if (res.data.detail.type == 2) { if (res.data.detail.type == 2) {
this.isshow = false this.isshow = false
} else { } else {
this.isshow = true this.isshow = true
} }
if( res.data.detail.type==2){
this.isshow=false
}else{
this.isshow=true
}
}, },
reset() { reset() {
@ -401,6 +559,36 @@
}, },
downloadFile(item) {
uni.downloadFile({
url: HTTP_REQUEST_URL + item.filepath,
success: function(res) {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
if (item.fileext == 'png' || item.fileext == 'jpg') {
uni.previewImage({
urls: [tempFilePath]
});
} else {
uni.showModal({
title: '提示',
content: '暂时不支持查看,请登录后台查看',
success: function(res) {
if (res.confirm) {
// console.log('');
} else if (res.cancel) {
// console.log('');
}
}
});
}
}
}
});
},
// //
async columnCode(e) { async columnCode(e) {
if (e.columnIndex == 1) { if (e.columnIndex == 1) {
@ -499,7 +687,11 @@
let res = await appflow_check(data) let res = await appflow_check(data)
// console.log(res) // console.log(res)
Toast(res.msg) Toast(res.msg)
if (res.code == 0) {
uni.navigateBack({
delta: 1
})
}
// const res = await appexpense(this.listobj) // const res = await appexpense(this.listobj)
Toast('提交成功') Toast('提交成功')
@ -626,7 +818,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.leave_request { .leave_request {
position: relative; position: relative;
padding-bottom: 100px; padding-bottom: 100px;
@ -681,12 +873,16 @@
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; width: 100%;
input {
width: 450rpx;
}
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
.title {
font-size: 31.58rpx; font-size: 31.58rpx;
}
} }
// //
@ -698,13 +894,7 @@
margin: 17.54rpx 0; margin: 17.54rpx 0;
} }
:last-child {
.circle {
&::before {
display: none;
}
}
}
.tag { .tag {
font-size: 21.05rpx; font-size: 21.05rpx;
@ -722,28 +912,7 @@
.circle {
width: 31.58rpx;
height: 31.58rpx;
background-color: #fff;
border: 2px solid #34A853;
border-radius: 50%;
margin: 0 5px;
display: flex;
flex-direction: column;
align-items: center;
&::before {
content: "";
display: block;
position: absolute;
clear: both;
width: 1px;
height: 100%;
background-color: rgba(204, 204, 204, 0.5);
margin: 31.58rpx;
}
}
// //
.upload_box { .upload_box {
@ -765,34 +934,24 @@
.record { .record {
position: relative; position: relative;
margin-bottom: 14.04rpx; margin-bottom: 14.04rpx;
margin-top: 14.04rpx;
.circle { // .circle {
width: 31.58rpx; // width: 31.58rpx;
height: 31.58rpx; // height: 31.58rpx;
background-color: #fff; // background-color: #fff;
border: 2px solid #34A853; // border: 2px solid #34A853;
border-radius: 50%; // border-radius: 50%;
margin: 5px; // margin: 3px;
display: flex; // display: flex;
flex-direction: column; // flex-direction: column;
align-items: center; // align-items: center;
&::before { // }
content: "";
display: block;
position: absolute;
clear: both;
width: 1px;
height: 100%;
background-color: rgba(204, 204, 204, 0.5);
margin: 31.58rpx;
}
}
.text { // .text {
flex: 1; // margin-left: 7.02rpx;
margin-left: 7.02rpx; // }
}
} }
.file_name { .file_name {

View File

@ -6,7 +6,7 @@
<view class="cont_cell"> <view class="cont_cell">
<view class="title">开票金额</view> <view class="title">开票金额</view>
<input type="text" v-model="listobj.amount" placeholder="开票金额"> <input type="text" v-model="listobj.amount" placeholder="开票金额" disabled>
</view> </view>
<view class="leava_type flex_a_c"> <view class="leava_type flex_a_c">
@ -22,16 +22,16 @@
<view class="cont_cell"> <view class="cont_cell">
<view class="title">抬头类型</view> <view class="title">抬头类型</view>
<radio-group class="select_group" @change="deliveryWayChangetwo"> <radio-group class="select_group">
<label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;"> <label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;">
<view style="margin-right:5rpx;"> <view style="margin-right:5rpx;">
<radio value="1" :checked="selected === '1'" /> <radio value="1" disabled :checked="selected === '1'" />
</view> </view>
企业 企业
</label> </label>
<label class="radio_select" style="margin-right:15rpx;display: flex;"> <label class="radio_select" style="margin-right:15rpx;display: flex;">
<view style="margin-right:5rpx;"> <view style="margin-right:5rpx;">
<radio value="2" :checked="selected === '2'" /> <radio value="2" disabled :checked="selected === '2'" />
</view> </view>
<view @click="branchShow = true" style="display: flex;"> <view @click="branchShow = true" style="display: flex;">
<view class="title">个人</view> <view class="title">个人</view>
@ -42,33 +42,33 @@
<view class="cont_cell"> <view class="cont_cell">
<view class="title">开票抬头</view> <view class="title">开票抬头</view>
<input type="text" v-model="listobj.invoice_title" placeholder="开票抬头"> <input type="text" v-model="listobj.invoice_title" disabled placeholder="开票抬头">
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">电话号码</view> <view class="title">电话号码</view>
<input type="text" v-model="listobj.invoice_phone" placeholder="电话号码"> <input type="text" v-model="listobj.invoice_phone" disabled placeholder="电话号码">
</view> </view>
<view class="cont_cell" v-if="isshow"> <view class="cont_cell" v-if="isshow">
<view class="title">纳税人识别号 </view> <view class="title">纳税人识别号 </view>
<input type="text" v-model="listobj.invoice_tax" placeholder="纳税人识别号"> <input type="text" v-model="listobj.invoice_tax" disabled placeholder="纳税人识别号">
</view> </view>
<view class="cont_cell" v-if="isshow"> <view class="cont_cell" v-if="isshow">
<view class="title">开户行</view> <view class="title">开户行</view>
<input type="text" v-model="listobj.invoice_bank" placeholder="开户行"> <input type="text" v-model="listobj.invoice_bank" disabled placeholder="开户行">
</view> </view>
<view class="cont_cell" v-if="isshow"> <view class="cont_cell" v-if="isshow">
<view class="title">银行账号</view> <view class="title">银行账号</view>
<input type="text" v-model="listobj.invoice_account" placeholder="银行账号"> <input type="text" v-model="listobj.invoice_account" disabled placeholder="银行账号">
</view> </view>
<view class="cont_cell" v-if="isshow"> <view class="cont_cell" v-if="isshow">
<view class="title">银行营业网点 </view> <view class="title">银行营业网点 </view>
<input type="text" v-model="listobj.invoice_banking" placeholder="银行营业网点"> <input type="text" v-model="listobj.invoice_banking" disabled placeholder="银行营业网点">
</view> </view>
<view class="cont_cell" v-if="isshow"> <view class="cont_cell" v-if="isshow">
<view class="title">地址</view> <view class="title">地址</view>
<input type="text" v-model="listobj.invoice_address" placeholder="地址"> <input type="text" v-model="listobj.invoice_address" disabled placeholder="地址">
</view> </view>
@ -78,19 +78,19 @@
</view> </view>
<!-- <view class="leave_box" style="padding-top: 100rpx;"> --> <view class="leave_box" style="padding-top: 30rpx;" v-if="fileArray.length>0">
<!-- 附件 --> <!-- 附件 -->
<!-- <block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i">
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb" @click="downloadFile(item)">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
</view> </view>
</block> --> </block>
<!-- <view class="upload_box flex_a_c_j_sb"> <!-- <view class="upload_box flex_a_c_j_sb">
<view> <view>
<view class="title">选择文件并上传</view> <view class="title">选择文件并上传</view>
@ -111,19 +111,153 @@
</lsjUpload> </lsjUpload>
</view> </view>
</view>--> </view>-->
<!-- </view> --> </view>
<view class="flow_path"> <view class="flow_path">
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审批流程</view> <view class="title">审批流程</view>
</view> </view>
<view style="padding-bottom: 40rpx;"> <view class="" style="border-bottom: 1px solid #f7f7f7;border-top: 1px solid #f7f7f7;">
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="text">{{nodelist.create_user}}创建</view>
</view>
<view class="" v-for="(itemh,m) in nodelist.flows" :key='m'>
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="" v-if='itemh.flow_type==1||itemh.flow_type==2' style="display: flex;">
<view class="text">{{itemh.flow_type==1?'部门负责人':'上级部门负责人'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==7||itemh.flow_type== 6' style="display: flex;">
<view class="text">{{itemh.flow_type==7?'部门分管领导':'上级部门分管领导'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==0' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==3' style="display: flex;">
<view class="text">指定人或签</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=1&&itemh.user_id_info[0].status!=2">
<view class="text">待审核</view>
</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info" :key='o'>
<view class="text" v-if="itemk.status == 1">通过</view>
<view class="text" v-else-if="itemk.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==4' style="display: flex;">
<view class="text">指定人员(会签)</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="" v-if="itemh.user_id_info.length>0">
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==5' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
<view class="" v-else>
<view class="text">通过</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view style="padding-bottom: 40rpx; border-bottom: 1px solid #f7f7f7;" v-if="check_record.length>0">
<block v-for="(item,i) in check_record" :key="i"> <block v-for="(item,i) in check_record" :key="i">
<view class="record" style="display: flex;"> <view class="record" style="display: flex;">
<view class="circle"></view> <view class="circle"></view>
<text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}} <text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}}了此申请
了此申请操作意见{{item.content}}</text> 操作意见{{item.content}}</text>
</view> </view>
</block> </block>
</view> </view>
@ -142,9 +276,10 @@
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
</view> </view>
<view class="" v-if="listobj.check_status!= 5&&listobj.check_status!= 2"> <view class="" v-if="is_check_admin==1&&listobj.check_status==1&&flow_type==0">
<view class="title" style="margin-bottom: 30rpx;">审核节点</view> <view class="title" style="margin-bottom: 10rpx;margin-top: 30rpx;">审核节点</view>
<radio-group class="select_group" @change="deliveryWayChangetwo1"> <radio-group class="select_group" @change="deliveryWayChangetwo1"
style="font-size: 30rpx; padding: 10px;">
<label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;"> <label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;">
<view style="margin-right:5rpx;"> <view style="margin-right:5rpx;">
<radio value="1" /> <radio value="1" />
@ -156,22 +291,25 @@
<radio value="2" /> <radio value="2" />
</view> </view>
<view @click="branchShow = true" style="display: flex;"> <view @click="branchShow = true" style="display: flex;">
<view class="title"> 下一位审批人</view> <view class="title" style="width: 250rpx;"> 下一位审批人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" style="margin-top: -5rpx;"
placeholder="请选择" disabled>
</view> </view>
</label> </label>
</radio-group> </radio-group>
</view> </view>
</block> </block>
<view class="cont_cell" style="padding-top: 20rpx;" <view class="cont_cell" style="padding-top: 20rpx;"
v-if="listobj.check_status!= 4&&listobj.check_status!= 5&&listobj.check_status!= 2"> v-if="listobj.check_status!= 4&&listobj.check_status!= 5&&listobj.check_status!= 2&&listobj.check_status!= 3&&listobj.check_status!= 4&&is_check_admin==1">
<view class="title" style="width: 200rpx;">审核意见</view> <view class="title" style="width: 200rpx;">审核意见</view>
<textarea v-model="mscontent" placeholder="请输入审核意见" /> <textarea v-model="mscontent" placeholder="请输入审核意见"
style="padding-top: 20rpx;padding-left: 20rpx;border:1px solid#f1f1f1;padding :20rpx;20rpx;" />
</view> </view>
</view> </view>
<view class="bot_btn" v-if="listobj.check_status!= 5&&listobj.check_status!= 2"> <view class="bot_btn"
<view class="reset" @click="appflowcheck()">拒绝</view> v-if="listobj.check_status!= 5&&listobj.check_status!= 2&&listobj.check_status!= 3&&listobj.check_status!= 4&&is_check_admin==1">
<view class="reset" @click="appflowcheck()">{{flow_type==5?'回退':'拒绝'}}</view>
<view class="submit_btn" @click=" appflowcheck1()">通过</view> <view class="submit_btn" @click=" appflowcheck1()">通过</view>
</view> </view>
@ -198,18 +336,19 @@
<!-- 选择审批流程 --> <!-- 选择审批流程 -->
<u-action-sheet :actions="flowPathSheet" @select="flowPathSelect" title="选择审批流程" :show="flowPathShow" <u-action-sheet :actions="flowPathSheet" @select="flowPathSelect" title="选择审批流程" :show="flowPathShow"
@close="flowPathShow=false" :closeOnClickOverlay="true" :closeOnClickAction="true"> @cancel="flowPathShow=false" @close="flowPathShow=false" :closeOnClickOverlay="true"
:closeOnClickAction="true">
</u-action-sheet> </u-action-sheet>
<!-- 部门选择 --> <!-- 部门选择 -->
<u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns" <u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns"
@confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true" @close="branchShowclose" @confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true" @close="branchShowclose"
keyName="name"> @cancel="branchShowclose" keyName="name">
</u-picker> </u-picker>
<u-picker :show="branchShow1" :defaultIndex='defaultIndex1' ref="branchRef" :columns="branchColumns1" <u-picker :show="branchShow1" :defaultIndex='defaultIndex1' ref="branchRef" :columns="branchColumns1"
@confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1" @confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1"
keyName="name"> @cancel="branchShowclose1" keyName="name">
</u-picker> </u-picker>
<!-- 选择时间 --> <!-- 选择时间 -->
@ -238,12 +377,16 @@
invoicecate, invoicecate,
appflow_check, appflow_check,
invoiceview, invoiceview,
invoiceflow invoiceflow,
flownodes
} from '@/api/oa.js' } from '@/api/oa.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue' import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
export default { export default {
components: { components: {
lsjUpload lsjUpload
@ -301,7 +444,11 @@
check_record: [], check_record: [],
dnum: 0, dnum: 0,
check: '', check: '',
admin_name: "" admin_name: "",
nodelist: {},
flow_type: '',
check_step_sort: '',
is_check_admin: 0
} }
}, },
onLoad(option) { onLoad(option) {
@ -327,18 +474,42 @@
methods: { methods: {
//
async flownodes(val) {
let res = await flownodes({
id: val,
type: 3
})
this.nodelist = res.data
// console.log(res)
},
async detail(id) { async detail(id) {
let res = await invoiceview({ let res = await invoiceview({
id: id id: id
}) })
this.flownodes(id)
this.listobj = res.data.detail this.listobj = res.data.detail
this.is_check_admin = res.data.is_check_admin
this.project1 = this.columns1.find(obj => obj.id === res.data.detail.type).name; this.project1 = this.columns1.find(obj => obj.id === res.data.detail.type).name;
this.project2 = this.actions4.find(obj => obj.id === res.data.detail.invoice_subject).name; this.project2 = this.actions4.find(obj => obj.id === res.data.detail.invoice_subject).name;
this.check_record = res.data.check_record this.check_record = res.data.check_record
this.flow_type = res.data.flows.flow_type
this.check_step_sort = res.data.detail.check_step_sort
this.admin_name = res.data.detail.check_user this.admin_name = res.data.detail.check_user
this.copy_names = res.data.detail.copy_user this.copy_names = res.data.detail.copy_user
this.selected = res.data.detail.type.toString() this.selected = res.data.detail.type.toString()
if (res.data && res.data.detail && res.data.detail.fileArray) {
this.fileArray = res.data.detail.fileArray.map(function(obj) {
return {
name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize
};
});
}
if (res.data.detail.type == 2) { if (res.data.detail.type == 2) {
this.isshow = false this.isshow = false
} else { } else {
@ -497,6 +668,34 @@
} }
}, },
downloadFile(item) {
uni.downloadFile({
url: HTTP_REQUEST_URL + item.filepath,
success: function(res) {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
if (item.fileext == 'png' || item.fileext == 'jpg') {
uni.previewImage({
urls: [tempFilePath]
});
} else {
uni.showModal({
title: '提示',
content: '暂时不支持查看,请登录后台查看',
success: function(res) {
if (res.confirm) {
// console.log('');
} else if (res.cancel) {
// console.log('');
}
}
});
}
}
}
});
},
// //
deliveryWayChangetwo1(e) { deliveryWayChangetwo1(e) {
console.log(e) console.log(e)
@ -524,7 +723,7 @@
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[2].name)
if (this.listobj.copy_uids) { if (this.listobj.copy_uids) {
this.listobj.copy_uids += e.value[2].id this.listobj.copy_uids += e.value[2].id + ','
} else { } else {
this.listobj.copy_uids = e.value[2].id this.listobj.copy_uids = e.value[2].id
} }
@ -545,7 +744,11 @@
let res = await appflow_check(data) let res = await appflow_check(data)
// console.log(res) // console.log(res)
Toast(res.msg) Toast(res.msg)
if (res.code == 0) {
uni.navigateBack({
delta: 1
})
}
// const res = await appexpense(this.listobj) // const res = await appexpense(this.listobj)
Toast('提交成功') Toast('提交成功')
@ -731,9 +934,12 @@
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
.title { input {
font-size: 31.58rpx; width: 400rpx;
border: 1px solid;
} }
font-size: 31.58rpx;
} }
// //
@ -837,7 +1043,7 @@
} }
.text { .text {
flex: 1;
margin-left: 7.02rpx; margin-left: 7.02rpx;
} }
} }

View File

@ -11,7 +11,7 @@
<view class="content-middle-one"> <view class="content-middle-one">
<view class="middle-one" v-for="(item,k) in list2" @click="tian(item)"> <view class="middle-one" v-for="(item,k) in list2" @click="tian(item)">
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList3' v-if="item.check_status==5"> <liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList3' v-if="item.check_status==5&&num!=0&&num!=2">
<view class="middle-one-title"> <view class="middle-one-title">
<view class="one-titlea"> <view class="one-titlea">
<view class="name"> <view class="name">
@ -34,12 +34,44 @@
</view> </view>
</view> </view>
<view class="middle-one-time">类型{{item.flow_type}}</view>
<view class="middle-one-time">
类型{{item.invoice_type==1?'增值税专用发票':item.invoice_type==2?'普通发票':'专用发票'}}</view>
<view class="middle-one-time">开票金额:{{item.amount}}</view>
<view class="middle-one-time">审核人:{{item.check_user}}</view>
</liu-swipe-action>
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList2'
v-else-if="item.check_status==10&&num!=0&&num!=2">
<view class="middle-one-title">
<view class="one-titlea">
<view class="name">
{{item.name}}
</view>
<view class="parment">
{{item.name1}}
</view>
</view>
<view class="one-titleb"
:style="{'color':item.check_status==0?'#000':item.check_status==1?'#dddddd':item.check_status==2?'#34A853':item.check_status==3?'#F9AA32':'#F02828'}">
<text v-if='item.check_status==0'>待审核</text>
<text v-if='item.check_status==1'>审核中</text>
<text v-if='item.check_status==2'>审核通过</text>
<text v-if='item.check_status==3'>审核不通过</text>
<text v-if='item.check_status==4'>撤销审核</text>
<text v-if='item.check_status==5'>已开具</text>
<text v-if='item.check_status==10'>已作废</text>
</view>
</view>
<view class="middle-one-time">
类型{{item.invoice_type==1?'增值税专用发票':item.invoice_type==2?'普通发票':'专用发票'}}</view>
<view class="middle-one-time">开票金额:{{item.amount}}</view> <view class="middle-one-time">开票金额:{{item.amount}}</view>
<view class="middle-one-time">审核人{{item.check_user}}</view> <view class="middle-one-time">审核人{{item.check_user}}</view>
</liu-swipe-action> </liu-swipe-action>
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList1'
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList2' v-else-if="item.check_status==10"> v-else-if="item.check_status==2&&num!=0&&num!=2">
<view class="middle-one-title"> <view class="middle-one-title">
<view class="one-titlea"> <view class="one-titlea">
<view class="name"> <view class="name">
@ -62,42 +94,17 @@
</view> </view>
</view> </view>
<view class="middle-one-time">类型{{item.flow_type}}</view> <view class="middle-one-time">
类型{{item.invoice_type==1?'增值税专用发票':item.invoice_type==2?'普通发票':'专用发票'}}</view>
<view class="middle-one-time">开票金额:{{item.amount}}</view> <view class="middle-one-time">开票金额:{{item.amount}}</view>
<view class="middle-one-time">审核人{{item.check_user}}</view> <view class="middle-one-time">审核人:{{item.check_user}}</view>
</liu-swipe-action>
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList1' v-else-if="item.check_status==2">
<view class="middle-one-title">
<view class="one-titlea">
<view class="name">
{{item.name}}
</view>
<view class="parment">
{{item.name1}}
</view>
</view>
<view class="one-titleb"
:style="{'color':item.check_status==0?'#000':item.check_status==1?'#dddddd':item.check_status==2?'#34A853':item.check_status==3?'#F9AA32':'#F02828'}">
<text v-if='item.check_status==0'>待审核</text>
<text v-if='item.check_status==1'>审核中</text>
<text v-if='item.check_status==2'>审核通过</text>
<text v-if='item.check_status==3'>审核不通过</text>
<text v-if='item.check_status==4'>撤销审核</text>
<text v-if='item.check_status==5'>已开具</text>
<text v-if='item.check_status==10'>已作废</text>
</view>
</view>
<view class="middle-one-time">类型{{item.flow_type}}</view>
<view class="middle-one-time">开票金额:{{item.amount}}</view>
<view class="middle-one-time">审核人{{item.check_user}}</view>
</liu-swipe-action> </liu-swipe-action>
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList' v-else> <liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList' v-else>
<view class="middle-one-title"> <view class="middle-one-title">
<view class="one-titlea"> <view class="one-titlea">
<view class="name"> <view class="name">
{{item.name}} {{item.name}}
</view> </view>
<view class="parment"> <view class="parment">
@ -117,9 +124,10 @@
</view> </view>
</view> </view>
<view class="middle-one-time">类型{{item.flow_type}}</view> <view class="middle-one-time">
类型{{item.invoice_type==1?'增值税专用发票':item.invoice_type==2?'普通发票':'专用发票'}}</view>
<view class="middle-one-time">开票金额:{{item.amount}}</view> <view class="middle-one-time">开票金额:{{item.amount}}</view>
<view class="middle-one-time">审核人{{item.check_user}}</view> <view class="middle-one-time">审核人:{{item.check_user}}</view>
</liu-swipe-action> </liu-swipe-action>
@ -148,9 +156,11 @@
tovoid, tovoid,
novoid novoid
} from '@/api/oa.js' } from '@/api/oa.js'
import liuswipeaction from '@/uni_modules/liu-swipe-action/components/liu-swipe-action/liu-swipe-action.vue'
export default { export default {
components: {
'liu-swipe-action': liuswipeaction
},
data() { data() {
return { return {
title: 'Hello', title: 'Hello',
@ -274,7 +284,7 @@
async initList2() { async initList2() {
this.loadConfig.page = 1; this.loadConfig.page = 1;
this.loadConfig.status = "loadmore"; this.loadConfig.status = "loadmore";
this.list3 = []; this.list2 = [];
await this.getlist2() await this.getlist2()
}, },
async getlist() { async getlist() {

View File

@ -106,7 +106,7 @@
limit: this.loadConfig.limit, limit: this.loadConfig.limit,
}) })
console.log(res.data) //console.log(res.data)
this.loadConfig.status = "loadmore" this.loadConfig.status = "loadmore"
if (res.data.length < this.loadConfig.limit) { if (res.data.length < this.loadConfig.limit) {
this.loadConfig.status = "nomore" this.loadConfig.status = "nomore"
@ -124,7 +124,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',
success: (e) => { success: (e) => {

View File

@ -23,7 +23,7 @@
</view> </view>
<view class="" <view class=""
v-if="fieldValue.type=='input'&&fieldKey!='end_time'&&fieldKey!='start_time'&&fieldKey!='duration'"> v-if="fieldValue.type=='input'&&fieldKey!='end_time'&&fieldKey!='start_time'&&fieldKey!='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title">
</view> </view>
@ -31,7 +31,7 @@
<view class="" v-if=" fieldKey=='start_time'"> <view class="" v-if=" fieldKey=='start_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime1"> @click="selectTime1">
@ -40,7 +40,7 @@
</view> </view>
<view class="" v-if="fieldKey=='end_time'"> <view class="" v-if="fieldKey=='end_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime2"> @click="selectTime2">
@ -49,7 +49,7 @@
</view> </view>
<view class="" v-if="fieldKey=='detail_time'"> <view class="" v-if="fieldKey=='detail_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime3(fieldKey)"> @click="selectTime3(fieldKey)">
@ -58,13 +58,13 @@
</view> </view>
<view class="" v-if="fieldKey=='duration'"> <view class="" v-if="fieldKey=='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="manHour" disabled placeholder="请假工时"> <input type="text" v-model="meatelist[fieldKey]" placeholder="请假工时">
</view> </view>
</view> </view>
<view class="" v-if="fieldValue.type=='textarea'"> <view class="" v-if="fieldValue.type=='textarea'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title">
</view> </view>
@ -87,7 +87,7 @@
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize | formatBytes }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon>
</view> </view>
@ -119,10 +119,27 @@
<view class="title">选择审批流程</view> <view class="title">选择审批流程</view>
<input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true"> <input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true">
</view> </view>
<view class="cont_cell" @click="branchShow = true"> <view class="cont_cell" @click="branchShow = true" v-if="flowShow">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
<view v-else style=" border-bottom: 1px solid #f7f7f7;">
<block v-for="(item,i) in sprecord" :key="i">
<view class="record" style="display: flex;">
<view class="circle"></view>
<text class="text">{{i+1}} {{item.flow_type_txt}}
</text>
</view>
<view class="" v-if="item.user_id_info.length>0&&item.user_id_info" style='padding-left: 20rpx;padding-right: 20rpx;margin-bottom: 20rpx;'>
<view class="" v-for="(items,k) in item.user_id_info" style="display: flex;margin-right: 20rpx;">
<view class="" style="width: 30rpx;height: 30rpx;border-radius: 50%; margin-left: 20rpx;margin-right: 10rpx;">
<image :src="`${httpRequestUrl}`+items.thumb" mode="" style="width: 30rpx;height: 30rpx;border-radius: 50%;margin-top: 5rpx;"></image>
</view>
<view class=""> {{items.name}}</view>
</view>
</view>
</block>
</view>
<view class="cont_cell" @click="branchShow1 = true"> <view class="cont_cell" @click="branchShow1 = true">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
@ -192,6 +209,9 @@
appapprove, appapprove,
appapproveview appapproveview
} from '@/api/oa.js' } from '@/api/oa.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
@ -224,6 +244,7 @@
timeShow: false, timeShow: false,
timeShow1: false, timeShow1: false,
timeShow2: false, timeShow2: false,
timeData: [{ timeData: [{
title: '开始时间:', title: '开始时间:',
timeShow: false, timeShow: false,
@ -248,6 +269,7 @@
leavaTypeId2: '', leavaTypeId2: '',
leavaTypeId3: '', leavaTypeId3: '',
columns: [], columns: [],
sprecord: [],
// //
branchShow: false, branchShow: false,
branchShow1: false, branchShow1: false,
@ -289,22 +311,26 @@
// //
this.timestamp = Date.parse(new Date()); this.timestamp = Date.parse(new Date());
}, },
computed: {
watch: { httpRequestUrl() {
timeData: { return HTTP_REQUEST_URL;
handler(newVal, oldVal) {
if (newVal[0].time.length > 0 && newVal[1].time.length > 0) {
const {
leaveDays,
leaveHours
} = this.calculateLeaveDaysAndHours(this.timeData[0].time, this.timeData[1]
.time)
this.manHour = leaveHours + '小时'
this.daysNum = leaveDays + '天'
} }
}, },
deep: true watch: {
} // timeData: {
// handler(newVal, oldVal) {
// if (newVal[0].time.length > 0 && newVal[1].time.length > 0) {
// const {
// leaveDays,
// leaveHours
// } = this.calculateLeaveDaysAndHours(this.timeData[0].time, this.timeData[1]
// .time)
// this.meatelist.duration= leaveHours + ''
// this.daysNum = leaveDays + ''
// }
// },
// deep: true
// }
}, },
methods: { methods: {
async getDocumentList2() { async getDocumentList2() {
@ -316,6 +342,25 @@
this.columns3.push(deArr) this.columns3.push(deArr)
},
async flowuser(id) {
let res = await flowusers({
id: id
})
// flowPathShow = true
// console.log(res.data.flow_data == false)
if (res.data.flow_data.length > 0) {
this.flowShow = false
this.sprecord = res.data.flow_data
} else {
this.flowShow = true
}
// this.flowShow = false
// this.sprecord = res.data.flow_data
// this.flowShow=!res.data.flow_data
// console.log(res.data.flow_data)
}, },
confirm(e) { confirm(e) {
console.log(e) console.log(e)
@ -345,6 +390,7 @@
this.dataobj = res.data.field this.dataobj = res.data.field
this.meatelist.type= this.dataobj1.detail.type this.meatelist.type= this.dataobj1.detail.type
this.meatelist.id=this.dataobj1.detail.id
if ('name' in res.data.field) { if ('name' in res.data.field) {
this.meatelist.name = 'name' in this.dataobj1.detail ? this.dataobj1.detail.name : '' this.meatelist.name = 'name' in this.dataobj1.detail ? this.dataobj1.detail.name : ''
@ -376,7 +422,9 @@
.detail_time : .detail_time :
'' ''
} }
if ('duration' in res.data.field) {
this.meatelist.duration= 'duration' in this.dataobj1.detail ? this.dataobj1.detail.duration : ''
}
if ('content' in res.data.field) { if ('content' in res.data.field) {
@ -738,6 +786,7 @@
this.meatelist.name = e.value[2].name this.meatelist.name = e.value[2].name
this.branchShow2 = false this.branchShow2 = false
}, },
/** 请假类型 */ /** 请假类型 */
leavaType(e) { leavaType(e) {
@ -771,6 +820,7 @@
flowPathSelect(value) { flowPathSelect(value) {
this.flowPath = value.name this.flowPath = value.name
this.flow_id = value.id this.flow_id = value.id
// this.flowuser(value.id)
}, },
@ -952,18 +1002,30 @@
const startDate = new Date(leaveStartTime); const startDate = new Date(leaveStartTime);
const endDate = new Date(leaveEndTime); const endDate = new Date(leaveEndTime);
const timeDifference = endDate.getTime() - startDate.getTime();
// //
const leaveDays = Math.floor((endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000)) + 1; const leaveDays = Math.floor((endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000)) + 1;
// //
const leaveHours = leaveDays * hoursPerDay; const leaveHours = leaveDays * hoursPerDay;
// console.log(timeDifference)
//
// const leaveHours = timeDifference / (1000 * 60 * 60); //
if (timeDifference <= 0) {
Toast('时间日期不合法,请重新输入')
this.meatelist.start_time = ''
this.meatelist.end_time = ''
this.timeData[0].time = ''
this.timeData[1].time = ''
this.meatelist.duration = ''
} else {
// //
return { return {
leaveDays, leaveDays,
leaveHours, leaveHours,
}; };
} }
}
}, },
filters: { filters: {
// MB // MB
@ -998,7 +1060,46 @@
margin-bottom: 35.09rpx; margin-bottom: 35.09rpx;
padding-bottom: 28.07rpx; padding-bottom: 28.07rpx;
} }
.record {
position: relative;
margin-bottom: 14.04rpx;
.circle {
width: 31.58rpx;
height: 31.58rpx;
background-color: #fff;
border: 2px solid #34A853;
border-radius: 50%;
margin: 5px;
display: flex;
flex-direction: column;
align-items: center;
&::before {
content: "";
display: block;
position: absolute;
clear: both;
width: 1px;
height: 100%;
background-color: rgba(204, 204, 204, 0.5);
margin: 31.58rpx;
}
}
.text {
flex: 1;
margin-left: 7.02rpx;
}
}
:last-child {
.circle {
&::before {
display: none;
}
}
}
.bot_btn { .bot_btn {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
@ -1028,11 +1129,15 @@
.leava_type { .leava_type {
height: 100rpx; height: 100rpx;
border-bottom: 1px solid #999; border-bottom: 1px solid #f7f7f7;
.title{ .title{
font-size: 31.58rpx; width: 180rpx;
} }
input{
width: 480rpx;
}
} }
.cont_cell { .cont_cell {

View File

@ -11,73 +11,87 @@
v-if="fieldValue.type=='select'&&fieldKey!='copy_uids'&&fieldKey!='check_admin_ids'&&fieldKey!='flow_id'&&fieldKey!='name'"> v-if="fieldValue.type=='select'&&fieldKey!='copy_uids'&&fieldKey!='check_admin_ids'&&fieldKey!='flow_id'&&fieldKey!='name'">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<!-- {{fieldKey}} --> <!-- {{fieldKey}} -->
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" @click="leixin(fieldKey)"> <!-- <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled
@click="leixin(fieldKey)"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
<view class="leava_type flex_a_c" v-if="fieldKey=='name'&fieldValue.type=='select'"> <view class="leava_type flex_a_c" v-if="fieldKey=='name'&fieldValue.type=='select'">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" @click="leixiner()">
<!-- <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled @click="leixiner()">
-->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
<view class="" <view class=""
v-if="fieldValue.type=='input'&&fieldKey!='end_time'&&fieldKey!='start_time'&&fieldKey!='duration'"> v-if="fieldValue.type=='input'&&fieldKey!='end_time'&&fieldKey!='start_time'&&fieldKey!='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <!-- <input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> -->
<view class="">
{{meatelist[fieldKey]}}
</view> </view>
</view> </view>
</view>
<view class="" v-if=" fieldKey=='start_time'"> <view class="" v-if=" fieldKey=='start_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
> @click="selectTime1">
</view> </view>
</view> </view>
<view class="" v-if="fieldKey=='end_time'"> <view class="" v-if="fieldKey=='end_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
> @click="selectTime2">
</view>
</view>
<view class="" v-if="fieldKey=='detail_time'">
<view class="cont_cell">
<view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime3(fieldKey)">
</view> </view>
</view> </view>
<view class="" v-if="fieldKey=='duration'"> <view class="" v-if="fieldKey=='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="manHour" disabled placeholder="请假工时"> <!-- <input type="text" v-model="meatelist[fieldKey]" disabled placeholder="请假工时"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
</view> </view>
<view class="" v-if="fieldValue.type=='textarea'"> <view class="" v-if="fieldValue.type=='textarea'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <!-- <input type="text" v-model="meatelist[fieldKey]" disabled :placeholder="fieldValue.title"> -->
<view class="">
{{meatelist[fieldKey]}}
</view> </view>
</view> </view>
</view>
<view class="" v-if="fieldValue.type=='file'"> <view class="" v-if="fieldValue.type=='file'">
<block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i">
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file" @click="downloadFile(item)">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view> <view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> <!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> -->
</view> </view>
</block> </block>
<!-- <view class="upload_box flex_a_c_j_sb" @click="seleckImage"> <!-- <view class="upload_box flex_a_c_j_sb" @click="seleckImage">
@ -99,54 +113,189 @@
</view> </view>
<view class="" style="background-color: #fff;margin-bottom: 30rpx;"> <view class="" v-if='dataobj1.detail.check_status<2&&is_create_admin==1' style="background-color: #fff;margin-bottom: 30rpx;">
<view class="cont_cell" style="padding-top: 20rpx;" v-if="ktype!=0 &&dataobj1.detail.check_status!=2"> <view class="cont_cell" style="padding-top: 20rpx;padding-bottom: 20rpx;"
>
<view class="title" style="width: 200rpx;">撤回意见</view> <view class="title" style="width: 200rpx;">撤回意见</view>
<textarea v-model="mscontent" placeholder="请输入撤回意见" />
<textarea v-model="mscontent" placeholder="请输入撤回意见"
style="padding-top: 20rpx;padding-left: 20rpx;border:1px solid#f1f1f1;padding :20rpx;20rpx;" />
</view> </view>
</view> </view>
<view class="cont_details"> <view class="cont_details">
<view class="examine">审批流程</view> <view class="examine">审批流程</view>
<view class="" style="border-bottom: 1px solid #f7f7f7;border-top: 1px solid #f7f7f7;">
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="text">{{nodelist.create_user}}创建</view>
</view>
<view class="" v-for="(itemh,m) in nodelist.flows" :key='m'>
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="" v-if='itemh.flow_type==1||itemh.flow_type==2' style="display: flex;">
<view class="text">{{itemh.flow_type==1?'部门负责人':'上级部门负责人'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==7||itemh.flow_type== 6' style="display: flex;">
<view class="text">{{itemh.flow_type==7?'部门分管领导':'上级部门分管领导'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==0' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length<=0">
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==3' style="display: flex;">
<view class="text">指定人或签</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=1&&itemh.user_id_info[0].status!=2">
<view class="text">待审核</view>
</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info" :key='o'>
<view class="text" v-if="itemk.status == 1">通过</view>
<view class="text" v-else-if="itemk.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==4' style="display: flex;">
<view class="text">指定人员(会签)</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="" v-if="itemh.user_id_info.length>0">
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==5' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审核状态</view> <view class="title">审核状态</view>
{{dataobj1.detail.check_status=='0'?'待审核':dataobj1.detail.check_status=='1'?'审核中':dataobj1.detail.check_status=='2'?'审核通过':dataobj1.detail.check_status=='3'?'审核不通过':'撤销审核'}} {{dataobj1.detail.check_status=='0'?'待审核':dataobj1.detail.check_status=='1'?'审核中':dataobj1.detail.check_status=='2'?'审核通过':dataobj1.detail.check_status=='3'?'审核不通过':'撤销审核'}}
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">当前审核人</view> <view class="title">当前审核人</view>
<input type="text" v-model="dataobj1.detail.check_user" disabled placeholder="请假工时"> <input type="text" v-model="dataobj1.detail.check_user" disabled placeholder="当前审核">
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="dataobj1.detail.copy_user" disabled placeholder="请假工时"> <input type="text" v-model="dataobj1.detail.copy_user" disabled placeholder="抄送人">
</view> </view>
<view class="examine">审批记录</view> <view class="examine">审批记录</view>
<block v-for="(item,i) in check_record" :key="i"> <block v-for="(item,i) in check_record" :key="i">
<view class="record" style="display: flex;"> <view class="record" style="display: flex;">
<view class="circle"></view> <view class="circle"></view>
<text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}} <text class="text">{{item.check_time_str}}{{item.name}}{{item.status_str}}了此申请
了此申请操作意见{{item.content}}</text> 操作意见{{item.content}}</text>
</view> </view>
</block> </block>
</view> </view>
<view class="" v-if="ktype!=0&&dataobj1.detail.check_status!=2">
<view class="bot_btn" v-if='dataobj1.detail.check_status!=4'> <view class="bot_btn" v-if='dataobj1.detail.check_status<2&&is_create_admin==1'>
<!-- <view class="reset" @click="appflowcheck()">拒绝</view>
<view class="submit_btn" @click=" appflowcheck1()">通过</view> -->
<view class="submit_btn" @click="appflowcheck1()">撤回</view> <view class="submit_btn" @click="appflowcheck1()">撤回</view>
</view> </view>
<view class="bot_btn" v-else>
<view class="bot_btn" v-if='dataobj1.detail.check_status>2&&is_create_admin==1'>
<view class="submit_btn" @click="editcheck1(dataobj1)">重新编辑</view> <view class="submit_btn" @click="editcheck1(dataobj1)">重新编辑</view>
</view> </view>
</view>
<u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns" <u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns"
@confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true" @close="branchShowclose" @confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true" @close="branchShowclose"
keyName="name"> keyName="name">
@ -161,13 +310,17 @@
import { import {
Toast Toast
} from '../../libs/uniApi' } from '../../libs/uniApi'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
import { import {
appfield, appfield,
getemployee, getemployee,
userdepartment, userdepartment,
appapprove, appapprove,
appapproveview, appapproveview,
appflow_check appflow_check,
flownodes
} from '@/api/oa.js' } from '@/api/oa.js'
export default { export default {
data() { data() {
@ -226,13 +379,15 @@
isflowDate: true, isflowDate: true,
flowDate: [], flowDate: [],
fileArray: [], fileArray: [],
nodelist: {},
typeId: '', typeId: '',
flag1: false, flag1: false,
datatype: '', datatype: '',
dataobj1: {}, dataobj1: {},
check_record: [], check_record: [],
ktype: 1 ktype: 1,
check_step_sort: '',
is_create_admin: 0
} }
}, },
onLoad(option) { onLoad(option) {
@ -278,6 +433,45 @@
this.columns3.push(deArr) this.columns3.push(deArr)
},
//
async flownodes(val) {
let res = await flownodes({
id: val,
type: 1
})
this.nodelist = res.data
// console.log(res)
},
downloadFile(item) {
uni.downloadFile({
url: HTTP_REQUEST_URL + item.filepath,
success: function(res) {
if (res.statusCode === 200) {
console.log(item)
const tempFilePath = res.tempFilePath;
if (item.fileext == 'png' || item.fileext == 'jpg') {
uni.previewImage({
urls: [tempFilePath]
});
} else {
uni.showModal({
title: '提示',
content: '暂时不支持查看,请登录后台查看',
success: function(res) {
if (res.confirm) {
// console.log('');
} else if (res.cancel) {
// console.log('');
}
}
});
}
}
}
});
}, },
confirm(e) { confirm(e) {
console.log(e) console.log(e)
@ -290,8 +484,11 @@
}) })
// console.log(res.data) // console.log(res.data)
this.dataobj1 = res.data this.dataobj1 = res.data
this.check_step_sort = res.data.detail.check_step_sort
this.check_record = res.data.check_record this.check_record = res.data.check_record
this.is_create_admin = res.data.is_create_admin
this.applist1(res.data.detail.type) this.applist1(res.data.detail.type)
this.flownodes(res.data.detail.id)
// this.dataobj = res.data.field // this.dataobj = res.data.field
@ -309,6 +506,7 @@
this.dataobj = res.data.field this.dataobj = res.data.field
this.meatelist = this.dataobj1.detail this.meatelist = this.dataobj1.detail
// this.meatelist.name = 'name' in this.dataobj1.detail ? this.dataobj1.detail.name : '' // this.meatelist.name = 'name' in this.dataobj1.detail ? this.dataobj1.detail.name : ''
// this.timeData[0].time = 'start_time' in this.dataobj1.detail ? this.dataobj1.detail.start_time : '' // this.timeData[0].time = 'start_time' in this.dataobj1.detail ? this.dataobj1.detail.start_time : ''
// this.timeData[1].time = 'end_time' in this.dataobj1.detail ? this.dataobj1.detail.end_time : '' // this.timeData[1].time = 'end_time' in this.dataobj1.detail ? this.dataobj1.detail.end_time : ''
@ -420,6 +618,8 @@
this.fileArray = this.dataobj1.detail.fileArray.map(function(obj) { this.fileArray = this.dataobj1.detail.fileArray.map(function(obj) {
return { return {
name: obj.name, name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize filesize: obj.filesize
}; };
}); });
@ -774,6 +974,18 @@
padding-bottom: 28.07rpx; padding-bottom: 28.07rpx;
} }
.leave_box {
.cont_cell {
.title {
font-size: 31.58rpx;
flex: 1
}
}
}
.bot_btn { .bot_btn {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
@ -803,11 +1015,17 @@
.leava_type { .leava_type {
height: 100rpx; height: 100rpx;
border-bottom: 1px solid #999; border-bottom: 1px solid #f7f7f7;
.title { .title {
font-size: 31.58rpx; width: 180rpx;
} }
input {
width: 480rpx;
}
} }
.cont_cell { .cont_cell {
@ -817,8 +1035,9 @@
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
.title {
font-size: 31.58rpx; font-size: 31.58rpx;
input{
width: 480rpx;
} }
} }
@ -836,6 +1055,7 @@
.record { .record {
position: relative; position: relative;
margin-bottom: 14.04rpx; margin-bottom: 14.04rpx;
margin-top:14.04rpx;
.circle { .circle {
width: 31.58rpx; width: 31.58rpx;
@ -843,7 +1063,7 @@
background-color: #fff; background-color: #fff;
border: 2px solid #34A853; border: 2px solid #34A853;
border-radius: 50%; border-radius: 50%;
margin: 5px; margin: 3rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -861,7 +1081,7 @@
} }
.text { .text {
flex: 1;
margin-left: 7.02rpx; margin-left: 7.02rpx;
} }
} }

View File

@ -12,25 +12,37 @@
v-if="fieldValue.type=='select'&&fieldKey!='copy_uids'&&fieldKey!='check_admin_ids'&&fieldKey!='flow_id'&&fieldKey!='name'"> v-if="fieldValue.type=='select'&&fieldKey!='copy_uids'&&fieldKey!='check_admin_ids'&&fieldKey!='flow_id'&&fieldKey!='name'">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<!-- {{fieldKey}} --> <!-- {{fieldKey}} -->
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled @click="leixin(fieldKey)"> <!-- <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled
@click="leixin(fieldKey)"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
<view class="leava_type flex_a_c" v-if="fieldKey=='name'&fieldValue.type=='select'"> <view class="leava_type flex_a_c" v-if="fieldKey=='name'&fieldValue.type=='select'">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled @click="leixiner()">
<!-- <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled @click="leixiner()">
-->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
<view class="" <view class=""
v-if="fieldValue.type=='input'&&fieldKey!='end_time'&&fieldKey!='start_time'&&fieldKey!='duration'"> v-if="fieldValue.type=='input'&&fieldKey!='end_time'&&fieldKey!='start_time'&&fieldKey!='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <!-- <input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
</view> </view>
<view class="" v-if=" fieldKey=='start_time'"> <view class="" v-if=" fieldKey=='start_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{ timeData[0].title }}</view> <view class="title">{{ timeData[0].title }}</view>
<input type="text" v-model="timeData[0].time" placeholder="请选择时间" disabled <input type="text" v-model="timeData[0].time" placeholder="请选择时间" disabled
@click="selectTime(timeData[0])"> @click="selectTime(timeData[0])">
@ -39,7 +51,7 @@
</view> </view>
<view class="" v-if="fieldKey=='end_time'"> <view class="" v-if="fieldKey=='end_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{ timeData[1].title }}</view> <view class="title">{{ timeData[1].title }}</view>
<input type="text" v-model="timeData[1].time" placeholder="请选择时间" disabled <input type="text" v-model="timeData[1].time" placeholder="请选择时间" disabled
@click="selectTime(timeData[1])"> @click="selectTime(timeData[1])">
@ -48,23 +60,32 @@
</view> </view>
<view class="" v-if="fieldKey=='detail_time'"> <view class="" v-if="fieldKey=='detail_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <!-- <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime3(fieldKey)"> @click="selectTime3(fieldKey)"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
</view> </view>
<view class="" v-if="fieldKey=='duration'"> <view class="" v-if="fieldKey=='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="manHour" disabled placeholder="请假工时"> <!-- <input type="text" v-model="meatelist[fieldKey]" disabled placeholder="请假工时"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
</view> </view>
<view class="" v-if="fieldValue.type=='textarea'"> <view class="" v-if="fieldValue.type=='textarea'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <!-- <input type="text" v-model="meatelist[fieldKey]" disabled :placeholder="fieldValue.title"> -->
<view class="">
{{meatelist[fieldKey]}}
</view>
</view> </view>
</view> </view>
@ -72,13 +93,14 @@
<view class="" v-if="fieldValue.type=='file'"> <view class="" v-if="fieldValue.type=='file'">
<block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i">
<view class="file flex_a_c_j_sb">
<view class="file flex_a_c_j_sb" @click="downloadFile(item)">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> <!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> -->
</view> </view>
</block> </block>
@ -97,33 +119,170 @@
<view class="title">审批流程</view> <view class="title">审批流程</view>
</view> </view>
<view class=""
style="border-bottom: 1px solid #f7f7f7;border-top: 1px solid #f7f7f7;padding-bottom: 20px;">
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="text">{{nodelist.create_user}}创建</view>
</view>
<view class="" v-for="(itemh,m) in nodelist.flows" :key='m'>
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="" v-if='itemh.flow_type==1||itemh.flow_type==2' style="display: flex;">
<view class="text">{{itemh.flow_type==1?'部门负责人':'上级部门负责人'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==7||itemh.flow_type== 6' style="display: flex;">
<view class="text">{{itemh.flow_type==7?'部门分管领导':'上级部门分管领导'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==0' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==3' style="display: flex;">
<view class="text">指定人或签</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=1&&itemh.user_id_info[0].status!=2">
<view class="text">待审核</view>
</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info" :key='o'>
<view class="text" v-if="itemk.status == 1">通过</view>
<view class="text" v-else-if="itemk.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==4' style="display: flex;">
<view class="text">指定人员(会签)</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class=""
v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="" v-if="itemh.user_id_info.length>0">
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==5' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审核状态</view> <view class="title">审核状态</view>
{{dataobj1.check_status=='0'?'待审核':dataobj1.check_status=='1'?'审核中':dataobj1.check_status=='2'?'审核通过':dataobj1.check_status=='3'?'审核不通过':'撤销审核'}}
{{dataobj1.detail.check_status=='0'?'待审核':dataobj1.detail.check_status=='1'?'审核中':dataobj1.detail.check_status=='2'?'审核通过':dataobj1.detail.check_status=='3'?'审核不通过':'撤销审核'}}
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="dataobj1.detail.check_user" placeholder="请选择" disabled> <input type="text" v-model="dataobj1.check_user" placeholder="请选择" disabled>
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="dataobj1.detail.copy_user" placeholder="请选择" disabled> <input type="text" v-model="dataobj1.copy_user" placeholder="请选择" disabled>
</view> </view>
<view class="" style=" border-bottom: 1px solid #f7f7f7;">
<block v-for="(item,i) in check_record" :key="i"> <block v-for="(item,i) in check_record" :key="i">
<view class="record" style="display: flex;"> <view class="record" style="display: flex;">
<view class="circle"></view> <view class="circle"></view>
<text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}} <text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}}了此申请操作意见{{item.content}}</text>
了此申请操作意见{{item.content}}</text>
</view> </view>
</block> </block>
</view>
</view> </view>
<view class="" v-if="dataobj1.detail.check_status!=2">
<radio-group class="select_group" @change="deliveryWayChangetwo"> <view v-if="is_check_admin==1&&dataobj1.check_status<2&&flow_type==0"
style="border-bottom: 1px solid #f7f7f7;">
<view class="title" style="margin-bottom: 10rpx;margin-top: 30rpx;">审核节点</view>
<radio-group class="select_group" @change="deliveryWayChangetwo"
style="font-size: 30rpx; padding: 10px;">
<label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;"> <label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;">
<view style="margin-right:5rpx;"> <view style="margin-right:5rpx;">
<radio value="1" /> <radio value="1" />
@ -134,8 +293,8 @@
<view style="margin-right:5rpx;"> <view style="margin-right:5rpx;">
<radio value="2" /> <radio value="2" />
</view> </view>
<view class="cont_cell" style="margin-top: -25rpx;"> <view style="display: flex ;argin-top: -25rpx;">
<view class="title"> 下一位审批人</view> <view class="title" style="width: 260rpx;"> 下一位审批人</view>
<input type="text" @click="leixiner1" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" @click="leixiner1" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
</label> </label>
@ -144,12 +303,16 @@
</view> </view>
<view class="cont_cell" style="padding-top: 20rpx;" v-if="dataobj1.detail.check_status!=2"> <view class="cont_cell" style="padding-top: 20rpx;"
v-if="dataobj1.check_status!=2&&dataobj1.check_status!=3&&dataobj1.check_status!=4&&is_check_admin==1">
<view class="title" style="width: 200rpx;">审核意见</view> <view class="title" style="width: 200rpx;">审核意见</view>
<textarea v-model="mscontent" placeholder="请输入审核意见" /> <textarea v-model="mscontent" placeholder="请输入审核意见"
style="padding-top: 20rpx;padding-left: 20rpx;border:1px solid#f1f1f1;padding :20rpx;20rpx;" />
</view> </view>
<view class="bot_btn" v-if="dataobj1.detail.check_status!=2">
<view class="reset" @click="appflowcheck()">拒绝</view> <view class="bot_btn"
v-if="dataobj1.check_status!=2&&dataobj1.check_status!=3&&dataobj1.check_status!=4&&is_check_admin==1">
<view class="reset" @click="appflowcheck()">{{flow_type==5?'回退':'拒绝'}}</view>
<view class="submit_btn" @click="appflowcheck1()">通过</view> <view class="submit_btn" @click="appflowcheck1()">通过</view>
</view> </view>
@ -180,8 +343,11 @@
appapprove, appapprove,
appapproveview, appapproveview,
appflow_check, appflow_check,
flownodes
} from '@/api/oa.js' } from '@/api/oa.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
export default { export default {
data() { data() {
return { return {
@ -204,6 +370,7 @@
content: '', // content: '', //
flowPathShow: false, flowPathShow: false,
flowPathSheet: [], flowPathSheet: [],
nodelist: {},
check: "", check: "",
mscontent: "", mscontent: "",
timeData: [{ timeData: [{
@ -239,12 +406,15 @@
isflowDate: true, isflowDate: true,
flowDate: [], flowDate: [],
fileArray: [], fileArray: [],
check_step_sort: '',
typeId: '', typeId: '',
flag1: false, flag1: false,
datatype: '', datatype: '',
dataobj1: {}, dataobj1: {},
check_record: [] check_record: [],
flow_type: "",
is_check_admin: 0
} }
}, },
onLoad(option) { onLoad(option) {
@ -253,34 +423,47 @@
this.timeData[0].title = '借用日期:' this.timeData[0].title = '借用日期:'
this.timeData[1].title = '拟归还日期:' this.timeData[1].title = '拟归还日期:'
} }
this.applist(option.type)
this.getDocumentList() this.getDocumentList()
this.getDocumentList2() this.getDocumentList2()
}, },
onShow() { mounted() {
this.applist(this.typeId)
},
Show() {
// this.getFlow() // this.getFlow()
this.branchShow = true
// //
this.timestamp = Date.parse(new Date()); this.timestamp = Date.parse(new Date());
}, },
watch: { watch: {
timeData: { // timeData: {
handler(newVal, oldVal) { // handler(newVal, oldVal) {
if (newVal[0].time.length > 0 && newVal[1].time.length > 0) { // if (newVal[0].time.length > 0 && newVal[1].time.length > 0) {
const { // const {
leaveDays, // leaveDays,
leaveHours // leaveHours
} = this.calculateLeaveDaysAndHours(this.timeData[0].time, this.timeData[1] // } = this.calculateLeaveDaysAndHours(this.timeData[0].time, this.timeData[1]
.time) // .time)
this.manHour = leaveHours + '小时' // this.manHour = leaveHours + ''
this.daysNum = leaveDays + '天' // this.daysNum = leaveDays + ''
} // }
}, // },
deep: true // deep: true
} // }
}, },
methods: { methods: {
//
async flownodes(val) {
let res = await flownodes({
id: val,
type: 1
})
this.nodelist = res.data
// console.log(res)
},
async getDocumentList2() { async getDocumentList2() {
this.columns3 = [] this.columns3 = []
const res = await userdepartment({ const res = await userdepartment({
@ -301,13 +484,18 @@
id: type id: type
}) })
this.dataobj1 = res.data this.dataobj1 = res.data.detail
this.flow_type = res.data.flows.flow_type
this.check_step_sort = res.data.detail.check_step_sort
this.is_check_admin = res.data.is_check_admin
this.check_record = res.data.check_record this.check_record = res.data.check_record
this.applist1(res.data.detail.type) this.applist1(res.data.detail.type)
this.flownodes(res.data.detail.id)
// this.dataobj = res.data.field // this.dataobj = res.data.field
// console.log(this.dataobj)
@ -320,40 +508,58 @@
}) })
this.dataobj = res.data.field this.dataobj = res.data.field
this.meatelist.name = 'name' in this.dataobj1.detail ? this.dataobj1.detail.name : ''
this.timeData[0].time = 'start_time' in this.dataobj1.detail ? this.dataobj1.detail.start_time : '' this.meatelist.name = 'name' in this.dataobj1 ? this.dataobj1.name : ''
this.timeData[1].time = 'end_time' in this.dataobj1.detail ? this.dataobj1.detail.end_time : '' this.timeData[0].time = 'start_time' in this.dataobj1 ? this.dataobj1.start_time : ''
this.meatelist.mobile = 'mobile' in this.dataobj1.detail ? this.dataobj1.detail.mobile : '' this.timeData[1].time = 'end_time' in this.dataobj1 ? this.dataobj1.end_time : ''
this.meatelist.department_type = 'department_type' in this.dataobj1.detail ? this.dataobj1.detail this.meatelist.mobile = 'mobile' in this.dataobj1 ? this.dataobj1.mobile : ''
this.meatelist.department_type = 'department_type' in this.dataobj1 ? this.dataobj1
.department_type_title : '' .department_type_title : ''
this.meatelist.detail_type = 'detail_type' in this.dataobj1.detail ? this.dataobj1.detail this.meatelist.detail_type = 'detail_type' in this.dataobj1 ? this.dataobj1
.detail_type_title : '' .detail_type_title : ''
this.meatelist.other_type = 'other_type' in this.dataobj1.detail ? this.dataobj1.detail this.meatelist.other_type = 'other_type' in this.dataobj1 ? this.dataobj1
.other_type_title : '' .other_type_title : ''
this.meatelist.remark = 'remark' in this.dataobj1.detail ? this.dataobj1.detail.remark : '' this.meatelist.remark = 'remark' in this.dataobj1 ? this.dataobj1.remark : ''
this.meatelist.remark1 = 'remark1' in this.dataobj1.detail ? this.dataobj1.detail.remark1 : '' this.meatelist.remark1 = 'remark1' in this.dataobj1 ? this.dataobj1.remark1 : ''
this.meatelist.address = 'address' in this.dataobj1.detail ? this.dataobj1.detail.address : '' this.meatelist.address = 'address' in this.dataobj1 ? this.dataobj1.address : ''
this.meatelist.detail_time = 'detail_time' in this.dataobj1.detail ? this.dataobj1.detail.detail_time : this.meatelist.detail_time = 'detail_time' in this.dataobj1 ? this.dataobj1.detail_time :
'' ''
this.meatelist.content = 'content' in this.dataobj1.detail ? this.dataobj1.detail.content : '' this.meatelist.content = 'content' in this.dataobj1 ? this.dataobj1.content : ''
this.meatelist.num = 'num' in this.dataobj1.detail ? this.dataobj1.detail.num : '' this.meatelist.num = 'num' in this.dataobj1 ? this.dataobj1.num : ''
this.meatelist.num1 = 'num1' in this.dataobj1.detail ? this.dataobj1.detail.num1 : '' this.meatelist.num1 = 'num1' in this.dataobj1 ? this.dataobj1.num1 : ''
this.meatelist.amount = 'amount' in this.dataobj1.detail ? this.dataobj1.detail.amount : '' this.meatelist.amount = 'amount' in this.dataobj1 ? this.dataobj1.amount : ''
this.meatelist.bank = 'bank' in this.dataobj1.detail ? this.dataobj1.detail.bank : '' this.meatelist.bank = 'bank' in this.dataobj1 ? this.dataobj1.bank : ''
this.meatelist.address = 'address' in this.dataobj1 ? this.dataobj1.address : ''
// this.meatelist.remark1 = 'remark1' in this.dataobj1.detail ? this.dataobj1.detail.remark1 : '' // this.meatelist.remark1 = 'remark1' in this.dataobj1 ? this.dataobj1.remark1 : ''
// this.meatelist.remark1 = 'remark1' in this.dataobj1.detail ? this.dataobj1.detail.remark1 : '' // this.meatelist.remark1 = 'remark1' in this.dataobj1 ? this.dataobj1.remark1 : ''
if ('duration' in res.data.field) {
this.meatelist.duration = 'duration' in this.dataobj1 ? this.dataobj1.duration : ''
}
if ('flow_id' in res.data.field) {
const detailTypeOptions1 = Object.entries(res.data.field.flow_id.item).map(([id, name]) => ({
id,
name
}));
this.flowPathSheet = detailTypeOptions1
}
if (this.dataobj1 && this.dataobj1 && this.dataobj1.fileArray) {
this.fileArray = this.dataobj1.fileArray.map(function(obj) {
return {
name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize
};
});
}
if ('detail_type' in this.dataobj) { if ('detail_type' in this.dataobj) {
const detailTypeOptions = Object.entries(this.dataobj.detail_type.item).map(([id, name]) => ({ const detailTypeOptions = Object.entries(this.dataobj.detail_type.item).map(([id, name]) => ({
id, id,
@ -363,7 +569,7 @@
for (let i in this.columns) { for (let i in this.columns) {
if (this.columns[i].id == this.dataobj1.detail.detail_type) { if (this.columns[i].id == this.dataobj1.detail_type) {
this.meatelist.detail_type = this.columns[i].name this.meatelist.detail_type = this.columns[i].name
this.leavaTypeId1 = this.columns[i].id this.leavaTypeId1 = this.columns[i].id
} }
@ -382,7 +588,7 @@
for (let i in this.columns) { for (let i in this.columns) {
if (this.columns[i].id == this.dataobj1.detail.department_type) { if (this.columns[i].id == this.dataobj1.department_type) {
this.meatelist.department_type = this.columns[i].name this.meatelist.department_type = this.columns[i].name
this.leavaTypeId = this.columns[i].id this.leavaTypeId = this.columns[i].id
} }
@ -401,7 +607,7 @@
for (let i in this.columns) { for (let i in this.columns) {
if (this.columns[i].id == this.dataobj1.detail.other_type) { if (this.columns[i].id == this.dataobj1.other_type) {
this.meatelist.other_type = this.columns[i].name this.meatelist.other_type = this.columns[i].name
this.leavaTypeId2 = this.columns[i].id this.leavaTypeId2 = this.columns[i].id
} }
@ -420,7 +626,7 @@
for (let i in this.columns) { for (let i in this.columns) {
if (this.columns[i].id == this.dataobj1.detail.position_type) { if (this.columns[i].id == this.dataobj1.position_type) {
this.meatelist.position_type = this.columns[i].name this.meatelist.position_type = this.columns[i].name
this.leavaTypeId3 = this.columns[i].id this.leavaTypeId3 = this.columns[i].id
} }
@ -430,7 +636,7 @@
} }
if ('num' in this.dataobj && this.dataobj1.detail.type == 20) { if ('num' in this.dataobj && this.dataobj1.type == 20) {
const detailTypeOptions = Object.entries(this.dataobj.num.item).map(([id, name]) => ({ const detailTypeOptions = Object.entries(this.dataobj.num.item).map(([id, name]) => ({
id, id,
name name
@ -439,7 +645,7 @@
for (let i in this.columns) { for (let i in this.columns) {
if (this.columns[i].id == this.dataobj1.detail.num) { if (this.columns[i].id == this.dataobj1.num) {
this.meatelist.num = this.columns[i].name this.meatelist.num = this.columns[i].name
this.leavaTypeId4 = this.columns[i].id this.leavaTypeId4 = this.columns[i].id
} }
@ -449,7 +655,7 @@
} }
if ('num1' in this.dataobj && this.dataobj1.detail.type == 20) { if ('num1' in this.dataobj && this.dataobj1.type == 20) {
const detailTypeOptions = Object.entries(this.dataobj.num1.item).map(([id, name]) => ({ const detailTypeOptions = Object.entries(this.dataobj.num1.item).map(([id, name]) => ({
id, id,
name name
@ -458,7 +664,7 @@
for (let i in this.columns) { for (let i in this.columns) {
if (this.columns[i].id == this.dataobj1.detail.num1) { if (this.columns[i].id == this.dataobj1.num1) {
this.meatelist.num1 = this.columns[i].name this.meatelist.num1 = this.columns[i].name
this.leavaTypeId5 = this.columns[i].id this.leavaTypeId5 = this.columns[i].id
} }
@ -471,11 +677,13 @@
}, },
// //
async getDocumentList() { async getDocumentList() {
const res = await userdepartment() const res = await userdepartment({
tree: 1
})
const deArr = res.data const deArr = res.data
let codelist = [ let codelist = [
[], // [], //
[], //
[] // [] //
] ]
@ -486,20 +694,14 @@
} }
}) })
codelist[1] = res.data[0].children.map((item) => { //
return {
id: item.id,
name: item.title
}
})
let dat = await getemployee({ let dat = await getemployee({
did: codelist[1][0].id did: codelist[0][0].id
}) })
codelist[2] = dat.data.map((item) => { codelist[1] = dat.data.map((item) => {
return { return {
id: item.id, id: item.id,
name: item.name name: item.name
@ -511,15 +713,43 @@
this.branchColumns = codelist this.branchColumns = codelist
this.branchColumns1 = codelist this.branchColumns1 = codelist
this.branchColumns2 = codelist this.branchColumns2 = codelist
console.log(this.branchColumns)
}) })
},
downloadFile(item) {
uni.downloadFile({
url: HTTP_REQUEST_URL + item.filepath,
success: function(res) {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
if (item.fileext == 'png'||item.fileext == 'jpg') {
uni.previewImage({
urls: [tempFilePath]
});
} else {
uni.showModal({
title: '提示',
content: '暂时不支持查看,请登录后台查看',
success: function(res) {
if (res.confirm) {
// console.log('');
} else if (res.cancel) {
// console.log('');
}
}
});
}
}
}
});
}, },
// //
async columnCode(e) { async columnCode(e) {
if (e.columnIndex == 1) { if (e.columnIndex == 0) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
did: this.branchColumns[e.columnIndex][e.index].id did: this.branchColumns[e.columnIndex][e.index].id
@ -534,8 +764,10 @@
}) })
// 使 Vue.set this.$set columns3 // 使 Vue.set this.$set columns3
this.$set(this.branchColumns, 2, newColumn); this.$set(this.branchColumns, 1, newColumn);
} else {
this.$set(this.branchColumns, 1, []);
} }
} }
@ -543,7 +775,7 @@
}, },
// //
async columnCode1(e) { async columnCode1(e) {
if (e.columnIndex == 1) { if (e.columnIndex == 0) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
did: this.branchColumns1[e.columnIndex][e.index].id did: this.branchColumns1[e.columnIndex][e.index].id
@ -558,16 +790,19 @@
}) })
// 使 Vue.set this.$set columns3 // 使 Vue.set this.$set columns3
this.$set(this.branchColumns1, 2, newColumn); this.$set(this.branchColumns1, 1, newColumn);
} else {
this.$set(this.branchColumns1, 1, []);
} }
} }
}, },
async columnCode2(e) { async columnCode2(e) {
console.log(e) console.log(e)
if (e.columnIndex == 1) { if (e.columnIndex == 0) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
did: this.branchColumns2[e.columnIndex][e.index].id did: this.branchColumns2[e.columnIndex][e.index].id
@ -582,14 +817,15 @@
}) })
// 使 Vue.set this.$set columns3 // 使 Vue.set this.$set columns3
this.$set(this.branchColumns2, 2, newColumn); this.$set(this.branchColumns2, 1, newColumn);
} else {
this.$set(this.branchColumns2, 1, []);
} }
} }
}, },
// //
deliveryWayChangetwo(e) { deliveryWayChangetwo(e) {
// console.log(e) // console.log(e)
@ -598,7 +834,7 @@
// //
async appflowcheck() { async appflowcheck() {
let data = { let data = {
id: this.dataobj1.detail.id, id: this.dataobj1.id,
type: 1, type: 1,
check_node: this.check, check_node: this.check,
content: this.mscontent, content: this.mscontent,
@ -617,7 +853,7 @@
}, },
async appflowcheck1() { async appflowcheck1() {
let data = { let data = {
id: this.dataobj1.detail.id, id: this.dataobj1.id,
type: 1, type: 1,
check_node: this.check, check_node: this.check,
check: 1, check: 1,
@ -667,7 +903,10 @@
this.branchShow2 = true this.branchShow2 = true
}, },
leixiner1() { leixiner1() {
this.branchShow = true this.branchShow = true
this.$forceUpdate()
console.log('111111111', this.branchShow) console.log('111111111', this.branchShow)
}, },
branchShowclose() { branchShowclose() {
@ -683,21 +922,21 @@
// columnIndexvaluevalues // columnIndexvaluevalues
branchConfirm(e) { branchConfirm(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[1].name)
this.check_admin_name = e.value[2].name this.check_admin_name = e.value[1].name
this.check_admin_ids.push(e.value[2].id) this.check_admin_ids.push(e.value[1].id)
this.branchShow = false this.branchShow = false
}, },
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[1].name)
this.copy_uids += e.value[2].id this.copy_uids += e.value[1].id + ','
this.copy_names += e.value[2].name + ',' this.copy_names += e.value[1].name + ','
this.branchShow1 = false this.branchShow1 = false
}, },
branchConfirm2(e) { branchConfirm2(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[1].name)
this.meatelist.uid = e.value[2].id this.meatelist.uid = e.value[1].id
this.meatelist.name = e.value[2].name this.meatelist.name = e.value[1].name
this.branchShow2 = false this.branchShow2 = false
}, },
/** 请假类型 */ /** 请假类型 */
@ -747,9 +986,74 @@
}, },
async submiteBtn() { async submiteBtn() {
console.log(this.leavaTypeId2) console.log(this.leavaTypeId2)
// let subData;
// let subData1;
// if (this.typeId == 6 || this.typeId == 7 || this.typeId == 8) {
// let fileIds = [];
// this.fileArray.map((item, i) => {
// fileIds.push(item.id)
// });
// subData1 = {
// detail_type: this.leavaTypeId,
// content: this.meatelist.content,
// check_admin_name: this.check_admin_name,
// check_admin_ids: this.check_admin_ids,
// flow_id: this.flow_id,
// file_ids: fileIds.join(','),
// copy_names: this.copy_names,
// copy_uids: this.copy_uids,
// type: this.typeId,
// }
// if (this.typeId == 8) {
// subData1.start_time = this.timeData[0].timeDay + ' ' + this.timeData[0].timeHour,
// subData1.end_time = this.timeData[1].timeDay + ' ' + this.timeData[1].timeHour,
// subData1.department_type = this.leavaTypeId
// subData1.detail_type = this.leavaTypeId1
// subData1.other_type = this.leavaTypeId2
// }
// subData = {
// ...this.meatelist,
// ...subData1
// }
// } else {
// let fileIds = [];
// this.fileArray.map((item, i) => {
// fileIds.push(item.id)
// });
// subData = {
// detail_type: this.leavaTypeId,
// start_time: this.timeData[0].timeDay + ' ' + this.timeData[0].timeHour,
// end_time: this.timeData[1].timeDay + ' ' + this.timeData[1].timeHour,
// duration: this.manHour,
// content: this.meatelist.content,
// check_admin_name: this.check_admin_name,
// check_admin_ids: this.check_admin_ids,
// flow_id: this.flow_id,
// file_ids: fileIds.join(','),
// copy_names: this.copy_names,
// copy_uids: this.copy_uids,
// type: this.typeId,
// file: ''
// }
// }
if (this.meatelist.mobile) {
const pattern = /^1[3456789]\d{9}$/;
if (!pattern.test(this.meatelist.mobile)) return Toast('手机号输入错误')
}
let subData; let subData;
let subData1; let subData1;
if (this.typeId == 6 || this.typeId == 7 || this.typeId == 8) {
@ -758,7 +1062,6 @@
fileIds.push(item.id) fileIds.push(item.id)
}); });
subData1 = { subData1 = {
detail_type: this.leavaTypeId,
content: this.meatelist.content, content: this.meatelist.content,
check_admin_name: this.check_admin_name, check_admin_name: this.check_admin_name,
check_admin_ids: this.check_admin_ids, check_admin_ids: this.check_admin_ids,
@ -768,50 +1071,30 @@
copy_uids: this.copy_uids, copy_uids: this.copy_uids,
type: this.typeId, type: this.typeId,
} }
if (this.meatelist.hasOwnProperty('department_type')) {
if (this.typeId == 8) {
subData1.start_time = this.timeData[0].timeDay + ' ' + this.timeData[0].timeHour,
subData1.end_time = this.timeData[1].timeDay + ' ' + this.timeData[1].timeHour,
subData1.department_type = this.leavaTypeId subData1.department_type = this.leavaTypeId
subData1.detail_type = this.leavaTypeId1
subData1.other_type = this.leavaTypeId2
} }
if (this.meatelist.hasOwnProperty('other_type')) {
subData1.other_type = this.leavaTypeId2
}
if (this.meatelist.hasOwnProperty('position_type')) {
subData1.position_type = this.leavaTypeId3
}
if (this.meatelist.hasOwnProperty('detail_type')) {
subData1.detail_type = this.leavaTypeId1
}
if (this.meatelist.hasOwnProperty('num') && this.typeId == 20) {
subData1.num = this.leavaTypeId4
}
if (this.meatelist.hasOwnProperty('num1') && this.typeId == 20) {
subData1.num1 = this.leavaTypeId5
}
subData = { subData = {
...this.meatelist, ...this.meatelist,
...subData1 ...subData1
} }
} else {
let fileIds = [];
this.fileArray.map((item, i) => {
fileIds.push(item.id)
});
subData = {
detail_type: this.leavaTypeId,
start_time: this.timeData[0].timeDay + ' ' + this.timeData[0].timeHour,
end_time: this.timeData[1].timeDay + ' ' + this.timeData[1].timeHour,
duration: this.manHour,
content: this.meatelist.content,
check_admin_name: this.check_admin_name,
check_admin_ids: this.check_admin_ids,
flow_id: this.flow_id,
file_ids: fileIds.join(','),
copy_names: this.copy_names,
copy_uids: this.copy_uids,
type: this.typeId,
file: ''
}
}
console.log(subData) console.log(subData)
@ -887,10 +1170,28 @@
position: relative; position: relative;
padding-bottom: 100px; padding-bottom: 100px;
} }
/deep/.u-action-sheet__item-wrap { /deep/.u-action-sheet__item-wrap {
overflow: auto; overflow: auto;
max-height: 50vh; max-height: 50vh;
} }
.leave_box .title {
font-size: 31.58rpx;
width: 180rpx;
}
.leava_type {
height: 100rpx;
border-bottom: 1px solid #f7f7f7;
.title{
width: 180rpx;
}
input{
width: 480rpx;
}
}
.leave_box, .leave_box,
.flow_path { .flow_path {
width: 100%; width: 100%;
@ -927,14 +1228,7 @@
} }
} }
.leava_type {
height: 100rpx;
border-bottom: 1px solid #999;
.title {
font-size: 31.58rpx;
}
}
.cont_cell { .cont_cell {
display: flex; display: flex;
@ -987,7 +1281,7 @@
} }
.text { .text {
flex: 1;
margin-left: 7.02rpx; margin-left: 7.02rpx;
} }
} }

View File

@ -65,7 +65,7 @@
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view> <view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon>
@ -289,7 +289,7 @@
}, },
confirm(e) { confirm(e) {
console.log(e) //console.log(e)
this.flag1 = false this.flag1 = false
}, },
@ -304,7 +304,7 @@
// this.dataobj = res.data.field // this.dataobj = res.data.field
// console.log(this.dataobj) // //console.log(this.dataobj)
@ -361,7 +361,7 @@
this.meatelist.detail_type = this.columns[i].name this.meatelist.detail_type = this.columns[i].name
this.leavaTypeId1= this.columns[i].id this.leavaTypeId1= this.columns[i].id
} }
// console.log(this.meatelist.detail_type,this.leavaTypeId1) // //console.log(this.meatelist.detail_type,this.leavaTypeId1)
} }
@ -380,7 +380,7 @@
this.meatelist.department_type= this.columns[i].name this.meatelist.department_type= this.columns[i].name
this.leavaTypeId = this.columns[i].id this.leavaTypeId = this.columns[i].id
} }
// console.log(this.meatelist.detail_type) // //console.log(this.meatelist.detail_type)
} }
@ -399,7 +399,7 @@
this.meatelist.other_type = this.columns[i].name this.meatelist.other_type = this.columns[i].name
this.leavaTypeId2= this.columns[i].id this.leavaTypeId2= this.columns[i].id
} }
// console.log(this.meatelist.detail_type) // //console.log(this.meatelist.detail_type)
} }
@ -418,7 +418,7 @@
this.meatelist.position_type = this.columns[i].name this.meatelist.position_type = this.columns[i].name
this.leavaTypeId3= this.columns[i].id this.leavaTypeId3= this.columns[i].id
} }
// console.log(this.meatelist.detail_type) // //console.log(this.meatelist.detail_type)
} }
@ -469,7 +469,7 @@
this.branchColumns1 = codelist this.branchColumns1 = codelist
this.branchColumns2 = codelist this.branchColumns2 = codelist
console.log(this.branchColumns) //console.log(this.branchColumns)
}) })
@ -523,7 +523,7 @@
}, },
async columnCode2(e) { async columnCode2(e) {
console.log(e) //console.log(e)
if (e.columnIndex == 1) { if (e.columnIndex == 1) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
@ -549,7 +549,7 @@
// //
deliveryWayChangetwo(e) { deliveryWayChangetwo(e) {
// console.log(e) // //console.log(e)
this.check = e.detail.value this.check = e.detail.value
}, },
// //
@ -577,11 +577,11 @@
check_admin_ids: this.check_admin_ids.toString() check_admin_ids: this.check_admin_ids.toString()
} }
let res = await appflow_check(data) let res = await appflow_check(data)
console.log(res) //console.log(res)
Toast(res.msg) Toast(res.msg)
}, },
leixin(e) { leixin(e) {
// console.log(e) // //console.log(e)
// this.meatelist[e]==1 // this.meatelist[e]==1
this.datatype = e this.datatype = e
if (e == 'department_type') { if (e == 'department_type') {
@ -606,7 +606,7 @@
})); }));
this.columns = detailTypeOptions this.columns = detailTypeOptions
} }
// console.log(this.meatelist) // //console.log(this.meatelist)
this.leavaTypeShow = true this.leavaTypeShow = true
}, },
leixiner() { leixiner() {
@ -614,7 +614,7 @@
}, },
leixiner1() { leixiner1() {
this.branchShow = true this.branchShow = true
console.log('111111111',this.branchShow) //console.log('111111111',this.branchShow)
}, },
branchShowclose() { branchShowclose() {
@ -629,19 +629,19 @@
// columnIndexvaluevalues // columnIndexvaluevalues
branchConfirm(e) { branchConfirm(e) {
console.log('confirm', e, e.value[2].name) //console.log('confirm', e, e.value[2].name)
this.check_admin_name = e.value[2].name this.check_admin_name = e.value[2].name
this.check_admin_ids.push(e.value[2].id) this.check_admin_ids.push(e.value[2].id)
this.branchShow = false this.branchShow = false
}, },
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) //console.log('confirm', e, e.value[2].name)
this.copy_uids += e.value[2].id this.copy_uids += e.value[2].id
this.copy_names += e.value[2].name + ',' this.copy_names += e.value[2].name + ','
this.branchShow1 = false this.branchShow1 = false
}, },
branchConfirm2(e) { branchConfirm2(e) {
console.log('confirm', e, e.value[2].name) //console.log('confirm', e, e.value[2].name)
this.meatelist.uid = e.value[2].id this.meatelist.uid = e.value[2].id
this.meatelist.name = e.value[2].name this.meatelist.name = e.value[2].name
this.branchShow2 = false this.branchShow2 = false
@ -649,7 +649,7 @@
/** 请假类型 */ /** 请假类型 */
leavaType(e) { leavaType(e) {
console.log(this.meatelist, this.datatype, e) //console.log(this.meatelist, this.datatype, e)
if (this.datatype == 'department_type') { if (this.datatype == 'department_type') {
this.meatelist.department_type = e.name this.meatelist.department_type = e.name
this.leavaTypeId = e.id this.leavaTypeId = e.id
@ -661,8 +661,8 @@
this.meatelist.other_type = e.name this.meatelist.other_type = e.name
this.leavaTypeId2 = e.id this.leavaTypeId2 = e.id
} }
console.log(this.leavaTypeId2) //console.log(this.leavaTypeId2)
// console.log(this.meatelist,this.datatype, e.name) // //console.log(this.meatelist,this.datatype, e.name)
// this.meatelist.detail_type = e.name // this.meatelist.detail_type = e.name
// // this.leavaTypeVal = e.name // // this.leavaTypeVal = e.name
// this.meatelist.department_type = e.name // this.meatelist.department_type = e.name
@ -692,7 +692,7 @@
this.timeData[i].timeShow = false this.timeData[i].timeShow = false
}, },
async submiteBtn() { async submiteBtn() {
console.log(this.leavaTypeId2) //console.log(this.leavaTypeId2)
let subData; let subData;
let subData1; let subData1;
if (this.typeId == 6 || this.typeId == 7 || this.typeId == 8) { if (this.typeId == 6 || this.typeId == 7 || this.typeId == 8) {
@ -759,7 +759,7 @@
console.log(subData) //console.log(subData)
try { try {
const res = await appapprove(subData) const res = await appapprove(subData)

File diff suppressed because it is too large Load Diff

View File

@ -16,8 +16,8 @@
v-if="fieldValue.type=='select'&& fieldKey!='copy_uids'&&fieldKey!='check_admin_ids'&&fieldKey!='flow_id'&&fieldKey!='name'"> v-if="fieldValue.type=='select'&& fieldKey!='copy_uids'&&fieldKey!='check_admin_ids'&&fieldKey!='flow_id'&&fieldKey!='name'">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled @click="leixin(fieldKey)" <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择" disabled
v-if="fieldKey!='name'"> @click="leixin(fieldKey)" v-if="fieldKey!='name'">
</view> </view>
<view class="leava_type flex_a_c" v-if="fieldKey=='name'&fieldValue.type=='select'"> <view class="leava_type flex_a_c" v-if="fieldKey=='name'&fieldValue.type=='select'">
@ -34,7 +34,7 @@
<view class="" v-if=" fieldKey=='start_time'"> <view class="" v-if=" fieldKey=='start_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime1"> @click="selectTime1">
@ -43,7 +43,7 @@
</view> </view>
<view class="" v-if="fieldKey=='end_time'"> <view class="" v-if="fieldKey=='end_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime2"> @click="selectTime2">
@ -52,7 +52,7 @@
</view> </view>
<view class="" v-if="fieldKey=='detail_time'"> <view class="" v-if="fieldKey=='detail_time'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled <input type="text" v-model="meatelist[fieldKey]" placeholder="请选择时间" disabled
@click="selectTime3(fieldKey)"> @click="selectTime3(fieldKey)">
@ -62,13 +62,13 @@
<view class="" v-if="fieldKey=='duration'"> <view class="" v-if="fieldKey=='duration'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="manHour" disabled placeholder="请假工时"> <input type="text" v-model="meatelist[fieldKey]" placeholder="请假工时">
</view> </view>
</view> </view>
<view class="" v-if="fieldValue.type=='textarea'"> <view class="" v-if="fieldValue.type=='textarea'">
<view class="cont_cell"> <view class="leava_type flex_a_c">
<view class="title">{{fieldValue.title}}</view> <view class="title">{{fieldValue.title}}</view>
<input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title"> <input type="text" v-model="meatelist[fieldKey]" :placeholder="fieldValue.title">
</view> </view>
@ -77,12 +77,12 @@
<view class="" v-if="fieldValue.type=='file'"> <view class="" v-if="fieldValue.type=='file'">
<block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i" @click="downloadFile(item)">
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize | formatBytes }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon>
</view> </view>
@ -123,10 +123,33 @@
<view class="title">选择审批流程</view> <view class="title">选择审批流程</view>
<input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true"> <input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true">
</view> </view>
<view class="cont_cell" @click="branchShow = true">
<view class="cont_cell" @click="branchShow = true" v-if="flowShow">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
<view v-else style=" border-bottom: 1px solid #f7f7f7;">
<block v-for="(item,i) in sprecord" :key="i">
<view class="record" style="display: flex;">
<view class="circle"></view>
<text class="text">{{i+1}} {{item.flow_type_txt}}
</text>
</view>
<view class="" v-if="item.user_id_info.length>0&&item.user_id_info"
style='padding-left: 20rpx;padding-right: 20rpx;margin-bottom: 20rpx;'>
<view class="" v-for="(items,k) in item.user_id_info"
style="display: flex;margin-right: 20rpx;">
<view class=""
style="width: 30rpx;height: 30rpx;border-radius: 50%; margin-left: 20rpx;margin-right: 10rpx;">
<image :src="`${httpRequestUrl}`+items.thumb" mode=""
style="width: 30rpx;height: 30rpx;border-radius: 50%;margin-top: 5rpx;"></image>
</view>
<view class=""> {{items.name}}</view>
</view>
</view>
</block>
</view>
<view class="cont_cell" @click="branchShow1 = true"> <view class="cont_cell" @click="branchShow1 = true">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
@ -173,11 +196,13 @@
<!-- 选择时间 --> <!-- 选择时间 -->
<u-datetime-picker :show="timeShow1" mode="datetime" :maxDate="1786778555000" closeOnClickOverlay <u-datetime-picker :show="timeShow1" mode="datetime" :maxDate="1786778555000" :minDate="timestamp"
@confirm="timeConfirm1($event)" @cancel="timeShow1 = false" @close="timeShow1 = false"></u-datetime-picker> closeOnClickOverlay @confirm="timeConfirm1($event)" @cancel="timeShow1 = false"
@close="timeShow1 = false"></u-datetime-picker>
<u-datetime-picker :show="timeShow2" mode="datetime" :maxDate="1786778555000" closeOnClickOverlay <u-datetime-picker :show="timeShow2" mode="datetime" :maxDate="1786778555000" closeOnClickOverlay
@confirm="timeConfirm2($event)" @cancel="timeShow2 = false" @close="timeShow2 = false"></u-datetime-picker> @confirm="timeConfirm2($event)" :minDate="timestamp" @cancel="timeShow2 = false"
@close="timeShow2 = false"></u-datetime-picker>
<u-datetime-picker :show="timeShow" mode="datetime" :maxDate="1786778555000" :minDate="timestamp" <u-datetime-picker :show="timeShow" mode="datetime" :maxDate="1786778555000" :minDate="timestamp"
closeOnClickOverlay @confirm="timeConfirm3($event)" @cancel="timeShow = false" closeOnClickOverlay @confirm="timeConfirm3($event)" @cancel="timeShow = false"
@close="timeShow = false"></u-datetime-picker> @close="timeShow = false"></u-datetime-picker>
@ -198,11 +223,14 @@
getemployee, getemployee,
userdepartment, userdepartment,
appapprove, appapprove,
flowusers
} from '@/api/oa.js' } from '@/api/oa.js'
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue' import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
export default { export default {
components: { components: {
@ -275,6 +303,9 @@
datatype: '', datatype: '',
fileOption: {}, fileOption: {},
files: new Map(), files: new Map(),
flowShow: true,
sprecord: []
} }
}, },
onLoad(option) { onLoad(option) {
@ -295,6 +326,11 @@
this.getDocumentList() this.getDocumentList()
this.getDocumentList2() this.getDocumentList2()
}, },
computed: {
httpRequestUrl() {
return HTTP_REQUEST_URL;
}
},
onShow() { onShow() {
// this.getFlow() // this.getFlow()
// //
@ -302,21 +338,21 @@
}, },
watch: { watch: {
timeData: { // timeData: {
handler(newVal, oldVal) { // handler(newVal, oldVal) {
if (newVal[0].time.length > 0 && newVal[1].time.length > 0) { // if (newVal[0].time.length > 0 && newVal[1].time.length > 0) {
const { // const {
leaveDays, // leaveDays,
leaveHours // leaveHours
} = this.calculateLeaveDaysAndHours(this.timeData[0].time, this.timeData[1] // } = this.calculateLeaveDaysAndHours(this.timeData[0].time, this.timeData[1]
.time) // .time)
console.log(leaveHours, leaveDays) // console.log(leaveHours, leaveDays)
this.manHour = leaveHours + '小时' // this.meatelist.duration = leaveHours
this.daysNum = leaveDays + '天' // this.daysNum = leaveDays + ''
} // }
}, // },
deep: true // deep: true
} // }
}, },
methods: { methods: {
async getDocumentList2() { async getDocumentList2() {
@ -329,6 +365,26 @@
}, },
async flowuser(id) {
let res = await flowusers({
id: id
})
// flowPathShow = true
// console.log(res.data.flow_data == false)
if (res.data.flow_data.length > 0) {
this.flowShow = false
this.sprecord = res.data.flow_data
} else {
this.flowShow = true
}
// this.flowShow = false
// this.sprecord = res.data.flow_data
// this.flowShow=!res.data.flow_data
// console.log(res.data.flow_data)
},
confirm(e) { confirm(e) {
console.log(e) console.log(e)
@ -357,11 +413,13 @@
}, },
// //
async getDocumentList() { async getDocumentList() {
const res = await userdepartment() const res = await userdepartment({
tree: 1
})
const deArr = res.data const deArr = res.data
let codelist = [ let codelist = [
[], // [], //
[], //
[] // [] //
] ]
@ -372,20 +430,14 @@
} }
}) })
codelist[1] = res.data[0].children.map((item) => { //
return {
id: item.id,
name: item.title
}
})
let dat = await getemployee({ let dat = await getemployee({
did: codelist[1][0].id did: codelist[0][0].id
}) })
codelist[2] = dat.data.map((item) => { codelist[1] = dat.data.map((item) => {
return { return {
id: item.id, id: item.id,
name: item.name name: item.name
@ -403,7 +455,7 @@
}, },
// //
async columnCode(e) { async columnCode(e) {
if (e.columnIndex == 1) { if (e.columnIndex == 0) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
did: this.branchColumns[e.columnIndex][e.index].id did: this.branchColumns[e.columnIndex][e.index].id
@ -418,8 +470,10 @@
}) })
// 使 Vue.set this.$set columns3 // 使 Vue.set this.$set columns3
this.$set(this.branchColumns, 2, newColumn); this.$set(this.branchColumns, 1, newColumn);
} else {
this.$set(this.branchColumns, 1, []);
} }
} }
@ -427,7 +481,7 @@
}, },
// //
async columnCode1(e) { async columnCode1(e) {
if (e.columnIndex == 1) { if (e.columnIndex == 0) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
did: this.branchColumns1[e.columnIndex][e.index].id did: this.branchColumns1[e.columnIndex][e.index].id
@ -442,16 +496,19 @@
}) })
// 使 Vue.set this.$set columns3 // 使 Vue.set this.$set columns3
this.$set(this.branchColumns1, 2, newColumn); this.$set(this.branchColumns1, 1, newColumn);
} else {
this.$set(this.branchColumns1, 1, []);
} }
} }
}, },
async columnCode2(e) { async columnCode2(e) {
console.log(e) console.log(e)
if (e.columnIndex == 1) { if (e.columnIndex == 0) {
let arr1 = [] let arr1 = []
let dat = await getemployee({ let dat = await getemployee({
did: this.branchColumns2[e.columnIndex][e.index].id did: this.branchColumns2[e.columnIndex][e.index].id
@ -466,8 +523,10 @@
}) })
// 使 Vue.set this.$set columns3 // 使 Vue.set this.$set columns3
this.$set(this.branchColumns2, 2, newColumn); this.$set(this.branchColumns2, 1, newColumn);
} else {
this.$set(this.branchColumns2, 1, []);
} }
} }
@ -572,22 +631,24 @@
}, },
// columnIndexvaluevalues // columnIndexvaluevalues
branchConfirm(e) { branchConfirm(e) {
console.log('confirm', e, e.value[2].name)
this.check_admin_name = e.value[2].name
this.check_admin_ids = e.value[2].id this.check_admin_name = e.value[1].name
this.check_admin_ids = e.value[1].id
this.branchShow = false this.branchShow = false
console.log('confirm', this.check_admin_ids, e, e.value[1].name)
}, },
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name)
this.copy_uids += e.value[2].id this.copy_uids += e.value[1].id + ','
this.copy_names += e.value[2].name + ',' this.copy_names += e.value[1].name + ','
this.branchShow1 = false this.branchShow1 = false
console.log(this.copy_uids, e, e.value[1].name)
}, },
branchConfirm2(e) { branchConfirm2(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[1].name)
this.meatelist.uid = e.value[2].id this.meatelist.uid = e.value[1].id
this.meatelist.name = e.value[2].name this.meatelist.name = e.value[1].name
this.branchShow2 = false this.branchShow2 = false
}, },
/** 请假类型 */ /** 请假类型 */
@ -629,6 +690,7 @@
flowPathSelect(value) { flowPathSelect(value) {
this.flowPath = value.name this.flowPath = value.name
this.flow_id = value.id this.flow_id = value.id
this.flowuser(value.id)
}, },
async getFlow() { async getFlow() {
@ -703,7 +765,7 @@
...subData1 ...subData1
} }
console.log(subData) // console.log(subData)
try { try {
const res = await appapprove(subData) const res = await appapprove(subData)
@ -808,26 +870,35 @@
/** /**
* 计算两个时间戳之间相差的小时数 * 计算两个时间戳之间相差的小时数
* */ * */
calculateLeaveDaysAndHours(leaveStartTime, leaveEndTime) { calculateLeaveDaysAndHours(leaveStartTime, leaveEndTime, hoursPerDay = 8) {
const startDate = new Date(leaveStartTime); const startDate = new Date(leaveStartTime);
const endDate = new Date(leaveEndTime); const endDate = new Date(leaveEndTime);
const timeDifference = endDate.getTime() - startDate.getTime();
// //
const leaveDays = Math.floor((endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000)) + 1; const leaveDays = Math.floor((endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000)) + 1;
// //
// const leaveHours = leaveDays * hoursPerDay; const leaveHours = leaveDays * hoursPerDay;
const timeDifference = endDate.getTime() - startDate.getTime();
// //
const leaveHours = timeDifference / (1000 * 60 * 60); // // const leaveHours = timeDifference / (1000 * 60 * 60); //
// console.log(leaveHours) if (timeDifference <= 0) {
Toast('时间日期不合法,请重新输入')
this.meatelist.start_time = ''
this.meatelist.end_time = ''
this.timeData[0].time = ''
this.timeData[1].time = ''
this.meatelist.duration = ''
} else {
// //
return { return {
leaveDays, leaveDays,
leaveHours, leaveHours,
}; };
} }
}
}, },
filters: { filters: {
// MB // MB
@ -851,6 +922,10 @@
padding-bottom: 100px; padding-bottom: 100px;
} }
.leave_box .title {
width: 180rpx;
}
.leave_box, .leave_box,
.flow_path { .flow_path {
width: 100%; width: 100%;
@ -859,10 +934,12 @@
margin-bottom: 35.09rpx; margin-bottom: 35.09rpx;
padding-bottom: 28.07rpx; padding-bottom: 28.07rpx;
} }
/deep/.u-action-sheet__item-wrap { /deep/.u-action-sheet__item-wrap {
overflow: auto; overflow: auto;
max-height: 50vh; max-height: 50vh;
} }
.bot_btn { .bot_btn {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
@ -892,10 +969,63 @@
.leava_type { .leava_type {
height: 100rpx; height: 100rpx;
border-bottom: 1px solid #999; border-bottom: 1px solid #f7f7f7;
.title { .title {
font-size: 31.58rpx; width: 180rpx;
}
input {
width: 480rpx;
}
}
.cont_cell{
input {
width: 480rpx;
}
}
.record {
position: relative;
margin-bottom: 14.04rpx;
.circle {
width: 31.58rpx;
height: 31.58rpx;
background-color: #fff;
border: 2px solid #34A853;
border-radius: 50%;
margin: 5px;
display: flex;
flex-direction: column;
align-items: center;
&::before {
content: "";
display: block;
position: absolute;
clear: both;
width: 1px;
height: 100%;
background-color: rgba(204, 204, 204, 0.5);
margin: 31.58rpx;
}
}
.text {
margin-left: 7.02rpx;
}
}
:last-child {
.circle {
&::before {
display: none;
}
} }
} }

View File

@ -29,8 +29,8 @@
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon>
</view> </view>
@ -339,14 +339,14 @@
}, },
// columnIndexvaluevalues // columnIndexvaluevalues
branchConfirm(e) { branchConfirm(e) {
console.log('confirm', e, e.value[2].name) //console.log('confirm', e, e.value[2].name)
this.check_admin_name = e.value[2].name this.check_admin_name = e.value[2].name
this.check_admin_ids = e.value[2].id this.check_admin_ids = e.value[2].id
this.branchShow = false this.branchShow = false
}, },
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) //console.log('confirm', e, e.value[2].name)
this.copy_uids += e.value[2].id this.copy_uids += e.value[2].id
this.copy_names+= e.value[2].name+',' this.copy_names+= e.value[2].name+','
this.branchShow1 = false this.branchShow1 = false
@ -441,12 +441,12 @@
}).catch(err => { }).catch(err => {
Toast('上传失败') Toast('上传失败')
that.loading = false that.loading = false
console.log('上传失败', err) //console.log('', err)
}) })
}, },
fail: function(err) { fail: function(err) {
Toast('添加失败') Toast('添加失败')
console.log('失败', err) //console.log('', err)
} }
}); });
}, },
@ -459,7 +459,7 @@
if (res.confirm) { if (res.confirm) {
that.fileArray.splice((i, 1)) that.fileArray.splice((i, 1))
} else if (res.cancel) { } else if (res.cancel) {
console.log('用户点击取消'); //console.log('');
} }
} }
}) })

View File

@ -9,14 +9,14 @@
<view class="middle-threeb" style="margin-bottom: 20rpx;"> <view class="middle-threeb" style="margin-bottom: 20rpx;">
<view class="middle-threeb-title"> <!-- <view class="middle-threeb-title">
<view class="title"> <!-- <view class="title">
{{list.send_time}} {{list.send_time}}
</view> </view> -->
<!-- <view class="title-status"> <!-- <view class="title-status">
{{list.send_time}} {{list.send_time}}
</view> --> </view> -->
</view> <!-- </view> -->
<view class="middle-threeba"> <view class="middle-threeba">
<view class="middle-threeb-a"> <view class="middle-threeb-a">
@ -298,17 +298,17 @@
} }
.name { .name {
font-size: 35rpx; font-size: 25rpx;
font-family: PingFang SC-Bold, PingFang SC; font-family: PingFang SC-Bold, PingFang SC;
font-weight: bold; // font-weight: bold;
color: #333333; color: #333333;
text { text {
font-size: 25rpx; font-size: 35rpx;
font-family: PingFang SC-Regular, PingFang SC; font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #CCCCCC; color: #333333;
} }
} }

View File

@ -173,7 +173,7 @@
uni.navigateTo({ uni.navigateTo({
url: '/pages/message/detail??type=' + id url: '/pages/message/detail??type=' + id
}) })
// console.log(res) // //console.log(res)
}, },
taskDetail(item) { taskDetail(item) {

View File

@ -86,12 +86,12 @@
leftClick(e) { leftClick(e) {
uni.sendHostEvent('closeApp', e, (ret) => { uni.sendHostEvent('closeApp', e, (ret) => {
// //
console.log('关闭应用' + JSON.stringify(ret)); //console.log('' + JSON.stringify(ret));
}); });
}, },
async login() { async login() {
console.log(this.formData) //console.log(this.formData)
if (this.formData.scene == 1 && !this.formData.old_pwd) return Toast('旧密码不能为空'); if (this.formData.scene == 1 && !this.formData.old_pwd) return Toast('旧密码不能为空');
if (this.formData.scene == 1 && !this.formData.pwd) return Toast('新密码不能为空'); if (this.formData.scene == 1 && !this.formData.pwd) return Toast('新密码不能为空');
if (this.formData.scene == 1 && !this.formData.pwd_confirm) return Toast('确认密码不能为空'); if (this.formData.scene == 1 && !this.formData.pwd_confirm) return Toast('确认密码不能为空');
@ -106,7 +106,7 @@
}) })
let res = await changePassword(this.formData); let res = await changePassword(this.formData);
// console.log(res, '11111111') // //console.log(res, '11111111')
Toast(res.msg) Toast(res.msg)
if(res.code==0){ if(res.code==0){
uni.switchTab({ uni.switchTab({

628
pages/oaTask/detail.vue Normal file
View File

@ -0,0 +1,628 @@
<template>
<view class="content">
<view class="content-middle">
<view class="content-middle-three">
<view class="middle-three">
<view class="middle-threeb">
<view class="middle-threeb-title">
<view class="title">
{{detail.title}}
</view>
<view class="title-status" @click="show5=true">
{{detail.flow_status==1?"待办的":detail.flow_status==2?"进行中":detail.flow_status==3?"已完成":detail.flow_status==4?"已拒绝":"已关闭"}}
</view>
</view>
<view class="middle-threeba">
<view class="middle-threeb-a">
<view class="threeb-a-b">
<view class="name">负责人<text>{{detail.director_name}}</text></view>
<view class="name">协办人<text>{{detail.assist_admin_names}}</text></view>
<!-- <view class="name">发布人<text>{{detail.title}}</text></view> -->
<view class="name">工作性质<text>{{detail.cate_name}}</text></view>
<view class="name">计划完成日期<text>{{detail.end_time}}</text></view>
<!-- <view class="name">任务验收截止时间<text>{{detail.project_name}}</text></view> -->
<view class="name">预估工时<text>{{detail.plan_hours}}</text></view>
</view>
</view>
</view>
</view>
</view>
<view class="middle-three" style="margin-top: 30rpx;">
<view class="middle-threeb">
<view class="middle-threeb-title">
<view class="title">
任务描述
</view>
</view>
<view class="middle-threeba">
<view class="middle-threeb-a">
<view class="threeb-a-b1">
<!-- <text>{{detail.content}}</text> -->
<jyf-parser :html="detail.content" ref="article" :tag-style="tagStyle"></jyf-parser>
</view>
</view>
</view>
</view>
</view>
<view class="" style="background-color: #fff;">
<block v-for="(item, i) in fileArray" :key="i">
<view class="file flex_a_c_j_sb" style="z-index: 0;">
<view class="l_file">
<view class="file_name" @click="downloadFile(item)">{{ item.name }}</view>
<view class="file_size">{{ item.filesize }}</view>
<!-- -->
</view>
<u-icon @click="delImg(item,i)" name="close-circle" color="#333333" size="28"
style="z-index: 999;"></u-icon>
</view>
</block>
<view class="upload_box flex_a_c_j_sb">
<view>
<view class="title">选择文件并上传</view>
<view class="text">
上传前请规范命名最大只能上传100M的文件<br />
超过请压缩成多个文件上传
</view>
</view>
<view class="" style="margin-top: 60rpx;">
<lsjUpload ref="lsjUpload" childId="upload1" :size="10" :option="fileOption" height="200rpx"
style="margin-top: 28rpx;" :debug="false"
:formats="'pdf,txt,zip,rar,jpg,png,mp3,avi,mov,mp4,gif'" :multiple="false" :count="3"
:instantly="true" @change="changeFile" @uploadEnd='onuploadEnd' @progress='onprogre'>
<u-icon name="plus-circle" color="#333333" size="28"></u-icon>
</lsjUpload>
</view>
</view>
</view>
</view>
</view>
<u-empty v-if="Object.keys(detail).length==0" text="没有信息" icon="/static/empty/data.png"></u-empty>
<u-action-sheet :show="show5" :actions="actions5" title="请选择任务状态" @close="show5 = false" @select="Select5">
</u-action-sheet>
</view>
</template>
<script>
import {
projecttaskview,
addprojecttask,
addfile,
deletefile
} from '@/api/oa.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
import {
Toast
} from '@/libs/uniApi.js'
import {
FILE_URL
} from '@/api/file.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
export default {
components: {
lsjUpload
},
data() {
return {
show5: false,
type: '',
detail: {},
actions5: [{
name: '待办的',
id: '1',
}, {
name: '进行中',
id: '2',
}, {
name: '已完成',
id: '3'
}, {
name: '已拒绝',
id: '4'
}, {
name: '已关闭',
id: '5'
}],
fileArray: [],
fileOption: {},
tagStyle: {
img: 'width:100%;display:block;',
},
files: new Map(),
};
},
onLoad(data) {
this.fileOption = {
url: FILE_URL,
name: 'file',
header: {
token: this.$store.state.app.token
}
},
this.type = data.data
this.getDeatil(data.data)
},
onShow() {
},
methods: {
async getDeatil(id) {
let res = await projecttaskview({
id: id
})
this.detail = res.data.detail
this.fileArray = res.data.file_array.map(function(obj) {
return {
name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize,
id: obj.id
};
});
},
Select5(e) {
this.detail.flow_status = e.id
// con
this.zhuangtai()
},
downloadFile(item) {
uni.downloadFile({
url: HTTP_REQUEST_URL + item.filepath,
success: function(res) {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
if (item.fileext == 'png'||item.fileext == 'jpg') {
uni.previewImage({
urls: [tempFilePath]
});
} else {
uni.showModal({
title: '提示',
content: '暂时不支持查看,请登录后台查看',
success: function(res) {
if (res.confirm) {
// console.log('');
} else if (res.cancel) {
// console.log('');
}
}
});
}
}
}
});
},
async zhuangtai() {
let res = await addprojecttask({
id: this.type,
flow_status: this.detail.flow_status
})
if (res.code == 0) {
uni.navigateBack({
delta: 1
})
}
Toast(res.msg)
},
async addfile1(val) {
let data = {
topic_id: this.detail.id,
file_id: val.id,
file_name: val.name,
module: 'task',
}
let res = await addfile(data)
if (res.code == 0) {
this.getDeatil(this.type)
}
Toast(res.msg)
// console.log(res)
},
/**
* 某文件上传结束回调(成功失败都回调)
* @param {Object} item 当前上传完成的文件
*/
onuploadEnd(item) {
console.log(`${item.name}已上传结束,上传状态=${item.type}`);
if (item['responseText']) {
this.files.get(item.name).responseText = JSON.parse(item.responseText);
}
//
this.files.set(item.name, item);
let arr1 = this.files.get(item.name).responseText
this.fileArray.push(arr1.data)
this.addfile1(arr1.data)
//
this.$forceUpdate();
},
/**
* 上传进度回调
* 如果网页上md文档没有渲染出事件名称onprogre请复制代码的小伙伴自行添加上哈没有哪个事件是只(item)
* @param {Object} item 当前正在上传的文件
*/
onprogre(item) {
console.log('打印对象', JSON.stringify(this.files.get(item.name)));
//
this.files.set(item.name, item);
//
this.$forceUpdate();
},
/**
* 文件选择回调
* @param {Object} files 已选择的所有文件Map集合
*/
changeFile(files) {
console.log('当前选择的文件列表:', JSON.stringify([...files.values()]));
//
this.files = files
console.log(files.values())
//
this.$forceUpdate();
},
/**
* 指定上传某个文件
* @param {Object} name 带后缀名的文件名称
*/
resetUpload() {
this.$refs.lsjUpload.upload(name);
},
async delImg(item, i) {
console.log(item)
let res = await deletefile({
id: item.id
})
if (res.code == 0) {
this.fileArray.splice(i, 1)
}
Toast(res.msg)
}
}
};
</script>
<style lang="scss">
page {
padding: 0 28rpx;
}
//
.upload_box {
padding: 17.54rpx;
background-color: #fff;
border-radius: 4px;
.title {
font-size: 28.07rpx;
}
.text {
margin-top: 7.02rpx;
font-size: 21.05rpx;
color: #999;
}
}
.file_name {
width: 526.32rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.file {
padding: 17.54rpx;
border-radius: 4px;
border: 1px solid #F2F2F2;
margin: 17.54rpx 0;
.file_size {
margin-top: 7.02rpx;
}
.file_size,
.upload_people {
font-size: 21.05rpx;
color: #999;
}
}
.content-middle {
.content-middle-one {
.middle-one {
display: flex;
background-color: #FFFFFF;
padding: 28rpx 18rpx;
.search {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
width: 149rpx;
line-height: 63rpx;
height: 63rpx;
background: #FFFFFF;
text-align: center;
border-radius: 35rpx 35rpx;
border: 2rpx solid #E6E5E5;
margin-left: 18rpx;
}
.content-middle-search {
display: flex;
width: 527rpx;
height: 63rpx;
line-height: 63rpx;
padding-left: 30rpx;
background: #F7F7F7;
border-radius: 35rpx 35rpx;
font-size: 25rpx;
input {
width: 527rpx;
height: 63rpx;
line-height: 63rpx;
padding-left: 30rpx;
}
.placeholder {
font-size: 25rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
padding-left: 30rpx;
}
}
.content-middle-sai {
display: flex;
width: 149rpx;
height: 63rpx;
line-height: 63rpx;
background: #FFFFFF;
border-radius: 35rpx 35rpx;
border: 2rpx solid #E6E5E5;
margin-left: 18rpx;
.content-middle-saia {
width: 29rpx;
height: 28rpx;
margin-left: 25rpx;
margin-right: 10rpx;
image {
width: 100%;
height: 100%;
}
}
.content-middle-saib {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
}
}
}
.content-middle-search-detail {
background-color: #FFFFFF;
:nth-last-child(1) {
border: none !important;
}
.search-detail {
display: flex;
justify-content: space-between;
padding-right: 195rpx;
padding: 18rpx 53rpx;
border-bottom: 2rpx solid #E6E6E6;
;
.search-detail-one {}
}
}
}
.content-middle-three {
margin-top: 26rpx;
.middle-three {
background-color: #FFFFFF;
padding: 28rpx 28rpx;
.middle-threea {
font-size: 35rpx;
font-family: PingFang SC-Bold, PingFang SC;
font-weight: bold;
color: #3274F9;
margin-bottom: 30rpx;
}
.middle-threeb {
.middle-threeb-title {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
.title {
width: 540rpx;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
.title-status {
font-size: 25rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #3274F9;
background: #E4EDFF;
height: 42rpx;
line-height: 42rpx;
padding: 0 10rpx;
border-radius: 7rpx 7rpx;
}
}
.middle-threeba {
display: flex;
justify-content: space-between;
.middle-threeb-a {
.threeb-a-b {
.middle-edit {
width: 645rpx;
height: 63rpx;
line-height: 63rpx;
background: #e6e5d9;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #000;
margin-bottom: 20rpx;
}
.middle-delete {
width: 645rpx;
height: 63rpx;
line-height: 63rpx;
background: #F02828;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
}
.name {
font-size: 28rpx;
font-family: PingFang SC-Bold, PingFang SC;
color: #333333;
text {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
}
.achor {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
}
.threeb-a-b1 {
width: 350px;
padding: 20rpx 20rpx;
word-wrap: break-word;
overflow: hidden;
}
}
.middle-threeb-b {
height: 80rpx;
image {
width: 100%;
height: 100%;
}
}
}
}
}
}
}
</style>

View File

@ -28,7 +28,7 @@
<view class="middle-three"> <view class="middle-three">
<view class="middle-threeb" v-for="(items,j) in list" :key='j'> <view class="middle-threeb" v-for="(items,j) in list" :key='j' @click="detail(items)">
<liu-swipe-action :index="j" @clickItem="clickItem" :btnList='btnList'> <liu-swipe-action :index="j" @clickItem="clickItem" :btnList='btnList'>
<view class="middle-threeb-title"> <view class="middle-threeb-title">
<view class="title"> <view class="title">
@ -47,6 +47,10 @@
<view class="name">工作类型<text>{{items.cate_name}}</text></view> <view class="name">工作类型<text>{{items.cate_name}}</text></view>
<view class="name">关联项目<text>{{items.project_name}}</text></view> <view class="name">关联项目<text>{{items.project_name}}</text></view>
<view class="name">预估工时<text>{{items.plan_hours}}</text></view> <view class="name">预估工时<text>{{items.plan_hours}}</text></view>
<view class="name">
状态<text>{{items.flow_status==1?"待办的":items.flow_status==2?"进行中":items.flow_status==3?"已完成":items.flow_status==4?"已拒绝":"已关闭"}}</text>
</view>
<!-- <view class="achor">{{items.name2}}</view> --> <!-- <view class="achor">{{items.name2}}</view> -->
<!-- <view class="middle-edit" @click="editpart(items)"> <!-- <view class="middle-edit" @click="editpart(items)">
编辑 编辑
@ -101,6 +105,7 @@
</view> </view>
</view> </view>
</view> </view>
<view class="content-middle-two"> <view class="content-middle-two">
<view class="middle-two-img"> <view class="middle-two-img">
<image src="@/static/images/ja2.png" mode="aspectFit"></image> <image src="@/static/images/ja2.png" mode="aspectFit"></image>
@ -218,7 +223,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
if (data.id == 2) { if (data.id == 2) {
uni.showModal({ uni.showModal({
@ -260,6 +265,12 @@
url: '/pages/addquest/index??type=' + 1 + "&data=" + item.id url: '/pages/addquest/index??type=' + 1 + "&data=" + item.id
}) })
}, },
//
detail(item) {
uni.navigateTo({
url: '/pages/oaTask/detail??type=' + 1 + "&data=" + item.id
})
},
// //
search() { search() {
this.initList() this.initList()
@ -390,10 +401,11 @@
.content-middle-three { .content-middle-three {
margin-top: 26rpx; margin-top: 26rpx;
background-color: #FFFFFF;
padding: 28rpx 28rpx;
.middle-three { .middle-three {
.middle-threea { .middle-threea {
font-size: 35rpx; font-size: 35rpx;
font-family: PingFang SC-Bold, PingFang SC; font-family: PingFang SC-Bold, PingFang SC;
@ -403,7 +415,9 @@
} }
.middle-threeb { .middle-threeb {
padding: 28rpx 28rpx;
margin-bottom: 20px;
background-color: #FFFFFF;
.middle-threeb-title { .middle-threeb-title {
height: 98rpx; height: 98rpx;
@ -469,15 +483,16 @@
.name { .name {
font-size: 35rpx; font-size: 35rpx;
font-family: PingFang SC-Bold, PingFang SC; ont-family: PingFang SC-Regular, PingFang SC;
font-weight: bold;
color: #333333;
text { text {
font-size: 25rpx; // font-size: 25rpx;
font-size: 35rpx;
font-family: PingFang SC-Regular, PingFang SC; font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #CCCCCC; font-weight: bold;
color: #333333;
} }
} }
@ -524,8 +539,12 @@
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #FFFFFF;
display: flex; display: flex;
margin: 0 auto; position: absolute;
margin-top: 25rpx; bottom: 90px;
left: 50%;
position: fixed;
margin-left: -198rpx;
.middle-two-img { .middle-two-img {

View File

@ -121,7 +121,7 @@
// keyword: this.keyword // keyword: this.keyword
// }) // })
// this.list = res.data.data // this.list = res.data.data
// console.log(res.data) // //console.log(res.data)
// }, // },
async initList() { async initList() {
this.loadConfig.page = 1; this.loadConfig.page = 1;
@ -157,7 +157,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
if (data.id == 2) { if (data.id == 2) {
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',

1217
pages/project/detail.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
</view> </view>
<view class="content-middle-one"> <view class="content-middle-one">
<view class="middle-one" v-for="(item,j) in list" :key='j'> <view class="middle-one" v-for="(item,j) in list" :key='j' @click="tian(item)">
<liu-swipe-action :index="j" @clickItem="clickItem" :btnList='btnList'> <liu-swipe-action :index="j" @clickItem="clickItem" :btnList='btnList'>
<view class="middle-onea"> <view class="middle-onea">
<view class="middle-onea-title"> <view class="middle-onea-title">
@ -178,7 +178,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
if (data.id == 2) { if (data.id == 2) {
uni.showModal({ uni.showModal({
@ -217,6 +217,12 @@
url: '/pages/addproject/index??type=' + 1 + "&data=" + item.id url: '/pages/addproject/index??type=' + 1 + "&data=" + item.id
}) })
}, },
//
tian(item){
uni.navigateTo({
url: '/pages/project/detail??type=' + 1 + "&data=" + item.id
})
},
// //
search() { search() {
this.initList() this.initList()

View File

@ -163,7 +163,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',
success: (e) => { success: (e) => {

View File

@ -10,13 +10,13 @@
<view class="content-middle"> <view class="content-middle">
<view class="content-middle-one"> <view class="content-middle-one">
<view class="middle-one" v-for="(item,k) in list2" @click="tian(item)"> <view class="middle-one" v-for="(item,k) in list2" @click="tian(item)">
<liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList'> <liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList1' v-if='item.check_status==2&&num!=2&&num!=0'>
<view class="middle-one-title"> <view class="middle-one-title">
<view class="one-titlea"> <view class="one-titlea">
<view class="name"> <view class="name">
{{item.check_user}} {{item.admin_name}}
</view> </view>
<view class="parment"> <view class="parment">
{{item.code}} {{item.code}}
@ -30,19 +30,40 @@
<text v-if='item.check_status==2'>审核通过</text> <text v-if='item.check_status==2'>审核通过</text>
<text v-if='item.check_status==3'>审核不通过</text> <text v-if='item.check_status==3'>审核不通过</text>
<text v-if='item.check_status==4'>撤销审核</text> <text v-if='item.check_status==4'>撤销审核</text>
<text v-if='item.check_status==5'>开具</text> <text v-if='item.check_status==5'>打款</text>
</view> </view>
</view> </view>
<view class="middle-one-time">报销部门{{item.department}}</view> <view class="middle-one-time">报销部门{{item.department}}</view>
<view class="middle-one-time">入账月份{{item.income_month}}</view> <view class="middle-one-time">入账月份{{item.income_month}}</view>
<view class="middle-one-time">报销人审核人{{item.admin_name}}</view> <view class="middle-one-time">报销人审核人{{item.check_user}}</view>
</liu-swipe-action> </liu-swipe-action>
<!-- <view class="middle-edit" @click="editpart(item)"> <liu-swipe-action :index="k" @clickItem="clickItem" :btnList='btnList' v-else>
编辑
<view class="middle-one-title">
<view class="one-titlea">
<view class="name">
{{item.admin_name}}
</view> </view>
<view class="middle-delete" @click="clickItem(item)"> <view class="parment">
删除 {{item.code}}
</view> --> </view>
</view>
<view class="one-titleb"
:style="{'color':item.check_status==0?'#000':item.check_status==1?'#dddddd':item.check_status==2?'#34A853':item.check_status==3?'#F9AA32':'#F02828'}">
<text v-if='item.check_status==0'>待审核</text>
<text v-if='item.check_status==1'>审核中</text>
<text v-if='item.check_status==2'>审核通过</text>
<text v-if='item.check_status==3'>审核不通过</text>
<text v-if='item.check_status==4'>撤销审核</text>
<text v-if='item.check_status==5'>已打款</text>
</view>
</view>
<view class="middle-one-time">报销部门{{item.department}}</view>
<view class="middle-one-time">入账月份{{item.income_month}}</view>
<view class="middle-one-time">报销人审核人{{item.check_user}}</view>
</liu-swipe-action>
</view> </view>
</view> </view>
</view> </view>
@ -59,14 +80,18 @@
} from '@/libs/uniApi.js' } from '@/libs/uniApi.js'
import { import {
expenstopay,
appexpenseindex, appexpenseindex,
apexpenselist, apexpenselist,
appexpensecopy appexpensecopy
} from '@/api/oa.js' } from '@/api/oa.js'
import liuswipeaction from '@/uni_modules/liu-swipe-action/components/liu-swipe-action/liu-swipe-action.vue'
export default { export default {
components: {
'liu-swipe-action': liuswipeaction
},
data() { data() {
return { return {
@ -87,6 +112,14 @@
list2: [], list2: [],
num: 0, num: 0,
btnList: [], btnList: [],
btnList1: [{
id: '2',
name: '开票',
width: '100rpx',
bgColor: '#ed656d',
color: '#FFFFFF',
fontSize: '28rpx'
}],
loadConfig: { loadConfig: {
page: 1, page: 1,
limit: 5, limit: 5,
@ -168,7 +201,6 @@
} }
this.list2 = [...this.list2, ...res.data?.data] this.list2 = [...this.list2, ...res.data?.data]
console.log(this.list2)
}, },
async getlist1() { async getlist1() {
@ -215,14 +247,14 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
if (data.id == 2) { if (data.id == 2) {
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '是否设置为已打款状态',
success: (e) => { success: (e) => {
if (e.confirm) { if (e.confirm) {
this.deleteDepartment(data.id) this.deleteDepartment(this.list2[data.index].id)
} }
} }
}) })
@ -235,11 +267,10 @@
// //
async deleteDepartment(id) { async deleteDepartment(id) {
const res = await expenstopay({
const res = await deleteexpenseflow({
id: id id: id
}) })
//console.log(res,id)
if (res.code == 0) { if (res.code == 0) {
if (this.num == 0) { if (this.num == 0) {

View File

@ -27,7 +27,7 @@
</view> </view>
<view class="leava_type flex_a_c"> <view class="leava_type flex_a_c">
<view class="title">报销项目</view> <view class="title">关联项目</view>
<input type="text" v-model="project" placeholder="请选择" disabled @click="leavaShow1"> <input type="text" v-model="project" placeholder="请选择" disabled @click="leavaShow1">
</view> </view>
@ -67,8 +67,8 @@
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> --> <!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> -->
</view> </view>
@ -99,10 +99,32 @@
<view class="title">选择审批流程</view> <view class="title">选择审批流程</view>
<input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true"> <input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true">
</view> </view>
<view class="cont_cell" @click="branchShow = true"> <view class="cont_cell" @click="branchShow = true" v-if="flowShow">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
<view v-else>
<block v-for="(item,i) in sprecord" :key="i">
<view class="record" style="display: flex;">
<view class="circle"></view>
<text class="text">{{i+1}} {{item.flow_type_txt}}
</text>
</view>
<view class="" v-if="item.user_id_info.length>0&&item.user_id_info"
style='padding-left: 20rpx;padding-right: 20rpx;margin-bottom: 20rpx;'>
<view class="" v-for="(items,k) in item.user_id_info"
style="display: flex;margin-right: 20rpx;">
<view class=""
style="width: 30rpx;height: 30rpx;border-radius: 50%; margin-left: 20rpx;margin-right: 10rpx;">
<image :src="`${httpRequestUrl}`+items.thumb" mode=""
style="width: 30rpx;height: 30rpx;border-radius: 50%;margin-top: 5rpx;"></image>
</view>
<view class=""> {{items.name}}</view>
</view>
</view>
</block>
</view>
<view class="cont_cell" @click="branchShow1 = true"> <view class="cont_cell" @click="branchShow1 = true">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
@ -161,8 +183,12 @@
getemployee, getemployee,
appexpense, appexpense,
projectlist, projectlist,
appexpenseview appexpenseview,
flowusers
} from '@/api/oa.js' } from '@/api/oa.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue' import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
import { import {
FILE_URL FILE_URL
@ -195,6 +221,9 @@
columns: [], columns: [],
check_admin_name: '', check_admin_name: '',
copy_names: '', copy_names: '',
flowShow: true,
sprecord: [],
list: [{ list: [{
cate_title: "", cate_title: "",
amount: '', amount: '',
@ -219,31 +248,56 @@
}, },
// //
this.timestamp = Date.parse(new Date()); this.timestamp = Date.parse(new Date());
this.getPersonInfo() // this.getPersonInfo()
this.getlist() this.getlist()
this.getlist1() this.getlist1()
this.getDocumentList() this.getDocumentList()
this.getDocumentList1() this.getDocumentList1()
}, },
computed: {
httpRequestUrl() {
return HTTP_REQUEST_URL;
}
},
methods: { methods: {
//id
async flowuser(id) {
let res = await flowusers({
id: id,
})
if (res.data.flow_data.length > 0) {
this.flowShow = false
this.sprecord = res.data.flow_data
} else {
this.flowShow = true
}
},
async detail(id) { async detail(id) {
let res = await appexpenseview({ let res = await appexpenseview({
id: id id: id
}) })
// console.log(res,'111') // console.log(res,'111')
this.listobj.code = res.data.detail.code this.listobj.code = res.data.detail.code
this.listobj.id = id this.listobj.id = res.data.detail.id
this.list = res.data.detail.list this.list = res.data.detail.list
this.listobj.expense_time = res.data.detail.expense_time this.listobj.expense_time = res.data.detail.expense_time
this.listobj.income_month = res.data.detail.income_month this.listobj.income_month = res.data.detail.income_month
this.project = res.data.detail.ptname this.project = res.data.detail.ptname
this.listobj.flow_id = res.data.flows.id this.listobj.flow_id = res.data.flows.id
this.listobj.ptid = res.data.detail.ptid this.listobj.ptid = res.data.detail.ptid
this.personInfo.name = res.data.detail.create_user
this.personInfo.department_name = res.data.detail.department
this.fileArray = res.data.detail.fileArray.map(function(obj) { this.fileArray = res.data.detail.fileArray.map(function(obj) {
return { return {
name: obj.name, name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize filesize: obj.filesize
}; };
}); });
@ -390,7 +444,7 @@
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[2].name)
if (this.listobj.copy_uids) { if (this.listobj.copy_uids) {
this.listobj.copy_uids += e.value[2].id this.listobj.copy_uids += e.value[2].id + ','
} else { } else {
this.listobj.copy_uids = e.value[2].id this.listobj.copy_uids = e.value[2].id
} }
@ -488,6 +542,7 @@
flowPathSelect(value) { flowPathSelect(value) {
this.flowPath = value.name this.flowPath = value.name
this.flow_id = value.id this.flow_id = value.id
this.flowuser(value.id)
}, },
/** 类型 */ /** 类型 */

View File

@ -14,7 +14,7 @@
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">报销凭证编号</view> <view class="title">报销凭证编号</view>
<input type="text" v-model="listobj.code" placeholder="报销凭证编号"> <input type="text" v-model="listobj.code" disabled placeholder="报销凭证编号">
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
@ -26,9 +26,9 @@
<input type="text" v-model="listobj.income_month" disabled placeholder="入账月份"> <input type="text" v-model="listobj.income_month" disabled placeholder="入账月份">
</view> </view>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">报销项目</view> <view class="title">关联项目</view>
<input type="text" v-model="project" placeholder="请选择" disabled @click="leavaShow1"> <input type="text" v-model="project" placeholder="请选择" disabled>
</view> </view>
@ -37,7 +37,7 @@
<view class="leave_box"> <view class="leave_box">
<view class="" v-for="(item,i) in list" :key='i'> <view class="" v-for="(item,i) in list" :key='i'>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">报销项目</view> <view class="title">报销项目</view>
<input type="text" v-model="item.cate_title" placeholder="请选择" disabled> <input type="text" v-model="item.cate_title" placeholder="请选择" disabled>
</view> </view>
@ -56,15 +56,15 @@
</view> </view>
<view class="leave_box" style="padding-top: 100rpx; background-color: #fff;"> <view class="leave_box" style="padding-top: 30rpx; background-color: #fff;" v-if="fileArray.length>0">
<!-- 附件 --> <!-- 附件 -->
<block v-for="(item, i) in fileArray" :key="i"> <block v-for="(item, i) in fileArray" :key="i" @click="downloadFile()">
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> --> <!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> -->
</view> </view>
@ -78,10 +78,147 @@
<view class="title">审批流程</view> <view class="title">审批流程</view>
</view> </view>
<view class="" style="border-bottom: 1px solid #f7f7f7;border-top: 1px solid #f7f7f7;padding-bottom: 20px;">
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="text">{{nodelist.create_user}}创建</view>
</view>
<view class="" v-for="(itemh,m) in nodelist.flows" :key='m'>
<view class="record" style="display: flex;">
<view class="circle"></view>
<view class="" v-if='itemh.flow_type==1||itemh.flow_type==2' style="display: flex;">
<view class="text">{{itemh.flow_type==1?'部门负责人':'上级部门负责人'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==7||itemh.flow_type== 6' style="display: flex;">
<view class="text">{{itemh.flow_type==7?'部门分管领导':'上级部门分管领导'}}</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==0' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.check_list.length>0">
<view class="text" v-if="itemh.check_list[0].status == 1">通过</view>
<view class="text" v-else-if="itemh.check_list[0].status == 2">拒绝</view>
</view>
<view class="" v-else>
<view class="text">待审核</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==3' style="display: flex;">
<view class="text">指定人或签</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=1&&itemh.user_id_info[0].status!=2">
<view class="text">待审核</view>
</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info" :key='o'>
<view class="text" v-if="itemk.status == 1">通过</view>
<view class="text" v-else-if="itemk.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==4' style="display: flex;">
<view class="text">指定人员(会签)</view>
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="" v-if="itemh.user_id_info.length>0">
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
<view class="" v-else-if='itemh.flow_type==5' style="display: flex;">
<view class="text" v-for="(itemk, o) in itemh.user_id_info">
{{itemk.name}}
</view>
<view class="" v-if="check_step_sort==itemh.sort">
<view class="text">当前审核</view>
</view>
<view class="" v-else>
<view class="" v-if="itemh.user_id_info.length>0">
<view class=""
v-if="itemh.user_id_info[0].status!=0&&itemh.user_id_info[0].status!=2">
<view class="text">通过</view>
</view>
<view class="text" v-for="(itemj, j) in itemh.user_id_info" :key='j'>
<view class="text" v-if="itemj.status == 0">待审核</view>
<view class="text" v-else-if="itemj.status == 2">拒绝</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审核状态</view> <view class="title">审核状态</view>
{{listobj.check_status=='0'?'待审核':listobj.check_status=='1'?'审核中':listobj.check_status=='2'?'审核通过':listobj.check_status=='3'?'审核不通过':listobj.check_status=='4'?'审核不通过':'已打款'}} {{listobj.check_status=='0'?'待审核':listobj.check_status=='1'?'审核中':listobj.check_status=='2'?'审核通过':listobj.check_status=='3'?'审核不通过':listobj.check_status=='4'?'撤销审核':'已打款'}}
</view> </view>
<view class="cont_cell"> <view class="cont_cell">
<view class="title">审核人</view> <view class="title">审核人</view>
@ -91,17 +228,22 @@
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
</view> </view>
<view style="padding-bottom: 20px;border-bottom: 1px solid #f7f7f7;" v-if="check_record.length>0">
<block v-for="(item,i) in check_record" :key="i"> <block v-for="(item,i) in check_record" :key="i">
<view class="record" style="display: flex;"> <view class="record" style="display: flex;">
<view class="circle"></view> <view class="circle"></view>
<text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}} <text class="text">{{item.check_time_str}} {{item.name}} {{item.status_str}}了此申请
了此申请操作意见{{item.content}}</text> 操作意见{{item.content}}</text>
</view> </view>
</block> </block>
<view class="" v-if='listobj.check_status!=2'> </view>
<view class="title" style="margin-bottom: 30rpx;">审核节点</view>
<radio-group class="select_group" @change="deliveryWayChangetwo1" > <view class=""
v-if='is_check_admin==1&&listobj.check_status==1&&flow_type==0'
style="border-bottom: 1px solid #f7f7f7;">
<view class="title" style="margin-bottom: 10rpx;margin-top: 30rpx;">审核节点</view>
<radio-group class="select_group" @change="deliveryWayChangetwo1"
style="font-size: 30rpx; padding: 10px;">
<label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;"> <label class="radio_select" style="margin-right:15rpx;display: flex; margin-bottom: 30rpx;">
<view style="margin-right:5rpx;"> <view style="margin-right:5rpx;">
<radio value="1" /> <radio value="1" />
@ -113,21 +255,25 @@
<radio value="2" /> <radio value="2" />
</view> </view>
<view @click="branchShow = true" style="display: flex;"> <view @click="branchShow = true" style="display: flex;">
<view class="title"> 下一位审批人</view> <view class="title" style="width: 250rpx;"> 下一位审批人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" style="margin-top: -5rpx;" placeholder="请选择"
disabled>
</view> </view>
</label> </label>
</radio-group> </radio-group>
</view> </view>
<view class="cont_cell" style="padding-top: 20rpx;" v-if="listobj.check_status!= 4&&listobj.check_status!=2">
<view class="cont_cell" style="padding-top: 20rpx;"
v-if="listobj.check_status!= 3&&listobj.check_status!=2&&is_check_admin==1">
<view class="title" style="width: 200rpx;">审核意见</view> <view class="title" style="width: 200rpx;">审核意见</view>
<textarea v-model="mscontent" placeholder="请输入审核意见" /> <textarea v-model="mscontent" placeholder="请输入审核意见"
style="padding-top: 20rpx;padding-left: 20rpx;border:1px solid#f1f1f1;padding :20rpx;20rpx;" />
</view> </view>
</view> </view>
<view class="bot_btn" v-if='listobj.check_status!=2'> <view class="bot_btn" v-if='listobj.check_status!=2&&listobj.check_status!=3&&is_check_admin==1'>
<view class="reset" @click="appflowcheck()">拒绝</view> <view class="reset" @click="appflowcheck()">{{flow_type==5?'回退':'拒绝'}}</view>
<view class="submit_btn" @click=" appflowcheck1()">通过</view> <view class="submit_btn" @click=" appflowcheck1()">通过</view>
</view> </view>
<u-action-sheet :show="leavaTypeShow" keyName="name" :actions="columns" title="请选择" <u-action-sheet :show="leavaTypeShow" keyName="name" :actions="columns" title="请选择"
@ -151,6 +297,8 @@
@confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1" @confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1"
keyName="name"> keyName="name">
</u-picker> </u-picker>
<!-- 选择时间 --> <!-- 选择时间 -->
<u-datetime-picker :show="timeShow" mode="datetime" :maxDate="1786778555000" :minDate="timestamp" <u-datetime-picker :show="timeShow" mode="datetime" :maxDate="1786778555000" :minDate="timestamp"
@ -178,11 +326,15 @@
projectlist, projectlist,
appexpenseview, appexpenseview,
appflow_check, appflow_check,
flownodes
} from '@/api/oa.js' } from '@/api/oa.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue' import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
import { import {
FILE_URL FILE_URL
} from '@/api/file.js' } from '@/api/file.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
export default { export default {
components: { components: {
lsjUpload lsjUpload
@ -224,6 +376,10 @@
dnum: 0, dnum: 0,
check_record: [], check_record: [],
check: 0, check: 0,
nodelist: {},
flow_type: '',
check_step_sort: '',
is_check_admin: 0
} }
}, },
onLoad(option) { onLoad(option) {
@ -239,7 +395,7 @@
}, },
// //
this.timestamp = Date.parse(new Date()); this.timestamp = Date.parse(new Date());
this.getPersonInfo() // this.getPersonInfo()
this.getlist() this.getlist()
this.getlist1() this.getlist1()
this.getDocumentList() this.getDocumentList()
@ -248,13 +404,27 @@
methods: { methods: {
//
async flownodes(val) {
let res = await flownodes({
id: val,
type: 2
})
this.nodelist = res.data
// console.log(res)
},
async detail(id) { async detail(id) {
let res = await appexpenseview({ let res = await appexpenseview({
id: id id: id
}) })
// console.log(res,'111') // console.log(res,'111')
this.flow_type = res.data.flows.flow_type
this.is_check_admin = res.data.is_check_admin
this.check_step_sort = res.data.detail.check_step_sort
this.listobj.code = res.data.detail.code this.listobj.code = res.data.detail.code
this.listobj.id = id this.listobj.id = id
this.flownodes(id)
this.list = res.data.detail.list this.list = res.data.detail.list
this.listobj.expense_time = res.data.detail.expense_time this.listobj.expense_time = res.data.detail.expense_time
this.listobj.income_month = res.data.detail.income_month this.listobj.income_month = res.data.detail.income_month
@ -264,14 +434,20 @@
this.listobj.flow_id = res.data.flows.id this.listobj.flow_id = res.data.flows.id
this.listobj.ptid = res.data.detail.ptid this.listobj.ptid = res.data.detail.ptid
this.check_record = res.data.check_record this.check_record = res.data.check_record
this.personInfo.name = res.data.detail.create_user
this.personInfo.department_name = res.data.detail.department
this.listobj.check_status = res.data.detail.check_status this.listobj.check_status = res.data.detail.check_status
if (res.data && res.data.detail && res.data.detail.fileArray) {
this.fileArray = res.data.detail.fileArray.map(function(obj) { this.fileArray = res.data.detail.fileArray.map(function(obj) {
return { return {
name: obj.name, name: obj.name,
filepath: obj.filepath,
fileext: obj.fileext,
filesize: obj.filesize filesize: obj.filesize
}; };
}); });
}
// console.log(this.fileArray,'11111111111', res.data.detail) // console.log(this.fileArray,'11111111111', res.data.detail)
}, },
@ -396,6 +572,35 @@
} }
}, },
downloadFile(item) {
uni.downloadFile({
url: HTTP_REQUEST_URL + item.filepath,
success: function(res) {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
if (item.fileext == 'png'||item.fileext == 'jpg') {
uni.previewImage({
urls: [tempFilePath]
});
} else {
uni.showModal({
title: '提示',
content: '暂时不支持查看,请登录后台查看',
success: function(res) {
if (res.confirm) {
// console.log('');
} else if (res.cancel) {
// console.log('');
}
}
});
}
}
}
});
},
// //
async appflowcheck() { async appflowcheck() {
let data = { let data = {
@ -408,6 +613,12 @@
} }
let res = await appflow_check(data) let res = await appflow_check(data)
if (res.code == 0) {
uni.navigateBack({
delta: 1
})
}
Toast(res.msg) Toast(res.msg)
@ -460,7 +671,7 @@
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[2].name)
if (this.listobj.copy_uids) { if (this.listobj.copy_uids) {
this.listobj.copy_uids += e.value[2].id this.listobj.copy_uids += e.value[2].id + ','
} else { } else {
this.listobj.copy_uids = e.value[2].id this.listobj.copy_uids = e.value[2].id
} }
@ -668,7 +879,11 @@
width: 100%; width: 100%;
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
input {
width: 480rpx;
}
.title { .title {
font-size: 31.58rpx; font-size: 31.58rpx;
} }
@ -734,7 +949,7 @@
} }
.text { .text {
flex: 1;
margin-left: 7.02rpx; margin-left: 7.02rpx;
} }
} }

View File

@ -26,8 +26,8 @@
<input type="text" v-model="listobj.income_month" disabled placeholder="入账月份"> <input type="text" v-model="listobj.income_month" disabled placeholder="入账月份">
</view> </view>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">报销项目</view> <view class="title">关联项目</view>
<input type="text" v-model="project" placeholder="请选择" disabled @click="leavaShow1"> <input type="text" v-model="project" placeholder="请选择" disabled @click="leavaShow1">
</view> </view>
@ -37,7 +37,7 @@
<view class="leave_box"> <view class="leave_box">
<view class="" v-for="(item,i) in list" :key='i'> <view class="" v-for="(item,i) in list" :key='i'>
<view class="leava_type flex_a_c"> <view class="cont_cell">
<view class="title">报销项目</view> <view class="title">报销项目</view>
<input type="text" v-model="item.cate_title" placeholder="请选择" disabled @click="leavaShow(item,i)"> <input type="text" v-model="item.cate_title" placeholder="请选择" disabled @click="leavaShow(item,i)">
</view> </view>
@ -54,7 +54,7 @@
<view class="" style="display: flex; justify-content: space-around;padding-top: 20rpx;"> <view class="" style="display: flex; justify-content: space-around;padding-top: 20rpx;">
<u-icon name="plus-circle" color="#333333" size="28" @click="addleava"></u-icon> <u-icon name="plus-circle" color="#333333" size="28" @click="addleava"></u-icon>
<u-icon name="minus-circle" color="#333333" size="28" @click="deleteleava(item,index)"></u-icon> <u-icon name="minus-circle" color="#333333" size="28" @click="deleteleava"></u-icon>
</view> </view>
</view> </view>
@ -65,8 +65,8 @@
<view class="file flex_a_c_j_sb"> <view class="file flex_a_c_j_sb">
<view class="l_file"> <view class="l_file">
<view class="file_name">{{ item.name }}</view> <view class="file_name">{{ item.name }}</view>
<view class="file_size">{{ item.filesize | formatBytes }}</view> <view class="file_size">{{ item.filesize }}</view>
<view class="upload_people">上传人{{ item.admin_name }}</view>
</view> </view>
<!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> --> <!-- <u-icon @click="delImg(i)" name="close-circle" color="#333333" size="28"></u-icon> -->
</view> </view>
@ -97,10 +97,30 @@
<view class="title">选择审批流程</view> <view class="title">选择审批流程</view>
<input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true"> <input type="text" v-model="flowPath" placeholder="请选择" disabled @click="flowPathShow = true">
</view> </view>
<view class="cont_cell" @click="branchShow = true"> <view class="cont_cell" @click="branchShow = true" v-if="flowShow">
<view class="title">审核人</view> <view class="title">审核人</view>
<input type="text" v-model="check_admin_name" placeholder="请选择" disabled> <input type="text" v-model="check_admin_name" placeholder="请选择" disabled>
</view> </view>
<view v-else>
<block v-for="(item,i) in sprecord" :key="i">
<view class="record" style="display: flex;">
<view class="circle"></view>
<text class="text">{{i+1}} {{item.flow_type_txt}}
</text>
</view>
<view class="" v-if="item.user_id_info.length>0&&item.user_id_info" style='padding-left: 20rpx;padding-right: 20rpx;margin-bottom: 20rpx;'>
<view class="" v-for="(items,k) in item.user_id_info" style="display: flex;margin-right: 20rpx;">
<view class=""
style="width: 30rpx;height: 30rpx;border-radius: 50%; margin-left: 20rpx;margin-right: 10rpx;">
<image :src="`${httpRequestUrl}`+items.thumb" mode=""
style="width: 30rpx;height: 30rpx;border-radius: 50%;margin-top: 5rpx;"></image>
</view>
<view class=""> {{items.name}}</view>
</view>
</view>
</block>
</view>
<view class="cont_cell" @click="branchShow1 = true"> <view class="cont_cell" @click="branchShow1 = true">
<view class="title">抄送人</view> <view class="title">抄送人</view>
<input type="text" v-model="copy_names" placeholder="请选择" disabled> <input type="text" v-model="copy_names" placeholder="请选择" disabled>
@ -125,14 +145,14 @@
</u-action-sheet> </u-action-sheet>
<!-- 部门选择 --> <!-- 部门选择 -->
<u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns" @cancel='branchShowclose' <u-picker :show="branchShow" :defaultIndex='defaultIndex' ref="branchRef" :columns="branchColumns"
@confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true" @close="branchShowclose" @cancel='branchShowclose' @confirm="branchConfirm" @change="columnCode" :closeOnClickOverlay="true"
keyName="name"> @close="branchShowclose" keyName="name">
</u-picker> </u-picker>
<u-picker :show="branchShow1" :defaultIndex='defaultIndex1' ref="branchRef" :columns="branchColumns1" @cancel='branchShowclose1' <u-picker :show="branchShow1" :defaultIndex='defaultIndex1' ref="branchRef" :columns="branchColumns1"
@confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true" @close="branchShowclose1" @cancel='branchShowclose1' @confirm="branchConfirm1" @change="columnCode1" :closeOnClickOverlay="true"
keyName="name"> @close="branchShowclose1" keyName="name">
</u-picker> </u-picker>
<!-- 选择时间 --> <!-- 选择时间 -->
@ -159,8 +179,12 @@
getemployee, getemployee,
appexpense, appexpense,
projectlist, projectlist,
appexpenseview appexpenseview,
flowusers
} from '@/api/oa.js' } from '@/api/oa.js'
import {
HTTP_REQUEST_URL
} from '@/config/app.js'
import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue' import lsjUpload from '@/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue'
import { import {
FILE_URL FILE_URL
@ -201,7 +225,8 @@
fileOption: {}, fileOption: {},
files: new Map(), files: new Map(),
fileArray: [], fileArray: [],
dnum: 0 dnum: 0,
flowShow: true
} }
}, },
onLoad(option) { onLoad(option) {
@ -223,7 +248,11 @@
this.getDocumentList() this.getDocumentList()
this.getDocumentList1() this.getDocumentList1()
}, },
computed: {
httpRequestUrl() {
return HTTP_REQUEST_URL;
}
},
methods: { methods: {
@ -323,7 +352,19 @@
} }
}, },
//id
async flowuser(id) {
let res = await flowusers({
id: id
})
if (res.data.flow_data.length > 0) {
this.flowShow = false
this.sprecord = res.data.flow_data
} else {
this.flowShow = true
}
},
// //
async columnCode1(e) { async columnCode1(e) {
if (e.columnIndex == 1) { if (e.columnIndex == 1) {
@ -367,7 +408,7 @@
branchConfirm1(e) { branchConfirm1(e) {
console.log('confirm', e, e.value[2].name) console.log('confirm', e, e.value[2].name)
if (this.listobj.copy_uids) { if (this.listobj.copy_uids) {
this.listobj.copy_uids += e.value[2].id this.listobj.copy_uids += e.value[2].id + ','
} else { } else {
this.listobj.copy_uids = e.value[2].id this.listobj.copy_uids = e.value[2].id
} }
@ -420,7 +461,7 @@
num: '' num: ''
}) })
}, },
deleteleava(item, index) { deleteleava() {
if (this.list.length > 1) { if (this.list.length > 1) {
this.list.splice(0, 1) this.list.splice(0, 1)
} else { } else {
@ -464,6 +505,7 @@
flowPathSelect(value) { flowPathSelect(value) {
this.flowPath = value.name this.flowPath = value.name
this.flow_id = value.id this.flow_id = value.id
this.flowuser(value.id)
}, },
/** 类型 */ /** 类型 */
@ -559,6 +601,47 @@
padding-bottom: 28.07rpx; padding-bottom: 28.07rpx;
} }
.record {
position: relative;
margin-bottom: 14.04rpx;
.circle {
width: 31.58rpx;
height: 31.58rpx;
background-color: #fff;
border: 2px solid #34A853;
border-radius: 50%;
margin: 5px;
display: flex;
flex-direction: column;
align-items: center;
&::before {
content: "";
display: block;
position: absolute;
clear: both;
width: 1px;
height: 100%;
background-color: rgba(204, 204, 204, 0.5);
margin: 31.58rpx;
}
}
.text {
flex: 1;
margin-left: 7.02rpx;
}
}
:last-child {
.circle {
&::before {
display: none;
}
}
}
.bot_btn { .bot_btn {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
@ -601,10 +684,13 @@
width: 100%; width: 100%;
min-height: 87.72rpx; min-height: 87.72rpx;
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
input{
.title { width: 480rpx;
font-size: 31.58rpx;
} }
font-size: 31.58rpx;
} }
// //

View File

@ -137,7 +137,7 @@
limit: this.loadConfig.limit, limit: this.loadConfig.limit,
keyword: this.keyword keyword: this.keyword
}) })
console.log(res.msg.data) //console.log(res.msg.data)
this.loadConfig.status = "loadmore" this.loadConfig.status = "loadmore"
if (res.data.length < this.loadConfig.limit) { if (res.data.length < this.loadConfig.limit) {
this.loadConfig.status = "nomore" this.loadConfig.status = "nomore"
@ -156,7 +156,7 @@ console.log(res.msg.data)
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',
success: (e) => { success: (e) => {

View File

@ -79,8 +79,11 @@
import { import {
Toast Toast
} from '@/libs/uniApi.js' } from '@/libs/uniApi.js'
import liuswipeaction from '@/uni_modules/liu-swipe-action/components/liu-swipe-action/liu-swipe-action.vue'
export default { export default {
components: {
'liu-swipe-action': liuswipeaction
},
data() { data() {
return { return {
show: false, show: false,
@ -164,7 +167,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
if (data.id == 2) { if (data.id == 2) {
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',

View File

@ -31,10 +31,12 @@
</view> </view>
</view> </view>
<view class="content-middle-three" v-if="list2.length>0"> <view class="content-middle-three" v-if="list2.length>0">
<view class="middle-three-title">企业员工</view>
<view class="middle-three" v-for="(item,k) in list2" :key='k'> <view class="middle-three" v-for="(item,k) in list2" :key='k'>
<view class="middle-threea">企业员工</view>
<liu-swipe-action :index="k" @clickItem="clickItem(item)" :btnList='btnList'> <liu-swipe-action :index="k" @clickItem="clickItem(item)" :btnList='btnList'>
<view class="middle-threeb"> <view class="middle-threeb">
<view class="middle-threeb-a"> <view class="middle-threeb-a">
<view class="threeb-a-a"> <view class="threeb-a-a">
@ -114,8 +116,11 @@
Toast Toast
} from '@/libs/uniApi.js' } from '@/libs/uniApi.js'
import liuswipeaction from '@/uni_modules/liu-swipe-action/components/liu-swipe-action/liu-swipe-action.vue'
export default { export default {
components: {
'liu-swipe-action': liuswipeaction
},
data() { data() {
return { return {
@ -198,7 +203,7 @@
}, },
methods: { methods: {
arryitem(item) { arryitem(item) {
console.log(item.id) //console.log(item.id)
switch (item.id) { switch (item.id) {
case 1: case 1:
@ -245,7 +250,7 @@
status: this.status, status: this.status,
keyword: this.keyword, keyword: this.keyword,
}) })
console.log(res.data.data) // //console.log(res.data.data)
this.loadConfig.status = "loadmore" this.loadConfig.status = "loadmore"
if (res.data.data.length < this.loadConfig.limit) { if (res.data.data.length < this.loadConfig.limit) {
this.loadConfig.status = "nomore" this.loadConfig.status = "nomore"
@ -451,8 +456,7 @@
background-color: #FFFFFF; background-color: #FFFFFF;
padding: 28rpx 28rpx; padding: 28rpx 28rpx;
.middle-three { .middle-three-title {
.middle-threea {
font-size: 35rpx; font-size: 35rpx;
font-family: PingFang SC-Bold, PingFang SC; font-family: PingFang SC-Bold, PingFang SC;
font-weight: bold; font-weight: bold;
@ -460,9 +464,14 @@
margin-bottom: 30rpx; margin-bottom: 30rpx;
} }
.middle-three {
.middle-threeb { .middle-threeb {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
// margin-bottom: 20rpx;
padding: 20rpx 20rpx;
.middle-threeb-a { .middle-threeb-a {
@ -509,7 +518,7 @@
.middle-threeb-b { .middle-threeb-b {
width: 80rpx; width: 80rpx;
height: 80rpx; height: 80rpx;
margin-top: 45rpx; margin-top: 25rpx;
image { image {
@ -535,7 +544,7 @@
left: 50%; left: 50%;
margin-left: -252.5rpx; margin-left: -252.5rpx;
position: absolute; position: absolute;
bottom: 150rpx; bottom: 50rpx;
z-index: 9999 !important; z-index: 9999 !important;
position: fixed; position: fixed;

View File

@ -57,7 +57,11 @@
import { import {
Toast Toast
} from '@/libs/uniApi.js' } from '@/libs/uniApi.js'
import liuswipeaction from '@/uni_modules/liu-swipe-action/components/liu-swipe-action/liu-swipe-action.vue'
export default { export default {
components: {
'liu-swipe-action': liuswipeaction
},
data() { data() {
return { return {
@ -139,7 +143,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',
success: (e) => { success: (e) => {
@ -157,7 +161,7 @@
const res = await deletedepartment({ const res = await deletedepartment({
id: id id: id
}) })
console.log(res, res.msg) //console.log(res, res.msg)
if (res.code == 0) { if (res.code == 0) {
this.getDocumentList() this.getDocumentList()
} }
@ -217,7 +221,7 @@
.middle-oneb { .middle-oneb {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 25rpx; padding: 20rpx 20rpx;
.middle-oneb-a { .middle-oneb-a {
display: flex; display: flex;
@ -264,7 +268,7 @@
width: 80rpx; width: 80rpx;
height: 80rpx; height: 80rpx;
margin-top: 25rpx;
image { image {
width: 100%; width: 100%;

View File

@ -119,7 +119,7 @@
// }, // },
{ {
name: '公示文档', name: '公',
icon: require('@/static/images/w2.png'), icon: require('@/static/images/w2.png'),
paths: '/pages/users/user_document/index' paths: '/pages/users/user_document/index'
@ -128,11 +128,11 @@
// name: '', // name: '',
// icon: require('@/static/images/w3.png') // icon: require('@/static/images/w3.png')
// }, // },
{ // {
name: '文章', // name: '',
icon: require('@/static/images/w4.png'), // icon: require('@/static/images/w4.png'),
paths: '/pages/users/article/index' // paths: '/pages/users/article/index'
}, // },
{ {
name: '修改密码', name: '修改密码',
icon: require('@/static/images/w4.png'), icon: require('@/static/images/w4.png'),
@ -205,7 +205,7 @@
leftClick(e) { leftClick(e) {
uni.sendHostEvent('closeApp', e, (ret) => { uni.sendHostEvent('closeApp', e, (ret) => {
// //
console.log('关闭应用' + JSON.stringify(ret)); //console.log('' + JSON.stringify(ret));
}); });
}, },
login() { login() {
@ -245,7 +245,7 @@
}, },
fail(e) { fail(e) {
uni.hideLoading() uni.hideLoading()
console.log(e); //console.log(e);
}, },
}) })
} else Toast('暂未开放') } else Toast('暂未开放')
@ -269,7 +269,7 @@
.head_box { .head_box {
position: relative; position: relative;
width: 100vw; width: 100vw;
height: 534rpx; height: 400rpx;
margin-bottom: 30rpx; margin-bottom: 30rpx;
background: #3274F9; background: #3274F9;
} }

View File

@ -3,7 +3,7 @@
<view class="all_box"> <view class="all_box">
<!-- 头像 --> <!-- 头像 -->
<view class="header_box"> <view class="header_box">
<u--image v-if="changeAvatar!==''" :showLoading="true" :src="changeAvatar" width="182rpx" height="182rpx" <u--image v-if="changeAvatar!=''" :showLoading="true" :src="changeAvatar" width="182rpx" height="182rpx"
shape="circle"> shape="circle">
</u--image> </u--image>
<u--image v-else :showLoading="true" :src="personInfo.img" width="182rpx" height="182rpx" shape="circle"> <u--image v-else :showLoading="true" :src="personInfo.img" width="182rpx" height="182rpx" shape="circle">
@ -64,8 +64,12 @@
async getPersonInfo() { async getPersonInfo() {
const res = await getPersonInfoApi() const res = await getPersonInfoApi()
this.personInfo = res.data this.personInfo = res.data
this.personInfo.img = res.thumb
console.log('个人信息', this.personInfo.thumb); if (res.data.thumb.length > 0) {
this.personInfo.img = HTTP_REQUEST_URL + res.data.thumb
}
}, },
// //
async savePersonInfo() { async savePersonInfo() {
@ -76,7 +80,7 @@
if (str2 == 'http://ceshi-oa.lihaink.cn') { if (str2 == 'http://ceshi-oa.lihaink.cn') {
this.personInfo.thumb = str1.substring(26) this.personInfo.thumb = str1.substring(26)
} }
console.log('提交', this.personInfo.thumb); //console.log('', this.personInfo.thumb);
try { try {
// //
const reg_phone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; const reg_phone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
@ -109,12 +113,12 @@
Toast('上传成功') Toast('上传成功')
}).catch(err => { }).catch(err => {
console.log('err', err); //console.log('err', err);
Toast('上传失败') Toast('上传失败')
}) })
}, },
fail: function(err) { fail: function(err) {
console.log('choose失败'); //console.log('choose');
Toast('添加失败') Toast('添加失败')
} }
}); });

View File

@ -233,6 +233,7 @@
let res = await approvelist({ let res = await approvelist({
page: this.loadConfig.page, page: this.loadConfig.page,
limit: this.loadConfig.limit, limit: this.loadConfig.limit,
status:1
// keyword: this.keyword // keyword: this.keyword
}) })
@ -244,7 +245,7 @@
} }
this.list2 = [...this.list2, ...res.data?.data] this.list2 = [...this.list2, ...res.data?.data]
console.log(this.list2) //console.log(this.list2)
}, },
async getlist1() { async getlist1() {
@ -253,6 +254,7 @@
let res = await apexpenselist({ let res = await apexpenselist({
page: this.loadConfig.page, page: this.loadConfig.page,
limit: this.loadConfig.limit, limit: this.loadConfig.limit,
status:1
// keyword: this.keyword // keyword: this.keyword
}) })
@ -272,6 +274,7 @@
let res = await invoicelist({ let res = await invoicelist({
page: this.loadConfig.page, page: this.loadConfig.page,
limit: this.loadConfig.limit, limit: this.loadConfig.limit,
status:1
// keyword: this.keyword // keyword: this.keyword
}) })
@ -291,7 +294,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
if (data.id == 2) { if (data.id == 2) {
uni.showModal({ uni.showModal({

View File

@ -130,7 +130,7 @@
}, },
// //
async getDocumentList() { async getDocumentList() {
console.log(this.loadConfig.status ) //console.log(this.loadConfig.status )
if (this.loadConfig.status == "nomore") return; if (this.loadConfig.status == "nomore") return;
this.loadConfig.status = "loading" this.loadConfig.status = "loading"
let res = await schedulelist({ let res = await schedulelist({
@ -157,7 +157,7 @@
}, },
// //
clickItem(data) { clickItem(data) {
// console.log(e) // //console.log(e)
uni.showModal({ uni.showModal({
content: '确定要删除吗', content: '确定要删除吗',
success: (e) => { success: (e) => {

View File

@ -91,7 +91,7 @@ const actions = {
// #endif // #endif
} }
loginMobile(data).then(res => { loginMobile(data).then(res => {
console.log('手机号登录', res); //console.log('手机号登录', res);
}) })
}, },
async getWxLogin({ state, commit }, force) { async getWxLogin({ state, commit }, force) {

View File

@ -35,7 +35,7 @@ const actions = {
async initConfig({ state, commit }, data = false) { async initConfig({ state, commit }, data = false) {
let res = await getConfig(); let res = await getConfig();
commit('SET_CONFIG', res.data); commit('SET_CONFIG', res.data);
// console.log(compareVersions(res.data.version, '1.0.0')==1&&compareVersions(res.data.version, Cache.get('wgt_version'))==1); // //console.log(compareVersions(res.data.version, '1.0.0')==1&&compareVersions(res.data.version, Cache.get('wgt_version'))==1);
if(uni.getStorageSync('uniMP')||!state.updateFlag) return ;//是小程序环境时不进行更新 if(uni.getStorageSync('uniMP')||!state.updateFlag) return ;//是小程序环境时不进行更新
let os = uni.getSystemInfoSync(); let os = uni.getSystemInfoSync();
// uni.showModal({ // uni.showModal({
@ -61,7 +61,7 @@ const actions = {
} }
Updater.update(version);; Updater.update(version);;
}catch(e){ }catch(e){
console.log(e); //console.log(e);
} }
if(data) uni.hideLoading(); if(data) uni.hideLoading();
}else if(data){ }else if(data){