123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- <template>
- <div class="relative h-full flex">
- <div :id="`hc_table_card_${uuid}`">
- <hc-new-card>
- <template #header>
- <el-button hc-btn type="primary" @click="systemPaymentClick">引用系统支付项</el-button>
- </template>
- <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-new :index-style="{ width: 60 }" is-current-row @row-click="viewRowClick">
- <template #isDeduct="{ row }">
- <span>{{ row?.isDeduct === 1 ? '是' : '否' }}</span>
- </template>
- <template #isTotalTerms="{ row }">
- <span>{{ row?.isTotalTerms === 1 ? '是' : '否' }}</span>
- </template>
- <template #action="{ row }">
- <el-link type="success" @click="editRowClick(row)">修改</el-link>
- <el-link type="danger" @click="delRowClick(row)">删除</el-link>
- </template>
- </hc-table>
- <template #action>
- <hc-pages :pages="searchForm" @change="pageChange" />
- </template>
- </hc-new-card>
- </div>
- <div :id="`hc_info_card_${uuid}`" class="flex-1">
- <hc-new-card scrollbar>
- <infoTable :ids="rowViewId" />
- <hc-title title="汇总项">
- <template #extra>
- <el-link type="primary" @click="addColloect">添加汇总项</el-link>
- </template>
- </hc-title>
- <hc-table :column="tableColumn1" :datas="tableData1" is-new :index-style="{ width: 60 }">
- <template #isDeduct="{ row }">
- <span>{{ row?.isDeduct === 1 ? '是' : '否' }}</span>
- </template>
- <template #action="{ row }">
- <el-link type="danger" @click="delCollectRow(row)">删除</el-link>
- </template>
- </hc-table>
- </hc-new-card>
- </div>
- <!-- 引用系统支付项 -->
- <systemPay v-model="systemPayShow" @finish="finishSystemPay" />
- <!-- 修改项目支付项 -->
- <rowDataInfo v-model="isEditRowShow" :ids="rowDataId" @finish="finishEditRow" />
- <!-- 添加汇总项 -->
- <hc-new-dialog v-model="isCollectShow" is-table widths="1200px" title="添加汇总项" @save="collectModalSave">
- <div class="hc-flex-column">
- <div class="hc-flex-shrink hc-alert-primary">
- <span class="mr-1">当前表格已选择</span>
- <span class="text-4">{{ selectArr.length }}</span>
- <span class="ml-1">项</span>
- </div>
- <div class="hc-flex-content">
- <hc-body padding="0px">
- <hc-table
- :column="tableCollectColumn" :datas="tableCollectData" :loading="tableCollectLoading"
- is-new :check-style="{ width: 29 }" :index-style="{ width: 60 }"
- is-check @selection-change="tableCollectCheckChange"
- >
- <template #isDeduct="{ row }">
- <span>{{ row?.isDeduct === 1 ? '是' : '否' }}</span>
- </template>
- <template #isTotalTerms="{ row }">
- <span>{{ row?.isTotalTerms === 1 ? '是' : '否' }}</span>
- </template>
- </hc-table>
- </hc-body>
- </div>
- </div>
- </hc-new-dialog>
- </div>
- </template>
- <script setup>
- import { nextTick, onMounted, ref } from 'vue'
- import { getRandom } from 'js-fast-way'
- import infoTable from './components/pay/info-table.vue'
- import systemPay from './components/pay/system-pay.vue'
- import rowDataInfo from './components/pay/row-data.vue'
- import payApi from '~api/project/debit/project/pay.js'
- import { arrToId, getArrValue, getObjValue } from 'js-fast-way'
- import { useAppStore } from '~src/store'
- import { delMessageV2 } from '~com/message/index.js'
- import { getDictionary } from '~api/other'
- const useAppState = useAppStore()
- const projectId = ref(useAppState.getProjectId)
- defineOptions({
- name: 'ProjectDebitProjectPay',
- })
- const uuid = getRandom(4)
- //渲染完成
- onMounted(() => {
- setSplitRef()
- gePayType()
- gePayAppType()
- getTableData()
- })
- //初始化设置拖动分割线
- const setSplitRef = () => {
- //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
- nextTick(() => {
- window.$split(['#hc_table_card_' + uuid, '#hc_info_card_' + uuid], {
- sizes: [70, 30],
- snapOffset: 0,
- minSize: [50, 300],
- })
- })
- }
- //获支付项类型
- const payOptions = ref([])
- const gePayType = async () => {
- const { data } = await getDictionary({
- code: 'meter_pay_type',
- })
- payOptions.value = getArrValue(data)
- payOptions.value.forEach((ele)=>{
- ele.dictKey = Number(ele.dictKey)
- })
- }
- //获支付项适用类型
- const payAppOptions = ref([])
- const gePayAppType = async () => {
- const { data } = await getDictionary({
- code: 'meter_pay_applicable_type',
- })
- payAppOptions.value = getArrValue(data)
- payAppOptions.value.forEach((ele)=>{
- ele.dictKey = Number(ele.dictKey)
- })
- }
- //搜索表单
- const searchForm = ref({ current: 1, size: 10, total: 0 })
- //分页
- const pageChange = ({ current, size }) => {
- searchForm.value.current = current
- searchForm.value.size = size
- }
- //表格数据
- const tableLoading = ref(false)
- const tableColumn = ref([
- { key: 'payNumber', name: '支付项编号', width: 140 },
- { key: 'payName', name: '支付项名称' },
- { key: 'payTypeName', name: '支付项类型', width: 160 },
- { key: 'isDeduct', name: '是否为扣款项', width: 100 },
- { key: 'isTotalTerms', name: '是否合计项', width: 100 },
- { key: 'payApplicableTypeName', name: '适用类型', width: 100 },
- { key: 'action', name: '操作', width: 100 },
- ])
- const tableData = ref([])
- const getTableData = async () => {
- tableLoading.value = true
- const { error, code, data } = await payApi.getProListPage({
- ...searchForm.value,
- projectId:projectId.value,
- })
- tableLoading.value = false
- if (!error && code === 200) {
- tableData.value = getArrValue(data['records'])
- searchForm.value.total = data['total']
- if (tableData.value.length > 0) {
- getDetail(tableData.value[0].id)
- rowViewId.value = tableData.value[0].id
-
- }
-
-
- } else {
- tableData.value = []
- searchForm.value.total = 0
-
- }
- }
- //引用系统支付项
- const systemPayShow = ref(false)
- const systemPaymentClick = () => {
- systemPayShow.value = true
- }
- const finishSystemPay = ()=>{
- getTableData()
- systemPayShow.value = false
- }
- //汇总项
- const tableColumn1 = ref([
- { key: 'payNumber', name: '支付项编号' },
- { key: 'payName', name: '支付项名称' },
- { key: 'payTypeName', name: '支付项类型' },
- { key: 'contractFormulaIds', name: '合同计算公式' },
- { key: 'updateFormulaIds', name: '变更计算公式' },
- { key: 'currentFormulaIds', name: '本期计算公式' },
- { key: 'isDeduct', name: '是否为扣款项' },
- { key: 'action', name: '操作', width: 50 },
- ])
- const tableData1 = ref([])
- //修改
- const rowDataId = ref('')
- const rowViewId = ref('')
- const isEditRowShow = ref(false)
- const editRowClick = (row) => {
- isEditRowShow.value = true
- rowDataId.value = row.id
-
- }
- //获取节点详情
- const getDetail = async (id)=>{
- const { error, code, data } = await payApi.getProDetail({
- id,
- })
- if (!error && code === 200) {
- tableData1.value = getObjValue(data)['summaryItemList']
-
- } else {
- tableData1.value = []
- }
- }
- const viewRowClick = ({ row })=>{
- rowViewId.value = row.id
- getDetail(row.id)
- }
- const finishEditRow = ()=>{
- isEditRowShow.value = false
- getTableData()
- }
- const delRowClick = async (row)=>{
- delMessageV2(async (action, instance, done) => {
- if (action === 'confirm') {
- instance.confirmButtonLoading = true
- removeProPay(row.id)
- instance.confirmButtonLoading = false
- done()
- } else {
- done()
- }
- })
- }
- const removeProPay = async (id) => {
- const { error, code } = await payApi.removeProList({
- id: id,
- })
- if (!error && code === 200) {
- window?.$message?.success('删除成功')
- getTableData()
- rowViewId.value = ''
- }
- }
- //添加汇总项
- const isCollectShow = ref(false)
- const collectSaveLoading = ref(false)
- const collectModalSave = async () => {
- collectSaveLoading.value = true
- const { error, code, msg } = await payApi.addCollect({
- bindIds :selectTableCollectIds.value,
- id:rowViewId.value,
-
- })
- //判断状态
- collectSaveLoading.value = false
- if (!error && code === 200) {
- window?.$message?.success(msg)
-
-
- }
- getDetail(rowViewId.value)
- isCollectShow.value = false
- }
- const addColloect = ()=>{
- isCollectShow.value = true
- getTableCollectData()
- selectArr.value = []
- }
- //删除汇总项
- const delCollectRow = (row)=>{
- delMessageV2(async (action, instance, done) => {
- if (action === 'confirm') {
- instance.confirmButtonLoading = true
- removeCollectPay(row.id)
- instance.confirmButtonLoading = false
- done()
- } else {
- done()
- }
- })
- }
- const removeCollectPay = async (id) => {
- const { error, code } = await payApi.removeCollect({
- id: rowViewId.value,
- bindId:id,
- })
- if (!error && code === 200) {
- window?.$message?.success('删除成功')
- getDetail(rowViewId.value)
- }
- }
- //添加汇总项
- const tableCollectColumn = ref([
- { key: 'payNumber', name: '支付项编号' },
- { key: 'payName', name: '支付项名称' },
- { key: 'payTypeName', name: '支付项类型' },
- { key: 'isDeduct', name: '是否为扣款项' },
- { key: 'isTotalTerms', name: '是否合计项' },
- { key: 'payApplicableTypeName', name: '支付项适用类型' },
- ])
- const tableCollectData = ref([])
- const tableCollectLoading = ref(false)
- const getTableCollectData = async () => {
- tableCollectLoading.value = true
- const { error, code, data } = await payApi.getProListPage({
- type:1,
- projectId:projectId.value,
- current: 1, size: 10000,
- })
- tableCollectLoading.value = false
- if (!error && code === 200) {
- tableCollectData.value = getArrValue(data['records'])
-
- } else {
- tableCollectData.value = []
-
- }
- }
- const selectTableCollectIds = ref('')
- const selectArr = ref([])
- const tableCollectCheckChange = (list) => {
- selectArr.value = list
- selectTableCollectIds.value = arrToId(list)
- }
- </script>
|