| | |
| | | </template> |
| | | |
| | | <el-form :inline="true" :model="searchForm" class="search-form"> |
| | | <el-form-item label="单位名称"> |
| | | <el-input v-model="searchForm.unitName" placeholder="请输入单位名称" clearable /> |
| | | <el-form-item label="单位"> |
| | | <el-select |
| | | v-model="searchForm.unitCode" |
| | | placeholder="请选择单位" |
| | | clearable |
| | | filterable |
| | | style="width: 250px" |
| | | > |
| | | <el-option |
| | | v-for="dept in flatDepartmentList" |
| | | :key="dept.deptCode" |
| | | :label="`${dept.deptCode} - ${dept.deptName}`" |
| | | :value="dept.deptCode" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="交易流水号"> |
| | | <el-input v-model="searchForm.transactionNo" placeholder="请输入交易流水号" clearable /> |
| | |
| | | <el-table :data="tableData" v-loading="loading" border stripe> |
| | | <el-table-column prop="sortNo" label="编号" width="80" /> |
| | | <el-table-column prop="seqNo" label="序号" width="80" /> |
| | | <el-table-column prop="pkVoucher" label="唯一编号" width="100" /> |
| | | <el-table-column prop="secondaryUnit" label="二级单位" width="120" /> |
| | | <el-table-column prop="unitCode" label="单位编码" width="100" /> |
| | | <el-table-column prop="unitName" label="单位名称" width="200" /> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="BP合同号" prop="bpContractNo"> |
| | | <el-input v-model="form.bpContractNo" placeholder="请输入BP合同号" /> |
| | | <el-input v-model="form.bpContractNo" placeholder="请输入BIP合同号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="BP发票号" prop="bpInvoiceNo"> |
| | | <el-input v-model="form.bpInvoiceNo" placeholder="请输入BP发票号" /> |
| | | <el-input v-model="form.bpInvoiceNo" placeholder="请输入BIP发票号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="古控系统对应发票号" prop="gkInvoiceNo"> |
| | | <el-input v-model="form.gkInvoiceNo" placeholder="请输入古控系统对应发票号" /> |
| | | <el-input v-model="form.gkInvoiceNo" placeholder="请输入百旺系统对应发票号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="业务关联关系" prop="businessRelation"> |
| | | <el-input v-model="form.businessRelation" placeholder="请输入业务关联关系" /> |
| | | <el-input v-model="form.businessRelation" placeholder="请输入四者未关联原因" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12">--> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from 'vue' |
| | | import {ref, reactive, onMounted, computed} from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { getDepartmentTree } from '@/api/department' |
| | | import { Plus, Edit, Delete, Search, Refresh, Upload, Download } from '@element-plus/icons-vue' |
| | | import { getExcelPage, createExcel, updateExcel, deleteExcel, importExcel, downloadTemplate } from '@/api/excel' |
| | | |
| | |
| | | const dialogTitle = ref('') |
| | | const formRef = ref(null) |
| | | const uploadRef = ref(null) |
| | | const departmentList = ref([]) |
| | | |
| | | const searchForm = reactive({ |
| | | unitName: '', |
| | | unitCode: '', |
| | | transactionNo: '', |
| | | accountingPeriod: '' |
| | | }) |
| | |
| | | const rules = { |
| | | unitName: [{ required: true, message: '请输入单位名称', trigger: 'blur' }], |
| | | transactionNo: [{ required: true, message: '请输入交易流水号', trigger: 'blur' }] |
| | | } |
| | | |
| | | const flatDepartmentList = computed(() => { |
| | | const flatten = (list) => { |
| | | let result = [] |
| | | list.forEach(item => { |
| | | result.push(item) |
| | | if (item.children && item.children.length > 0) { |
| | | result = result.concat(flatten(item.children)) |
| | | } |
| | | }) |
| | | return result |
| | | } |
| | | return flatten(departmentList.value) |
| | | }) |
| | | |
| | | const fetchDepartmentList = async () => { |
| | | try { |
| | | const res = await getDepartmentTree() |
| | | departmentList.value = buildTree(res.data) |
| | | } catch (error) { |
| | | console.error('获取部门列表失败:', error) |
| | | } |
| | | } |
| | | |
| | | const buildTree = (list) => { |
| | | const map = {} |
| | | const roots = [] |
| | | |
| | | list.forEach(item => { |
| | | map[item.deptCode] = { ...item, children: [] } |
| | | }) |
| | | |
| | | list.forEach(item => { |
| | | const parent = map[item.parentCode] |
| | | if (parent) { |
| | | parent.children.push(map[item.deptCode]) |
| | | } else { |
| | | roots.push(map[item.deptCode]) |
| | | } |
| | | }) |
| | | |
| | | const cleanEmptyChildren = (nodes) => { |
| | | nodes.forEach(node => { |
| | | if (node.children && node.children.length === 0) { |
| | | delete node.children |
| | | } else { |
| | | cleanEmptyChildren(node.children) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | cleanEmptyChildren(roots) |
| | | return roots |
| | | } |
| | | |
| | | const formatAmount = (amount) => { |
| | |
| | | } |
| | | |
| | | onMounted(() => { |
| | | fetchDepartmentList() |
| | | fetchData() |
| | | }) |
| | | </script> |