VistarStarDataIntegration/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue
bairubing 6a1234444e 更新 SolidWorks 管理相关常量和逻辑
在 `ConfigConst.cs` 中添加 `SolidWorksManageApiUrlNew` 和 `SolidWorksManageAuthorizationNew` 常量。
修改多个类的截止时间为 `2025年8月31日`。
新增 `RefreshManageToKenNew` 类以刷新新版 Manage Token。
在 `OaOpenInterfaceService.cs` 中统一字段类型为 `CreateProjectField`。
添加 `CreateProcessInput` 和 `CreateProcessField` 类以处理创建流程的输入数据。
在 `SolidWorksManageService.cs` 中新增获取新版 token 的方法,并更新相关 API 地址和授权信息。
移除 `index.vue` 中的调试用 `console.log` 语句。
2025-07-15 13:42:10 +08:00

207 lines
7.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="scheduledTaskLog-container">
<el-card shadow="hover"
:body-style="{ padding: '5px 5px 0 5px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true"
label-width="auto" style="flex: 1 1 0%">
<el-row :gutter="10">
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="开始时间" prop="name">
<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间"
:shortcuts="shortcuts" class="w100" />
</el-form-item>
</el-col>
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="结束时间" prop="code">
<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间"
:shortcuts="shortcuts" class="w100" />
</el-form-item>
</el-col>
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="任务名称">
<el-input v-model="state.queryParams.taskName" placeholder="任务名称" clearable />
</el-form-item>
</el-col>
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="过滤空日志">
<el-switch v-model="presenceLog" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-divider style="height: calc(100% - 5px); margin: 0 10px" direction="vertical" />
<el-row>
<el-col>
<el-button-group>
<el-button type="primary" icon="ele-Search" @click="handleQuery"
v-auth="'scheduledTaskLog/page'" :loading="options.loading"> 查询 </el-button>
<el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> 重置 </el-button>
</el-button-group>
</el-col>
</el-row>
</el-card>
<el-dialog v-model="state.visible" draggable overflow destroy-on-close>
<template #header>
<div style="color: #fff">
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle">
<ele-Document /> </el-icon>
<span> 日志详情 </span>
</div>
</template>
<el-tabs v-model="state.activeTab">
<el-scrollbar height="calc(100vh - 250px)">
<vue-json-pretty :data="state.detail.returnResult" showLength showIcon showLineNumber
showSelectController />
</el-scrollbar>
</el-tabs>
</el-dialog>
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons>
<el-button icon="ele-DeleteFilled" type="danger" @click="handleClear" v-auth="'sysLogOp/clear'">
清空半年前日志 </el-button>
</template>
<template #toolbar_tools> </template>
<template #empty>
<el-empty :image-size="200" />
</template>
<template #row_buttons="{ row }">
<el-button icon="ele-InfoFilled" text type="primary" @click="handleView({ row })">日志详情</el-button>
</template>
</vxe-grid>
</el-card>
</div>
</template>
<script lang="ts" setup name="scheduledTaskLog">
import { ElMessage } from 'element-plus';
import { onMounted, reactive, ref } from 'vue';
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
import { Local } from '/@/utils/storage';
import { useDateTimeShortCust } from '/@/hooks/dateTimeShortCust';
import { PageScheduledTaskLog, Detail, HalfaYearTaskLog } from '/@/api/log/scheduledTaskLog';
import { StringToObj } from '/@/utils/json-utils';
import VueJsonPretty from 'vue-json-pretty';
import 'vue-json-pretty/lib/styles.css';
const xGrid = ref<VxeGridInstance>();
const presenceLog = ref(true)
// 本地存储参数
const localPageParamKey = 'localPageParam:productDesignLibrary';
// 表格事件
const gridEvents: VxeGridListeners = {
// 只对 pager-config 配置时有效,分页发生改变时会触发该事件
async pageChange({ pageSize }) {
state.localPageParam.pageSize = pageSize;
Local.set(localPageParamKey, state.localPageParam);
},
// 当排序条件发生变化时会触发该事件
async sortChange({ field, order }) {
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
Local.set(localPageParamKey, state.localPageParam);
},
};
const shortcuts = useDateTimeShortCust();
const state = reactive({
queryParams: {
startTime: undefined,
endTime: undefined,
taskName: undefined,
presenceLog: presenceLog
},
localPageParam: {
pageSize: 50 as number,
defaultSort: { field: 'id', order: 'desc', descStr: 'desc' },
},
visible: false,
activeTab: 'message',
detail: {
returnResult: undefined
}
});
// 重置操作
const resetQuery = async () => {
state.queryParams.startTime = undefined;
state.queryParams.endTime = undefined;
state.queryParams.taskName = undefined;
await xGrid.value?.commitProxy('reload');
};
// 清空半年前日志
const handleClear = async () => {
options.loading = true;
var halfaYearTaskLog = await HalfaYearTaskLog();
options.loading = false;
console.log(halfaYearTaskLog);
ElMessage.success(halfaYearTaskLog.data.result);
await handleQuery();
}
const options = useVxeTable({
id: 'scheduledTaskLog',
name: '产品设计库管理',
columns: [
{ type: 'seq', title: '序号', width: 60 },
{ field: 'taskName', title: '任务名称', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'logDateTime', title: '日志时间', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'elapsed', title: '操作用时(毫秒)', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ title: '操作', fixed: 'right', width: 300, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
{
// 代理配置
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
// 排序配置
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
// 分页配置
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
// 工具栏配置
toolbarConfig: { export: false },
// 行设置
// rowConfig: { height: 80 },
}
)
// 页面初始化
onMounted(() => {
state.localPageParam = Local.get(localPageParamKey) || state.localPageParam;
});
// 查询api
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' });
var data = PageScheduledTaskLog(params)
return data;
};
// 查询操作
const handleQuery = async (reset = false) => {
options.loading = true;
await xGrid.value?.commitProxy('query');
options.loading = false;
};
const handleView = async ({ row }: any) => {
var data = await Detail(row.id);
state.activeTab = 'message';
// 如果请求参数是JSON字符串则尝试转为JSON对象
state.detail.returnResult = StringToObj(data?.data?.result);
state.visible = true;
};
</script>