提交 738d9d93 authored 作者: kxjia's avatar kxjia

修改存档

上级 8e1dca10
<template>
<a-card
style="width: 100%"
:tab-list="tabList"
:active-tab-key="activeKey"
@tabChange="key => onTabChange(key)"
>
<template #tabBarExtraContent>
<div class="date-picker-wrapper">
<a-space>
<a-date-picker placeholder="选择年" picker="year">
<template #renderExtraFooter></template>
</a-date-picker>
<a-date-picker v-show="activeKey === 'quarter'" placeholder="选择季度" picker="quarter">
<template #renderExtraFooter></template>
</a-date-picker>
<a-date-picker v-show="activeKey === 'month'" placeholder="选择月" picker="month">
<template #renderExtraFooter></template>
</a-date-picker>
</a-space>
</div>
</template>
<div style="background-color: #ececec; padding: 20px">
<a-row :gutter="[16,16]">
<a-col :span="8" v-for="item in dataList" :key="item.id">
<a-card :bordered="false">
<template #title>
{{ item.code }} - {{ item.nm }}
</template>
<template #extra>
<a-space>
<a href="#" @click.prevent="downLoadXml(item)">直接下载XML</a>
<a href="#" @click.prevent="gotoPage(item)">预览并下载</a>
</a-space>
</template>
<span>年度:{{ item.vyear }} &nbsp;</span>
<span>版本:{{ item.version }} &nbsp;</span>
<span>节点数:{{ item.childNum }}</span><br>
<span>{{ item.xmlfilePath }}</span>
</a-card>
</a-col>
</a-row>
</div>
</a-card>
</template>
<script lang="ts" setup>
import { ref, onMounted, computed,nextTick } from 'vue';
import { allTpls } from '../tpl/BaosongTpl.api';
import { useRoute,useRouter } from 'vue-router';
import { downLoadTaskXml } from '../review/BaosongTaskReview.api';
const route = useRoute();
const router = useRouter();
const queryParam = ref({
taskId:0,
taskName:'',
tplId:'',
tplName:'',
tplCode:''
})
onMounted(()=>{
if (route.query.taskId) {
queryParam.value.taskId = Number(route.query.taskId); // Convert to number
}
if (route.query.taskName) {
queryParam.value.taskName = String(route.query.taskName); // Ensure it's a string
}
iniData();
})
const activeKey = ref('year');
// 使用 computed 计算 tabList,根据 dataMap 中的记录数动态设置 disabled
const tabList = computed(() => {
const tabs = [
{
key: 'year',
tab: '年报',
type: 1
},
{
key: 'quarter',
tab: '季报',
type: 2
},
{
key: 'month',
tab: '月报',
type: 3
},
];
return tabs.map(tab => ({
...tab,
//disabled: !dataMap.value[tab.type] || dataMap.value[tab.type].length === 0
}));
});
const onTabChange = async (value: string) => {
activeKey.value = value;
if(value === 'year') {
dataList.value = await filteredData(1)
} else if(value === 'quarter') {
dataList.value = await filteredData(2)
} else if(value === 'month') {
dataList.value = await filteredData(3)
} else {
//dataList.value = await filteredData(4)
}
}
const gotoPage = async (item) => {
// 确保所有参数都设置完成后再跳转
queryParam.value.tplName = item.nm || ''
queryParam.value.tplCode = item.code || ''
queryParam.value.tplId = item.id || ''
let targetPath = ''
const code = item.code || ''
if(code === 'T-B-1') {
targetPath = '/baosong/report/components/Tb1'
} else if(code === 'T-B-2') {
targetPath = '/baosong/report/components/Tb2'
} else if(code === 'T-B-3') {
targetPath = '/baosong/report/components/Tb3'
} else if(code === 'T-B-4') {
targetPath = '/baosong/report/components/Tb4'
} else if(code === 'T-B-5') {
targetPath = '/baosong/report/components/Tb5'
} else if(code === 'T-B-6') {
targetPath = '/baosong/report/components/Tb6'
} else if(code === 'T-B-7') {
targetPath = '/baosong/report/components/Tb7'
} else if(code === 'T-B-8') {
targetPath = '/baosong/report/components/Tb8'
} else if(code === 'T-B-9') {
targetPath = '/baosong/report/components/Tb9'
} else if(code === 'T-B-10') {
targetPath = '/baosong/report/components/Tb10'
} else if(code === 'T-B-11') {
targetPath = '/baosong/report/components/Tb11'
} else if(code === 'R-R-1') {
targetPath = '/baosong/report/components/Rr1'
} else if(code === 'R-R-2') {
targetPath = '/baosong/report/components/Rr2'
} else if(code === 'T-M-1') {
targetPath = '/baosong/report/components/Tm1'
} else if(code === 'T-M-2') {
targetPath = '/baosong/report/components/Tm2'
} else if(code === 'T-M-3') {
targetPath = '/baosong/report/components/Tm3'
} else if(code === 'T-Q-1') {
targetPath = '/baosong/report/components/Tq1'
} else if(code === 'T-Q-2') {
targetPath = '/baosong/report/components/Tq2'
} else if(code === 'T-Q-3') {
targetPath = '/baosong/report/components/Tq3'
} else if(code === 'T-Q-4') {
targetPath = '/baosong/report/components/Tq4'
} else if(code === 'T-Q-5') {
targetPath = '/baosong/report/components/Tq5'
}
if (targetPath) {
console.log('跳转到页面:', targetPath, '参数:', queryParam.value);
// 使用 Promise 确保数据更新完成后再跳转
await nextTick();
router.push({
path: targetPath,
query: {
taskId: queryParam.value.taskId,
taskName: queryParam.value.taskName,
tplId: queryParam.value.tplId,
tplName: queryParam.value.tplName,
tplCode: queryParam.value.tplCode
}
});
}
}
const dataList = ref([])
const dataMap = ref({})
const dataAllList = ref([])
async function iniData() {
dataAllList.value = await allTpls({});
dataMap.value = dataAllList.value.reduce((result, item) => {
const key = item.tp;
if (!result[key]) {
result[key] = [];
}
result[key].push(item);
return result;
}, {});
dataList.value = dataMap.value[1]
}
const filteredData = (async (tp) => {
return dataMap.value[tp]
});
async function downLoadXml(record) {
let retData = await downLoadTaskXml(record);
handleDownloadFile(retData);
}
const handleDownloadFile = (filePath) => {
const globOnlineViewUrl: string = import.meta.env.VITE_GLOB_ONLINE_VIEW_URL;
const url = globOnlineViewUrl + filePath;
if (url) {
window.open(url);
}
};
</script>
<style scoped>
.date-picker-wrapper {
display: flex;
justify-content: left;
align-items: left;
width: 100%;
padding: 0 20px auto;
margin-right:500px;
}
</style>
\ No newline at end of file
<template>
<a-drawer
placement="right"
v-model:open="innerVisible"
:get-container="true"
width="100%"
:title="titile"
:mask="true"
@close="handleClose()"
:style="{ position: 'absolute', paddingTop: '0px', margin: '0px' }"
>
<a-card
style="width: 100%"
:tab-list="tabList"
:active-tab-key="activeKey"
@tabChange="key => onTabChange(key)"
>
<template #tabBarExtraContent>
<div class="date-picker-wrapper">
<a-space>
<a-date-picker placeholder="选择年" picker="year">
<template #renderExtraFooter></template>
</a-date-picker>
<a-date-picker v-show="activeKey === 'quarter'" placeholder="选择季度" picker="quarter">
<template #renderExtraFooter></template>
</a-date-picker>
<a-date-picker v-show="activeKey === 'month'" placeholder="选择月" picker="month">
<template #renderExtraFooter></template>
</a-date-picker>
</a-space>
</div>
</template>
<div style="background-color: #ececec; padding: 20px">
<a-row :gutter="[16,16]">
<a-col :span="8" v-for="item in dataList" :key="item.id">
<a-card :bordered="false">
<template #title>
{{ item.code }} - {{ item.nm }}
</template>
<template #extra>
<a-space>
<a href="#" @click.prevent="downLoadXml(item)">直接下载XML</a>
<a href="#" @click.prevent="gotoPage(item)">预览</a>
</a-space>
</template>
<span>年度:{{ item.vyear }} &nbsp;</span>
<span>版本:{{ item.version }} &nbsp;</span>
<span>节点数:{{ item.childNum }}</span><br>
<span>{{ item.xmlfilePath }}</span>
</a-card>
</a-col>
</a-row>
</div>
</a-card>
</a-drawer>
</template>
<script lang="ts" setup>
import { ref, onMounted, computed,nextTick } from 'vue';
import { allTpls } from '../tpl/BaosongTpl.api';
import { useRoute,useRouter } from 'vue-router';
import { downLoadTaskXml } from '../review/BaosongTaskReview.api';
const route = useRoute();
const router = useRouter();
// const queryParam = ref({
// taskId:0,
// taskName:'',
// tplId:'',
// tplName:'',
// tplCode:''
// })
onMounted(()=>{
// if (route.query.taskId) {
// queryParam.value.taskId = Number(route.query.taskId); // Convert to number
// }
// if (route.query.taskName) {
// queryParam.value.taskName = String(route.query.taskName); // Ensure it's a string
// }
iniData();
})
const activeKey = ref('year');
// 使用 computed 计算 tabList,根据 dataMap 中的记录数动态设置 disabled
const tabList = computed(() => {
const tabs = [
{
key: 'year',
tab: '年报',
type: 1
},
{
key: 'quarter',
tab: '季报',
type: 2
},
{
key: 'month',
tab: '月报',
type: 3
},
];
return tabs.map(tab => ({
...tab,
//disabled: !dataMap.value[tab.type] || dataMap.value[tab.type].length === 0
}));
});
const onTabChange = async (value: string) => {
activeKey.value = value;
if(value === 'year') {
dataList.value = await filteredData(1)
} else if(value === 'quarter') {
dataList.value = await filteredData(2)
} else if(value === 'month') {
dataList.value = await filteredData(3)
} else {
//dataList.value = await filteredData(4)
}
}
const gotoPage = async (item) => {
// 确保所有参数都设置完成后再跳转
// queryParam.value.tplName = item.nm || ''
// queryParam.value.tplCode = item.code || ''
// queryParam.value.tplId = item.id || ''
let targetPath = ''
const code = item.code || ''
if(code === 'T-B-1') {
targetPath = '/baosong/report/components/Tb1'
} else if(code === 'T-B-2') {
targetPath = '/baosong/report/components/Tb2'
} else if(code === 'T-B-3') {
targetPath = '/baosong/report/components/Tb3'
} else if(code === 'T-B-4') {
targetPath = '/baosong/report/components/Tb4'
} else if(code === 'T-B-5') {
targetPath = '/baosong/report/components/Tb5'
} else if(code === 'T-B-6') {
targetPath = '/baosong/report/components/Tb6'
} else if(code === 'T-B-7') {
targetPath = '/baosong/report/components/Tb7'
} else if(code === 'T-B-8') {
targetPath = '/baosong/report/components/Tb8'
} else if(code === 'T-B-9') {
targetPath = '/baosong/report/components/Tb9'
} else if(code === 'T-B-10') {
targetPath = '/baosong/report/components/Tb10'
} else if(code === 'T-B-11') {
targetPath = '/baosong/report/components/Tb11'
} else if(code === 'R-R-1') {
targetPath = '/baosong/report/components/Rr1'
} else if(code === 'R-R-2') {
targetPath = '/baosong/report/components/Rr2'
} else if(code === 'T-M-1') {
targetPath = '/baosong/report/components/Tm1'
} else if(code === 'T-M-2') {
targetPath = '/baosong/report/components/Tm2'
} else if(code === 'T-M-3') {
targetPath = '/baosong/report/components/Tm3'
} else if(code === 'T-Q-1') {
targetPath = '/baosong/report/components/Tq1'
} else if(code === 'T-Q-2') {
targetPath = '/baosong/report/components/Tq2'
} else if(code === 'T-Q-3') {
targetPath = '/baosong/report/components/Tq3'
} else if(code === 'T-Q-4') {
targetPath = '/baosong/report/components/Tq4'
} else if(code === 'T-Q-5') {
targetPath = '/baosong/report/components/Tq5'
}
if (targetPath) {
await nextTick();
router.push({
path: targetPath,
query: {
taskId: taskObj.value.id,
taskName: taskObj.value.name || '',
tplId: item.id,
tplName: item.nm || '',
tplCode: item.code || '',
comfrom: 'archive'
}
});
}
}
const dataList = ref([])
const dataMap = ref({})
const dataAllList = ref([])
const taskObj = ref({})
const innerVisible = ref(false)
const titile = ref('')
async function iniData() {
dataAllList.value = await allTpls({});
dataMap.value = dataAllList.value.reduce((result, item) => {
const key = item.tp;
if (!result[key]) {
result[key] = [];
}
result[key].push(item);
return result;
}, {});
dataList.value = dataMap.value[1]
}
const filteredData = (async (tp) => {
return dataMap.value[tp]
});
async function downLoadXml(record) {
let retData = await downLoadTaskXml({
taskid: taskObj.value.id,
tplid: record.id,
tplname: record.nm || '',
taskname: taskObj.value.name || ''
});
handleDownloadFile(retData);
}
const handleDownloadFile = (filePath) => {
const globOnlineViewUrl: string = import.meta.env.VITE_GLOB_ONLINE_VIEW_URL;
const url = globOnlineViewUrl + filePath;
if (url) {
window.open(url);
}
};
const handleClose = () => {
innerVisible.value = false;
}
const openDrawer = (task) => {
taskObj.value = task
titile.value = task.name || ''
innerVisible.value = true;
iniData();
}
defineExpose({
openDrawer
});
</script>
<style scoped>
.date-picker-wrapper {
display: flex;
justify-content: left;
align-items: left;
width: 100%;
padding: 0 20px auto;
margin-right:500px;
}
</style>
\ No newline at end of file
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)"/>
</template>
<!--字段回显插槽-->
<template #htmlSlot="{ text }">
<div v-html="text"></div>
</template>
</BasicTable>
<ArchiveDrawer ref="refArchiveDrawer" @callback="handleSuccess"/>
</div>
</template>
<script lang="ts" name="baosong-baosongTask" setup>
import { ref, computed, unref } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import ArchiveDrawer from './ArchiveDrawer.vue';
import { columns, searchFormSchema } from '/@/views/baosong/task/BaosongTask.data';
import { archiveList } from '/@/views/baosong/task/BaosongTask.api';
const refArchiveDrawer = ref();
const { tableContext } = useListPage({
tableProps: {
title: '任务表',
api: archiveList,
columns,
canResize: false,
formConfig: {
labelWidth: "30%",
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
fieldMapToNumber: [],
fieldMapToTime: [],
},
actionColumn: {
width: 200,
fixed: 'right',
},
},
});
const [registerTable, { reload }, {rowSelection, selectedRowKeys}] = tableContext;
async function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
async function handleOpenDrawer(record){
refArchiveDrawer.value.openDrawer(record)
}
function getTableAction(record) {
return [
{
label: '下载',
//disabled:(record.sta!=9),
onClick: handleOpenDrawer.bind(null, record),
},
];
}
</script>
<style scoped>
</style>
......@@ -29,9 +29,9 @@
max-height="300"
:data="historyDataList"
:show-radio="true"
:row-config="{ isCurrent: true, isHover: true }"
:row-config="{ isCurrent: true, isHover: true, useKey: true }"
@cell-click="rowChangeEvent"
:columnConfig="{ resizable: true }"
:column-config="{ resizable: true, useKey: true }"
:scroll-y="{ enabled: true, gt: 50 }"
:radio-config="{ labelField: 'name', highlight: true }"
>
......@@ -54,7 +54,7 @@
{{ resultStatus=="warning"?"缺少参数值":"" }}
</template>
<div v-if="formulaDataList.length > 0">
<vxe-table :show-header="false" border stripe :data="formulaDataList" :column-config="{ resizable: true }">
<vxe-table :show-header="false" border stripe :data="formulaDataList" :column-config="{ resizable: true, useKey: true }">
<vxe-column field="name" title="项目" width="100"></vxe-column>
<vxe-column field="content" title="内容"></vxe-column>
</vxe-table>
......
......@@ -22,7 +22,7 @@
</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button
status="primary"
icon="vxe-icon-edit"
......@@ -305,9 +305,7 @@ import { ref, reactive, onMounted, computed } from 'vue'
import { VxeUI, VxeTableInstance } from 'vxe-table'
import 'vxe-table/lib/style.css'
import { useRoute } from 'vue-router'
// 组件导入
import MultiColumnTable from '../tableComponents/MultiColumnTable.vue'
import AttachTable from '../tableComponents/AttachTable.vue'
......@@ -338,6 +336,7 @@ interface QueryParam {
tplId: number
tplName: string
tplCode: string
comfrom: string
}
interface FormDataItem {
......@@ -414,7 +413,8 @@ const queryParam = ref<QueryParam>({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
const formData = reactive<Record<string, any>>({})
......@@ -479,13 +479,14 @@ const initPage = async () => {
}
const initQueryParams = () => {
const { taskId, taskName, tplId, tplName, tplCode } = route.query
const { taskId, taskName, tplId, tplName, tplCode,comfrom } = route.query
if (taskId) queryParam.value.taskId = Number(taskId)
if (taskName) queryParam.value.taskName = String(taskName)
if (tplId) queryParam.value.tplId = Number(tplId)
if (tplName) queryParam.value.tplName = String(tplName)
if (tplCode) queryParam.value.tplCode = String(tplCode)
if (comfrom) queryParam.value.comfrom = String(comfrom)
}
const loadUserRights = async () => {
......
......@@ -15,7 +15,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="checkData()">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
......@@ -310,7 +310,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
// 权限相关状态
......@@ -353,6 +354,12 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
// 设置查询参数
setQueryParams();
// 获取权限和验证公式
try {
......
......@@ -7,7 +7,7 @@
<span style="font-weight: bold;margin-left:20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<!-- <vxe-button status="primary" icon="vxe-icon-edit" @click="checkData()">校验</vxe-button> -->
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch()">保存</vxe-button>
</template>
......@@ -176,7 +176,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
interface FormData {
......@@ -231,7 +232,10 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode);
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom);
}
try {
if (queryParam.value.tplId > 0 && queryParam.value.taskId > 0) {
userAllocItems.value = await findUserRightForTplItem({
......
......@@ -15,7 +15,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="validateData()">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
......@@ -230,7 +230,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -249,6 +250,9 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
try {
loading.value = true
......
......@@ -15,7 +15,7 @@
<span style="font-weight: bold;margin-left:20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-edit" @click="validateData()" :disabled="loading">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch()" :disabled="loading">保存</vxe-button>
......@@ -297,7 +297,8 @@ const queryParam = ref({
taskName:'',
tplId:-1,
tplName:'',
tplCode:''
tplCode:'',
comfrom:''
})
interface FormData {
......@@ -330,6 +331,9 @@ onMounted(async ()=>{
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode);
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom);
}
try {
userAllocItems.value = await findUserRightForTplItem({
......
......@@ -15,7 +15,7 @@
<span style="font-weight: bold;margin-left:20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="validateData()">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch()">保存</vxe-button>
......@@ -69,7 +69,8 @@ const queryParam = ref({
taskName:'',
tplId:-1,
tplName:'',
tplCode:''
tplCode:'',
comfrom:''
})
// 权限相关状态
......@@ -122,6 +123,9 @@ onMounted(async ()=>{
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode);
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom);
}
// 获取权限和验证公式
try {
......
......@@ -15,7 +15,7 @@
<span style="font-weight: bold; margin-left: 20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="validateData()">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch()">保存</vxe-button>
......@@ -254,6 +254,7 @@
tplId: -1,
tplName: '',
tplCode: '',
comfrom: ''
});
// 权限相关状态
......@@ -305,7 +306,10 @@
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode);
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom);
}
// 获取权限和验证公式
try {
userAllocItems.value = await findUserRightForTplItem({
......
......@@ -17,7 +17,7 @@
</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button
status="primary"
icon="vxe-icon-edit"
......@@ -366,6 +366,7 @@
tplId: -1,
tplName: '',
tplCode: '',
comfrom: ''
});
// 权限相关状态
......@@ -418,7 +419,13 @@
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode);
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom);
}
// 初始化数据
await refCheckTbData.value.initData();
// 获取权限和验证公式
try {
userAllocItems.value = await findUserRightForTplItem({
......
......@@ -15,7 +15,7 @@
<span style="font-weight: bold;margin-left:20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="validateData()">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch()">保存</vxe-button>
......@@ -346,7 +346,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
// 状态变量
......@@ -426,9 +427,6 @@ const initializePage = async () => {
fetchValidationFormulas()
])
console.log('获取到的权限:', userAllocItems.value.length)
console.log('获取到的公式:', validFormula.value.length)
await setTplItemMap()
setFormItemRight()
await setData()
......@@ -455,6 +453,7 @@ const setQueryParams = () => {
if (params.tplId) queryParam.value.tplId = Number(params.tplId)
if (params.tplName) queryParam.value.tplName = String(params.tplName)
if (params.tplCode) queryParam.value.tplCode = String(params.tplCode)
if (params.comfrom) queryParam.value.comfrom = String(params.comfrom)
}
// 获取用户权限
......
......@@ -15,7 +15,7 @@
<span style="font-weight: bold;margin-left:20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer()" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="checkData()">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch()">保存</vxe-button>
......@@ -356,7 +356,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
// 状态变量
......@@ -470,6 +471,7 @@ const setQueryParams = () => {
if (params.tplId) queryParam.value.tplId = Number(params.tplId)
if (params.tplName) queryParam.value.tplName = String(params.tplName)
if (params.tplCode) queryParam.value.tplCode = String(params.tplCode)
if (params.comfrom) queryParam.value.comfrom = String(params.comfrom)
}
// 获取用户权限
......
......@@ -15,7 +15,7 @@
<span style="font-weight: bold;margin-left:20px"> 表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-edit" @click="handleOpenHistoryDrawer" :disabled="loading">近5年数据填报</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="validateData">校验</vxe-button>
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
......@@ -346,7 +346,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
// 权限相关状态
......@@ -392,7 +393,13 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode);
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom);
}
// 设置查询参数
setQueryParams();
// 获取权限和验证公式
try {
userAllocItems.value = await findUserRightForTplItem({
......
......@@ -7,7 +7,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
</template>
</vxe-toolbar>
......@@ -110,7 +110,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -129,7 +130,19 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
// 设置查询参数
setQueryParams();
// 获取权限和验证公式
await Promise.all([
fetchUserRights(),
fetchValidationFormulas()
])
await setTplItemMap()
await setData()
})
......
......@@ -7,7 +7,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
</template>
</vxe-toolbar>
......@@ -82,7 +82,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -101,7 +102,10 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
await setTplItemMap()
await setData()
})
......
......@@ -7,7 +7,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
</template>
</vxe-toolbar>
......@@ -110,7 +110,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -130,6 +131,9 @@ onMounted(async () => {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
await setTplItemMap()
await setData()
})
......
......@@ -7,7 +7,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
</template>
</vxe-toolbar>
......@@ -110,7 +110,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -129,7 +130,11 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
await setTplItemMap()
await setData()
})
......
......@@ -7,7 +7,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
</template>
</vxe-toolbar>
......@@ -110,7 +110,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -129,6 +130,9 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
await setTplItemMap()
await setData()
......
......@@ -7,7 +7,7 @@
<span class="info-label">表格:{{ queryParam?.tplCode }} {{ queryParam?.tplName }}</span>
</div>
</template>
<template #tools>
<template #tools v-if="!queryParam.comfrom">
<vxe-button status="primary" icon="vxe-icon-save" @click="saveBatch">保存</vxe-button>
</template>
</vxe-toolbar>
......@@ -110,7 +110,8 @@ const queryParam = ref({
taskName: '',
tplId: -1,
tplName: '',
tplCode: ''
tplCode: '',
comfrom: ''
})
onMounted(async () => {
......@@ -129,6 +130,9 @@ onMounted(async () => {
if (route.query.tplCode) {
queryParam.value.tplCode = String(route.query.tplCode)
}
if (route.query.comfrom) {
queryParam.value.comfrom = String(route.query.comfrom)
}
await setTplItemMap()
await setData()
......
......@@ -63,6 +63,12 @@ export const saveOrUpdate = (params, isUpdate) => {
return defHttp.post({ url: url, params });
};
export const queryTaskReview = (params) => defHttp.get({ url: Api.queryTaskReview, params });
// export const queryTaskReview = (params) => defHttp.get({
// url: Api.queryTaskReview,
// params
// });
export const downLoadTaskXml = (params) => defHttp.get({ url: Api.downLoadTaskXml, params });
export const downLoadTaskXml = (params) => defHttp.get({
url: Api.downLoadTaskXml,
params
});
......@@ -20,9 +20,21 @@ export const columns: BasicColumn[] = [
align: 'center',
dataIndex: 'appSta',
customRender: ({ text }) => {
if(text===1) return '通过'
return '未通过'
//return render.renderDict(text, 'rate_approve');
if(!text||text===0) {
return render.renderTag("待审批", "blue");
}
if(!text||text===1) {
return render.renderTag("通过", "green");
}
if(!text||text===2) {
return render.renderTag("未通过", "red");
}
if(!text||text===9) {
return render.renderTag("归档", "gray");
}
const color = text == 'L' ? 'blue' : text == 'M' ? 'yellow' : 'red';
return render.renderTag(render.renderDict(text, 'priority'), color);
},
ifShow: true,
},
......@@ -123,7 +135,7 @@ export const formSchemaApprove: FormSchema[] = [
return {
options: [
{ label: '通过', value: 1 },
{ label: '否决', value: 0 },
{ label: '否决', value: 2 },
],
};
},
......
......@@ -19,11 +19,8 @@
import { useListPage } from '/@/hooks/system/useListPage';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { columns, searchFormSchema } from './BaosongTaskReview.data';
import { list, deleteOne, batchDelete, downLoadTaskXml } from './BaosongTaskReview.api';
import { list, deleteOne, batchDelete, downLoadTaskXml, saveOrUpdate } from './BaosongTaskReview.api';
import BaosongApproveModal from './components/BaosongApproveModal.vue';
import { defHttp } from '/@/utils/http/axios';
const checkedKeys = ref<Array<string | number>>([]);
const [registerModal, { openModal }] = useModal();
const [registerAppModal, { openModal: openAppModal }] = useModal();
......@@ -58,48 +55,21 @@
},
beforeFetch(params) {
params = Object.assign(params,{ token: allReportData.value})
},
params = Object.assign(params,{ token: allReportData.value})
},
},
});
const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext;
let url = window.location.href;
console.log("----------- ",url); // 输出当前路由的完整路径
let intNumber = url.indexOf("Token=");
intNumber=intNumber+6;
let cctoken=url.substring(intNumber);
console.log("----------- cctoken",cctoken); // 输出当前路由的完整路径
const allReportDataUrl = "/api/jflow/getUserTokey"
const allReportData = ref();
const gettoken = async () => {
allReportData.value = await defHttp.get({url: allReportDataUrl, params:{Token:cctoken}});
}
onMounted(async () => {
await gettoken();
console.log("----------- gettoken ",allReportData.value);
});
function handleAdd() {
openModal(true, {
isUpdate: false,
showFooter: true,
});
}
function handleEdit(record: Recordable) {
record['token']=allReportData.value;
openModal(true, {
record,
isUpdate: true,
showFooter: true,
});
function handleEdit(record: Recordable) {
record.appSta=9;
saveOrUpdate(record,true).then((res) => {
handleSuccess();
})
}
function handleDetail(record: Recordable) {
......@@ -114,9 +84,6 @@
await deleteOne({ id: record.id }, handleSuccess);
}
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
......@@ -128,14 +95,14 @@
label: '审核',
onClick: handleApproval.bind(null, record),
},
{
label: '下载',
onClick: downLoadXml.bind(null, record),
},
// {
// label: '下载',
// onClick: downLoadXml.bind(null, record),
// },
{
label: '归档',
onClick: downLoadXml.bind(null, record),
disabled:!(record.appSta==1),
onClick: handleEdit.bind(null, record),
},
];
}
......@@ -146,12 +113,6 @@
label: '详情',
onClick: handleDetail.bind(null, record),
},
{
label: '归档',
onClick: handleDetail.bind(null, record),
},
{
label: '删除',
popConfirm: {
......@@ -171,10 +132,7 @@
}
async function downLoadXml(record) {
//{id: record.id}
record['token']=allReportData.value;
let retData = await downLoadTaskXml(record);
handleDownloadFile(retData);
}
......@@ -182,15 +140,6 @@
return row.taskid + '_' + row.tplid;
}
function goToFile(filepath) {
if (!!filepath) {
let url = getFileAccessHttpUrl(filepath);
window.open(url);
} else {
message.warning('没有找到要下载的文件');
}
}
const handleDownloadFile = (filePath) => {
const globOnlineViewUrl: string = import.meta.env.VITE_GLOB_ONLINE_VIEW_URL;
const url = globOnlineViewUrl + filePath;
......
......@@ -16,6 +16,9 @@ enum Api {
listForFillData = '/baosong/baosongTask/listForFillData',
importData = '/baosong/baosongTask/importData',
archiveList = '/baosong/baosongTask/archiveList',
}
/**
......@@ -34,6 +37,11 @@ export const getImportUrl = Api.importExcel;
export const list = (params) =>
defHttp.get({url: Api.list, params});
export const archiveList = (params) =>
defHttp.get({url: Api.archiveList,
params
});
export const listForFillData = (params) =>
defHttp.get({url: Api.listForFillData, params});
......
......@@ -3,6 +3,8 @@ import { FormSchema } from '/@/components/Table';
import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getAllRolesList, queryUserByDepId } from '/@/views/system/user/user.api';
const objTmp={1:"year",2:"quarter",3:"month"}
const valueFormat={1:"YYYY",2:"YYYYqQ",3:"YYYY-MM"}
//列表数据
export const columns: BasicColumn[] = [
{
......@@ -45,7 +47,7 @@ export const columns: BasicColumn[] = [
resizable:true
},
{
title: '截至日期',
title: '统计时段',
align: 'left',
dataIndex: 'enterDate',
customRender: ({ text }) => {
......@@ -153,10 +155,99 @@ export const formSchema: FormSchema[] = [
label: '报表类型',
field: 'tp',
component: 'JDictSelectTag',
componentProps: {
componentProps: ({ formActionType, formModel }) => {
return {
dictCode: 'report_tp',
placeholder: '请选择',
stringToNumber: true,
sync: true,
onChange: async (tp) => {
const { updateSchema } = formActionType;
updateSchema([
{
field: 'enterDate',
component:'DatePicker',
componentProps: {
picker:objTmp[tp],
valueFormat: valueFormat[tp],
format: valueFormat[tp],
onChange: (val) => {
let date = new Date(val);
let year = date.getFullYear();
let month = date.getMonth()+1;
let stDate = "";
let endDate="";
if(formModel.tp==3) {
let firstDate = year + "-" + (month<10?'0'+month:month) +"-01";
let lastDate = new Date(year, month, 0).getDate();
stDate = firstDate;
endDate = year + "-" + (month<10?'0'+month:month) + "-" + lastDate
} else if(formModel.tp==2) {
let firstDate = date;
let quarter = Math.floor((firstDate.getMonth() + 3) / 3);
let lastMonth = quarter * 3;
let lastDate = new Date(year, lastMonth, 0).getDate();
stDate = firstDate.toISOString().slice(0, 10)
endDate = year + "-" + (lastMonth<10?'0'+lastMonth:lastMonth) + "-" + lastDate
} else if(formModel.tp==1) {
stDate = year + "-01-01";
endDate = year + "-12-31"
}
formModel.startDate=stDate
formModel.endDate= endDate
}
},
},
]);
formModel.enterDate=''
formModel.startDate= ""
formModel.endDate= ""
}
}
},
required: true,
},
{
label: '统计时段',
field: 'enterDate',
component: 'DatePicker',
componentProps: ({ formActionType, formModel }) => {
const tp = formModel.tp
console.log(tp)
console.log(objTmp[tp])
console.log(valueFormat[tp])
return {
picker:objTmp[tp],
valueFormat: valueFormat[tp],
format: valueFormat[tp]
}
},
required: true,
},
{
label: '开始日期',
field: 'startDate',
dynamicDisabled: false,
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD',
format: "YYYY-MM-DD",
},
required: true,
},
{
label: '结束日期',
field: 'endDate',
component: 'DatePicker',
dynamicDisabled: false,
componentProps: {
valueFormat: 'YYYY-MM-DD',
format: "YYYY-MM-DD",
},
required: true,
},
......@@ -186,22 +277,21 @@ export const formSchema: FormSchema[] = [
defaultExpandLevel: 2,
multiple:false,
onSelect: async (options, values) => {
const depId = values.value[0]
if(depId.length==32){
const users = await queryUserByDepId({id:depId});
const newArray = users.map(user => ({
label: user.realname,
value: user.id
}));
const { updateSchema } = formActionType;
updateSchema([
{
field: 'respUser',
componentProps: { options: newArray },
},
]);
}
// const depId = values.value[0]
// if(depId.length==32){
// const users = await queryUserByDepId({id:depId});
// const newArray = users.map(user => ({
// label: user.realname,
// value: user.id
// }));
// const { updateSchema } = formActionType;
// updateSchema([
// {
// field: 'respUser',
// componentProps: { options: newArray },
// },
// ]);
// }
},
};
},
......@@ -209,38 +299,21 @@ export const formSchema: FormSchema[] = [
{
label: '负责人',
field: 'respUser',
component: 'Select',
componentProps: {
options:[]
component: 'JSelectUserByDept',
componentProps:{
labelKey:'realname',
rowKey:'username'
},
required: false,
required: true,
},
{
label: '联系电话',
field: 'enterTel',
component: 'Input',
required: false,
},
{
label: '填报日期',
field: 'enterDate',
component: 'DatePicker',
required: false,
},
{
label: '开始日期',
field: 'startDate',
component: 'DatePicker',
required: false,
},
{
label: '结束日期',
field: 'endDate',
component: 'DatePicker',
required: false,
required: true,
},
// TODO 主键隐藏字段,目前写死为ID
{
label: '',
......
......@@ -138,6 +138,9 @@ async function setDataList(params) {
const handleApproval = async (appSta)=> {
const ids = await getSelectIds();
if(ids.length == 0){
return;
}
batchSaveApproval({
ids:ids,
appSta:appSta
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论