ncszh
jwg 4 days ago
parent 520afd09fc
commit d9ed066b5d

@ -5,9 +5,9 @@
<div class="box-tt">
<div class="tt-lf">发起人信息</div>
<div class="tt-rt">
<div>{{startObj.startUser.nickname}}</div>
<div>{{startObj.startUser.deptName}}</div>
<div>{{ parseTime(startObj.createTime)}}</div>
<div>{{ startObj.startUser.nickname }}</div>
<div>{{ startObj.startUser.deptName }}</div>
<div>{{ parseTime(startObj.createTime) }}</div>
</div>
</div>
</div>
@ -15,14 +15,20 @@
<div v-for="(step, index) in tasks" :key="index" class="step">
<div class="step-content">
<div class="step-circle">
<van-tag :type="getTimelineItemType(step)">{{handleFilterStatus(step.result)}}</van-tag>
<van-tag :type="getTimelineItemType(step)">{{
handleFilterStatus(step.result)
}}</van-tag>
</div>
<div class="step-info">
<!-- {{step}} -->
<div class="step-name">{{ step.assigneeUser?.nickname }}</div>
<div class="step-status">审批时间 {{ parseTime(step.endTime) || '-' }}</div>
<div class="step-status">部门{{ step.assigneeUser?.deptName }}</div>
<div class="step-status">审批意见{{ step.reason }}</div>
<div class="step-status">
审批时间 {{ parseTime(step.endTime) || '-' }}
</div>
<div class="step-status">
部门{{ step.assigneeUser?.deptName }}
</div>
<div class="step-status">审批意见{{ step.reason }}</div>
</div>
</div>
<div class="vertical-line" v-if="index !== tasks.length - 1"></div>
@ -33,8 +39,8 @@
<script>
import dayjs from 'dayjs'
import { getTaskListByProcessInstanceId } from "@/api/bpm/task";
import { getProcessInstance } from "@/api/bpm/processInstance";
import { getTaskListByProcessInstanceId } from '@/api/bpm/task'
import { getProcessInstance } from '@/api/bpm/processInstance'
export default {
props: {
processInstanceId: [Number, String]
@ -55,7 +61,7 @@ export default {
startObj: {
startUser: {}
},
runningTasks: [],
runningTasks: []
}
},
@ -78,76 +84,83 @@ export default {
},
getTimelineItemType(item) {
if (item.result === 1) {
return 'primary';
return 'primary'
}
if (item.result === 2) {
return 'success';
return 'success'
}
if (item.result === 3) {
return 'danger';
return 'danger'
}
if (item.result === 4) {
return 'info';
return 'info'
}
return '';
return ''
},
handleInit() {
if (this.processInstanceId) {
getProcessInstance(this.processInstanceId).then((res) => {
this.startObj = res.data || {}
console.log(
this.startObj
);
})
getTaskListByProcessInstanceId(this.processInstanceId).then(response => {
//
this.tasks = [];
//
response.data.forEach(task => {
if (task.result !== 4) {
this.tasks.push(task);
}
});
//
this.tasks.sort((a, b) => {
//
// if (a.endTime && b.endTime) {
// return b.endTime - a.endTime;
// } else if (a.endTime) {
// return 1;
// } else if (b.endTime) {
// return -1;
// //
// } else {
// return b.createTime - a.createTime;
// }
return a.createTime - b.createTime;
});
getTaskListByProcessInstanceId(this.processInstanceId).then(
(response) => {
//
this.tasks = []
//
response.data.forEach((task) => {
if (task.result !== 4) {
this.tasks.push(task)
}
})
//
this.tasks.sort((a, b) => {
//
// if (a.endTime && b.endTime) {
// return b.endTime - a.endTime;
// } else if (a.endTime) {
// return 1;
// } else if (b.endTime) {
// return -1;
// //
// } else {
// return b.createTime - a.createTime;
// }
return a.createTime - b.createTime
})
//
const userId = JSON.parse(window.localStorage.getItem('userInfo') || {}).id;
this.tasks.forEach(task => {
if (task.result !== 1) { //
return;
}
if (!task.assigneeUser || task.assigneeUser.id !== userId) { //
return;
}
this.runningTasks.push({ ...task });
this.auditForms.push({
reason: ''
//
const userId = JSON.parse(
window.localStorage.getItem('userInfo') || {}
).id
this.tasks.forEach((task) => {
if (task.result !== 1) {
//
return
}
if (!task.assigneeUser || task.assigneeUser.id !== userId) {
//
return
}
this.runningTasks.push({ ...task })
this.auditForms.push({
reason: ''
})
})
});
this.$emit('onSetId', (Array.isArray(this.runningTasks) && this.runningTasks.length ? this.runningTasks[this.runningTasks.length - 1] : {}).id)
console.log(this.tasks ,'tasks');
});
this.$emit(
'onSetId',
(Array.isArray(this.runningTasks) && this.runningTasks.length
? this.runningTasks[this.runningTasks.length - 1]
: {}
).id
)
}
)
}
}
}
}
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.approval-flow {
display: flex;
flex-direction: column;

@ -32,10 +32,10 @@
</div>
<div class="ct-md">
<div style="margin-top: 0.3rem; color: #333">
合同编号{{ itemData.contractNumber }}
编号{{ itemData.contractNumber }}
</div>
<div style="margin-top: 0.3rem; color: #333">
合同名称: {{ itemData.contractName }}
名称: {{ itemData.contractName }}
</div>
<div style="margin-top: 0.3rem; color: #333">
客户名称: {{ itemData.customerCompanyName }}

@ -7,33 +7,58 @@
<div class="bt">{{}}</div>
</div> -->
<div class="box-cr">
<div class="cr-bt" style="margin-top: 0.6rem;">
<div class="tags" :style="`border: 1px solid ${handleFilterStatus(DICT_TYPE.BS_EXPENSE_APPLY_STATUS,itemData.status).color};color:${handleFilterStatus(DICT_TYPE.BS_EXPENSE_APPLY_STATUS,itemData.status).color}`"> {{handleFilterStatus(DICT_TYPE.BS_EXPENSE_APPLY_STATUS,itemData.status).label}}</div>
<div class="cr-bt" style="margin-top: 0.6rem">
<div
class="tags"
:style="`border: 1px solid ${
handleFilterStatus(
DICT_TYPE.BS_EXPENSE_APPLY_STATUS,
itemData.status
).color
};color:${
handleFilterStatus(
DICT_TYPE.BS_EXPENSE_APPLY_STATUS,
itemData.status
).color
}`"
>
{{
handleFilterStatus(
DICT_TYPE.BS_EXPENSE_APPLY_STATUS,
itemData.status
).label
}}
</div>
</div>
<div class="ct-md">
<div class="mt5" style="color:#333">
合同编号 {{itemData.contractNumber}}
<div class="mt5" style="color: #333">
合同编号 {{ itemData.contractNumber }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
合同名称{{itemData.contractName}}
<div style="margin-top: 0.3rem; color: #333">
合同名称{{ itemData.contractName }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
分期说明{{itemData.periodName}}
<div style="margin-top: 0.3rem; color: #333">
分期说明{{ itemData.periodName }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
供应商名称{{itemData.supplierName}}
<div style="margin-top: 0.3rem; color: #333">
供应商名称{{ itemData.supplierName }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
合同总金额{{itemData.contractSum}}
<div style="margin-top: 0.3rem; color: #333">
合同总金额{{ itemData.contractSum }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
付款金额{{itemData.actualAmount}}
<div style="margin-top: 0.3rem; color: #333">
付款金额{{ itemData.actualAmount }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
付款状态 {{itemData.payMentStatus == 1 ? '已付款' : '未付款'}}
<div style="margin-top: 0.3rem; color: #333">
付款状态 {{ itemData.payMentStatus == 1 ? '已付款' : '未付款' }}
</div>
<div style="margin-top: 0.3rem;color:#333 ">
付款确认时间 {{itemData.paymentAffirmTime ? dayjs(itemData.paymentAffirmTime).format('YY/MM/DD HH:ss') : ''}}
<div style="margin-top: 0.3rem; color: #333">
付款确认时间
{{
itemData.paymentAffirmTime
? dayjs(itemData.paymentAffirmTime).format('YY/MM/DD HH:ss')
: ''
}}
</div>
</div>
</div>
@ -42,36 +67,118 @@
<van-icon class="icon-box" v-hasPermi="['procurement:payApply:edit']" @click="handleEdit(itemData.id, itemData.status, itemData.creator)" name="edit" :color="!(itemData.status==0 || (itemData.status==3 && userInfo.id ==itemData.creator)) ?'#ccc':''" size="25" />
<van-icon class="icon-box" v-hasPermi="['bs:payment-apply:delete']" @click="handleDel(itemData.id, itemData.status, itemData.creator)" name="delete-o" :color="!(itemData.status==0 || (itemData.status==3 && userInfo.id ==itemData.creator)) ?'#ccc':'#EC3359'" size="25" /> -->
<span class="icon-box" @click="handleShow(itemData.id)" v-hasPermi="['procurement:payApply:show']" :style="`color:#05A9FF;`"></span>
<span class="icon-box" @click="handleEdit(itemData.id, itemData.status, itemData.creator)" v-hasPermi="['procurement:payApply:edit']" :style="`color:${!(!(itemData.status==0 || (itemData.status==3 && userInfo.id ==itemData.creator))) ?'#05A9FF':'#ccc'};`"></span>
<span class="icon-box" @click="handleDel(itemData.id, itemData.status, itemData.creator)" v-hasPermi="['bs:payment-apply:delete']" :style="`color:${!(!(itemData.status==0 || (itemData.status==3 && userInfo.id ==itemData.creator))) ?'#05A9FF':'#ccc'};`"></span>
<span class="icon-box" @click="handleConfirm(itemData)" v-hasPermi="['bs:payment-apply:paymentAffirm']" :style="`color:${!(itemData.status !== 2 || (itemData.status == 2 && itemData.payMentStatus == 1) ) ?'#05A9FF':'#ccc'};`"></span>
<span
class="icon-box"
@click="handleShow(itemData.id)"
v-hasPermi="['procurement:payApply:show']"
:style="`color:#05A9FF;`"
>查看</span
>
<span
class="icon-box"
@click="handleEdit(itemData.id, itemData.status, itemData.creator)"
v-hasPermi="['procurement:payApply:edit']"
:style="`color:${
!!(
itemData.status == 0 ||
(itemData.status == 3 && userInfo.id == itemData.creator)
)
? '#05A9FF'
: '#ccc'
};`"
>修改</span
>
<span
class="icon-box"
@click="handleDel(itemData.id, itemData.status, itemData.creator)"
v-hasPermi="['bs:payment-apply:delete']"
:style="`color:${
!!(
itemData.status == 0 ||
(itemData.status == 3 && userInfo.id == itemData.creator)
)
? '#05A9FF'
: '#ccc'
};`"
>删除</span
>
<span
class="icon-box"
@click="handleConfirm(itemData)"
v-hasPermi="['bs:payment-apply:paymentAffirm']"
:style="`color:${
!(
itemData.status !== 2 ||
(itemData.status == 2 && itemData.payMentStatus == 1)
)
? '#05A9FF'
: '#ccc'
};`"
>付款确认</span
>
<!-- <span class="icon-box" @click="handleConfirm(itemData)" v-hasPermi="['bs:payment-apply:paymentAffirm']"></span> -->
<span class="icon-box" @click="handleCancelConfirm(itemData)" v-hasPermi="['bs:payment-apply:paymentCancel']" :style="`color:${!(itemData.status !== 2 || (itemData.status == 2 && itemData.payMentStatus !== 1)) ?'#05A9FF':'#ccc'};`"></span>
<span class="icon-box" @click="handleUpload(itemData,itemData.payMentStatus == 1 && itemData.status == 2 )" v-hasPermi="['procurement:payApply:upload']" :style="`color:#05A9FF`"> {{ itemData.payMentStatus == 1 && itemData.status == 2 ? '' : itemData.files.length ? '' : ''}}</span>
<span
class="icon-box"
@click="handleCancelConfirm(itemData)"
v-hasPermi="['bs:payment-apply:paymentCancel']"
:style="`color:${
!(
itemData.status !== 2 ||
(itemData.status == 2 && itemData.payMentStatus !== 1)
)
? '#05A9FF'
: '#ccc'
};`"
>取消确认</span
>
<span
class="icon-box"
@click="
handleUpload(
itemData,
itemData.payMentStatus == 1 && itemData.status == 2
)
"
v-hasPermi="['procurement:payApply:upload']"
:style="`color:#05A9FF`"
>
{{
itemData.payMentStatus == 1 && itemData.status == 2
? '查看凭证'
: itemData.files.length
? '修改凭证'
: '上传凭证'
}}</span
>
</div>
</div>
</div>
<!-- 付款计划确认 -->
<PayConfirmToast ref="PayConfirmToast" :isShow="isShow" @onShow="handleOnShow" @onClose="isShow = false" :pId="itemData.id" @onCompelete="handleConfirmToast" />
<PayConfirmToast
ref="PayConfirmToast"
:isShow="isShow"
@onShow="handleOnShow"
@onClose="isShow = false"
:pId="itemData.id"
@onCompelete="handleConfirmToast"
/>
</div>
</template>
<script>
import { getDictDataLabel, handleFilterStatus } from "@/utils/dict";
import { deletePaymentApply, cancelConfirmApi } from "@/api/bs/paymentApply";
import { getDictDataLabel, handleFilterStatus } from '@/utils/dict'
import { deletePaymentApply, cancelConfirmApi } from '@/api/bs/paymentApply'
import dayjs from 'dayjs'
import { Dialog } from 'vant'
export default {
props: {
itemData: {
required: true,
default: () => { }
},
default: () => {}
}
},
components: {
PayConfirmToast: () => import('@/components/PayConfirmToast'),
PayConfirmToast: () => import('@/components/PayConfirmToast')
},
data() {
return {
@ -84,13 +191,11 @@ export default {
this.handleUpdataInfo()
}
},
mounted() {
},
mounted() {},
computed: {
userInfo() {
return JSON.parse(window.localStorage.getItem('userInfo') || { dept: {} })
},
}
},
methods: {
handleOnShow() {
@ -101,18 +206,17 @@ export default {
this.$emit('onFile', row)
},
handleCancelConfirm(row) {
if ((row.status !== 2 || (row.status == 2 && row.payMentStatus !== 1))) {
if (row.status !== 2 || (row.status == 2 && row.payMentStatus !== 1)) {
return
}
Dialog.confirm({
title: '提示',
message: '您确认要取消付款吗??',
})
.then(() => {
cancelConfirmApi(row.id).then(() => {
this.$emit('onAllRefresh')
})
message: '您确认要取消付款吗??'
}).then(() => {
cancelConfirmApi(row.id).then(() => {
this.$emit('onAllRefresh')
})
})
},
handleConfirmToast() {
this.isShow = false
@ -157,13 +261,12 @@ export default {
}
Dialog.confirm({
title: '提示',
message: '你确定要删除吗?',
})
.then(() => {
deletePaymentApply(id).then(() => {
this.$emit('onAllRefresh')
})
message: '你确定要删除吗?'
}).then(() => {
deletePaymentApply(id).then(() => {
this.$emit('onAllRefresh')
})
})
},
handleFilterStatus,
getDictDataLabel,
@ -178,12 +281,11 @@ export default {
handleUpdataInfo() {
this.jumoStudentId = null
this.$emit('onUpdataInfo', this.itemData.id)
},
}
}
}
</script>
<style lang="scss" scoped>
@import '@/assets/style/common/newList.scss';
</style>

@ -21,7 +21,10 @@
</div>
<div class="mt5" style="color: #333">
预计付款时间:
{{ dayjs(itemData.planTime || '').format('YYYY/MM/DD') }}
{{
itemData.planTime &&
dayjs(itemData.planTime).format('YYYY/MM/DD')
}}
</div>
</div>
</div>

@ -28,11 +28,16 @@
<div class="mt5" style="color: #333">
签订日期:
{{ dayjs(itemData.startTime || '').format('YYYY/MM/DD') }}
{{
itemData.startTime &&
dayjs(itemData.startTime).format('YYYY/MM/DD')
}}
</div>
<div class="mt5" style="color: #333">
截止日期:
{{ dayjs(itemData.endTime || '').format('YYYY/MM/DD') }}
{{
itemData.endTime && dayjs(itemData.endTime).format('YYYY/MM/DD')
}}
</div>
<div style="margin-top: 0.3rem; color: #333">
<div>

@ -47,7 +47,7 @@
<div style="margin-top: 0.3rem; color: #333">
投标截止时间:
{{
itemData.createTime &&
itemData.cutoffTimeDate &&
dayjs(itemData.cutoffTimeDate).format('YY/MM/DD')
}}
</div>

@ -122,7 +122,7 @@ import dayjs from 'dayjs'
import { getCustomerCompany } from '@/api/bs/myCustomerCompany'
export default {
name: 'contract-supplierMsg',
name: 'contract-customerCompany',
components: {
UploadFile: () => import('@/components/UploadFile'),
RePick: () => import('@/components/ReComponents/RePick'),

@ -1,27 +1,47 @@
<template>
<!-- 中标审批列表 -->
<div>
<HeaderFilter :listType="listType" :spList="spList" @onListQuery="handleListQuery" :paramProp="listQuery" />
<RMList :moreLoading.sync="moreLoading" :refreshing.sync="refreshing" :finished.sync="finished" @onLoad="handleLoad" @onRefresh="handleRefresh" isMore :tableList="tableList">
<HeaderFilter
:listType="listType"
:spList="spList"
@onListQuery="handleListQuery"
:paramProp="listQuery"
/>
<RMList
:moreLoading.sync="moreLoading"
:refreshing.sync="refreshing"
:finished.sync="finished"
@onLoad="handleLoad"
@onRefresh="handleRefresh"
isMore
:tableList="tableList"
>
<div>
<MyCustomerListCard v-for="(item,index) in tableList" :key="item.id" :itemData="item" :listType="listType" @onUpdataInfo="handleUpdataInfo($event, index)" @onAllRefresh="handleAllRefresh" />
<MyCustomerListCard
v-for="(item, index) in tableList"
:key="item.id"
:itemData="item"
:listType="listType"
@onUpdataInfo="handleUpdataInfo($event, index)"
@onAllRefresh="handleAllRefresh"
/>
</div>
</RMList>
<div class="common-bottom-btns" style="bottom:8rem">
<div class="common-bottom-btns" style="bottom: 8rem">
<div class="common-bottom-btn" @click="handleTopPage">
<img src="@/assets/images/icons/top.png" alt="">
<img src="@/assets/images/icons/top.png" alt="" />
<span>回到顶部</span>
</div>
</div>
<div class="common-bottom-btns" v-hasPermi="['bs:customer-contract:create']" style="bottom:10rem">
<!-- <div class="common-bottom-btns" v-hasPermi="['bs:customer-contract:create']" style="bottom:10rem">
<div class="common-bottom-btn" @click="handleToAdd">
<img src="@/assets/images/icons/add.png" alt="">
<span>添加申请</span>
</div>
</div>
<div class="common-bottom-btns" style="bottom:6rem">
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="">
<img src="@/assets/images/icons/home.png" alt="" />
<span>返回首页</span>
</div>
</div>
@ -30,7 +50,10 @@
<script>
import { getScrollTop } from '@/utils'
import { getCustomerContractPage, getCustomerCompanyPage } from "@/api/bs/customerContract";
import {
getCustomerContractPage,
getCustomerCompanyPage
} from '@/api/bs/customerContract'
import { mapState } from 'vuex'
import dayjs from 'dayjs'
export default {
@ -40,7 +63,7 @@ export default {
components: {
HeaderFilter: () => import('./HeaderFilter.vue'),
RMList: () => import('@/components/ReComponents/RMList'),
MyCustomerListCard: () => import('@/components/MyCustomerListCard'),
MyCustomerListCard: () => import('@/components/MyCustomerListCard')
},
data() {
return {
@ -74,14 +97,14 @@ export default {
files: null,
other: null,
createTime: [],
processInstanceId: null,
},
processInstanceId: null
}
}
},
computed: {
...mapState({
singlePageSize: state => state.common.setting.singlePageSize,
pageSize: state => state.common.setting.pageSize,
singlePageSize: (state) => state.common.setting.singlePageSize,
pageSize: (state) => state.common.setting.pageSize
})
},
activated() {
@ -100,7 +123,7 @@ export default {
handleInitSpList() {
let queryParams = {
pageNo: 1,
pageSize: this.singlePageSize,
pageSize: this.singlePageSize
}
getCustomerCompanyPage(queryParams).then((res) => {
this.spList = res.data.list || []
@ -110,37 +133,46 @@ export default {
return new Promise((resolve, reject) => {
let listQuery = {
pageNo: 1,
pageSize: this.singlePageSize,
pageSize: this.singlePageSize
}
getCustomerContractPage(listQuery).then((res) => {
let arr = (res.data && res.data.list || []).filter(item => item.id == id)
resolve(arr)
}).catch((err) => {
reject(err)
})
getCustomerContractPage(listQuery)
.then((res) => {
let arr = ((res.data && res.data.list) || []).filter(
(item) => item.id == id
)
resolve(arr)
})
.catch((err) => {
reject(err)
})
})
},
handleUpdataInfo(id, index) {
this.$loading(true, 'singleReset')
this.handleSetSingle(id).then(arr => {
if (arr.length) {
this.tableList.splice(index, 1, arr[0])
}
this.$loading(false, 'singleReset')
}).catch(() => {
this.$loading(false, 'singleReset')
})
this.handleSetSingle(id)
.then((arr) => {
if (arr.length) {
this.tableList.splice(index, 1, arr[0])
}
this.$loading(false, 'singleReset')
})
.catch(() => {
this.$loading(false, 'singleReset')
})
},
handleListQuery(paramProp) {
this.listQuery = {
...paramProp,
invoiceDate: paramProp.startDate && [dayjs(paramProp.startDate).format('YYYY-MM-DD HH:ss:mm'), dayjs(paramProp.endDate).format('YYYY-MM-DD HH:ss:mm')]
invoiceDate: paramProp.startDate && [
dayjs(paramProp.startDate).format('YYYY-MM-DD HH:ss:mm'),
dayjs(paramProp.endDate).format('YYYY-MM-DD HH:ss:mm')
]
}
this.finished = false
this.handleRefresh()
},
handleScroll() {
getScrollTop().then(height => {
getScrollTop().then((height) => {
this.height = height
})
},
@ -194,26 +226,28 @@ export default {
}
this.moreLoading = true
this.$loading(true, 'tableLoading')
getCustomerContractPage(query).then(res => {
let resList = res.data && res.data.list || []
if (['init', 'refresh'].includes(val)) {
this.tableList = resList
this.handleScrollToTop()
} else {
this.tableList = this.tableList.concat(resList)
}
if (resList.length < this.pageSize) {
this.finished = true
}
}).finally(() => {
this.$nextTick(() => {
this.moreLoading = false
this.refreshing = false
this.$loading(false, 'tableLoading')
getCustomerContractPage(query)
.then((res) => {
let resList = (res.data && res.data.list) || []
if (['init', 'refresh'].includes(val)) {
this.tableList = resList
this.handleScrollToTop()
} else {
this.tableList = this.tableList.concat(resList)
}
if (resList.length < this.pageSize) {
this.finished = true
}
})
// this.$loading(false, `cTableLoading_${this.listType}`)
})
},
.finally(() => {
this.$nextTick(() => {
this.moreLoading = false
this.refreshing = false
this.$loading(false, 'tableLoading')
})
// this.$loading(false, `cTableLoading_${this.listType}`)
})
}
}
}
</script>

@ -62,7 +62,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -71,7 +71,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myCustomerCompany')
this.$EventBus.$emit('handleResetLive', 'contract-customerCompany')
},
components: {
UserList: () => import('./components/UserList')

@ -16,19 +16,19 @@
clearable
input-align="left"
/>
<!-- <van-field
<van-field
v-model="queryForm.contractName"
placeholder="请输入"
label="合同名称"
clearable
input-align="left"
/> -->
/>
<RePick
v-model="queryForm.supplierId"
v-model="queryForm.customerCompanyId"
titleKey="companyName"
idKey="id"
title="客户名称"
:name="`supplierId`"
:name="`customerCompanyId`"
label="客户名称"
:list="cpList"
isCell
@ -88,7 +88,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -97,7 +97,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />
@ -142,7 +142,7 @@ export default {
queryForm: {
contractNumber: null,
contractName: null,
supplierId: null
customerCompanyId: null
}
}
},
@ -190,7 +190,7 @@ export default {
this.queryForm = {
contractNumber: null,
contractName: null,
supplierId: null
customerCompanyId: null
}
this.handleInit()
},

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myGetPlan')
this.$EventBus.$emit('handleResetLive', 'contract-getPlan')
},
components: {
UserList: () => import('./components/UserList')

@ -69,7 +69,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -78,7 +78,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myMateriel')
this.$EventBus.$emit('handleResetLive', 'contract-materiel')
},
components: {
UserList: () => import('./components/UserList')

@ -2,69 +2,195 @@
<div id="orderHeader">
<div class="hf-l-seacrch" v-if="isActSearch">
<form action="/">
<van-search v-model="listQuery.contractNumber" shape="round" show-action placeholder="请输入合同编号" :clearable="false" @search="onKeywordSearch" @cancel="onKeywordCancel" />
<van-search
v-model="listQuery.contractNumber"
shape="round"
show-action
placeholder="请输入合同编号"
:clearable="false"
@search="onKeywordSearch"
@cancel="onKeywordCancel"
/>
</form>
</div>
<div class="header-filter" :style="isActSearch ? 'padding: 0 0 0 0.5rem' : ''">
<div
class="header-filter"
:style="isActSearch ? 'padding: 0 0 0 0.5rem' : ''"
>
<div class="hf-l-list" v-show="!isActSearch">
<van-dropdown-menu class="hf-l-list-menu">
<!-- 供应商名称 -->
<van-dropdown-item title="供应商名称" :title-class="isHtab1 ? 'common-act-color' : ''" @open="handleDropOpen()" ref="vanDropItem1">
<van-dropdown-item
title="供应商名称"
:title-class="isHtab1 ? 'common-act-color' : ''"
@open="handleDropOpen()"
ref="vanDropItem1"
>
<div class="hf-drop-view">
<div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass1(item.id)" v-for="item in spList" :key="item.value">
<van-icon v-if="listQuery.supplierId && listQuery.supplierId == item.value" name="success" color="#0088FE" />
<span :class="{'hr-drop-filter-item-act': listQuery.supplierId && listQuery.supplierId == item.id }">{{item.companyName}}</span>
<div
class="hr-drop-filter-item"
@click.stop="handleClass1(item.id)"
v-for="item in spList"
:key="item.value"
>
<van-icon
v-if="
listQuery.supplierId && listQuery.supplierId == item.value
"
name="success"
color="#0088FE"
/>
<span
:class="{
'hr-drop-filter-item-act':
listQuery.supplierId && listQuery.supplierId == item.id
}"
>{{ item.companyName }}</span
>
</div>
</div>
<div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button>
<van-button class="common-double-button-r" @click="handleConfirm"></van-button>
<van-button
class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div>
</div>
</van-dropdown-item>
<!-- 审批状态 -->
<van-dropdown-item title="审批状态" :title-class="isHtab4 ? 'common-act-color' : ''" @open="handleDropOpen()" ref="vanDropItem4">
<van-dropdown-item
title="审批状态"
:title-class="isHtab4 ? 'common-act-color' : ''"
@open="handleDropOpen()"
ref="vanDropItem4"
>
<div class="hf-drop-view">
<div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass2(item.value)" v-for="item in stateList" :key="item.value">
<van-icon v-if="listQuery.status && listQuery.status == item.value" name="success" color="#0088FE" />
<span :class="{'hr-drop-filter-item-act': listQuery.status && listQuery.status == item.value }">{{item.label}}</span>
<div
class="hr-drop-filter-item"
@click.stop="handleClass2(item.value)"
v-for="item in stateList"
:key="item.value"
>
<van-icon
v-if="listQuery.status && listQuery.status == item.value"
name="success"
color="#0088FE"
/>
<span
:class="{
'hr-drop-filter-item-act':
listQuery.status && listQuery.status == item.value
}"
>{{ item.label }}</span
>
</div>
</div>
<div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button>
<van-button class="common-double-button-r" @click="handleConfirm"></van-button>
<van-button
class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div>
</div>
</van-dropdown-item>
<!-- 付款状态 -->
<van-dropdown-item title="付款状态" :title-class="isHtab6 ? 'common-act-color' : ''" @open="handleDropOpen()" ref="vanDropItem7">
<van-dropdown-item
title="付款状态"
:title-class="isHtab6 ? 'common-act-color' : ''"
@open="handleDropOpen()"
ref="vanDropItem7"
>
<div class="hf-drop-view">
<div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass3(item.value)" v-for="item in payMentStatusList" :key="item.value">
<van-icon v-if="listQuery.payMentStatus && listQuery.payMentStatus == item.value" name="success" color="#0088FE" />
<span :class="{'hr-drop-filter-item-act': listQuery.payMentStatus && listQuery.payMentStatus == item.value }">{{item.label}}</span>
<div
class="hr-drop-filter-item"
@click.stop="handleClass3(item.value)"
v-for="item in payMentStatusList"
:key="item.value"
>
<van-icon
v-if="
listQuery.payMentStatus &&
listQuery.payMentStatus == item.value
"
name="success"
color="#0088FE"
/>
<span
:class="{
'hr-drop-filter-item-act':
listQuery.payMentStatus &&
listQuery.payMentStatus == item.value
}"
>{{ item.label }}</span
>
</div>
</div>
<div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button>
<van-button class="common-double-button-r" @click="handleConfirm"></van-button>
<van-button
class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div>
</div>
</van-dropdown-item>
<van-dropdown-item title="付款确认时间" :title-class="isHtab5 ? 'common-act-color' : ''" @open="handleDropOpen(5)" ref="vanDropItem5">
<van-dropdown-item
title="付款确认时间"
:title-class="isHtab5 ? 'common-act-color' : ''"
@open="handleDropOpen(5)"
ref="vanDropItem5"
>
<div class="hf-drop-view">
<div class="hf-drop-quick" style="margin-top: 0;">
<div class="hf-drop-quick-item" style="margin-bottom: 0;">
<div class="hf-drop-quick" style="margin-top: 0">
<div class="hf-drop-quick-item" style="margin-bottom: 0">
<div class="hf-drop-quick-calendar">
<van-calendar ref="vanCalendar" :formatter="dayTextFormatter" @select="handleDateSelect" :default-date="defaultDate" :poppable="false" :show-title="false" color="#0088FE" :show-confirm="false" allow-same-day :min-date="new Date('2000/01/01')" :style="{ height: '400px' }" />
<van-calendar
ref="vanCalendar"
:formatter="dayTextFormatter"
@select="handleDateSelect"
:default-date="defaultDate"
:poppable="false"
:show-title="false"
color="#0088FE"
:show-confirm="false"
allow-same-day
:min-date="new Date('2000/01/01')"
:style="{ height: '400px' }"
/>
</div>
</div>
</div>
<div class="common-double-button">
<van-button class="common-double-button-l" @click="handleDateReset(5)"></van-button>
<van-button class="common-double-button-r" @click="handleConfirm"></van-button>
<van-button
class="common-double-button-l"
@click="handleDateReset(5)"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div>
</div>
</van-dropdown-item>
@ -78,7 +204,15 @@
</div>
</div>
</div>
<van-popup position="bottom" safe-area-inset-bottom v-model="moreFilterShow" :lock-scroll="true" round get-container="#app" lazy-render>
<van-popup
position="bottom"
safe-area-inset-bottom
v-model="moreFilterShow"
:lock-scroll="true"
round
get-container="#app"
lazy-render
>
<div class="common-popup moreContain">
<div class="common-popup-header">
<div></div>
@ -90,13 +224,41 @@
</div>
</div>
<div class="common-popup-body moreContain-body">
<van-form ref="filterForm" :show-error-message="false" validate-trigger="" :submit-on-enter="false">
<RePick v-model="listQuery.remark" label="bumen" :list="areaTree" isLastSelect isCascader isShowSearch title="行程" titleKey="name" isCascaderAllLevelNameSymnol isCell clearable />
<van-form
ref="filterForm"
:show-error-message="false"
validate-trigger=""
:submit-on-enter="false"
>
<RePick
v-model="listQuery.remark"
label="bumen"
:list="areaTree"
isLastSelect
isCascader
isShowSearch
title="行程"
titleKey="name"
isCascaderAllLevelNameSymnol
isCell
clearable
/>
</van-form>
</div>
<div class="common-popup-footer">
<van-button style="width: 8rem; margin-right: 1rem;" round @click="handleMoreReset"></van-button>
<van-button type="info" style="width: 8rem;" round @click.stop="handleMoreConfirm">确认</van-button>
<van-button
style="width: 8rem; margin-right: 1rem"
round
@click="handleMoreReset"
>重置</van-button
>
<van-button
type="info"
style="width: 8rem"
round
@click.stop="handleMoreConfirm"
>确认</van-button
>
</div>
</div>
</van-popup>
@ -105,17 +267,17 @@
<script>
import { mapState, mapGetters } from 'vuex'
import { getDictDatas, DICT_TYPE } from "@/utils/dict";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import { dayTextFormatter } from '@/utils'
import dayjs from 'dayjs'
export default {
props: {
listType: String, // 'detail'
paramProp: Object,
spList: Array, //
spList: Array //
},
components: {
RePick: () => import('@/components/ReComponents/RePick'),
RePick: () => import('@/components/ReComponents/RePick')
},
data() {
return {
@ -129,7 +291,7 @@ export default {
// { text: '', id: 0 },
// { text: '', id: 1 }
// ],
listQuery: {},
listQuery: {}
}
},
computed: {
@ -175,14 +337,12 @@ export default {
},
{
label: '未付款',
value: '0'
value: '2'
}
]
}
},
methods: {
//
handleDateReset() {
@ -190,7 +350,8 @@ export default {
this.defaultDate = null
this.$refs.vanCalendar && this.$refs.vanCalendar.reset()
setTimeout(() => {
this.$refs.vanCalendar && this.$refs.vanCalendar.scrollToDate(new Date())
this.$refs.vanCalendar &&
this.$refs.vanCalendar.scrollToDate(new Date())
})
},
handleDateSelect(val) {
@ -214,7 +375,6 @@ export default {
this.$emit('onListQuery', this.listQuery)
},
//
handleClass1(val) {
this.listQuery.supplierId = val
@ -223,13 +383,12 @@ export default {
this.listQuery.status = val
},
handleClass3(val) {
console.log('val....');
this.listQuery.payMentStatus = val
},
// type : 1 2 3
handleState(val, type) {
if (type == 1) {
const i = this.listQuery.states.findIndex(item => item === val)
const i = this.listQuery.states.findIndex((item) => item === val)
if (i > -1) {
this.listQuery.states.splice(i, 1)
} else {
@ -238,22 +397,20 @@ export default {
}
if (type == 2 || type == 3) {
const i = this.listQuery.types.findIndex(item => item === val)
const i = this.listQuery.types.findIndex((item) => item === val)
if (i > -1) {
this.listQuery.types.splice(i, 1)
} else {
this.listQuery.types.push(val)
}
}
},
handleInit() {
this.listQuery = {
...this.paramProp
}
if (!(this.listQuery.paymentAffirmTime)) {
if (!this.listQuery.paymentAffirmTime) {
this.handleDateReset()
}
},
@ -293,11 +450,8 @@ export default {
this.listQuery.status = null
this.listQuery.supplierId = null
this.listQuery.payMentStatus = null
},
},
}
}
}
</script>

@ -1,22 +1,40 @@
<template>
<van-popup v-model="isShow" position="bottom" round safe-area-inset-bottom lock-scroll lazy-render get-container="#app" :close-on-click-overlay="false" @close="hanleCancel">
<van-popup
v-model="isShow"
position="bottom"
round
safe-area-inset-bottom
lock-scroll
lazy-render
get-container="#app"
:close-on-click-overlay="false"
@close="hanleCancel"
>
<div class="Re-select-header">
<div class="Re-select-header-cancel" @click="hanleCancel"></div>
<div class="Re-select-header-title">凭证</div>
<div class="Re-select-header-confirm" @click="handleConfirm"></div>
</div>
<div class="box-1">
<van-uploader v-model="fileList" :disabled="disabled" multiple @delete="handleImgDel" :max-size="1024 * 1024 * 5" @oversize="onOversize" :max-count="3" :before-read="handleFileBeforeRead" />
<van-uploader
v-model="fileList"
:disabled="disabled"
multiple
@delete="handleImgDel"
:max-size="1024 * 1024 * 5"
@oversize="onOversize"
:max-count="3"
:before-read="handleFileBeforeRead"
/>
</div>
</van-popup>
</template>
<script>
import dayjs from 'dayjs';
import { ImagePreview } from 'vant';
import dayjs from 'dayjs'
import { ImagePreview } from 'vant'
import { uploadFileApi } from '@/api/common'
import { updatePaymentApply } from "@/api/bs/paymentApply";
import { updatePaymentApply } from '@/api/bs/paymentApply'
export default {
props: {
id: [Number, String],
@ -31,7 +49,7 @@ export default {
type: [Number, String]
},
components: {
RePick: () => import('@/components/ReComponents/RePick'),
RePick: () => import('@/components/ReComponents/RePick')
},
//
@ -41,7 +59,7 @@ export default {
},
userList() {
return this.$store.getters.userList
},
}
},
data() {
return {
@ -49,7 +67,7 @@ export default {
imgTypeArr: ['image/jpeg', 'image/jpg', 'image/png'],
tableList: [],
demo: false,
isShow: false,
isShow: false
}
},
watch: {
@ -59,7 +77,6 @@ export default {
if (val) {
this.handleInitList()
}
},
deep: true,
immediate: true
@ -81,35 +98,37 @@ export default {
}
},
methods: {
handleImgDel() {
},
handleImgDel() {},
uploadFile(params) {
return new Promise((resolve, reject) => {
let FormDatas = new FormData()
FormDatas.append('file', params.file);
FormDatas.append('path', params.file.name);
uploadFileApi(FormDatas).then((res) => {
resolve({
name: params.file.name,
url: res.data
});
}).catch((err) => {
reject(err)
})
});
FormDatas.append('file', params.file)
FormDatas.append('path', params.file.name)
uploadFileApi(FormDatas)
.then((res) => {
resolve({
name: params.file.name,
url: res.data.url
})
})
.catch((err) => {
reject(err)
})
})
},
uploadFiles(fileList) {
let promises = fileList.map((item) => this.uploadFile(item));
return Promise.all(promises);
let promises = fileList.map((item) => this.uploadFile(item))
return Promise.all(promises)
},
onOversize() {
this.$fm('文件大小不能超过5M');
this.$fm('文件大小不能超过5M')
},
handleFileBeforeRead(file) {
if (Array.isArray(file)) {
let flag = file.map(item => item.type).filter(item => !this.imgTypeArr.includes(item))
if ((flag && flag.length)) {
let flag = file
.map((item) => item.type)
.filter((item) => !this.imgTypeArr.includes(item))
if (flag && flag.length) {
this.$fm('只能上传图片')
return false
}
@ -123,10 +142,14 @@ export default {
}
},
handleSetCheck(index) {
this.$set(this.tableList[index], 'checked', !this.tableList[index].checked)
this.$set(
this.tableList[index],
'checked',
!this.tableList[index].checked
)
},
handleShowImg() {
ImagePreview(['https://img01.yzcdn.cn/vant/apple-1.jpg']);
ImagePreview(['https://img01.yzcdn.cn/vant/apple-1.jpg'])
},
dayjs,
handleNewDel(index) {
@ -140,38 +163,48 @@ export default {
if (this.disabled) {
this.$emit('onConfirm')
} else {
let newList = Array.isArray(this.fileList) ? this.fileList : [this.fileList]
let arr = newList.filter(item => !item.name) || []
let newList = Array.isArray(this.fileList)
? this.fileList
: [this.fileList]
let arr = newList.filter((item) => !item.name) || []
this.$loading(true, 'file')
if (arr.length) {
this.uploadFiles(arr).then((res) => {
this.fileList = this.fileList.filter(item => item.name).concat(res)
updatePaymentApply({
id: this.id,
files: this.fileList
}).then(() => {
this.$forceCloseLoading()
this.$emit('onConfirm')
}).catch(() => {
this.uploadFiles(arr)
.then((res) => {
this.fileList = this.fileList
.filter((item) => item.name)
.concat(res)
updatePaymentApply({
id: this.id,
files: this.fileList
})
.then(() => {
this.$forceCloseLoading()
this.$emit('onConfirm', this.fileList)
})
.catch(() => {
this.$forceCloseLoading()
})
this.$emit('onConfirm', this.fileList)
})
.catch(() => {
this.$forceCloseLoading()
})
this.$emit('onConfirm')
}).catch(() => {
this.$forceCloseLoading()
})
} else {
updatePaymentApply({
id: this.id,
files: this.fileList
}).then(() => {
this.$forceCloseLoading()
this.$emit('onConfirm')
}).catch(() => {
this.$forceCloseLoading()
})
.then(() => {
this.$forceCloseLoading()
this.$emit('onConfirm', this.fileList)
})
.catch(() => {
this.$forceCloseLoading()
})
}
}
console.log('newList...', newList);
// console.log('newList...', newList);
// this.$loading(true, 'file')
// this.uploadFiles(newList).then((res) => {
// // (res || []).map(item => {
@ -184,10 +217,9 @@ export default {
// this.$loading(false, 'file')
// this.$fm('')
// })
console.log('this.file', this.fileList);
// console.log('this.file', this.fileList);
// let arr = (this.tableList.filter(item => item.checked)).map(item => item.id) || []
// this.$emit('onConfirm', arr)
},
hanleCancel() {
@ -195,10 +227,8 @@ export default {
},
handleDel(index) {
this.form.tripPartners.splice(index, 1)
},
},
}
}
}
</script>

@ -1,38 +1,66 @@
<template>
<!-- 中标审批列表 -->
<div>
<HeaderFilter :listType="listType" :spList="spList" @onListQuery="handleListQuery" :paramProp="listQuery" />
<RMList :moreLoading.sync="moreLoading" :refreshing.sync="refreshing" :finished.sync="finished" @onLoad="handleLoad" @onRefresh="handleRefresh" isMore :tableList="tableList">
<HeaderFilter
:listType="listType"
:spList="spList"
@onListQuery="handleListQuery"
:paramProp="listQuery"
/>
<RMList
:moreLoading.sync="moreLoading"
:refreshing.sync="refreshing"
:finished.sync="finished"
@onLoad="handleLoad"
@onRefresh="handleRefresh"
isMore
:tableList="tableList"
>
<div>
<MyPayListCard @onFile="handleFile" v-for="(item,index) in tableList" :key="item.id" :itemData="item" :listType="listType" @onUpdataInfo="handleUpdataInfo($event, index)" @onAllRefresh="handleAllRefresh" />
<MyPayListCard
@onFile="handleFile"
v-for="(item, index) in tableList"
:key="item.id"
:itemData="item"
:listType="listType"
@onUpdataInfo="handleUpdataInfo($event, index)"
@onAllRefresh="handleAllRefresh"
/>
</div>
</RMList>
<div class="common-bottom-btns" style="bottom:8rem">
<div class="common-bottom-btns" style="bottom: 8rem">
<div class="common-bottom-btn" @click="handleTopPage">
<img src="@/assets/images/icons/top.png" alt="">
<img src="@/assets/images/icons/top.png" alt="" />
<span>回到顶部</span>
</div>
</div>
<div class="common-bottom-btns" v-hasPermi="['bs:supplier-contract:create']" style="bottom:10rem">
<!-- <div class="common-bottom-btns" v-hasPermi="['bs:supplier-contract:create']" style="bottom:10rem">
<div class="common-bottom-btn" @click="handleToAdd">
<img src="@/assets/images/icons/add.png" alt="">
<span>添加申请</span>
</div>
</div>
<div class="common-bottom-btns" style="bottom:6rem">
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="">
<img src="@/assets/images/icons/home.png" alt="" />
<span>返回首页</span>
</div>
</div>
<ImgList :files="files" :id="row.id" :disabled="isDisabled" :isOpen="isOpen" @onCancel="isOpen=false" @onConfirm="handleConfirm" />
<ImgList
:files="files"
:id="row.id"
:disabled="isDisabled"
:isOpen="isOpen"
@onCancel="isOpen = false"
@onConfirm="handleConfirm"
/>
</div>
</template>
<script>
import { getScrollTop } from '@/utils'
import { getSupplierCompanyPage } from "@/api/bs/quotationSheet";
import { getPaymentApplyPage } from "@/api/bs/paymentApply";
import { getSupplierCompanyPage } from '@/api/bs/quotationSheet'
import { getPaymentApplyPage } from '@/api/bs/paymentApply'
import { mapState } from 'vuex'
import dayjs from 'dayjs'
export default {
@ -43,7 +71,7 @@ export default {
HeaderFilter: () => import('./HeaderFilter.vue'),
RMList: () => import('@/components/ReComponents/RMList'),
MyPayListCard: () => import('@/components/MyPayListCard'),
ImgList: () => import('./ImgList'),
ImgList: () => import('./ImgList')
},
data() {
return {
@ -75,14 +103,14 @@ export default {
processInstanceId: null,
projectName: null,
percentage: null,
payMentStatus: null,
},
payMentStatus: null
}
}
},
computed: {
...mapState({
singlePageSize: state => state.common.setting.singlePageSize,
pageSize: state => state.common.setting.pageSize,
singlePageSize: (state) => state.common.setting.singlePageSize,
pageSize: (state) => state.common.setting.pageSize
})
},
activated() {
@ -98,7 +126,7 @@ export default {
handleBack() {
history.back()
},
handleConfirm() {
handleConfirm(event) {
this.handleRefresh()
this.isOpen = false
},
@ -108,19 +136,19 @@ export default {
const { files, payMentStatus, status } = row
this.files = []
let arr = files || []
arr.forEach(v => {
arr.forEach((v) => {
this.files.push({
url: v.url,
name: v.name
})
});
})
this.isOpen = true
this.isDisabled = payMentStatus == 1 && status == 2
},
handleInitSpList() {
let queryParams = {
pageNo: 1,
pageSize: this.singlePageSize,
pageSize: this.singlePageSize
}
getSupplierCompanyPage(queryParams).then((res) => {
this.spList = res.data.list || []
@ -131,44 +159,48 @@ export default {
let listQuery = {
...this.listQuery,
pageNo: 1,
pageSize: this.singlePageSize,
pageSize: this.singlePageSize
}
console.log('listQuery', listQuery);
getPaymentApplyPage(listQuery).then((res) => {
let arr = (res.data && res.data.list || []).filter(item => item.id == id)
console.log('arr..', arr);
resolve(arr)
}).catch((err) => {
reject(err)
})
getPaymentApplyPage(listQuery)
.then((res) => {
let arr = ((res.data && res.data.list) || []).filter(
(item) => item.id == id
)
resolve(arr)
})
.catch((err) => {
reject(err)
})
})
},
handleUpdataInfo(id, index) {
// this.$loading(true, 'singleReset')
this.handleSetSingle(id).then(arr => {
if (arr.length) {
console.log('11111111');
this.tableList.splice(index, 1, arr[0])
this.handleSetSingle(id)
.then((arr) => {
if (arr.length) {
this.tableList.splice(index, 1, arr[0])
this.$forceCloseLoading()
} else {
this.handleRefresh()
}
})
.catch(() => {
this.$forceCloseLoading()
} else {
console.log('222222');
this.handleRefresh()
}
}).catch(() => {
this.$forceCloseLoading()
})
})
},
handleListQuery(paramProp) {
this.listQuery = {
...paramProp,
invoiceDate: paramProp.startDate && [dayjs(paramProp.startDate).format('YYYY-MM-DD HH:ss:mm'), dayjs(paramProp.endDate).format('YYYY-MM-DD HH:ss:mm')]
invoiceDate: paramProp.startDate && [
dayjs(paramProp.startDate).format('YYYY-MM-DD HH:ss:mm'),
dayjs(paramProp.endDate).format('YYYY-MM-DD HH:ss:mm')
]
}
console.log('handleListQuery..', this.listQuery);
this.finished = false
this.handleRefresh()
},
handleScroll() {
getScrollTop().then(height => {
getScrollTop().then((height) => {
this.height = height
})
},
@ -192,12 +224,10 @@ export default {
},
handleAllRefresh() {
// this.getTableList('refresh')
console.log('handleAllRefresh');
this.handleRefresh()
},
handleInit() {
this.handleInitSpList()
console.log('handleInit..');
this.getTableList('init')
},
@ -210,11 +240,9 @@ export default {
handleRefresh() {
this.listQuery.pageNo = 1
this.finished = false
console.log('handleRefresh');
this.getTableList('refresh')
},
handleLoad() {
console.log('handleLoad');
this.listQuery.pageNo += 1
this.getTableList('more')
},
@ -224,31 +252,32 @@ export default {
const query = {
...this.listQuery
}
console.log('query..', query);
this.moreLoading = true
this.$loading(true, 'tableLoading')
getPaymentApplyPage(query).then(res => {
this.$forceCloseLoading()
let resList = res.data && res.data.list || []
if (['init', 'refresh'].includes(val)) {
this.tableList = resList
this.handleScrollToTop()
} else {
this.tableList = this.tableList.concat(resList)
}
if (resList.length < this.pageSize) {
this.finished = true
}
}).finally(() => {
this.$nextTick(() => {
this.moreLoading = false
this.refreshing = false
getPaymentApplyPage(query)
.then((res) => {
this.$forceCloseLoading()
this.$loading(false, 'tableLoading')
let resList = (res.data && res.data.list) || []
if (['init', 'refresh'].includes(val)) {
this.tableList = resList
this.handleScrollToTop()
} else {
this.tableList = this.tableList.concat(resList)
}
if (resList.length < this.pageSize) {
this.finished = true
}
})
// this.$loading(false, `cTableLoading_${this.listType}`)
})
},
.finally(() => {
this.$nextTick(() => {
this.moreLoading = false
this.refreshing = false
this.$forceCloseLoading()
this.$loading(false, 'tableLoading')
})
// this.$loading(false, `cTableLoading_${this.listType}`)
})
}
}
}
</script>

@ -75,7 +75,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -84,7 +84,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />
@ -287,7 +287,8 @@ export default {
getTableList(val) {
// const { shellIdsLocal, collegeInfoIdLocal, startDate, endDate, keyword, type, method, targets, usePersonId, teacherIds, chargePersonIds } = this.listQuery
const query = {
...this.listQuery
...this.listQuery,
paymentType: 0
}
this.moreLoading = true
this.$loading(true, 'tableLoading')

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myPayPlan')
this.$EventBus.$emit('handleResetLive', 'contract-payPlan')
},
components: {
UserList: () => import('./components/UserList')

@ -25,7 +25,7 @@
input-align="left"
/>
<van-field
v-model="queryForm.supplyNo"
v-model="queryForm.supplyName"
placeholder="请输入"
label="乙方名称"
clearable
@ -77,7 +77,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -86,7 +86,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />
@ -129,7 +129,7 @@ export default {
contractNo: null,
contractName: null,
orgName: null,
supplyNo: null
supplyName: null
}
}
},
@ -176,7 +176,7 @@ export default {
contractNo: null,
contractName: null,
orgName: null,
supplyNo: null
supplyName: null
}
this.handleInit()
},

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myProtocolFramework')
this.$EventBus.$emit('handleResetLive', 'contract-protocolFramework')
},
components: {
UserList: () => import('./components/UserList')

@ -28,13 +28,6 @@
clearable
input-align="left"
/>
<van-field
v-model="queryForm.companyName"
placeholder="请输入"
label="供应商名称"
clearable
input-align="left"
/>
<van-field
v-model="queryForm.productName"
placeholder="请输入"
@ -95,7 +88,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -104,7 +97,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myQuotationSheet')
this.$EventBus.$emit('handleResetLive', 'contract-quotationSheet')
},
components: {
UserList: () => import('./components/UserList')

@ -81,7 +81,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -90,7 +90,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-myQuotationSheetBidding')
this.$EventBus.$emit('handleResetLive', 'contract-quotationSheetBidding')
},
components: {
UserList: () => import('./components/UserList')

@ -2,39 +2,108 @@
<div id="orderHeader">
<div class="hf-l-seacrch" v-if="isActSearch">
<form action="/">
<van-search v-model="listQuery.contractNumber" shape="round" show-action placeholder="请输入合同编号" :clearable="false" @search="onKeywordSearch" @cancel="onKeywordCancel" />
<van-search
v-model="listQuery.contractNumber"
shape="round"
show-action
placeholder="请输入合同编号"
:clearable="false"
@search="onKeywordSearch"
@cancel="onKeywordCancel"
/>
</form>
</div>
<div class="header-filter" :style="isActSearch ? 'padding: 0 0 0 0.5rem' : ''">
<div
class="header-filter"
:style="isActSearch ? 'padding: 0 0 0 0.5rem' : ''"
>
<div class="hf-l-list" v-show="!isActSearch">
<van-dropdown-menu class="hf-l-list-menu">
<!-- 供应商名称 -->
<van-dropdown-item title="供应商名称" :title-class="isHtab1 ? 'common-act-color' : ''" @open="handleDropOpen()" ref="vanDropItem1">
<van-dropdown-item
title="供应商名称"
:title-class="isHtab1 ? 'common-act-color' : ''"
@open="handleDropOpen()"
ref="vanDropItem1"
>
<div class="hf-drop-view">
<div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass1(item.id)" v-for="item in spList" :key="item.value">
<van-icon v-if="listQuery.supplierId && listQuery.supplierId == item.value" name="success" color="#0088FE" />
<span :class="{'hr-drop-filter-item-act': listQuery.supplierId && listQuery.supplierId == item.id }">{{item.companyName}}</span>
<div
class="hr-drop-filter-item"
@click.stop="handleClass1(item.id)"
v-for="item in spList"
:key="item.value"
>
<van-icon
v-if="
listQuery.supplierId && listQuery.supplierId == item.value
"
name="success"
color="#0088FE"
/>
<span
:class="{
'hr-drop-filter-item-act':
listQuery.supplierId && listQuery.supplierId == item.id
}"
>{{ item.companyName }}</span
>
</div>
</div>
<div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button>
<van-button class="common-double-button-r" @click="handleConfirm"></van-button>
<van-button
class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div>
</div>
</van-dropdown-item>
<!-- 类别 -->
<van-dropdown-item title="合同状态" :title-class="isHtab4 ? 'common-act-color' : ''" @open="handleDropOpen()" ref="vanDropItem4">
<van-dropdown-item
title="合同状态"
:title-class="isHtab4 ? 'common-act-color' : ''"
@open="handleDropOpen()"
ref="vanDropItem4"
>
<div class="hf-drop-view">
<div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass2(item.value)" v-for="item in stateList" :key="item.value">
<van-icon v-if="listQuery.contractType && listQuery.contractType == item.value" name="success" color="#0088FE" />
<span :class="{'hr-drop-filter-item-act': listQuery.contractType && listQuery.contractType == item.value }">{{item.label}}</span>
<div
class="hr-drop-filter-item"
@click.stop="handleClass2(item.value)"
v-for="item in stateList"
:key="item.value"
>
<van-icon
v-if="listQuery.status && listQuery.status == item.value"
name="success"
color="#0088FE"
/>
<span
:class="{
'hr-drop-filter-item-act':
listQuery.status && listQuery.status == item.value
}"
>{{ item.label }}</span
>
</div>
</div>
<div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button>
<van-button class="common-double-button-r" @click="handleConfirm"></van-button>
<van-button
class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div>
</div>
</van-dropdown-item>
@ -48,7 +117,15 @@
</div>
</div>
</div>
<van-popup position="bottom" safe-area-inset-bottom v-model="moreFilterShow" :lock-scroll="true" round get-container="#app" lazy-render>
<van-popup
position="bottom"
safe-area-inset-bottom
v-model="moreFilterShow"
:lock-scroll="true"
round
get-container="#app"
lazy-render
>
<div class="common-popup moreContain">
<div class="common-popup-header">
<div></div>
@ -60,13 +137,41 @@
</div>
</div>
<div class="common-popup-body moreContain-body">
<van-form ref="filterForm" :show-error-message="false" validate-trigger="" :submit-on-enter="false">
<RePick v-model="listQuery.remark" label="bumen" :list="areaTree" isLastSelect isCascader isShowSearch title="行程" titleKey="name" isCascaderAllLevelNameSymnol isCell clearable />
<van-form
ref="filterForm"
:show-error-message="false"
validate-trigger=""
:submit-on-enter="false"
>
<RePick
v-model="listQuery.remark"
label="bumen"
:list="areaTree"
isLastSelect
isCascader
isShowSearch
title="行程"
titleKey="name"
isCascaderAllLevelNameSymnol
isCell
clearable
/>
</van-form>
</div>
<div class="common-popup-footer">
<van-button style="width: 8rem; margin-right: 1rem;" round @click="handleMoreReset"></van-button>
<van-button type="info" style="width: 8rem;" round @click.stop="handleMoreConfirm">确认</van-button>
<van-button
style="width: 8rem; margin-right: 1rem"
round
@click="handleMoreReset"
>重置</van-button
>
<van-button
type="info"
style="width: 8rem"
round
@click.stop="handleMoreConfirm"
>确认</van-button
>
</div>
</div>
</van-popup>
@ -75,17 +180,17 @@
<script>
import { mapState, mapGetters } from 'vuex'
import { getDictDatas, DICT_TYPE } from "@/utils/dict";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import { dayTextFormatter } from '@/utils'
import dayjs from 'dayjs'
export default {
props: {
listType: String, // 'detail'
paramProp: Object,
spList: Array, //
spList: Array //
},
components: {
RePick: () => import('@/components/ReComponents/RePick'),
RePick: () => import('@/components/ReComponents/RePick')
},
data() {
return {
@ -99,7 +204,7 @@ export default {
// { text: '', id: 0 },
// { text: '', id: 1 }
// ],
listQuery: {},
listQuery: {}
}
},
computed: {
@ -110,7 +215,7 @@ export default {
},
isHtab4() {
let isShow = false
if (this.paramProp.contractType) isShow = true
if (this.paramProp.status) isShow = true
return isShow
},
areaTree() {
@ -127,10 +232,8 @@ export default {
stateList() {
return getDictDatas(DICT_TYPE.BS_EXPENSE_APPLY_STATUS) || []
}
},
methods: {
//
handleDateReset() {
@ -140,9 +243,13 @@ export default {
this.$refs.vanCalendar && this.$refs.vanCalendar.reset()
},
handleDateSelect(val) {
if (val.filter(item => item).length === 2) {
this.listQuery.startDate = `${dayjs(val[0]).format('YYYY/MM/DD')} 00:00:00 `
this.listQuery.endDate = `${dayjs(val[1]).format('YYYY/MM/DD')} 23:59:59 `
if (val.filter((item) => item).length === 2) {
this.listQuery.startDate = `${dayjs(val[0]).format(
'YYYY/MM/DD'
)} 00:00:00 `
this.listQuery.endDate = `${dayjs(val[1]).format(
'YYYY/MM/DD'
)} 23:59:59 `
}
},
handleQuickDate(e) {
@ -166,18 +273,17 @@ export default {
this.$emit('onListQuery', this.listQuery)
},
//
handleClass1(val) {
this.listQuery.supplierId = val
},
handleClass2(val) {
this.listQuery.contractType = val
this.listQuery.status = val
},
// type : 1 2 3
handleState(val, type) {
if (type == 1) {
const i = this.listQuery.states.findIndex(item => item === val)
const i = this.listQuery.states.findIndex((item) => item === val)
if (i > -1) {
this.listQuery.states.splice(i, 1)
} else {
@ -186,15 +292,13 @@ export default {
}
if (type == 2 || type == 3) {
const i = this.listQuery.types.findIndex(item => item === val)
const i = this.listQuery.types.findIndex((item) => item === val)
if (i > -1) {
this.listQuery.types.splice(i, 1)
} else {
this.listQuery.types.push(val)
}
}
},
handleInit() {
@ -238,13 +342,10 @@ export default {
this.moreFilterShow = false
},
handleReset() {
this.listQuery.contractType = null
this.listQuery.status = null
this.listQuery.supplierId = null
},
},
}
}
}
</script>

@ -62,7 +62,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -71,7 +71,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-mySupplierAd')
this.$EventBus.$emit('handleResetLive', 'contract-supplierAd')
},
components: {
UserList: () => import('./components/UserList')

@ -74,7 +74,7 @@
<span>回到顶部</span>
</div>
</div>
<div
<!-- <div
class="common-bottom-btns"
v-hasPermi="['bs:supplier-contract:create']"
style="bottom: 10rem"
@ -83,7 +83,7 @@
<img src="@/assets/images/icons/add.png" alt="" />
<span>添加申请</span>
</div>
</div>
</div> -->
<div class="common-bottom-btns" style="bottom: 6rem">
<div class="common-bottom-btn" @click="handleBack">
<img src="@/assets/images/icons/home.png" alt="" />

@ -14,7 +14,7 @@ export default {
},
activated() {
//
this.$EventBus.$emit('handleResetLive', 'contract-mySupplierMsg')
this.$EventBus.$emit('handleResetLive', 'contract-supplierMsg')
},
components: {
UserList: () => import('./components/UserList')

@ -148,41 +148,37 @@
<van-field
right-icon="arrow"
:disabled="disabled"
placeholder="请选择"
placeholder="请输入"
v-model="form.paymentPlanDetailDOList[0].planTime"
label="预计付款时间"
clear-trigger="always"
input-align="right"
/>
<van-field
right-icon="arrow"
:disabled="disabled"
placeholder="请选择"
placeholder="请输入"
v-model="form.paymentPlanDetailDOList[0].keyName"
label="期限名称"
clear-trigger="always"
input-align="right"
/>
<van-field
right-icon="arrow"
:disabled="disabled"
placeholder="请选择"
v-model="form.paymentPlanDetailDOList[0].statusName"
placeholder="请输入"
v-model="form.paymentPlanDetailDOList[0].status"
label="状态"
clear-trigger="always"
input-align="right"
/>
<van-field
right-icon="arrow"
:disabled="disabled"
placeholder="请选择"
placeholder="请输入"
v-model="form.paymentPlanDetailDOList[0].percentage"
label="比例"
clear-trigger="always"
input-align="right"
/>
<van-field
right-icon="arrow"
:disabled="disabled"
placeholder="请选择"
v-model="form.paymentPlanDetailDOList[0].actualAmount"
@ -192,7 +188,6 @@
/>
<van-field
right-icon="arrow"
:disabled="disabled"
placeholder="请选择"
v-model="form.remark"
@ -329,6 +324,12 @@ export default {
this.form.paymentPlanDetailDOList[0].planTime
).format('YYYY/MM/DD')
}
if (this.form.paymentPlanDetailDOList[0].status) {
this.form.paymentPlanDetailDOList[0].status =
this.form.paymentPlanDetailDOList[0].status == 2
? '通过'
: '待审核'
}
this.isAuthorised = res.data.isAuthorised
this.$nextTick(() => {
this.$refs.BottomBtn.handleFilterBtnList()

@ -197,12 +197,22 @@
/>
</div>
</div>
<div class="section mt5" v-if="['show'].includes(typeStr)">
<span class="line"> </span>审批流程
</div>
<ApprovalProcess
v-if="['show'].includes(typeStr)"
:processInstanceId="form.processInstanceId"
:accessId="accessId"
@onSetId="handleSetAccessId"
/>
</van-form>
</div>
<BottomBtn
ref="BottomBtn"
:isAuthorised="isAuthorised"
@onBtConfirm="handleBtConfirm"
:accessId="accessId"
/>
</div>
</template>
@ -217,7 +227,8 @@ export default {
name: 'contract-protocolFramework',
components: {
RePick: () => import('@/components/ReComponents/RePick'),
BottomBtn: () => import('@/components/BottomBtn')
BottomBtn: () => import('@/components/BottomBtn'),
ApprovalProcess: () => import('@/components/ApprovalProcess')
},
data() {
return {
@ -227,7 +238,8 @@ export default {
//
loading: true,
//
form: {}
form: {},
accessId: null
}
},
computed: {
@ -260,7 +272,9 @@ export default {
})
}
},
handleSetAccessId(id) {
this.accessId = id
},
handleBtConfirm() {
console.log(111)
}

@ -249,12 +249,12 @@ export default {
}
},
created() {
this.$loading(true)
this.handleInitForm()
/* this.$loading(true)
this.handleInitList().then(() => {
this.$loading(false)
this.handleInitForm()
})
console.log(this.getDictDatas(this.DICT_TYPE.BS_ENTERPRISEL_TYPE), 'pppp')
}) */
},
methods: {
handleInitForm() {
@ -293,22 +293,22 @@ export default {
},
handleInitList() {
return new Promise((resolve) => {
listData({
/* listData({
pageNo: 1,
pageSize: 50,
dictType: 'material_type'
}).then((res) => {
this.gysTypeList = res.data.list || []
resolve()
})
listData({
}) */
/* listData({
pageNo: 1,
pageSize: 50,
dictType: 'gys_level'
}).then((res) => {
this.gysLevelList = res.data.list || []
resolve()
})
}) */
})
},
handleBtConfirm() {

Loading…
Cancel
Save