ZaiZai 1 jaar geleden
bovenliggende
commit
f264d75270

+ 1 - 0
src/App.vue

@@ -14,6 +14,7 @@ import { getVersionJson } from '~api/other'
 import split from 'split.js'
 
 //初始变量
+
 const appStore = useAppStore()
 const UserTheme = ref(appStore.getTheme)
 

+ 143 - 0
src/router/modules/base.js

@@ -39,6 +39,149 @@ export default [
             },
         ],
     },
+    {
+        path: '/project',
+        name: 'project-top',
+        redirect: '/project/debit/project',
+        meta: { title: '项目管理' },
+        component: Layout,
+        children: [
+            {
+                path: '/project/debit/project',
+                name: 'project-debit-project',
+                redirect: '/project/debit/project/unit',
+                meta: { title: '计量项目基础数据' },
+                children: [
+                    {
+                        path: '/project/debit/project/unit',
+                        name: 'project-debit-project-unit',
+                        meta: { title: '项目计量单元' },
+                        component: () => import('~src/views/project/debit/project/unit.vue'),
+                    },
+                    {
+                        path: '/project/debit/project/affix',
+                        name: 'project-debit-project-affix',
+                        meta: { title: '变更附件' },
+                        component: () => import('~src/views/project/debit/project/affix.vue'),
+                    },
+                    {
+                        path: '/project/debit/project/pay',
+                        name: 'project-debit-project-pay',
+                        meta: { title: '项目支付项' },
+                        component: () => import('~src/views/project/debit/project/pay.vue'),
+                    },
+                    {
+                        path: '/project/debit/project/report',
+                        name: 'project-debit-project-report',
+                        meta: { title: '项目报表' },
+                        component: () => import('~src/views/project/debit/project/report.vue'),
+                    },
+                ],
+            },
+            {
+                path: '/project/debit/contract',
+                name: 'project-debit-contract',
+                redirect: '/project/debit/contract/list',
+                meta: { title: '计量合同基础数据' },
+                children: [
+                    {
+                        path: '/project/debit/contract/list',
+                        name: 'project-debit-contract-list',
+                        meta: { title: '合同工程清单' },
+                        component: () => import('~src/views/project/debit/contract/check-list.vue'),
+                    },
+                    {
+                        path: '/project/debit/contract/unit',
+                        name: 'project-debit-contract-unit',
+                        meta: { title: '合同计量单元' },
+                        component: () => import('~src/views/project/debit/contract/unit.vue'),
+                    },
+                    {
+                        path: '/project/debit/contract/pay',
+                        name: 'project-debit-contract-pay',
+                        meta: { title: '合同中期支付项' },
+                        component: () => import('~src/views/project/debit/contract/pay.vue'),
+                    },
+                ],
+            },
+            {
+                path: '/project/periods/project',
+                name: 'project-periods-project',
+                redirect: '/project/periods/project/unit',
+                meta: { title: '工区计量项目配置' },
+                children: [
+                    {
+                        path: '/project/periods/project/unit',
+                        name: 'project-periods-project-unit',
+                        meta: { title: '项目计量单元' },
+                        component: () => import('~src/views/project/periods/project/unit.vue'),
+                    },
+                    {
+                        path: '/project/periods/project/affix',
+                        name: 'project-periods-project-affix',
+                        meta: { title: '变更附件' },
+                        component: () => import('~src/views/project/periods/project/affix.vue'),
+                    },
+                    {
+                        path: '/project/periods/project/pay',
+                        name: 'project-periods-project-pay',
+                        meta: { title: '项目支付项' },
+                        component: () => import('~src/views/project/periods/project/pay.vue'),
+                    },
+                    {
+                        path: '/project/periods/project/report',
+                        name: 'project-periods-project-report',
+                        meta: { title: '项目报表' },
+                        component: () => import('~src/views/project/periods/project/report.vue'),
+                    },
+                ],
+            },
+            {
+                path: '/project/periods/base',
+                name: 'project-periods-base',
+                redirect: '/project/periods/base/list',
+                meta: { title: '工区计量基础数据' },
+                children: [
+                    {
+                        path: '/project/periods/base/list',
+                        name: 'project-periods-base-list',
+                        meta: { title: '工区工程清单' },
+                        component: () => import('~src/views/project/periods/base/check-list.vue'),
+                    },
+                    {
+                        path: '/project/periods/base/unit',
+                        name: 'project-periods-base-unit',
+                        meta: { title: '工区计量单元' },
+                        component: () => import('~src/views/project/periods/base/unit.vue'),
+                    },
+                    {
+                        path: '/project/periods/base/pay',
+                        name: 'project-periods-base-pay',
+                        meta: { title: '工区中期支付项' },
+                        component: () => import('~src/views/project/periods/base/pay.vue'),
+                    },
+                    {
+                        path: '/project/periods/base/list1',
+                        name: 'project-periods-base-list1',
+                        meta: { title: '合同工程清单' },
+                        component: () => import('~src/views/project/periods/base/check-list1.vue'),
+                    },
+                    {
+                        path: '/project/periods/base/unit1',
+                        name: 'project-periods-base-unit1',
+                        meta: { title: '合同计量单元' },
+                        component: () => import('~src/views/project/periods/base/unit1.vue'),
+                    },
+                    {
+                        path: '/project/periods/base/pay1',
+                        name: 'project-periods-base-pay1',
+                        meta: { title: '合同中期支付项' },
+                        component: () => import('~src/views/project/periods/base/pay1.vue'),
+                    },
+                ],
+            },
+        ],
+    },
     {
         path: '/debit-pay',
         name: 'debit-pay-top',

+ 131 - 0
src/views/project/debit/contract/check-list.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/debit/contract/pay.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/debit/contract/unit.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/debit/project/affix.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/debit/project/pay.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/debit/project/report.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/debit/project/unit.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/base/check-list.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/base/check-list1.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/base/pay.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/base/pay1.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/base/unit.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/base/unit1.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/project/affix.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/project/pay.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/project/report.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 131 - 0
src/views/project/periods/project/unit.vue

@@ -0,0 +1,131 @@
+<template>
+    <hc-card>
+        <template #header>
+            111
+        </template>
+        <template #extra>
+            222
+        </template>
+        <div class="relative h-full flex">
+            <div :id="`hc_tree_card_${uuid}`">
+                <hc-card-item scrollbar>
+                    <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
+                </hc-card-item>
+            </div>
+            <div :id="`hc_table_card_${uuid}`" class="flex-1">
+                <hc-card-item>
+                    <template #header>
+                        <div class="font-400 text-orange">收方总金额:0元</div>
+                    </template>
+                    <template #extra>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按部位排序</span>
+                        </el-button>
+                        <el-button hc-btn color="#626aef">
+                            <HcIcon name="sort-desc" :line="false" />
+                            <span>按录入时间排序</span>
+                        </el-button>
+                    </template>
+                    <hc-table :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableCheckChange">
+                        <template #action="{ row }">
+                            <el-link type="primary" @click="giveTaskModalClick(row)">下达</el-link>
+                            <el-link type="success">修改</el-link>
+                            <el-link type="danger">删除</el-link>
+                        </template>
+                    </hc-table>
+                    <template #action>
+                        <hc-pages :pages="searchForm" @change="pageChange" />
+                    </template>
+                </hc-card-item>
+            </div>
+        </div>
+    </hc-card>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import { getRandom } from 'js-fast-way'
+
+defineOptions({
+    name: 'DebitPayAdminApply',
+})
+
+const uuid = getRandom(4)
+
+//渲染完成
+onMounted(() => {
+    setSplitRef()
+})
+
+//初始化设置拖动分割线
+const setSplitRef = () => {
+    //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
+    nextTick(() => {
+        window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
+            sizes: [20, 80],
+            snapOffset: 0,
+            minSize: [50, 500],
+        })
+    })
+}
+
+//搜索表单
+const searchForm = ref({
+    key1: null, current: 1, size: 10, total: 0,
+})
+
+
+//数据格式
+const treeProps = {
+    label: 'name',
+    children: 'children',
+    isLeaf: 'leaf',
+}
+
+//懒加载的数据
+const treeLoadNode = ({ level }, resolve) => {
+    if (level === 0) {
+        return resolve([{ name: 'region' }])
+    }
+    if (level > 3) {
+        return resolve([])
+    }
+    setTimeout(() => {
+        resolve([
+            { name: 'leaf', leaf: true },
+            { name: 'zone' },
+        ])
+    }, 500)
+}
+
+//分页
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+}
+
+//表格数据
+const tableLoading = ref(false)
+const tableColumn = ref([
+    { key: 'key1', name: '收方单编号' },
+    { key: 'key2', name: '收方期' },
+    { key: 'key3', name: '工程划分部位' },
+    { key: 'key4', name: '收方金额' },
+    { key: 'key5', name: '业务日期' },
+    { key: 'key6', name: '审核状态' },
+    { key: 'action', name: '操作', width: 200, align: 'center' },
+])
+const tableData = ref([
+    { key1: '1111' },
+])
+
+//表格选择
+const tableCheckChange = () => {
+
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>