供应商模块
parent
3f021b8b95
commit
5535b2a1f1
@ -0,0 +1,18 @@
|
||||
import request from '@/plugin/axios'
|
||||
|
||||
// 获得付款计划分页
|
||||
export function getMyPayPlanPage(query) {
|
||||
return request({
|
||||
url: 'bs/payment-plan/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 获得付款计划
|
||||
export function getPaymentPlan(id) {
|
||||
return request({
|
||||
url: '/bs/payment-plan/get?id=' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
import request from '@/plugin/axios'
|
||||
|
||||
|
||||
// 创建供应商信息
|
||||
export function createSupplierCompany(data) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/create",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 更新供应商信息
|
||||
export function updateSupplierCompany(data) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/update",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除供应商信息
|
||||
export function deleteSupplierCompany(id) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/delete?id=" + id,
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
|
||||
// 获得供应商信息
|
||||
export function getSupplierCompany(id) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/get?id=" + id,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
// 获得供应商信息分页
|
||||
export function getSupplierCompanyPage(query) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/page",
|
||||
method: "get",
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
// 获得供应商信息分页
|
||||
export function getSupplierCompanyPage1(query) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/page2",
|
||||
method: "get",
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
// 获得供应商信息
|
||||
export function getSupplierCompanyList(query) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/list",
|
||||
method: "get",
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
// 导出供应商信息 Excel
|
||||
export function exportSupplierCompanyExcel(query) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/export-excel",
|
||||
method: "get",
|
||||
params: query,
|
||||
responseType: "blob",
|
||||
});
|
||||
}
|
||||
|
||||
// 百度云接口识别
|
||||
export function baiduScanApi(data) {
|
||||
return request({
|
||||
url: "/bs/supplier-company/buildBusinessLicense",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// 下载用户导入模板
|
||||
export function srCttImportTemplate() {
|
||||
return request({
|
||||
url: "/bs/supplier-company/get-import-template",
|
||||
method: "get",
|
||||
responseType: "blob",
|
||||
});
|
||||
}
|
@ -0,0 +1,152 @@
|
||||
<template>
|
||||
<div class="student-card common-list-contain">
|
||||
<div class="student-base">
|
||||
<div class="list-box">
|
||||
<div class="box-cr">
|
||||
<div class="ct-md">
|
||||
<div class="mt5" style="color: #333">
|
||||
编号: {{ itemData.contractNumber }}
|
||||
</div>
|
||||
<div class="mt5" style="color: #333">
|
||||
名称: {{ itemData.contractName }}
|
||||
</div>
|
||||
<div class="mt5" style="color: #333">
|
||||
供应商名称: {{ itemData.supplierName }}
|
||||
</div>
|
||||
<div class="mt5" style="color: #333">
|
||||
比例名称: {{ itemData.percentageName }}
|
||||
</div>
|
||||
<div class="mt5" style="color: #333">
|
||||
付款金额: {{ itemData.actualAmount }}
|
||||
</div>
|
||||
<div class="mt5" style="color: #333">
|
||||
预计付款时间:
|
||||
{{ dayjs(itemData.planTime || '').format('YYYY/MM/DD') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-rt">
|
||||
<van-icon
|
||||
class="icon-box"
|
||||
v-hasPermi="['bs:supplier-contract:query']"
|
||||
@click="handleShow(itemData.id)"
|
||||
name="eye-o"
|
||||
color="#05A9FF"
|
||||
size="25"
|
||||
/>
|
||||
<van-icon
|
||||
class="icon-box"
|
||||
v-hasPermi="['procurement:supplierCt:update']"
|
||||
@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:supplierCt:del']"
|
||||
@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:supplier-contract:delete']" @click="handleMerge(itemData.id, itemData.status, itemData.creator)" name="envelop-o" :color="!(itemData.status==0 || (itemData.status==3 && userInfo.id ==itemData.creator)) ?'#05A9FF':'#ccc'" :size="25" /> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getDictDataLabel, handleFilterStatus } from '@/utils/dict'
|
||||
import { deleteSupplierContract } from '@/api/bs/supplierContract'
|
||||
import dayjs from 'dayjs'
|
||||
import { Dialog } from 'vant'
|
||||
export default {
|
||||
props: {
|
||||
itemData: {
|
||||
required: true,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
jumoStudentId: null
|
||||
}
|
||||
},
|
||||
activated() {
|
||||
if (this.jumoStudentId) {
|
||||
this.handleUpdataInfo()
|
||||
}
|
||||
},
|
||||
mounted() {},
|
||||
computed: {
|
||||
userInfo() {
|
||||
return JSON.parse(window.localStorage.getItem('userInfo') || { dept: {} })
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleMerge(id, status) {
|
||||
if (status == 0) {
|
||||
return
|
||||
}
|
||||
},
|
||||
handleEdit(id, status, creator) {
|
||||
if (!(status == 0 || (status == 3 && this.userInfo.id == creator))) {
|
||||
return
|
||||
}
|
||||
this.jumoStudentId = id
|
||||
this.$router.push({
|
||||
path: '/supplierMsg',
|
||||
query: { id, type: 'edit' }
|
||||
})
|
||||
},
|
||||
handleDel(id, status, creator) {
|
||||
if (!(status == 0 || (status == 3 && this.userInfo.id == creator))) {
|
||||
return
|
||||
}
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '你确定要删除吗?'
|
||||
}).then(() => {
|
||||
deleteSupplierContract(id).then(() => {
|
||||
this.$emit('onAllRefresh')
|
||||
})
|
||||
})
|
||||
},
|
||||
handleFilterStatus,
|
||||
getDictDataLabel,
|
||||
handleShow(id) {
|
||||
this.jumoStudentId = id
|
||||
this.$router.push({
|
||||
path: '/payPlan',
|
||||
query: { id, type: 'show' }
|
||||
})
|
||||
},
|
||||
dayjs,
|
||||
handleUpdataInfo() {
|
||||
this.jumoStudentId = null
|
||||
this.$emit('onUpdataInfo', this.itemData.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/style/common/newList.scss';
|
||||
</style>
|
@ -0,0 +1,253 @@
|
||||
<template>
|
||||
<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" />
|
||||
</form>
|
||||
</div>
|
||||
<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">
|
||||
<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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</van-dropdown-item>
|
||||
<!-- 类别 -->
|
||||
<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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</van-dropdown-item>
|
||||
</van-dropdown-menu>
|
||||
</div>
|
||||
<div class="hf-r-list" v-show="!isActSearch">
|
||||
<div class="hf-r-list-item" @click="handleSearch">
|
||||
<div class="hf-r-icon-bg">
|
||||
<van-icon name="search" class="hf-r-icon" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="common-popup-header-title">
|
||||
<span>筛选</span>
|
||||
</div>
|
||||
<div class="common-popup-header-close">
|
||||
<van-icon name="cross" @click="moreFilterShow = false" />
|
||||
</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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapGetters } from 'vuex'
|
||||
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, // 供应商列表
|
||||
},
|
||||
components: {
|
||||
RePick: () => import('@/components/ReComponents/RePick'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
defaultDate: null,
|
||||
dayTextFormatter: dayTextFormatter,
|
||||
isActSearch: false,
|
||||
moreFilterShow: false,
|
||||
isSearch: false,
|
||||
// courseStateList: [
|
||||
// { text: '全部', id: 25 },
|
||||
// { text: '已取消', id: 0 },
|
||||
// { text: '生效中', id: 1 }
|
||||
// ],
|
||||
listQuery: {},
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isHtab1() {
|
||||
let isShow = false
|
||||
if (this.paramProp.supplierId) isShow = true
|
||||
return isShow
|
||||
},
|
||||
isHtab4() {
|
||||
let isShow = false
|
||||
if (this.paramProp.contractType) isShow = true
|
||||
return isShow
|
||||
},
|
||||
areaTree() {
|
||||
return this.$store.getters.areaTree
|
||||
},
|
||||
isMoreAct() {
|
||||
let bol = false
|
||||
const listQuery = this.paramProp || {}
|
||||
if (listQuery.remark) {
|
||||
bol = true
|
||||
}
|
||||
return bol
|
||||
},
|
||||
stateList() {
|
||||
return getDictDatas(DICT_TYPE.BS_EXPENSE_APPLY_STATUS) || []
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
|
||||
methods: {
|
||||
// 日历重置
|
||||
handleDateReset() {
|
||||
this.listQuery.startDate = null
|
||||
this.listQuery.endDate = null
|
||||
this.defaultDate = null
|
||||
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 `
|
||||
}
|
||||
},
|
||||
handleQuickDate(e) {
|
||||
this.defaultDate = [dayjs(e.time[0]).toDate(), dayjs(e.time[1]).toDate()]
|
||||
this.listQuery.startDate = `${e.time[0]} 00:00:00`
|
||||
this.listQuery.endDate = `${e.time[1]} 23:59:59`
|
||||
},
|
||||
handleConfirm() {
|
||||
this.$refs.vanDropItem4 && this.$refs.vanDropItem4.toggle(false)
|
||||
this.$refs.vanDropItem1 && this.$refs.vanDropItem1.toggle(false)
|
||||
this.$emit('onListQuery', this.listQuery)
|
||||
},
|
||||
|
||||
onKeywordCancel() {
|
||||
this.listQuery.contractNumber = null
|
||||
this.isActSearch = false
|
||||
this.isSearch = false
|
||||
this.onKeywordSearch()
|
||||
},
|
||||
onKeywordSearch() {
|
||||
this.$emit('onListQuery', this.listQuery)
|
||||
},
|
||||
|
||||
|
||||
// 处理供应商
|
||||
handleClass1(val) {
|
||||
this.listQuery.supplierId = val
|
||||
},
|
||||
handleClass2(val) {
|
||||
this.listQuery.contractType = val
|
||||
},
|
||||
// 处理状态 type : 1 状态 2 缴费类型 3 换班类型
|
||||
handleState(val, type) {
|
||||
if (type == 1) {
|
||||
const i = this.listQuery.states.findIndex(item => item === val)
|
||||
if (i > -1) {
|
||||
this.listQuery.states.splice(i, 1)
|
||||
} else {
|
||||
this.listQuery.states.push(val)
|
||||
}
|
||||
}
|
||||
|
||||
if (type == 2 || type == 3) {
|
||||
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.startDate && this.listQuery.endDate)) {
|
||||
this.handleDateReset()
|
||||
}
|
||||
},
|
||||
handleDropOpen() {
|
||||
this.handleInit()
|
||||
},
|
||||
onSearch() {
|
||||
this.handleConfirm()
|
||||
},
|
||||
// 搜索
|
||||
handleSearch() {
|
||||
this.handleInit()
|
||||
this.listQuery.contractNumber = this.paramProp.contractNumber
|
||||
this.isActSearch = true
|
||||
},
|
||||
|
||||
handleSearchCancel() {
|
||||
this.listQuery.contractNumber = null
|
||||
this.isActSearch = false
|
||||
this.onKeywordSearch()
|
||||
},
|
||||
// 更多筛选
|
||||
handleMoreFilter() {
|
||||
this.handleInit()
|
||||
this.moreFilterShow = true
|
||||
},
|
||||
|
||||
// 更多重置
|
||||
handleMoreReset() {
|
||||
this.listQuery.remark = null
|
||||
},
|
||||
handleMoreConfirm() {
|
||||
this.$emit('onListQuery', this.listQuery)
|
||||
this.moreFilterShow = false
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery.contractType = null
|
||||
this.listQuery.supplierId = null
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './index.scss';
|
||||
</style>
|
@ -0,0 +1,311 @@
|
||||
<template>
|
||||
<!-- 付款计划列表 -->
|
||||
<div>
|
||||
<!-- 重新的搜索 -->
|
||||
<div style="padding: 10px">
|
||||
<van-field
|
||||
v-model="queryForm.contractNumber"
|
||||
placeholder="请输入"
|
||||
label="编号"
|
||||
clearable
|
||||
input-align="left"
|
||||
/>
|
||||
<van-field
|
||||
v-model="queryForm.companyName"
|
||||
placeholder="请输入"
|
||||
label="供应商名称"
|
||||
clearable
|
||||
input-align="left"
|
||||
/>
|
||||
<div
|
||||
style="display: flex; justify-content: space-around; margin-top: 10px"
|
||||
>
|
||||
<van-button
|
||||
type="info"
|
||||
@click="handleSearch"
|
||||
size="small"
|
||||
style="width: 80px"
|
||||
>搜索</van-button
|
||||
>
|
||||
<van-button
|
||||
type="info"
|
||||
@click="rstSearch"
|
||||
size="small"
|
||||
style="width: 80px"
|
||||
>重置</van-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<RMList
|
||||
:moreLoading.sync="moreLoading"
|
||||
:refreshing.sync="refreshing"
|
||||
:finished.sync="finished"
|
||||
@onLoad="handleLoad"
|
||||
@onRefresh="handleRefresh"
|
||||
isMore
|
||||
:tableList="tableList"
|
||||
>
|
||||
<div>
|
||||
<MyPayPlanListCard
|
||||
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-btn" @click="handleTopPage">
|
||||
<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-btn" @click="handleToAdd">
|
||||
<img src="@/assets/images/icons/add.png" alt="" />
|
||||
<span>添加申请</span>
|
||||
</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="" />
|
||||
<span>返回首页</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getScrollTop } from '@/utils'
|
||||
import { getMyPayPlanPage } from '@/api/bs/myPayPlan'
|
||||
import { getDictDatas } from '@/utils/dict'
|
||||
import { mapState } from 'vuex'
|
||||
import dayjs from 'dayjs'
|
||||
export default {
|
||||
props: {
|
||||
listType: String // EnrollmentOrder: 报名订单 EnrollmentCollection: 报名收款 ShiftRecord: 换班记录 WaitPay: 待支付
|
||||
},
|
||||
components: {
|
||||
RMList: () => import('@/components/ReComponents/RMList'),
|
||||
MyPayPlanListCard: () => import('@/components/MyPayPlanListCard'),
|
||||
RePick: () => import('@/components/ReComponents/RePick')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
height: 0,
|
||||
moreLoading: false,
|
||||
refreshing: false,
|
||||
finished: false,
|
||||
tableList: [],
|
||||
spList: [],
|
||||
listQuery: {
|
||||
pageNo: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
// 搜索表单
|
||||
queryForm: {
|
||||
contractNumber: null,
|
||||
companyName: null
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
singlePageSize: (state) => state.common.setting.singlePageSize,
|
||||
pageSize: (state) => state.common.setting.pageSize
|
||||
})
|
||||
},
|
||||
activated() {
|
||||
this.handleScrollInit()
|
||||
},
|
||||
deactivated() {
|
||||
window.removeEventListener('scroll', this.handleScroll)
|
||||
},
|
||||
created() {
|
||||
this.handleInit()
|
||||
},
|
||||
methods: {
|
||||
// 搜索
|
||||
handleSearch() {
|
||||
let queryParams = {
|
||||
pageNo: 1,
|
||||
pageSize: this.singlePageSize,
|
||||
...this.queryForm
|
||||
}
|
||||
this.$loading(true, 'tableLoading')
|
||||
getMyPayPlanPage(queryParams)
|
||||
.then((res) => {
|
||||
let resList = (res.data && res.data.list) || []
|
||||
this.tableList = resList?.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
percentageName: item.paymentPlanConfigDO
|
||||
? item.paymentPlanConfigDO.name
|
||||
: null
|
||||
}
|
||||
})
|
||||
})
|
||||
.finally(() => {
|
||||
this.$nextTick(() => {
|
||||
this.refreshing = false
|
||||
this.$loading(false, 'tableLoading')
|
||||
})
|
||||
// this.$loading(false, `cTableLoading_${this.listType}`)
|
||||
})
|
||||
},
|
||||
// 重置
|
||||
rstSearch() {
|
||||
this.handleInit()
|
||||
},
|
||||
handleBack() {
|
||||
history.back()
|
||||
},
|
||||
handleInitSpList() {
|
||||
let queryParams = {
|
||||
pageNo: 1,
|
||||
pageSize: this.singlePageSize
|
||||
}
|
||||
getMyPayPlanPage(queryParams).then((res) => {
|
||||
this.spList = res.data.list || []
|
||||
})
|
||||
},
|
||||
handleSetSingle(id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let listQuery = {
|
||||
pageNo: 1,
|
||||
pageSize: this.singlePageSize
|
||||
}
|
||||
getMyPayPlanPage(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')
|
||||
})
|
||||
},
|
||||
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')
|
||||
]
|
||||
}
|
||||
this.finished = false
|
||||
this.handleRefresh()
|
||||
},
|
||||
handleScroll() {
|
||||
getScrollTop().then((height) => {
|
||||
this.height = height
|
||||
})
|
||||
},
|
||||
handleScrollInit() {
|
||||
window.addEventListener('scroll', this.handleScroll)
|
||||
window.scrollTo(0, this.height)
|
||||
// this.handleInit()
|
||||
},
|
||||
|
||||
handleScrollToTop() {
|
||||
window.scrollTo(0, 0)
|
||||
this.height = 0
|
||||
},
|
||||
handleToAdd() {
|
||||
/* this.$router.push({
|
||||
path: '/supplier',
|
||||
query: {
|
||||
type: 'add'
|
||||
}
|
||||
}) */
|
||||
},
|
||||
handleAllRefresh() {
|
||||
// this.getTableList('refresh')
|
||||
this.handleRefresh()
|
||||
},
|
||||
handleInit() {
|
||||
this.handleInitSpList()
|
||||
this.getTableList('init')
|
||||
},
|
||||
|
||||
handleTopPage() {
|
||||
window.scrollTo(0, 0)
|
||||
this.$nextTick(() => {
|
||||
this.height = 0
|
||||
})
|
||||
},
|
||||
handleRefresh() {
|
||||
this.listQuery.pageNo = 1
|
||||
this.finished = false
|
||||
this.getTableList('refresh')
|
||||
},
|
||||
handleLoad() {
|
||||
this.listQuery.pageNo += 1
|
||||
this.getTableList('more')
|
||||
},
|
||||
|
||||
getTableList(val) {
|
||||
// const { shellIdsLocal, collegeInfoIdLocal, startDate, endDate, keyword, type, method, targets, usePersonId, teacherIds, chargePersonIds } = this.listQuery
|
||||
const query = {
|
||||
...this.listQuery
|
||||
}
|
||||
this.moreLoading = true
|
||||
this.$loading(true, 'tableLoading')
|
||||
getMyPayPlanPage(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.tableList = (this.tableList || []).map((item) => {
|
||||
return {
|
||||
...item,
|
||||
percentageName: item.paymentPlanConfigDO
|
||||
? item.paymentPlanConfigDO.name
|
||||
: null
|
||||
}
|
||||
})
|
||||
})
|
||||
.finally(() => {
|
||||
this.$nextTick(() => {
|
||||
this.moreLoading = false
|
||||
this.refreshing = false
|
||||
this.$loading(false, 'tableLoading')
|
||||
})
|
||||
// this.$loading(false, `cTableLoading_${this.listType}`)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
// @import '~@/assets/style/common/list.scss';
|
||||
</style>
|
@ -0,0 +1,163 @@
|
||||
$hf-contain-p: 0 1.2rem;
|
||||
$hf-contain-f: 0.76rem;
|
||||
$hf-high-color: #0088fe;
|
||||
// 激活的颜色
|
||||
$hf-high-color: #0088fe;
|
||||
.header-filter {
|
||||
.hf-r-icon-bg-act {
|
||||
.van-icon {
|
||||
color: $hf-high-color !important;
|
||||
}
|
||||
}
|
||||
background: #ffffff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: $hf-contain-p;
|
||||
|
||||
.hf-l-list {
|
||||
.hf-l-list-menu {
|
||||
/deep/.van-dropdown-menu__bar {
|
||||
height: auto;
|
||||
box-shadow: none;
|
||||
|
||||
.van-dropdown-menu__item {
|
||||
flex: inherit;
|
||||
margin-right: 1rem;
|
||||
|
||||
.van-dropdown-menu__title {
|
||||
padding: 0.6rem 0.4rem 0.6rem 0;
|
||||
font-size: $hf-contain-f;
|
||||
|
||||
&::after {
|
||||
border: 1px solid;
|
||||
padding: 0.1rem;
|
||||
border-color: transparent transparent #333333 #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.van-dropdown-menu__title--active {
|
||||
color: $hf-high-color;
|
||||
|
||||
&::after {
|
||||
border-color: transparent transparent $hf-high-color $hf-high-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-r-list {
|
||||
display: flex;
|
||||
|
||||
.hf-r-list-item {
|
||||
margin-left: 0.4rem;
|
||||
|
||||
.hf-r-icon-bg {
|
||||
background: #d7d7d7;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
border-radius: 1.5rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-drop-view {
|
||||
padding: $hf-contain-p;
|
||||
padding-bottom: 0.8rem;
|
||||
|
||||
.hf-drop-contain {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-bottom: 0.8rem;
|
||||
|
||||
.hr-drop-filter-item {
|
||||
padding: $hf-contain-p;
|
||||
font-size: $hf-contain-f;
|
||||
width: 50%;
|
||||
box-sizing: border-box;
|
||||
padding: 0.8rem 0;
|
||||
}
|
||||
|
||||
.hr-drop-filter-item-act {
|
||||
color: $hf-high-color;
|
||||
}
|
||||
}
|
||||
|
||||
// 快捷筛选
|
||||
.hf-drop-quick {
|
||||
margin-top: 1rem;
|
||||
|
||||
.hf-drop-quick-item {
|
||||
margin-bottom: 1.5rem;
|
||||
|
||||
.hf-drop-quick-title {
|
||||
color: #333333;
|
||||
font-size: 0.84rem;
|
||||
}
|
||||
|
||||
.hf-drop-quick-list {
|
||||
display: flex;
|
||||
margin: 0.6rem 0;
|
||||
font-size: $hf-contain-f;
|
||||
|
||||
.hf-drop-quick-list-item {
|
||||
border: 1px solid #f3f3f3;
|
||||
background: #f3f3f3;
|
||||
margin-right: 0.8rem;
|
||||
padding: 0.4rem 0.6rem;
|
||||
border-radius: 1rem;
|
||||
transition: background-color, color 0.2s linear;
|
||||
}
|
||||
|
||||
.hf-drop-quick-list-item-act {
|
||||
background: #ffffff;
|
||||
color: $hf-high-color;
|
||||
border: 1px solid $hf-high-color;
|
||||
}
|
||||
|
||||
.hf-drop-quick-list-item-checkbox {
|
||||
margin-right: 1rem;
|
||||
|
||||
/deep/.van-checkbox__label {
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-drop-quick-calendar {
|
||||
/deep/.van-calendar__header {
|
||||
box-shadow: none;
|
||||
border-bottom: 1px solid #eeeeee;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-drop-contain-empty {
|
||||
color: #666666;
|
||||
text-align: center;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.searchInput {
|
||||
padding: 0.3rem 0;
|
||||
width: 100%;
|
||||
|
||||
.van-search__content {
|
||||
background: #ffffff;
|
||||
border: 1px solid #f3f3f3;
|
||||
border-radius: 0.3rem;
|
||||
|
||||
/deep/input {
|
||||
caret-color: #0088fe;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
<template>
|
||||
<!-- 付款计划列表 -->
|
||||
<div>
|
||||
<UserList listType="myPayPlan" ref="userList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'contract-myPayPlan',
|
||||
created() {
|
||||
// 注入缓存
|
||||
this.$EventBus.$emit('handleAddLive', 'contract-myPayPlan')
|
||||
},
|
||||
activated() {
|
||||
// 清除合同审批缓存
|
||||
this.$EventBus.$emit('handleResetLive', 'contract-myPayPlan')
|
||||
},
|
||||
components: {
|
||||
UserList: () => import('./components/UserList')
|
||||
}
|
||||
}
|
||||
</script>
|
@ -0,0 +1,253 @@
|
||||
<template>
|
||||
<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" />
|
||||
</form>
|
||||
</div>
|
||||
<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">
|
||||
<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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</van-dropdown-item>
|
||||
<!-- 类别 -->
|
||||
<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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</van-dropdown-item>
|
||||
</van-dropdown-menu>
|
||||
</div>
|
||||
<div class="hf-r-list" v-show="!isActSearch">
|
||||
<div class="hf-r-list-item" @click="handleSearch">
|
||||
<div class="hf-r-icon-bg">
|
||||
<van-icon name="search" class="hf-r-icon" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="common-popup-header-title">
|
||||
<span>筛选</span>
|
||||
</div>
|
||||
<div class="common-popup-header-close">
|
||||
<van-icon name="cross" @click="moreFilterShow = false" />
|
||||
</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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapGetters } from 'vuex'
|
||||
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, // 供应商列表
|
||||
},
|
||||
components: {
|
||||
RePick: () => import('@/components/ReComponents/RePick'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
defaultDate: null,
|
||||
dayTextFormatter: dayTextFormatter,
|
||||
isActSearch: false,
|
||||
moreFilterShow: false,
|
||||
isSearch: false,
|
||||
// courseStateList: [
|
||||
// { text: '全部', id: 25 },
|
||||
// { text: '已取消', id: 0 },
|
||||
// { text: '生效中', id: 1 }
|
||||
// ],
|
||||
listQuery: {},
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isHtab1() {
|
||||
let isShow = false
|
||||
if (this.paramProp.supplierId) isShow = true
|
||||
return isShow
|
||||
},
|
||||
isHtab4() {
|
||||
let isShow = false
|
||||
if (this.paramProp.contractType) isShow = true
|
||||
return isShow
|
||||
},
|
||||
areaTree() {
|
||||
return this.$store.getters.areaTree
|
||||
},
|
||||
isMoreAct() {
|
||||
let bol = false
|
||||
const listQuery = this.paramProp || {}
|
||||
if (listQuery.remark) {
|
||||
bol = true
|
||||
}
|
||||
return bol
|
||||
},
|
||||
stateList() {
|
||||
return getDictDatas(DICT_TYPE.BS_EXPENSE_APPLY_STATUS) || []
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
|
||||
methods: {
|
||||
// 日历重置
|
||||
handleDateReset() {
|
||||
this.listQuery.startDate = null
|
||||
this.listQuery.endDate = null
|
||||
this.defaultDate = null
|
||||
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 `
|
||||
}
|
||||
},
|
||||
handleQuickDate(e) {
|
||||
this.defaultDate = [dayjs(e.time[0]).toDate(), dayjs(e.time[1]).toDate()]
|
||||
this.listQuery.startDate = `${e.time[0]} 00:00:00`
|
||||
this.listQuery.endDate = `${e.time[1]} 23:59:59`
|
||||
},
|
||||
handleConfirm() {
|
||||
this.$refs.vanDropItem4 && this.$refs.vanDropItem4.toggle(false)
|
||||
this.$refs.vanDropItem1 && this.$refs.vanDropItem1.toggle(false)
|
||||
this.$emit('onListQuery', this.listQuery)
|
||||
},
|
||||
|
||||
onKeywordCancel() {
|
||||
this.listQuery.contractNumber = null
|
||||
this.isActSearch = false
|
||||
this.isSearch = false
|
||||
this.onKeywordSearch()
|
||||
},
|
||||
onKeywordSearch() {
|
||||
this.$emit('onListQuery', this.listQuery)
|
||||
},
|
||||
|
||||
|
||||
// 处理供应商
|
||||
handleClass1(val) {
|
||||
this.listQuery.supplierId = val
|
||||
},
|
||||
handleClass2(val) {
|
||||
this.listQuery.contractType = val
|
||||
},
|
||||
// 处理状态 type : 1 状态 2 缴费类型 3 换班类型
|
||||
handleState(val, type) {
|
||||
if (type == 1) {
|
||||
const i = this.listQuery.states.findIndex(item => item === val)
|
||||
if (i > -1) {
|
||||
this.listQuery.states.splice(i, 1)
|
||||
} else {
|
||||
this.listQuery.states.push(val)
|
||||
}
|
||||
}
|
||||
|
||||
if (type == 2 || type == 3) {
|
||||
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.startDate && this.listQuery.endDate)) {
|
||||
this.handleDateReset()
|
||||
}
|
||||
},
|
||||
handleDropOpen() {
|
||||
this.handleInit()
|
||||
},
|
||||
onSearch() {
|
||||
this.handleConfirm()
|
||||
},
|
||||
// 搜索
|
||||
handleSearch() {
|
||||
this.handleInit()
|
||||
this.listQuery.contractNumber = this.paramProp.contractNumber
|
||||
this.isActSearch = true
|
||||
},
|
||||
|
||||
handleSearchCancel() {
|
||||
this.listQuery.contractNumber = null
|
||||
this.isActSearch = false
|
||||
this.onKeywordSearch()
|
||||
},
|
||||
// 更多筛选
|
||||
handleMoreFilter() {
|
||||
this.handleInit()
|
||||
this.moreFilterShow = true
|
||||
},
|
||||
|
||||
// 更多重置
|
||||
handleMoreReset() {
|
||||
this.listQuery.remark = null
|
||||
},
|
||||
handleMoreConfirm() {
|
||||
this.$emit('onListQuery', this.listQuery)
|
||||
this.moreFilterShow = false
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery.contractType = null
|
||||
this.listQuery.supplierId = null
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './index.scss';
|
||||
</style>
|
@ -0,0 +1,340 @@
|
||||
<template>
|
||||
<!-- 供应商信息列表 -->
|
||||
<div>
|
||||
<!-- <HeaderFilter
|
||||
:listType="listType"
|
||||
:spList="spList"
|
||||
@onListQuery="handleListQuery"
|
||||
:paramProp="listQuery"
|
||||
/> -->
|
||||
<!-- 重新的搜索 -->
|
||||
<div style="padding: 10px">
|
||||
<van-field
|
||||
v-model="queryForm.companyName"
|
||||
placeholder="请输入"
|
||||
label="供应商名称"
|
||||
clearable
|
||||
input-align="left"
|
||||
/>
|
||||
<RePick
|
||||
v-model="queryForm.companyType"
|
||||
titleKey="label"
|
||||
idKey="value"
|
||||
title="供应商类别"
|
||||
:name="`companyType`"
|
||||
label="供应商类别"
|
||||
:list="getDictDatas(DICT_TYPE.BS_ENTERPRISEL_TYPE)"
|
||||
isCell
|
||||
clearable
|
||||
input-align="left"
|
||||
/>
|
||||
<div
|
||||
style="display: flex; justify-content: space-around; margin-top: 10px"
|
||||
>
|
||||
<van-button
|
||||
type="info"
|
||||
@click="handleSearch"
|
||||
size="small"
|
||||
style="width: 80px"
|
||||
>搜索</van-button
|
||||
>
|
||||
<van-button
|
||||
type="info"
|
||||
@click="rstSearch"
|
||||
size="small"
|
||||
style="width: 80px"
|
||||
>重置</van-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<RMList
|
||||
:moreLoading.sync="moreLoading"
|
||||
:refreshing.sync="refreshing"
|
||||
:finished.sync="finished"
|
||||
@onLoad="handleLoad"
|
||||
@onRefresh="handleRefresh"
|
||||
isMore
|
||||
:tableList="tableList"
|
||||
>
|
||||
<div>
|
||||
<MysupplierMsgListCard
|
||||
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-btn" @click="handleTopPage">
|
||||
<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-btn" @click="handleToAdd">
|
||||
<img src="@/assets/images/icons/add.png" alt="" />
|
||||
<span>添加申请</span>
|
||||
</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="" />
|
||||
<span>返回首页</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getScrollTop } from '@/utils'
|
||||
// import { getSupplierCompanyPage } from '@/api/bs/quotationSheet'
|
||||
// import { getSupplierContractPage } from '@/api/bs/supplierContract' //搜索列表
|
||||
import {
|
||||
createSupplierCompany,
|
||||
deleteSupplierCompany,
|
||||
exportSupplierCompanyExcel,
|
||||
getSupplierCompanyPage,
|
||||
updateSupplierCompany,
|
||||
srCttImportTemplate
|
||||
} from '@/api/bs/supplierMsg'
|
||||
import {
|
||||
getDictDataLabel,
|
||||
handleFilterStatus,
|
||||
getDictDatas
|
||||
} from '@/utils/dict'
|
||||
import { mapState } from 'vuex'
|
||||
import dayjs from 'dayjs'
|
||||
export default {
|
||||
props: {
|
||||
listType: String // EnrollmentOrder: 报名订单 EnrollmentCollection: 报名收款 ShiftRecord: 换班记录 WaitPay: 待支付
|
||||
},
|
||||
components: {
|
||||
// HeaderFilter: () => import('./HeaderFilter.vue'),
|
||||
RMList: () => import('@/components/ReComponents/RMList'),
|
||||
MysupplierMsgListCard: () => import('@/components/MysupplierMsgListCard'),
|
||||
RePick: () => import('@/components/ReComponents/RePick')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
height: 0,
|
||||
moreLoading: false,
|
||||
refreshing: false,
|
||||
finished: false,
|
||||
tableList: [],
|
||||
spList: [],
|
||||
listQuery: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
companyName: null,
|
||||
companyNumber: null,
|
||||
companyType: null,
|
||||
legalPerson: null,
|
||||
phone: null,
|
||||
creditCode: null,
|
||||
address: null,
|
||||
businessStratDate: [],
|
||||
businessEndDate: [],
|
||||
capital: null,
|
||||
bankName: null,
|
||||
bankNumber: null,
|
||||
bankOfDeposit: null,
|
||||
isRegister: null,
|
||||
status: null,
|
||||
remark: null,
|
||||
files: null,
|
||||
createTime: []
|
||||
},
|
||||
// 搜索表单
|
||||
queryForm: {
|
||||
companyName: null,
|
||||
companyType: null
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
singlePageSize: (state) => state.common.setting.singlePageSize,
|
||||
pageSize: (state) => state.common.setting.pageSize
|
||||
})
|
||||
},
|
||||
activated() {
|
||||
this.handleScrollInit()
|
||||
},
|
||||
deactivated() {
|
||||
window.removeEventListener('scroll', this.handleScroll)
|
||||
},
|
||||
created() {
|
||||
this.handleInit()
|
||||
console.log(getDictDatas(this.DICT_TYPE.BS_ENTERPRISEL_TYPE))
|
||||
},
|
||||
methods: {
|
||||
// 搜索
|
||||
handleSearch() {
|
||||
let queryParams = {
|
||||
pageNo: 1,
|
||||
pageSize: this.singlePageSize,
|
||||
...this.queryForm
|
||||
}
|
||||
this.$loading(true, 'tableLoading')
|
||||
getSupplierCompanyPage(queryParams)
|
||||
.then((res) => {
|
||||
let resList = (res.data && res.data.list) || []
|
||||
this.tableList = resList
|
||||
})
|
||||
.finally(() => {
|
||||
this.$nextTick(() => {
|
||||
this.refreshing = false
|
||||
this.$loading(false, 'tableLoading')
|
||||
})
|
||||
// this.$loading(false, `cTableLoading_${this.listType}`)
|
||||
})
|
||||
},
|
||||
// 重置
|
||||
rstSearch() {
|
||||
this.handleInit()
|
||||
},
|
||||
handleBack() {
|
||||
history.back()
|
||||
},
|
||||
handleInitSpList() {
|
||||
let queryParams = {
|
||||
pageNo: 1,
|
||||
pageSize: this.singlePageSize
|
||||
}
|
||||
getSupplierCompanyPage(queryParams).then((res) => {
|
||||
this.spList = res.data.list || []
|
||||
})
|
||||
},
|
||||
handleSetSingle(id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let listQuery = {
|
||||
pageNo: 1,
|
||||
pageSize: this.singlePageSize
|
||||
}
|
||||
getSupplierCompanyPage(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')
|
||||
})
|
||||
},
|
||||
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')
|
||||
]
|
||||
}
|
||||
this.finished = false
|
||||
this.handleRefresh()
|
||||
},
|
||||
handleScroll() {
|
||||
getScrollTop().then((height) => {
|
||||
this.height = height
|
||||
})
|
||||
},
|
||||
handleScrollInit() {
|
||||
window.addEventListener('scroll', this.handleScroll)
|
||||
window.scrollTo(0, this.height)
|
||||
// this.handleInit()
|
||||
},
|
||||
|
||||
handleScrollToTop() {
|
||||
window.scrollTo(0, 0)
|
||||
this.height = 0
|
||||
},
|
||||
handleToAdd() {
|
||||
/* this.$router.push({
|
||||
path: '/supplier',
|
||||
query: {
|
||||
type: 'add'
|
||||
}
|
||||
}) */
|
||||
},
|
||||
handleAllRefresh() {
|
||||
// this.getTableList('refresh')
|
||||
this.handleRefresh()
|
||||
},
|
||||
handleInit() {
|
||||
this.handleInitSpList()
|
||||
this.getTableList('init')
|
||||
},
|
||||
|
||||
handleTopPage() {
|
||||
window.scrollTo(0, 0)
|
||||
this.$nextTick(() => {
|
||||
this.height = 0
|
||||
})
|
||||
},
|
||||
handleRefresh() {
|
||||
this.listQuery.pageNo = 1
|
||||
this.finished = false
|
||||
this.getTableList('refresh')
|
||||
},
|
||||
handleLoad() {
|
||||
this.listQuery.pageNo += 1
|
||||
this.getTableList('more')
|
||||
},
|
||||
|
||||
getTableList(val) {
|
||||
// const { shellIdsLocal, collegeInfoIdLocal, startDate, endDate, keyword, type, method, targets, usePersonId, teacherIds, chargePersonIds } = this.listQuery
|
||||
const query = {
|
||||
...this.listQuery
|
||||
}
|
||||
this.moreLoading = true
|
||||
this.$loading(true, 'tableLoading')
|
||||
getSupplierCompanyPage(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')
|
||||
})
|
||||
// this.$loading(false, `cTableLoading_${this.listType}`)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
// @import '~@/assets/style/common/list.scss';
|
||||
</style>
|
@ -0,0 +1,163 @@
|
||||
$hf-contain-p: 0 1.2rem;
|
||||
$hf-contain-f: 0.76rem;
|
||||
$hf-high-color: #0088fe;
|
||||
// 激活的颜色
|
||||
$hf-high-color: #0088fe;
|
||||
.header-filter {
|
||||
.hf-r-icon-bg-act {
|
||||
.van-icon {
|
||||
color: $hf-high-color !important;
|
||||
}
|
||||
}
|
||||
background: #ffffff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: $hf-contain-p;
|
||||
|
||||
.hf-l-list {
|
||||
.hf-l-list-menu {
|
||||
/deep/.van-dropdown-menu__bar {
|
||||
height: auto;
|
||||
box-shadow: none;
|
||||
|
||||
.van-dropdown-menu__item {
|
||||
flex: inherit;
|
||||
margin-right: 1rem;
|
||||
|
||||
.van-dropdown-menu__title {
|
||||
padding: 0.6rem 0.4rem 0.6rem 0;
|
||||
font-size: $hf-contain-f;
|
||||
|
||||
&::after {
|
||||
border: 1px solid;
|
||||
padding: 0.1rem;
|
||||
border-color: transparent transparent #333333 #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.van-dropdown-menu__title--active {
|
||||
color: $hf-high-color;
|
||||
|
||||
&::after {
|
||||
border-color: transparent transparent $hf-high-color $hf-high-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-r-list {
|
||||
display: flex;
|
||||
|
||||
.hf-r-list-item {
|
||||
margin-left: 0.4rem;
|
||||
|
||||
.hf-r-icon-bg {
|
||||
background: #d7d7d7;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
border-radius: 1.5rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-drop-view {
|
||||
padding: $hf-contain-p;
|
||||
padding-bottom: 0.8rem;
|
||||
|
||||
.hf-drop-contain {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-bottom: 0.8rem;
|
||||
|
||||
.hr-drop-filter-item {
|
||||
padding: $hf-contain-p;
|
||||
font-size: $hf-contain-f;
|
||||
width: 50%;
|
||||
box-sizing: border-box;
|
||||
padding: 0.8rem 0;
|
||||
}
|
||||
|
||||
.hr-drop-filter-item-act {
|
||||
color: $hf-high-color;
|
||||
}
|
||||
}
|
||||
|
||||
// 快捷筛选
|
||||
.hf-drop-quick {
|
||||
margin-top: 1rem;
|
||||
|
||||
.hf-drop-quick-item {
|
||||
margin-bottom: 1.5rem;
|
||||
|
||||
.hf-drop-quick-title {
|
||||
color: #333333;
|
||||
font-size: 0.84rem;
|
||||
}
|
||||
|
||||
.hf-drop-quick-list {
|
||||
display: flex;
|
||||
margin: 0.6rem 0;
|
||||
font-size: $hf-contain-f;
|
||||
|
||||
.hf-drop-quick-list-item {
|
||||
border: 1px solid #f3f3f3;
|
||||
background: #f3f3f3;
|
||||
margin-right: 0.8rem;
|
||||
padding: 0.4rem 0.6rem;
|
||||
border-radius: 1rem;
|
||||
transition: background-color, color 0.2s linear;
|
||||
}
|
||||
|
||||
.hf-drop-quick-list-item-act {
|
||||
background: #ffffff;
|
||||
color: $hf-high-color;
|
||||
border: 1px solid $hf-high-color;
|
||||
}
|
||||
|
||||
.hf-drop-quick-list-item-checkbox {
|
||||
margin-right: 1rem;
|
||||
|
||||
/deep/.van-checkbox__label {
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-drop-quick-calendar {
|
||||
/deep/.van-calendar__header {
|
||||
box-shadow: none;
|
||||
border-bottom: 1px solid #eeeeee;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hf-drop-contain-empty {
|
||||
color: #666666;
|
||||
text-align: center;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.searchInput {
|
||||
padding: 0.3rem 0;
|
||||
width: 100%;
|
||||
|
||||
.van-search__content {
|
||||
background: #ffffff;
|
||||
border: 1px solid #f3f3f3;
|
||||
border-radius: 0.3rem;
|
||||
|
||||
/deep/input {
|
||||
caret-color: #0088fe;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
<template>
|
||||
<!-- 供应商信息列表 -->
|
||||
<div>
|
||||
<UserList listType="mySupplierMsg" ref="userList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'contract-mySupplierMsg',
|
||||
created() {
|
||||
// 注入缓存
|
||||
this.$EventBus.$emit('handleAddLive', 'contract-mySupplierMsg')
|
||||
},
|
||||
activated() {
|
||||
// 清除合同审批缓存
|
||||
this.$EventBus.$emit('handleResetLive', 'contract-mySupplierMsg')
|
||||
},
|
||||
components: {
|
||||
UserList: () => import('./components/UserList')
|
||||
}
|
||||
}
|
||||
</script>
|
@ -0,0 +1,337 @@
|
||||
<template>
|
||||
<div class="common-list-contain">
|
||||
<div class="common-form">
|
||||
<van-form
|
||||
ref="form"
|
||||
:show-error-message="false"
|
||||
validate-trigger=""
|
||||
:submit-on-enter="false"
|
||||
>
|
||||
<div class="trips-box">
|
||||
<div class="item-box">
|
||||
<RePick
|
||||
v-model="form.type"
|
||||
title="是否关联合同"
|
||||
:name="`type`"
|
||||
titleKey="label"
|
||||
idKey="vulue"
|
||||
:disabled="disabled"
|
||||
label="是否关联合同"
|
||||
label-width="8rem"
|
||||
:list="typeList"
|
||||
isCell
|
||||
clearable
|
||||
required
|
||||
/>
|
||||
|
||||
<van-field
|
||||
v-model="form.contractNumber"
|
||||
required
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
:rules="[{ required: true, message: '请输入' }]"
|
||||
label="计划编号"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.startEnd"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="计划起止时间"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.contractName"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="计划名称"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.supplierName"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="供应商名称"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.actualAmount"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="总金额"
|
||||
clearable
|
||||
input-align="right"
|
||||
required
|
||||
/>
|
||||
<RePick
|
||||
v-model="form.payMentStatus"
|
||||
title="付款状态"
|
||||
:name="`payMentStatus`"
|
||||
titleKey="label"
|
||||
idKey="vulue"
|
||||
:disabled="disabled"
|
||||
label="付款状态"
|
||||
label-width="8rem"
|
||||
:list="payMentStatusList"
|
||||
isCell
|
||||
clearable
|
||||
required
|
||||
/>
|
||||
<RePick
|
||||
v-model="form.invoiceStatus"
|
||||
title="开票状态"
|
||||
:name="`invoiceStatus`"
|
||||
titleKey="label"
|
||||
idKey="vulue"
|
||||
:disabled="disabled"
|
||||
label="开票状态"
|
||||
label-width="8rem"
|
||||
:list="invoiceStatusList"
|
||||
isCell
|
||||
clearable
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.managerPhone"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="联系方式"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.managerName"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="联系人"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.paymentPlanDetailDOList[0].name"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="付款规则配置名称"
|
||||
clearable
|
||||
input-align="right"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
right-icon="arrow"
|
||||
:disabled="disabled"
|
||||
placeholder="请选择"
|
||||
v-model="form.paymentPlanDetailDOList[0].planTime"
|
||||
label="预计付款时间"
|
||||
clear-trigger="always"
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
right-icon="arrow"
|
||||
:disabled="disabled"
|
||||
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"
|
||||
label="状态"
|
||||
clear-trigger="always"
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
right-icon="arrow"
|
||||
:disabled="disabled"
|
||||
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"
|
||||
label="实付金额"
|
||||
clear-trigger="always"
|
||||
input-align="right"
|
||||
/>
|
||||
|
||||
<van-field
|
||||
right-icon="arrow"
|
||||
:disabled="disabled"
|
||||
placeholder="请选择"
|
||||
v-model="form.remark"
|
||||
label="备注"
|
||||
clear-trigger="always"
|
||||
input-align="right"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</van-form>
|
||||
</div>
|
||||
<BottomBtn
|
||||
ref="BottomBtn"
|
||||
:isAuthorised="isAuthorised"
|
||||
@onBtConfirm="handleBtConfirm"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listData } from '@/api/system/dict/data'
|
||||
import { getDictDatas } from '@/utils/dict'
|
||||
import dayjs from 'dayjs'
|
||||
import { getPaymentPlan } from '@/api/bs/myPayPlan'
|
||||
|
||||
export default {
|
||||
name: 'contract-payPlan',
|
||||
components: {
|
||||
RePick: () => import('@/components/ReComponents/RePick'),
|
||||
BottomBtn: () => import('@/components/BottomBtn')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
signatoryList: [
|
||||
{
|
||||
label: '存续',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '注销',
|
||||
value: '2'
|
||||
}
|
||||
],
|
||||
typeList: [
|
||||
{
|
||||
label: '有合同',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '无合同',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
payMentStatusList: [
|
||||
{
|
||||
label: '已付款',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '未付款',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
invoiceStatusList: [
|
||||
{
|
||||
label: '已开票',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '未开票',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
gysTypeList: [
|
||||
/* {
|
||||
label: '五金类',
|
||||
value: '1'
|
||||
} */
|
||||
],
|
||||
isAuthorised: false,
|
||||
typeStr: null, // show: 查看 edit: 编辑: 其他新增
|
||||
id: null,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 表单参数
|
||||
form: {
|
||||
paymentPlanDetailDOList: [
|
||||
{
|
||||
actualAmount: null,
|
||||
percentage: null,
|
||||
statusName: null,
|
||||
keyName: null,
|
||||
name: null,
|
||||
planTime: null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
disabled() {
|
||||
return ['show'].includes(this.$route.query.type)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$loading(true)
|
||||
this.handleInitList().then(() => {
|
||||
this.$loading(false)
|
||||
this.handleInitForm()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
handleInitForm() {
|
||||
const { id, type } = this.$route.query || {}
|
||||
this.typeStr = type
|
||||
if (id) {
|
||||
getPaymentPlan(id).then((res) => {
|
||||
this.form = {
|
||||
...(res.data || {})
|
||||
}
|
||||
if (this.form.startTime && this.form.endTime) {
|
||||
this.form.startEnd = `${dayjs(this.form.startTime).format(
|
||||
'YYYY/MM/DD'
|
||||
)} - ${dayjs(this.form.endTime).format('YYYY/MM/DD')}`
|
||||
} else {
|
||||
this.form.startEnd = ''
|
||||
}
|
||||
|
||||
this.form.reviewTime = this.form.reviewTime
|
||||
? `${dayjs(this.form.reviewTime).format('YYYY/MM/DD')}`
|
||||
: ''
|
||||
this.isAuthorised = res.data.isAuthorised
|
||||
this.$nextTick(() => {
|
||||
this.$refs.BottomBtn.handleFilterBtnList()
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
handleInitList() {
|
||||
return new Promise((resolve) => {
|
||||
listData({
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
dictType: 'material_type'
|
||||
}).then((res) => {
|
||||
this.gysTypeList = res.data.list || []
|
||||
resolve()
|
||||
})
|
||||
listData({
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
dictType: 'gys_level'
|
||||
}).then((res) => {
|
||||
this.gysLevelList = res.data.list || []
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
},
|
||||
handleBtConfirm() {
|
||||
console.log(111)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
@import '~@/assets/style/common/form.scss';
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,312 @@
|
||||
<template>
|
||||
<div class="common-list-contain">
|
||||
<div class="common-form">
|
||||
<van-form
|
||||
ref="form"
|
||||
:show-error-message="false"
|
||||
validate-trigger=""
|
||||
:submit-on-enter="false"
|
||||
>
|
||||
<div class="trips-box">
|
||||
<div class="item-box">
|
||||
<van-field
|
||||
v-model="form.companyName"
|
||||
required
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
:rules="[{ required: true, message: '请输入' }]"
|
||||
label="供应商名称"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.phone"
|
||||
required
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
:rules="[{ required: true, message: '请输入' }]"
|
||||
label="联系方式"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.postbox"
|
||||
required
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
:rules="[{ required: true, message: '请输入' }]"
|
||||
label="邮箱"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<RePick
|
||||
v-model="form.materialsType"
|
||||
title="供应商材料类别"
|
||||
:name="`materialsType`"
|
||||
titleKey="label"
|
||||
idKey="vulue"
|
||||
:disabled="disabled"
|
||||
label="供应商材料类别"
|
||||
label-width="8rem"
|
||||
:list="gysTypeList"
|
||||
isCell
|
||||
clearable
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.legalPerson"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="联系人"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<RePick
|
||||
v-model="form.companyType"
|
||||
titleKey="label"
|
||||
idKey="id"
|
||||
title="供应商类别"
|
||||
:name="`companyType`"
|
||||
:disabled="disabled"
|
||||
label="供应商类别"
|
||||
:list="getDictDatas(DICT_TYPE.BS_ENTERPRISEL_TYPE)"
|
||||
isCell
|
||||
clearable
|
||||
/>
|
||||
<van-field
|
||||
right-icon="arrow"
|
||||
:disabled="disabled"
|
||||
placeholder="请选择"
|
||||
v-model="form.reviewTime"
|
||||
label="评审日期"
|
||||
clear-trigger="always"
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
right-icon="arrow"
|
||||
:disabled="disabled"
|
||||
placeholder="请选择"
|
||||
v-model="form.validTime"
|
||||
label="有效日期"
|
||||
clear-trigger="always"
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.creditCode"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="同意社会信用代码"
|
||||
label-width="10rem"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.address"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="地址"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.purchaserCode"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="采购员代码"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.purchaserId"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="采购员(昵称)"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<RePick
|
||||
v-model="form.exitStatus"
|
||||
titleKey="label"
|
||||
idKey="value"
|
||||
title="营业状态"
|
||||
:name="`exitStatus`"
|
||||
:disabled="disabled"
|
||||
label="营业状态"
|
||||
:list="signatoryList"
|
||||
isCell
|
||||
clearable
|
||||
/>
|
||||
<van-field
|
||||
v-model="form.capital"
|
||||
placeholder="请输入"
|
||||
:disabled="disabled"
|
||||
label="注册资本"
|
||||
clearable
|
||||
input-align="right"
|
||||
/>
|
||||
<RePick
|
||||
v-model="form.gradeGys"
|
||||
titleKey="label"
|
||||
idKey="id"
|
||||
title="等级"
|
||||
:name="`gradeGys`"
|
||||
:disabled="disabled"
|
||||
label="等级"
|
||||
:list="getDictDatas(DICT_TYPE.GYS_LEVEL)"
|
||||
isCell
|
||||
clearable
|
||||
/>
|
||||
<van-field
|
||||
label="是否注册"
|
||||
name="isRegister"
|
||||
:disabled="disabled"
|
||||
input-align="right"
|
||||
label-width="9em"
|
||||
>
|
||||
<template #input>
|
||||
<van-radio-group
|
||||
:disabled="disabled"
|
||||
v-model="form.isRegister"
|
||||
direction="horizontal"
|
||||
>
|
||||
<van-radio :name="1">是</van-radio>
|
||||
<van-radio :name="0">否</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
</div>
|
||||
</div>
|
||||
</van-form>
|
||||
</div>
|
||||
|
||||
<div class="trips-box">
|
||||
<div class="item-box">
|
||||
<UploadFile :typeStr="typeStr" :fileList="form.files" />
|
||||
</div>
|
||||
</div>
|
||||
<BottomBtn
|
||||
ref="BottomBtn"
|
||||
:isAuthorised="isAuthorised"
|
||||
@onBtConfirm="handleBtConfirm"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listData } from '@/api/system/dict/data'
|
||||
import {
|
||||
getDictDataLabel,
|
||||
handleFilterStatus,
|
||||
getDictDatas
|
||||
} from '@/utils/dict'
|
||||
import dayjs from 'dayjs'
|
||||
import {
|
||||
baiduScanApi,
|
||||
createSupplierCompany,
|
||||
getSupplierCompany,
|
||||
updateSupplierCompany
|
||||
} from '@/api/procurement/supplierMsg'
|
||||
|
||||
export default {
|
||||
name: 'contract-supplierMsg',
|
||||
components: {
|
||||
UploadFile: () => import('@/components/UploadFile'),
|
||||
RePick: () => import('@/components/ReComponents/RePick'),
|
||||
BottomBtn: () => import('@/components/BottomBtn')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
signatoryList: [
|
||||
{
|
||||
label: '存续',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '注销',
|
||||
value: '2'
|
||||
}
|
||||
],
|
||||
gysTypeList: [
|
||||
/* {
|
||||
label: '五金类',
|
||||
value: '1'
|
||||
} */
|
||||
],
|
||||
isAuthorised: false,
|
||||
typeStr: null, // show: 查看 edit: 编辑: 其他新增
|
||||
id: null,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 表单参数
|
||||
form: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
disabled() {
|
||||
return ['show'].includes(this.$route.query.type)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$loading(true)
|
||||
this.handleInitList().then(() => {
|
||||
this.$loading(false)
|
||||
this.handleInitForm()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
handleInitForm() {
|
||||
const { id, type } = this.$route.query || {}
|
||||
this.typeStr = type
|
||||
if (id) {
|
||||
getSupplierCompany(id).then((res) => {
|
||||
this.form = {
|
||||
// list: res.data.bankVos,
|
||||
exitStatus: null,
|
||||
...(res.data || {}),
|
||||
logo: res.data.files
|
||||
}
|
||||
this.form.purchaserId = Number(this.form.purchaserId)
|
||||
this.form.gradeGys = String(this.form.gradeGys)
|
||||
this.form.materialsType = String(this.form.materialsType)
|
||||
this.form.companyType = String(this.form.companyType)
|
||||
this.form.validTime = this.form.validTime
|
||||
? `${dayjs(this.form.validTime).format('YYYY/MM/DD')}`
|
||||
: ''
|
||||
this.form.reviewTime = this.form.reviewTime
|
||||
? `${dayjs(this.form.reviewTime).format('YYYY/MM/DD')}`
|
||||
: ''
|
||||
this.isAuthorised = res.data.isAuthorised
|
||||
this.$nextTick(() => {
|
||||
this.$refs.BottomBtn.handleFilterBtnList()
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
handleInitList() {
|
||||
return new Promise((resolve) => {
|
||||
listData({
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
dictType: 'material_type'
|
||||
}).then((res) => {
|
||||
this.gysTypeList = res.data.list || []
|
||||
resolve()
|
||||
})
|
||||
listData({
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
dictType: 'gys_level'
|
||||
}).then((res) => {
|
||||
this.gysLevelList = res.data.list || []
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
},
|
||||
handleBtConfirm() {
|
||||
console.log(111)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
@import '~@/assets/style/common/form.scss';
|
||||
</style>
|
Loading…
Reference in New Issue