ncszh
jwg 4 days ago
parent 520afd09fc
commit d9ed066b5d

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

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

@ -7,33 +7,58 @@
<div class="bt">{{}}</div> <div class="bt">{{}}</div>
</div> --> </div> -->
<div class="box-cr"> <div class="box-cr">
<div class="cr-bt" style="margin-top: 0.6rem;"> <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="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>
<div class="ct-md"> <div class="ct-md">
<div class="mt5" style="color:#333"> <div class="mt5" style="color: #333">
合同编号 {{itemData.contractNumber}} 合同编号 {{ itemData.contractNumber }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
合同名称{{itemData.contractName}} 合同名称{{ itemData.contractName }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
分期说明{{itemData.periodName}} 分期说明{{ itemData.periodName }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
供应商名称{{itemData.supplierName}} 供应商名称{{ itemData.supplierName }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
合同总金额{{itemData.contractSum}} 合同总金额{{ itemData.contractSum }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
付款金额{{itemData.actualAmount}} 付款金额{{ itemData.actualAmount }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
付款状态 {{itemData.payMentStatus == 1 ? '已付款' : '未付款'}} 付款状态 {{ itemData.payMentStatus == 1 ? '已付款' : '未付款' }}
</div> </div>
<div style="margin-top: 0.3rem;color:#333 "> <div style="margin-top: 0.3rem; color: #333">
付款确认时间 {{itemData.paymentAffirmTime ? dayjs(itemData.paymentAffirmTime).format('YY/MM/DD HH:ss') : ''}} 付款确认时间
{{
itemData.paymentAffirmTime
? dayjs(itemData.paymentAffirmTime).format('YY/MM/DD HH:ss')
: ''
}}
</div> </div>
</div> </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="['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" /> --> <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
<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> class="icon-box"
<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> @click="handleShow(itemData.id)"
<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> 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="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
<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> 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> </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> </div>
</template> </template>
<script> <script>
import { getDictDataLabel, handleFilterStatus } from "@/utils/dict"; import { getDictDataLabel, handleFilterStatus } from '@/utils/dict'
import { deletePaymentApply, cancelConfirmApi } from "@/api/bs/paymentApply"; import { deletePaymentApply, cancelConfirmApi } from '@/api/bs/paymentApply'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { Dialog } from 'vant' import { Dialog } from 'vant'
export default { export default {
props: { props: {
itemData: { itemData: {
required: true, required: true,
default: () => { } default: () => {}
}, }
}, },
components: { components: {
PayConfirmToast: () => import('@/components/PayConfirmToast'), PayConfirmToast: () => import('@/components/PayConfirmToast')
}, },
data() { data() {
return { return {
@ -84,13 +191,11 @@ export default {
this.handleUpdataInfo() this.handleUpdataInfo()
} }
}, },
mounted() { mounted() {},
},
computed: { computed: {
userInfo() { userInfo() {
return JSON.parse(window.localStorage.getItem('userInfo') || { dept: {} }) return JSON.parse(window.localStorage.getItem('userInfo') || { dept: {} })
}, }
}, },
methods: { methods: {
handleOnShow() { handleOnShow() {
@ -101,18 +206,17 @@ export default {
this.$emit('onFile', row) this.$emit('onFile', row)
}, },
handleCancelConfirm(row) { handleCancelConfirm(row) {
if ((row.status !== 2 || (row.status == 2 && row.payMentStatus !== 1))) { if (row.status !== 2 || (row.status == 2 && row.payMentStatus !== 1)) {
return return
} }
Dialog.confirm({ Dialog.confirm({
title: '提示', title: '提示',
message: '您确认要取消付款吗??', message: '您确认要取消付款吗??'
}) }).then(() => {
.then(() => { cancelConfirmApi(row.id).then(() => {
cancelConfirmApi(row.id).then(() => { this.$emit('onAllRefresh')
this.$emit('onAllRefresh')
})
}) })
})
}, },
handleConfirmToast() { handleConfirmToast() {
this.isShow = false this.isShow = false
@ -157,13 +261,12 @@ export default {
} }
Dialog.confirm({ Dialog.confirm({
title: '提示', title: '提示',
message: '你确定要删除吗?', message: '你确定要删除吗?'
}) }).then(() => {
.then(() => { deletePaymentApply(id).then(() => {
deletePaymentApply(id).then(() => { this.$emit('onAllRefresh')
this.$emit('onAllRefresh')
})
}) })
})
}, },
handleFilterStatus, handleFilterStatus,
getDictDataLabel, getDictDataLabel,
@ -178,12 +281,11 @@ export default {
handleUpdataInfo() { handleUpdataInfo() {
this.jumoStudentId = null this.jumoStudentId = null
this.$emit('onUpdataInfo', this.itemData.id) this.$emit('onUpdataInfo', this.itemData.id)
}, }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/style/common/newList.scss'; @import '@/assets/style/common/newList.scss';
</style> </style>

@ -21,7 +21,10 @@
</div> </div>
<div class="mt5" style="color: #333"> <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> </div>
</div> </div>

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

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

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

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

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

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

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

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

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

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

@ -2,69 +2,195 @@
<div id="orderHeader"> <div id="orderHeader">
<div class="hf-l-seacrch" v-if="isActSearch"> <div class="hf-l-seacrch" v-if="isActSearch">
<form action="/"> <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> </form>
</div> </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"> <div class="hf-l-list" v-show="!isActSearch">
<van-dropdown-menu class="hf-l-list-menu"> <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-view">
<div class="hf-drop-contain"> <div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass1(item.id)" v-for="item in spList" :key="item.value"> <div
<van-icon v-if="listQuery.supplierId && listQuery.supplierId == item.value" name="success" color="#0088FE" /> class="hr-drop-filter-item"
<span :class="{'hr-drop-filter-item-act': listQuery.supplierId && listQuery.supplierId == item.id }">{{item.companyName}}</span> @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> </div>
<div class="common-double-button"> <div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button> <van-button
<van-button class="common-double-button-r" @click="handleConfirm"></van-button> class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div> </div>
</div> </div>
</van-dropdown-item> </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-view">
<div class="hf-drop-contain"> <div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass2(item.value)" v-for="item in stateList" :key="item.value"> <div
<van-icon v-if="listQuery.status && listQuery.status == item.value" name="success" color="#0088FE" /> class="hr-drop-filter-item"
<span :class="{'hr-drop-filter-item-act': listQuery.status && listQuery.status == item.value }">{{item.label}}</span> @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> </div>
<div class="common-double-button"> <div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button> <van-button
<van-button class="common-double-button-r" @click="handleConfirm"></van-button> class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div> </div>
</div> </div>
</van-dropdown-item> </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-view">
<div class="hf-drop-contain"> <div class="hf-drop-contain">
<div class="hr-drop-filter-item" @click.stop="handleClass3(item.value)" v-for="item in payMentStatusList" :key="item.value"> <div
<van-icon v-if="listQuery.payMentStatus && listQuery.payMentStatus == item.value" name="success" color="#0088FE" /> class="hr-drop-filter-item"
<span :class="{'hr-drop-filter-item-act': listQuery.payMentStatus && listQuery.payMentStatus == item.value }">{{item.label}}</span> @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> </div>
<div class="common-double-button"> <div class="common-double-button">
<van-button class="common-double-button-l" @click="handleReset()"></van-button> <van-button
<van-button class="common-double-button-r" @click="handleConfirm"></van-button> class="common-double-button-l"
@click="handleReset()"
>重置</van-button
>
<van-button
class="common-double-button-r"
@click="handleConfirm"
>确定</van-button
>
</div> </div>
</div> </div>
</van-dropdown-item> </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-view">
<div class="hf-drop-quick" style="margin-top: 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-item" style="margin-bottom: 0">
<div class="hf-drop-quick-calendar"> <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>
</div> </div>
<div class="common-double-button"> <div class="common-double-button">
<van-button class="common-double-button-l" @click="handleDateReset(5)"></van-button> <van-button
<van-button class="common-double-button-r" @click="handleConfirm"></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>
</div> </div>
</van-dropdown-item> </van-dropdown-item>
@ -78,7 +204,15 @@
</div> </div>
</div> </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 moreContain">
<div class="common-popup-header"> <div class="common-popup-header">
<div></div> <div></div>
@ -90,13 +224,41 @@
</div> </div>
</div> </div>
<div class="common-popup-body moreContain-body"> <div class="common-popup-body moreContain-body">
<van-form ref="filterForm" :show-error-message="false" validate-trigger="" :submit-on-enter="false"> <van-form
<RePick v-model="listQuery.remark" label="bumen" :list="areaTree" isLastSelect isCascader isShowSearch title="行程" titleKey="name" isCascaderAllLevelNameSymnol isCell clearable /> 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> </van-form>
</div> </div>
<div class="common-popup-footer"> <div class="common-popup-footer">
<van-button style="width: 8rem; margin-right: 1rem;" round @click="handleMoreReset"></van-button> <van-button
<van-button type="info" style="width: 8rem;" round @click.stop="handleMoreConfirm">确认</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>
</div> </div>
</van-popup> </van-popup>
@ -105,17 +267,17 @@
<script> <script>
import { mapState, mapGetters } from 'vuex' import { mapState, mapGetters } from 'vuex'
import { getDictDatas, DICT_TYPE } from "@/utils/dict"; import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import { dayTextFormatter } from '@/utils' import { dayTextFormatter } from '@/utils'
import dayjs from 'dayjs' import dayjs from 'dayjs'
export default { export default {
props: { props: {
listType: String, // 'detail' listType: String, // 'detail'
paramProp: Object, paramProp: Object,
spList: Array, // spList: Array //
}, },
components: { components: {
RePick: () => import('@/components/ReComponents/RePick'), RePick: () => import('@/components/ReComponents/RePick')
}, },
data() { data() {
return { return {
@ -129,7 +291,7 @@ export default {
// { text: '', id: 0 }, // { text: '', id: 0 },
// { text: '', id: 1 } // { text: '', id: 1 }
// ], // ],
listQuery: {}, listQuery: {}
} }
}, },
computed: { computed: {
@ -175,14 +337,12 @@ export default {
}, },
{ {
label: '未付款', label: '未付款',
value: '0' value: '2'
} }
] ]
} }
}, },
methods: { methods: {
// //
handleDateReset() { handleDateReset() {
@ -190,7 +350,8 @@ export default {
this.defaultDate = null this.defaultDate = null
this.$refs.vanCalendar && this.$refs.vanCalendar.reset() this.$refs.vanCalendar && this.$refs.vanCalendar.reset()
setTimeout(() => { setTimeout(() => {
this.$refs.vanCalendar && this.$refs.vanCalendar.scrollToDate(new Date()) this.$refs.vanCalendar &&
this.$refs.vanCalendar.scrollToDate(new Date())
}) })
}, },
handleDateSelect(val) { handleDateSelect(val) {
@ -214,7 +375,6 @@ export default {
this.$emit('onListQuery', this.listQuery) this.$emit('onListQuery', this.listQuery)
}, },
// //
handleClass1(val) { handleClass1(val) {
this.listQuery.supplierId = val this.listQuery.supplierId = val
@ -223,13 +383,12 @@ export default {
this.listQuery.status = val this.listQuery.status = val
}, },
handleClass3(val) { handleClass3(val) {
console.log('val....');
this.listQuery.payMentStatus = val this.listQuery.payMentStatus = val
}, },
// type : 1 2 3 // type : 1 2 3
handleState(val, type) { handleState(val, type) {
if (type == 1) { if (type == 1) {
const i = this.listQuery.states.findIndex(item => item === val) const i = this.listQuery.states.findIndex((item) => item === val)
if (i > -1) { if (i > -1) {
this.listQuery.states.splice(i, 1) this.listQuery.states.splice(i, 1)
} else { } else {
@ -238,22 +397,20 @@ export default {
} }
if (type == 2 || type == 3) { 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) { if (i > -1) {
this.listQuery.types.splice(i, 1) this.listQuery.types.splice(i, 1)
} else { } else {
this.listQuery.types.push(val) this.listQuery.types.push(val)
} }
} }
}, },
handleInit() { handleInit() {
this.listQuery = { this.listQuery = {
...this.paramProp ...this.paramProp
} }
if (!(this.listQuery.paymentAffirmTime)) { if (!this.listQuery.paymentAffirmTime) {
this.handleDateReset() this.handleDateReset()
} }
}, },
@ -263,7 +420,7 @@ export default {
onSearch() { onSearch() {
this.handleConfirm() this.handleConfirm()
}, },
// //
handleSearch() { handleSearch() {
this.handleInit() this.handleInit()
this.listQuery.contractNumber = this.paramProp.contractNumber this.listQuery.contractNumber = this.paramProp.contractNumber
@ -293,11 +450,8 @@ export default {
this.listQuery.status = null this.listQuery.status = null
this.listQuery.supplierId = null this.listQuery.supplierId = null
this.listQuery.payMentStatus = null this.listQuery.payMentStatus = null
}, }
}
},
} }
</script> </script>

@ -1,22 +1,40 @@
<template> <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">
<div class="Re-select-header-cancel" @click="hanleCancel"></div> <div class="Re-select-header-cancel" @click="hanleCancel"></div>
<div class="Re-select-header-title">凭证</div> <div class="Re-select-header-title">凭证</div>
<div class="Re-select-header-confirm" @click="handleConfirm"></div> <div class="Re-select-header-confirm" @click="handleConfirm"></div>
</div> </div>
<div class="box-1"> <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> </div>
</van-popup> </van-popup>
</template> </template>
<script> <script>
import dayjs from 'dayjs'; import dayjs from 'dayjs'
import { ImagePreview } from 'vant'; import { ImagePreview } from 'vant'
import { uploadFileApi } from '@/api/common' import { uploadFileApi } from '@/api/common'
import { updatePaymentApply } from "@/api/bs/paymentApply"; import { updatePaymentApply } from '@/api/bs/paymentApply'
export default { export default {
props: { props: {
id: [Number, String], id: [Number, String],
@ -31,7 +49,7 @@ export default {
type: [Number, String] type: [Number, String]
}, },
components: { components: {
RePick: () => import('@/components/ReComponents/RePick'), RePick: () => import('@/components/ReComponents/RePick')
}, },
// //
@ -41,7 +59,7 @@ export default {
}, },
userList() { userList() {
return this.$store.getters.userList return this.$store.getters.userList
}, }
}, },
data() { data() {
return { return {
@ -49,7 +67,7 @@ export default {
imgTypeArr: ['image/jpeg', 'image/jpg', 'image/png'], imgTypeArr: ['image/jpeg', 'image/jpg', 'image/png'],
tableList: [], tableList: [],
demo: false, demo: false,
isShow: false, isShow: false
} }
}, },
watch: { watch: {
@ -59,7 +77,6 @@ export default {
if (val) { if (val) {
this.handleInitList() this.handleInitList()
} }
}, },
deep: true, deep: true,
immediate: true immediate: true
@ -81,35 +98,37 @@ export default {
} }
}, },
methods: { methods: {
handleImgDel() { handleImgDel() {},
},
uploadFile(params) { uploadFile(params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let FormDatas = new FormData() let FormDatas = new FormData()
FormDatas.append('file', params.file); FormDatas.append('file', params.file)
FormDatas.append('path', params.file.name); FormDatas.append('path', params.file.name)
uploadFileApi(FormDatas).then((res) => { uploadFileApi(FormDatas)
resolve({ .then((res) => {
name: params.file.name, resolve({
url: res.data name: params.file.name,
}); url: res.data.url
}).catch((err) => { })
reject(err) })
}) .catch((err) => {
}); reject(err)
})
})
}, },
uploadFiles(fileList) { uploadFiles(fileList) {
let promises = fileList.map((item) => this.uploadFile(item)); let promises = fileList.map((item) => this.uploadFile(item))
return Promise.all(promises); return Promise.all(promises)
}, },
onOversize() { onOversize() {
this.$fm('文件大小不能超过5M'); this.$fm('文件大小不能超过5M')
}, },
handleFileBeforeRead(file) { handleFileBeforeRead(file) {
if (Array.isArray(file)) { if (Array.isArray(file)) {
let flag = file.map(item => item.type).filter(item => !this.imgTypeArr.includes(item)) let flag = file
if ((flag && flag.length)) { .map((item) => item.type)
.filter((item) => !this.imgTypeArr.includes(item))
if (flag && flag.length) {
this.$fm('只能上传图片') this.$fm('只能上传图片')
return false return false
} }
@ -123,10 +142,14 @@ export default {
} }
}, },
handleSetCheck(index) { handleSetCheck(index) {
this.$set(this.tableList[index], 'checked', !this.tableList[index].checked) this.$set(
this.tableList[index],
'checked',
!this.tableList[index].checked
)
}, },
handleShowImg() { handleShowImg() {
ImagePreview(['https://img01.yzcdn.cn/vant/apple-1.jpg']); ImagePreview(['https://img01.yzcdn.cn/vant/apple-1.jpg'])
}, },
dayjs, dayjs,
handleNewDel(index) { handleNewDel(index) {
@ -140,38 +163,48 @@ export default {
if (this.disabled) { if (this.disabled) {
this.$emit('onConfirm') this.$emit('onConfirm')
} else { } else {
let newList = Array.isArray(this.fileList) ? this.fileList : [this.fileList] let newList = Array.isArray(this.fileList)
let arr = newList.filter(item => !item.name) || [] ? this.fileList
: [this.fileList]
let arr = newList.filter((item) => !item.name) || []
this.$loading(true, 'file') this.$loading(true, 'file')
if (arr.length) { if (arr.length) {
this.uploadFiles(arr).then((res) => { this.uploadFiles(arr)
this.fileList = this.fileList.filter(item => item.name).concat(res) .then((res) => {
updatePaymentApply({ this.fileList = this.fileList
id: this.id, .filter((item) => item.name)
files: this.fileList .concat(res)
}).then(() => { updatePaymentApply({
this.$forceCloseLoading() id: this.id,
this.$emit('onConfirm') files: this.fileList
}).catch(() => { })
.then(() => {
this.$forceCloseLoading()
this.$emit('onConfirm', this.fileList)
})
.catch(() => {
this.$forceCloseLoading()
})
this.$emit('onConfirm', this.fileList)
})
.catch(() => {
this.$forceCloseLoading() this.$forceCloseLoading()
}) })
this.$emit('onConfirm')
}).catch(() => {
this.$forceCloseLoading()
})
} else { } else {
updatePaymentApply({ updatePaymentApply({
id: this.id, id: this.id,
files: this.fileList 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.$loading(true, 'file')
// this.uploadFiles(newList).then((res) => { // this.uploadFiles(newList).then((res) => {
// // (res || []).map(item => { // // (res || []).map(item => {
@ -184,10 +217,9 @@ export default {
// this.$loading(false, 'file') // this.$loading(false, 'file')
// this.$fm('') // 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) || [] // let arr = (this.tableList.filter(item => item.checked)).map(item => item.id) || []
// this.$emit('onConfirm', arr) // this.$emit('onConfirm', arr)
}, },
hanleCancel() { hanleCancel() {
@ -195,10 +227,8 @@ export default {
}, },
handleDel(index) { handleDel(index) {
this.form.tripPartners.splice(index, 1) this.form.tripPartners.splice(index, 1)
}, }
}
},
} }
</script> </script>
@ -284,4 +314,4 @@ export default {
border-radius: 100%; border-radius: 100%;
margin: 0 0.5rem; margin: 0 0.5rem;
} }
</style> </style>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -197,12 +197,22 @@
/> />
</div> </div>
</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> </van-form>
</div> </div>
<BottomBtn <BottomBtn
ref="BottomBtn" ref="BottomBtn"
:isAuthorised="isAuthorised" :isAuthorised="isAuthorised"
@onBtConfirm="handleBtConfirm" @onBtConfirm="handleBtConfirm"
:accessId="accessId"
/> />
</div> </div>
</template> </template>
@ -217,7 +227,8 @@ export default {
name: 'contract-protocolFramework', name: 'contract-protocolFramework',
components: { components: {
RePick: () => import('@/components/ReComponents/RePick'), RePick: () => import('@/components/ReComponents/RePick'),
BottomBtn: () => import('@/components/BottomBtn') BottomBtn: () => import('@/components/BottomBtn'),
ApprovalProcess: () => import('@/components/ApprovalProcess')
}, },
data() { data() {
return { return {
@ -227,7 +238,8 @@ export default {
// //
loading: true, loading: true,
// //
form: {} form: {},
accessId: null
} }
}, },
computed: { computed: {
@ -260,7 +272,9 @@ export default {
}) })
} }
}, },
handleSetAccessId(id) {
this.accessId = id
},
handleBtConfirm() { handleBtConfirm() {
console.log(111) console.log(111)
} }

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

Loading…
Cancel
Save