From 08abfcfea8247c394b2034cad59734846b403dd9 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 28 十月 2024 22:22:58 +0800 Subject: [PATCH] 计划任务优化 --- src/views/tigerprojects/tsk/tsk_job/job.data.ts | 41 +++++++++ src/views/tigerprojects/system/lowcode/data.ts | 113 ++++++++++++++-------------- src/views/tigerprojects/tsk/tsk_job/log.data.ts | 2 src/views/tigerprojects/tsk/tsk_log/logDrawer.vue | 5 src/api/tigerapi/tsk/tsk_job.ts | 52 ++++++++---- src/views/tigerprojects/system/lowcode/normal/mainTable.vue | 8 +- src/api/tigerapi/system.ts | 1 src/api/tigerapi/model/tskModel.ts | 3 src/views/tigerprojects/tsk/tsk_job/jobDrawer.vue | 2 src/assets/icons/startplan.svg | 1 10 files changed, 144 insertions(+), 84 deletions(-) diff --git a/src/api/tigerapi/model/tskModel.ts b/src/api/tigerapi/model/tskModel.ts index 2c391ad..0e4dc91 100644 --- a/src/api/tigerapi/model/tskModel.ts +++ b/src/api/tigerapi/model/tskModel.ts @@ -183,6 +183,7 @@ JobType: string; AssemblyName: string; Remark: string; + LastRunTime: Dayjs; } export interface TrigArgs { @@ -199,6 +200,7 @@ Hours: number; Days: number; Weekday: number; + Interval: number; } export interface FluentJobParam { @@ -206,4 +208,5 @@ DataType: string; JobName: string; Args: TrigArgs; + Remark: string; } diff --git a/src/api/tigerapi/system.ts b/src/api/tigerapi/system.ts index 069cfb2..55d337e 100644 --- a/src/api/tigerapi/system.ts +++ b/src/api/tigerapi/system.ts @@ -66,6 +66,7 @@ StopJob = '/Tsk/PauseJob', AddJob = '/Tsk/AddJob', AddTskJob = '/Tsk/AddTskJob', + ImmediateRun = '/Tsk/ImmediateRun', RemoveTskJob = '/Tsk/RemoveTskJob', UpdateJob = '/Tsk/UpdateJob', SaveTskJob = '/Tsk/SaveTskJob', diff --git a/src/api/tigerapi/tsk/tsk_job.ts b/src/api/tigerapi/tsk/tsk_job.ts index 189c9bf..30a7cdd 100644 --- a/src/api/tigerapi/tsk/tsk_job.ts +++ b/src/api/tigerapi/tsk/tsk_job.ts @@ -111,28 +111,46 @@ }; /** + * @desc 绔嬪嵆杩愯浠诲姟 + */ +export const ImmediateRun = async (params: FluentJobParam) => { + const usParams = generateAction(params.DataType, params.AssemblyName, params.JobName); + return await defHttp.post( + { url: Api.ImmediateRun, params: usParams }, + { + errorMessageMode: 'none', + isTransformResponse: false, + apiUrl: globSetting.taskApiUrl, + }, + ); +}; + +/** * @desc 鍒犻櫎 * @param {Recordable} params - 璁板綍 */ export const DeleteTsk_Job = async (params: Recordable) => { const usParams = genAction('TSK_JOB', [params]); - const usParamstrig = genAction('TSK_TRIG', [params.Triggers]); - defHttp.post( - { url: Api.DeleteList, params: usParamstrig }, - { - errorMessageMode: 'none', - isTransformResponse: false, - apiUrl: globSetting.taskApiUrl, - }, - ); - return await defHttp.post( - { url: Api.DeleteList, params: usParams }, - { - errorMessageMode: 'none', - isTransformResponse: false, - apiUrl: globSetting.taskApiUrl, - }, - ); + const usParamstrig = genAction('TSK_TRIG', params.Triggers); + return await defHttp + .post( + { url: Api.DeleteList, params: usParams }, + { + errorMessageMode: 'none', + isTransformResponse: false, + apiUrl: globSetting.taskApiUrl, + }, + ) + .then(() => { + defHttp.post( + { url: Api.DeleteList, params: usParamstrig }, + { + errorMessageMode: 'none', + isTransformResponse: false, + apiUrl: globSetting.taskApiUrl, + }, + ); + }); }; /** * @desc 寮�濮嬩换鍔� diff --git a/src/assets/icons/startplan.svg b/src/assets/icons/startplan.svg new file mode 100644 index 0000000..8190f81 --- /dev/null +++ b/src/assets/icons/startplan.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1730119382740" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9034" width="128" height="128" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M884.67968 0H139.3152C62.6944 0 0 62.69952 0 139.32032v745.35936C0 961.3056 62.6944 1024 139.3152 1024h745.36448C961.31072 1024 1024 961.3056 1024 884.67968V139.32032C1024 62.69952 961.31072 0 884.67968 0z" fill="#745AB1" p-id="9035"></path><path d="M686.88384 479.88736h-131.1488V348.73344a43.7248 43.7248 0 1 0-87.42912 0v174.88896a43.71456 43.71456 0 0 0 43.70944 43.71968h174.89408a43.71456 43.71456 0 0 0 43.71968-43.71968c-0.01024-24.14592-19.59936-43.73504-43.74528-43.73504z" fill="#FFFFFF" p-id="9036"></path><path d="M512 140.35456c-204.94336 0-371.64032 166.7072-371.64032 371.64544S307.05664 883.65056 512 883.65056c204.93312 0 371.64032-166.71232 371.64032-371.65056 0-204.94336-166.72768-371.64544-371.64032-371.64544z m0 655.84128c-156.71296 0-284.20096-127.50336-284.20096-284.19584 0-156.70784 127.49312-284.20608 284.20096-284.20608S796.20096 355.29216 796.20096 512c0 156.68736-127.49824 284.19584-284.20096 284.19584z" fill="#FFFFFF" p-id="9037"></path></svg> \ No newline at end of file diff --git a/src/views/tigerprojects/system/lowcode/data.ts b/src/views/tigerprojects/system/lowcode/data.ts index 8136cb0..eedfcdb 100644 --- a/src/views/tigerprojects/system/lowcode/data.ts +++ b/src/views/tigerprojects/system/lowcode/data.ts @@ -41,7 +41,7 @@ * @return {*} */ export function GetActionsData(params: {}, ...args) { - let data = [] as ActionItem[]; + const data = [] as ActionItem[]; return data; } @@ -160,7 +160,7 @@ export async function initRoute(lf, rotId, routeData, currlf, rotType) { currlf.value = unref(lf); //閫氳繃宸ヨ壓璺嚎ID鑾峰彇鍥惧舰鏁版嵁锛屽苟娓叉煋 - var _data = rotType == 'Wo' ? await getWoRouteData(rotId) : await getRouteData(rotId); + const _data = rotType == 'Wo' ? await getWoRouteData(rotId) : await getRouteData(rotId); console.log('缁勪欢宸叉寕杞�', _data); if (_data.Data != null) { _data.Data.nodes.forEach((n) => { @@ -215,7 +215,7 @@ d.CREATE_USER = useUserStore().getUserInfo.userId as string; d.UPDATE_TIME = formatToDateTime(new Date()); d.UPDATE_USER = useUserStore().getUserInfo.userId as string; - var _data2: any[] = []; + let _data2: any[] = []; if (!isNullOrEmpty(data.value[item])) { _data2 = data.value[item].map((item) => { return item; @@ -236,7 +236,7 @@ const name = params['name']; const useTables = args[1]; if (!isNullOrEmpty(params['data'])) { - var _data = params['data'].value[name].filter((item) => item['ID'] != params['record']['ID']); + const _data = params['data'].value[name].filter((item) => item['ID'] != params['record']['ID']); params['data'].value[name] = _data; useTables[name][1].setProps({ dataSource: [], @@ -262,7 +262,7 @@ * @return {*} */ export function GenerateActionButton(params: any, buttons: Ref<[]>, openDrawer: Fn, reload: Fn) { - let actionItem = [] as ActionItem[]; + const actionItem = [] as ActionItem[]; buttons.value.map((x) => { if (x['BUTTON_TYPE'] == 1) { let url = ''; @@ -338,16 +338,16 @@ entityName: 'SYS_LOW_CODE', order: '', }).then((data) => { - var searchForms = JSON.parse(data.Data.Items[0].SEARCH_FORM_JSON); - let colSlots = [] as string[]; + const searchForms = JSON.parse(data.Data.Items[0].SEARCH_FORM_JSON); + const colSlots = [] as string[]; for (const i in searchForms) { if (!isNullOrUnDef(searchForms[i]['colSlot'])) { colSlots.push('form-' + searchForms[i]['colSlot']); } } - var _cruds = JSON.parse(data.Data.Items[0].FORM_JSON); - let crudColSlots = [] as string[]; + const _cruds = JSON.parse(data.Data.Items[0].FORM_JSON); + const crudColSlots = [] as string[]; for (const i in _cruds) { if (!isNullOrUnDef(_cruds[i]['colSlot'])) { crudColSlots.push(_cruds[i]['colSlot']); @@ -358,7 +358,7 @@ colSlots: colSlots, crudColSlots: crudColSlots, sName: `${path.split('/')[1]}_update`, - }; + }; // 灏嗗璞¤浆鎹负JSON瀛楃涓插苟淇濆瓨鍒皊essionStorage sessionStorage.removeItem(`${id.sName}_params`); sessionStorage.setItem(`${id.sName}_params`, encodeURI(JSON.stringify({ params: params }))); @@ -372,62 +372,61 @@ // 灏嗗璞¤浆鎹负JSON瀛楃涓插苟淇濆瓨鍒皊essionStorage sessionStorage.removeItem(`${id.sName}_params`); sessionStorage.setItem(`${id.sName}_params`, encodeURI(JSON.stringify(id))); - go(`/${path.split('/')[1]}/${path.split('/')[2]}/${encodeURI(JSON.stringify({ sName: id.sName, Name: id.Name }))}`); + go( + `/${path.split('/')[1]}/${path.split('/')[2]}/${encodeURI(JSON.stringify({ sName: id.sName, Name: id.Name }))}`, + ); } else { - const id = { sName: `${path.split('/')[1]}_update`,params: params }; + const id = { sName: `${path.split('/')[1]}_update`, params: params }; // 灏嗗璞¤浆鎹负JSON瀛楃涓插苟淇濆瓨鍒皊essionStorage sessionStorage.removeItem(`${id.sName}_params`); sessionStorage.setItem(`${id.sName}_params`, encodeURI(JSON.stringify(id))); - go(`${path}/${encodeURI(JSON.stringify({ sName: id.sName}))}`); + go(`${path}/${encodeURI(JSON.stringify({ sName: id.sName }))}`); } } - - - /** - * @description: 璋冪敤api鍓嶏紝鍙傛暟鏁寸悊 - * @param {*} t - * @return {*} - */ - export function SearchInfoFn(param: any, name: RouteRecordName | null | undefined, ByOrg: boolean) { - const useQuery = useQueryStore(); - if ( - !isNullOrUnDef(useQuery.getCurSearchInfo) && - useQuery.getCurSearchInfo.some((q) => q.name == name) - ) { - const curSearchInfo = useQuery.getCurSearchInfo.filter((q) => q.name == name); - const Keys = Object.getOwnPropertyNames(curSearchInfo[0].searchInfo); - for (const k in Keys) { - if (Keys[k] != 'page' && Keys[k] != 'pageSize') { - param[Keys[k]] = curSearchInfo[0].searchInfo[Keys[k]]; - } +/** + * @description: 璋冪敤api鍓嶏紝鍙傛暟鏁寸悊 + * @param {*} t + * @return {*} + */ +export function SearchInfoFn(param: any, name: RouteRecordName | null | undefined, ByOrg: boolean) { + const useQuery = useQueryStore(); + if ( + !isNullOrUnDef(useQuery.getCurSearchInfo) && + useQuery.getCurSearchInfo.some((q) => q.name == name) + ) { + const curSearchInfo = useQuery.getCurSearchInfo.filter((q) => q.name == name); + const Keys = Object.getOwnPropertyNames(curSearchInfo[0].searchInfo); + for (const k in Keys) { + if (Keys[k] != 'page' && Keys[k] != 'pageSize') { + param[Keys[k]] = curSearchInfo[0].searchInfo[Keys[k]]; } - useQuery.setCurSearchInfo({ name: name, searchInfo: param }); } - if (isNullOrEmpty(param.option) && ByOrg) { - param.option = { - //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁� - UserId: useUserStore().getUserInfo.userId, - ByOrg: true, - CurOrg: useUserStore().getUserInfo.orgCode, - }; - } - return param; + useQuery.setCurSearchInfo({ name: name, searchInfo: param }); } - + if (isNullOrEmpty(param.option) && ByOrg) { + param.option = { + //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁� + UserId: useUserStore().getUserInfo.userId, + ByOrg: true, + CurOrg: useUserStore().getUserInfo.orgCode, + }; + } + return param; +} - /** - * @description: 璇锋眰涔嬪悗瀵硅繑鍥炲�艰繘琛屽鐞� - * @param {*} t - * @return {*} - */ - export function afterFetchFn(t: any, name: RouteRecordName | null | undefined, f) { - const useQuery = useQueryStore(); - if ( - !isNullOrUnDef(useQuery.getCurSearchInfo) && - useQuery.getCurSearchInfo.some((q) => q.name == name) - ) { - const curSearchInfo = useQuery.getCurSearchInfo.filter((q) => q.name == name); - f.setFieldsValue(curSearchInfo[0].searchInfo); - } +/** + * @description: 璇锋眰涔嬪悗瀵硅繑鍥炲�艰繘琛屽鐞� + * @param {*} t + * @return {*} + */ +export function afterFetchFn(t: any, name: RouteRecordName | null | undefined, f) { + const useQuery = useQueryStore(); + if ( + !isNullOrUnDef(useQuery.getCurSearchInfo) && + useQuery.getCurSearchInfo.some((q) => q.name == name) + ) { + const curSearchInfo = useQuery.getCurSearchInfo.filter((q) => q.name == name); + f.setFieldsValue(curSearchInfo[0].searchInfo); } +} diff --git a/src/views/tigerprojects/system/lowcode/normal/mainTable.vue b/src/views/tigerprojects/system/lowcode/normal/mainTable.vue index ac407e2..ad98fbf 100644 --- a/src/views/tigerprojects/system/lowcode/normal/mainTable.vue +++ b/src/views/tigerprojects/system/lowcode/normal/mainTable.vue @@ -38,7 +38,7 @@ @cancel="custCancel" :type="cType" :entityName="entityName" - @modalInner="getdtlSlots" + @modal-inner="getdtlSlots" > <!-- 鐢ㄦ彃妲借嚜瀹氫箟澶氳〃鍗� --> <template #[item.name] v-for="item in dtlSlots" :key="item.name"> @@ -139,7 +139,7 @@ try { custImport.value = await import(`../entityts/${objParams.value['ID']}.ts`); } catch (e) { - console.log(e) + console.log(e); } const [ { @@ -265,14 +265,14 @@ reload(); }); } - + /** * @description: 璇锋眰涔嬪悗瀵硅繑鍥炲�艰繘琛屽鐞� * @param {*} t * @return {*} */ function afterFetch(t) { - afterFetchFn(t,route.name, getForm()) + afterFetchFn(t, route.name, getForm()); } const currlf = ref(null) as Ref<LogicFlow | null>; diff --git a/src/views/tigerprojects/tsk/tsk_job/job.data.ts b/src/views/tigerprojects/tsk/tsk_job/job.data.ts index 4194058..7740d9b 100644 --- a/src/views/tigerprojects/tsk/tsk_job/job.data.ts +++ b/src/views/tigerprojects/tsk/tsk_job/job.data.ts @@ -52,6 +52,11 @@ width: 180, }, { + title: '涓嬫杩愯鏃堕棿', + dataIndex: 'NextRunTime', + width: 180, + }, + { title: '鎻忚堪', dataIndex: 'Remark', width: 180, @@ -105,7 +110,7 @@ label: '浠诲姟鍚嶇О', required: true, component: 'Input', - ifShow: false, + // ifShow: false, }, { field: 'JobType', @@ -134,7 +139,7 @@ component: 'RadioButtonGroup', defaultValue: 'N', colProps: { - span: 24, + span: 10, }, componentProps: { options: [ @@ -144,6 +149,38 @@ }, }, { + field: 'Interval', + label: '鍙栨暟鏃堕暱锛堝皬鏃讹級', + required: true, + component: 'Input', + colProps: { span: 14 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + }, + { + field: 'LastRunTime', + label: '鏈�鍚庤繍琛屾椂闂�', + required: true, + component: 'DatePicker', + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + format: 'YYYY-MM-DD HH:mm:ss', + }; + }, + }, + { field: 'runType', label: '杩愯绫诲瀷', component: 'RadioButtonGroup', diff --git a/src/views/tigerprojects/tsk/tsk_job/jobDrawer.vue b/src/views/tigerprojects/tsk/tsk_job/jobDrawer.vue index a2592c8..16a29dd 100644 --- a/src/views/tigerprojects/tsk/tsk_job/jobDrawer.vue +++ b/src/views/tigerprojects/tsk/tsk_job/jobDrawer.vue @@ -52,8 +52,10 @@ tskParam.NowAddMinutes = args.NowAddMinutes; tskParam.ToRunEvery = args.ToRunEvery; tskParam.ToRunOnceAtDt = dateUtil(args.ToRunOnceAtDt); + tskParam.LastRunTime = dateUtil(data.record.Triggers[0].LastRunTime); tskParam.ToRunOnceIn = args.ToRunOnceIn; tskParam.runType = args.runType; + tskParam.Interval = args.Interval; tskParam.type = args.Type; setFieldsValue({ diff --git a/src/views/tigerprojects/tsk/tsk_job/log.data.ts b/src/views/tigerprojects/tsk/tsk_job/log.data.ts index 81af6c4..0d4b778 100644 --- a/src/views/tigerprojects/tsk/tsk_job/log.data.ts +++ b/src/views/tigerprojects/tsk/tsk_job/log.data.ts @@ -56,7 +56,7 @@ // width: 180, // }, { - title: '鏈鎵ц鑰楁椂(s)', + title: '鏈鎵ц鑰楁椂(ms)', dataIndex: 'ElapsedTime', width: 90, }, diff --git a/src/views/tigerprojects/tsk/tsk_log/logDrawer.vue b/src/views/tigerprojects/tsk/tsk_log/logDrawer.vue index b709311..938022c 100644 --- a/src/views/tigerprojects/tsk/tsk_log/logDrawer.vue +++ b/src/views/tigerprojects/tsk/tsk_log/logDrawer.vue @@ -15,8 +15,7 @@ import { BasicForm, useForm } from '/@/components/Form/index'; import { formSchema } from './log.data'; import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; - //api - import { SaveTsk_Job } from '/@/api/tigerapi/tsk/tsk_job'; +import { SaveTskJob } from '/@/api/tigerapi/tsk/tsk_job'; export default defineComponent({ name: 'WHDrawer', @@ -51,7 +50,7 @@ setDrawerProps({ confirmLoading: true }); // TODO custom api //淇濆瓨浠诲姟 - const apiAction = SaveTsk_Job(values, unref(isUpdate)); + const apiAction = SaveTskJob(values); apiAction.then((action) => { if (action.IsSuccessed) { closeDrawer(); -- Gitblit v1.9.3