|
|
@ -6,8 +6,14 @@
|
|
|
|
<div class="nav"> <i class="iconfont icon-dayinxiaopiao"></i>模板打印</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-dayinxiaopiao"></i>模板打印</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-icon_baocun"></i>保存并关闭</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-icon_baocun"></i>保存并关闭</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-icon_baocun"></i>保存并新建</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-icon_baocun"></i>保存并新建</div>
|
|
|
|
<div class="nav"> <Icon icon="ant-design:lock-outlined" class="iconfont" /> 锁定</div>
|
|
|
|
<div class="nav" @click="Lock">
|
|
|
|
<div class="nav"> <Icon icon="ant-design:unlock-outlined" class="iconfont" />撤销锁定</div>
|
|
|
|
<Icon icon="ant-design:lock-outlined" class="iconfont" />
|
|
|
|
|
|
|
|
锁定
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="nav" @click="UnLock">
|
|
|
|
|
|
|
|
<Icon icon="ant-design:unlock-outlined" class="iconfont" />
|
|
|
|
|
|
|
|
撤销锁定
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-jiahao2fill"></i>费用提交审核</div>
|
|
|
|
<div class="nav"> <i class="iconfont icon-jiahao2fill"></i>费用提交审核</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<a-tabs v-model:activeKey="activeKey" type="card" class="CsTabs">
|
|
|
|
<a-tabs v-model:activeKey="activeKey" type="card" class="CsTabs">
|
|
|
@ -29,10 +35,18 @@
|
|
|
|
<div class="nav" @click="addDetail">
|
|
|
|
<div class="nav" @click="addDetail">
|
|
|
|
<i class="iconfont icon-jiahao2fill"></i>增加账单明细
|
|
|
|
<i class="iconfont icon-jiahao2fill"></i>增加账单明细
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<a-popconfirm
|
|
|
|
|
|
|
|
title="是否要删除选中数据?"
|
|
|
|
|
|
|
|
ok-text="是"
|
|
|
|
|
|
|
|
cancel-text="否"
|
|
|
|
|
|
|
|
@confirm="DelDetailL"
|
|
|
|
|
|
|
|
>
|
|
|
|
<div class="nav">
|
|
|
|
<div class="nav">
|
|
|
|
<i class="iconfont icon-shanchu2"></i>
|
|
|
|
<i class="iconfont icon-shanchu2"></i>
|
|
|
|
删除账单明细
|
|
|
|
删除账单明细
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-popconfirm>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="nav" @click="RowClick">
|
|
|
|
<div class="nav" @click="RowClick">
|
|
|
|
<i class="iconfont icon-bianjiwenjian"></i>
|
|
|
|
<i class="iconfont icon-bianjiwenjian"></i>
|
|
|
|
测试 后期改为双击
|
|
|
|
测试 后期改为双击
|
|
|
@ -45,10 +59,17 @@
|
|
|
|
<BasicTable @register="registerTableR">
|
|
|
|
<BasicTable @register="registerTableR">
|
|
|
|
<template #toolbar>
|
|
|
|
<template #toolbar>
|
|
|
|
<div class="buttonGroup">
|
|
|
|
<div class="buttonGroup">
|
|
|
|
|
|
|
|
<a-popconfirm
|
|
|
|
|
|
|
|
title="是否要删除选中数据?"
|
|
|
|
|
|
|
|
ok-text="是"
|
|
|
|
|
|
|
|
cancel-text="否"
|
|
|
|
|
|
|
|
@confirm="DelDetailR"
|
|
|
|
|
|
|
|
>
|
|
|
|
<div class="nav">
|
|
|
|
<div class="nav">
|
|
|
|
<i class="iconfont icon-shanchu2"></i>
|
|
|
|
<i class="iconfont icon-shanchu2"></i>
|
|
|
|
删除账单费用明细
|
|
|
|
删除账单费用明细
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-popconfirm>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</BasicTable>
|
|
|
|
</BasicTable>
|
|
|
@ -83,14 +104,48 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
|
|
<script lang="ts" setup>
|
|
|
|
import { ref } from 'vue'
|
|
|
|
import { ref } from 'vue'
|
|
|
|
import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'
|
|
|
|
import { useRoute } from 'vue-router'
|
|
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
|
|
|
|
|
|
const { notification } = useMessage()
|
|
|
|
|
|
|
|
import { BasicForm, useForm } from '/@/components/Form/index'
|
|
|
|
import { BasicTable, useTable } from '/@/components/Table'
|
|
|
|
import { BasicTable, useTable } from '/@/components/Table'
|
|
|
|
import { BasicModal, useModal } from '/@/components/Modal'
|
|
|
|
import { BasicModal, useModal } from '/@/components/Modal'
|
|
|
|
import Info from './info/index.vue'
|
|
|
|
import Info from './info/index.vue'
|
|
|
|
import ShowData from './showData/index.vue'
|
|
|
|
import ShowData from './showData/index.vue'
|
|
|
|
import { columnsL, columnsR, columnsFile, schemas, schemasFile } from './detailColumns'
|
|
|
|
import { columnsL, columnsR, columnsFile, schemas, schemasFile } from './detailColumns'
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
|
|
|
GetCheckBillInfo,
|
|
|
|
|
|
|
|
GetCheckBillBusinessList,
|
|
|
|
|
|
|
|
GetCheckBillFeeRecordsList,
|
|
|
|
|
|
|
|
BatchDelCheckBillDetail,
|
|
|
|
|
|
|
|
BatchDelCheckBillFeeRecords,
|
|
|
|
|
|
|
|
CheckBillLocking,
|
|
|
|
|
|
|
|
CheckBillUnLocking,
|
|
|
|
|
|
|
|
} from '/@/views/operation/CustomerReconciliation/api.js'
|
|
|
|
|
|
|
|
const id = ref(route.query.id)
|
|
|
|
|
|
|
|
init()
|
|
|
|
|
|
|
|
function init() {
|
|
|
|
|
|
|
|
if (id.value) {
|
|
|
|
|
|
|
|
let ApiData = {
|
|
|
|
|
|
|
|
queryCondition: `[{"FieldName":"businessId","FieldValue":"${id.value}","ConditionalType":1}]`,
|
|
|
|
|
|
|
|
pageCondition: {
|
|
|
|
|
|
|
|
sortConditions: [],
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
GetCheckBillInfo({ id: id.value }).then((res) => {
|
|
|
|
|
|
|
|
console.log(res, '详情数据暂未填写')
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
GetCheckBillBusinessList(ApiData).then((res) => {
|
|
|
|
|
|
|
|
console.log(res, '详情数据暂未填写')
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
GetCheckBillFeeRecordsList(ApiData).then((res) => {
|
|
|
|
|
|
|
|
console.log(res, '详情数据暂未填写')
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// 头部表格
|
|
|
|
// 头部表格
|
|
|
|
const [registerForm, methods] = useForm({
|
|
|
|
const [registerForm] = useForm({
|
|
|
|
labelWidth: 120,
|
|
|
|
labelWidth: 120,
|
|
|
|
schemas,
|
|
|
|
schemas,
|
|
|
|
showActionButtonGroup: false,
|
|
|
|
showActionButtonGroup: false,
|
|
|
@ -101,36 +156,28 @@
|
|
|
|
disabled: false,
|
|
|
|
disabled: false,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// 左侧表格
|
|
|
|
// 左侧表格
|
|
|
|
const [registerTableL] = useTable({
|
|
|
|
const [registerTableL, { getSelectRows: getSelectRowsL }] = useTable({
|
|
|
|
title: '',
|
|
|
|
title: '',
|
|
|
|
// api: async (p) => {
|
|
|
|
|
|
|
|
// const res: API.DataResult = await ApiList(p)
|
|
|
|
rowSelection: { type: 'checkbox' },
|
|
|
|
// return new Promise((resolve) => {
|
|
|
|
|
|
|
|
// resolve({ data: [...res.data], total: res.count })
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
columns: columnsL,
|
|
|
|
columns: columnsL,
|
|
|
|
pagination: true,
|
|
|
|
pagination: true,
|
|
|
|
striped: true,
|
|
|
|
striped: true,
|
|
|
|
showTableSetting: true,
|
|
|
|
showTableSetting: false,
|
|
|
|
bordered: true,
|
|
|
|
bordered: true,
|
|
|
|
showIndexColumn: true,
|
|
|
|
showIndexColumn: true,
|
|
|
|
canResize: false,
|
|
|
|
canResize: false,
|
|
|
|
immediate: false,
|
|
|
|
immediate: false,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// 右侧表格
|
|
|
|
// 右侧表格
|
|
|
|
const [registerTableR] = useTable({
|
|
|
|
const [registerTableR, { getSelectRows: getSelectRowsR }] = useTable({
|
|
|
|
title: '',
|
|
|
|
title: '',
|
|
|
|
// api: async (p) => {
|
|
|
|
rowSelection: { type: 'checkbox' },
|
|
|
|
// const res: API.DataResult = await ApiList(p)
|
|
|
|
|
|
|
|
// return new Promise((resolve) => {
|
|
|
|
|
|
|
|
// resolve({ data: [...res.data], total: res.count })
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
columns: columnsR,
|
|
|
|
columns: columnsR,
|
|
|
|
pagination: true,
|
|
|
|
pagination: true,
|
|
|
|
striped: true,
|
|
|
|
striped: true,
|
|
|
|
showTableSetting: true,
|
|
|
|
showTableSetting: false,
|
|
|
|
bordered: true,
|
|
|
|
bordered: true,
|
|
|
|
showIndexColumn: true,
|
|
|
|
showIndexColumn: true,
|
|
|
|
canResize: false,
|
|
|
|
canResize: false,
|
|
|
@ -139,16 +186,11 @@
|
|
|
|
// 附件表格
|
|
|
|
// 附件表格
|
|
|
|
const [registerTableFile] = useTable({
|
|
|
|
const [registerTableFile] = useTable({
|
|
|
|
title: '',
|
|
|
|
title: '',
|
|
|
|
// api: async (p) => {
|
|
|
|
rowSelection: { type: 'checkbox' },
|
|
|
|
// const res: API.DataResult = await ApiList(p)
|
|
|
|
|
|
|
|
// return new Promise((resolve) => {
|
|
|
|
|
|
|
|
// resolve({ data: [...res.data], total: res.count })
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
columns: columnsFile,
|
|
|
|
columns: columnsFile,
|
|
|
|
pagination: true,
|
|
|
|
pagination: true,
|
|
|
|
striped: true,
|
|
|
|
striped: true,
|
|
|
|
showTableSetting: true,
|
|
|
|
showTableSetting: false,
|
|
|
|
bordered: true,
|
|
|
|
bordered: true,
|
|
|
|
showIndexColumn: true,
|
|
|
|
showIndexColumn: true,
|
|
|
|
canResize: false,
|
|
|
|
canResize: false,
|
|
|
@ -160,6 +202,38 @@
|
|
|
|
function addDetail() {
|
|
|
|
function addDetail() {
|
|
|
|
openModalAdd(true, {})
|
|
|
|
openModalAdd(true, {})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 点击删除详情
|
|
|
|
|
|
|
|
function DelDetailL() {
|
|
|
|
|
|
|
|
if (getSelectRowsL().length) {
|
|
|
|
|
|
|
|
let Apidata: any = {
|
|
|
|
|
|
|
|
ids: [],
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
getSelectRowsL().forEach((item) => {
|
|
|
|
|
|
|
|
Apidata.ids.push(item.id)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
BatchDelCheckBillDetail(Apidata).then((res) => {
|
|
|
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
notification.warning({ message: '请至少选择一条数据', duration: 3 })
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 点击删除费用详情
|
|
|
|
|
|
|
|
function DelDetailR() {
|
|
|
|
|
|
|
|
if (getSelectRowsR().length) {
|
|
|
|
|
|
|
|
let Apidata: any = {
|
|
|
|
|
|
|
|
ids: [],
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
getSelectRowsR().forEach((item) => {
|
|
|
|
|
|
|
|
Apidata.ids.push(item.id)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
BatchDelCheckBillFeeRecords(Apidata).then((res) => {
|
|
|
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
notification.warning({ message: '请至少选择一条数据', duration: 3 })
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// 新增弹窗
|
|
|
|
// 新增弹窗
|
|
|
|
const [registerEdit, { openModal: openModalEdit }] = useModal()
|
|
|
|
const [registerEdit, { openModal: openModalEdit }] = useModal()
|
|
|
|
// 双击行 打开弹窗
|
|
|
|
// 双击行 打开弹窗
|
|
|
@ -184,6 +258,24 @@
|
|
|
|
disabled: false,
|
|
|
|
disabled: false,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
const activeKey = ref('1')
|
|
|
|
const activeKey = ref('1')
|
|
|
|
|
|
|
|
// 锁定
|
|
|
|
|
|
|
|
function Lock() {
|
|
|
|
|
|
|
|
let ApiData = {
|
|
|
|
|
|
|
|
id: id.value,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
CheckBillLocking(ApiData).then((res) => {
|
|
|
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 解除锁定
|
|
|
|
|
|
|
|
function UnLock() {
|
|
|
|
|
|
|
|
let ApiData = {
|
|
|
|
|
|
|
|
id: id.value,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
CheckBillUnLocking(ApiData).then((res) => {
|
|
|
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="less">
|
|
|
|
<style lang="less">
|
|
|
@ -195,6 +287,7 @@
|
|
|
|
.buttonBox {
|
|
|
|
.buttonBox {
|
|
|
|
background: #fff;
|
|
|
|
background: #fff;
|
|
|
|
padding: 5px 10px;
|
|
|
|
padding: 5px 10px;
|
|
|
|
|
|
|
|
margin-bottom: 5px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.CsTabs {
|
|
|
|
.CsTabs {
|
|
|
|
.ant-tabs-nav {
|
|
|
|
.ant-tabs-nav {
|
|
|
|