Ben Lin
2024-10-28 08abfcfea8247c394b2034cad59734846b403dd9
计划任务优化
已修改9个文件
已添加1个文件
228 ■■■■■ 文件已修改
src/api/tigerapi/model/tskModel.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/system.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/tsk/tsk_job.ts 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/startplan.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/data.ts 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/normal/mainTable.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/tsk/tsk_job/job.data.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/tsk/tsk_job/jobDrawer.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/tsk/tsk_job/log.data.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/tsk/tsk_log/logDrawer.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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',
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 å¼€å§‹ä»»åŠ¡
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>
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字符串并保存到sessionStorage
      sessionStorage.removeItem(`${id.sName}_params`);
      sessionStorage.setItem(`${id.sName}_params`, encodeURI(JSON.stringify({ params: params })));
@@ -372,62 +372,61 @@
    // å°†å¯¹è±¡è½¬æ¢ä¸ºJSON字符串并保存到sessionStorage
    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字符串并保存到sessionStorage
    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);
  }
}
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>;
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',
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({
src/views/tigerprojects/tsk/tsk_job/log.data.ts
@@ -56,7 +56,7 @@
  //   width: 180,
  // },
  {
    title: '本次执行耗时(s)',
    title: '本次执行耗时(ms)',
    dataIndex: 'ElapsedTime',
    width: 90,
  },
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();