houzhongjian
3 天以前 8b40f521b99ba9e5af7bb38587e4a4a4a0599193
Merge remote-tracking branch 'origin/master'
已添加2个文件
已修改5个文件
308 ■■■■■ 文件已修改
.env.prod 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/model/sche/model/index.ts 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/model/sche/record/index.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/model/pre/item/MmPredictItemChart.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/model/sche/model/ScheduleModelForm.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/model/sche/scheme/index.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/model/sche/scheme/record/index.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.prod
@@ -4,7 +4,7 @@
VITE_DEV=false
# 请求路径
VITE_BASE_URL='http://10.50.37.62'
VITE_BASE_URL='http://10.88.4.131'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
@@ -25,7 +25,7 @@
VITE_BASE_PATH=/plat
# 数据采集服务所在服务器,映射截图图片用
VITE_VIDEO_CAMERA_DOMAIN='10.50.37.62'
VITE_VIDEO_CAMERA_DOMAIN='10.88.4.131'
# 输出路径
VITE_OUT_DIR=dist
src/api/model/sche/model/index.ts
@@ -20,6 +20,7 @@
  status: number,
  paramList: null,
  settingList: null
  modelOut:null
}
export interface ModelParamVO {
@@ -80,7 +81,8 @@
      pointList.push(
        {
          id: item.id,
          name: item.pointName
          name: item.pointName,
          itemNo : item.pointNo
        }
      )
    })
src/api/model/sche/record/index.ts
对比新文件
@@ -0,0 +1,15 @@
import request from '@/config/axios'
export interface StScheduleRecordPageReqVO extends PageParam {
  schemeId?: string
}
// 查询ScheduleRecord列表
export const getScheduleRecordPage = (params: StScheduleRecordPageReqVO) => {
  return request.get({ url: '/model/sche/record/page', params })
}
// 查询ScheduleRecord详情
export const getScheduleRecord = (id: string) => {
  return request.get({ url: '/model/sche/record/get?id=' + id})
}
src/views/model/pre/item/MmPredictItemChart.vue
@@ -79,6 +79,8 @@
  dataForm.value.id = row.id;
  dataForm.value.itemName = row.itemname;
  if (row.id) {
    myChart = echarts.init(chartDomPre.value);
    myChart.clear()
    getDataList();
  }
}
@@ -160,7 +162,6 @@
        })
      }
      myChart = echarts.init(chartDomPre.value);
      const option = {
        title: {
          text: dataForm.value.itemName,
@@ -208,7 +209,6 @@
        ],
        series: seriesData,
      };
      myChart.clear()
      myChart.setOption(option);
    } catch (error) {
      console.error(error)
src/views/model/sche/model/ScheduleModelForm.vue
@@ -272,6 +272,83 @@
<!--          </template>-->
<!--        </el-table-column>-->
      </el-table>
      <el-divider content-position="left">模型下发配置</el-divider>
      <el-row :gutter="20">
        <el-col :span="4">
          <el-button type="primary" size="small" @click="addRowOut()" >新增</el-button>
        </el-col>
      </el-row>
      <el-table
        :data="formData.modelOut"
        border
        style="width: 100%; margin-top: 5px;">
        <el-table-column prop="resultKey`" label="输出key" align="center" min-width="100">
          <template #default="scope">
            <el-input size="mini" v-model="scope.row.resultKey" style="width:100%;height:100%"/>
          </template>
        </el-table-column>
        <el-table-column prop="resultType`" label="数据类型" align="center" min-width="100">
          <template #default="scope">
            <el-input size="mini" v-model="scope.row.resultType" style="width:100%;height:100%"/>
          </template>
        </el-table-column>
        <el-table-column prop="resultPort" label="角标1" align="center" min-width="100">
          <template #default="scope">
            <el-input-number :min="0" clearable controls-position="right" size="mini" v-model="scope.row.resultPort" style="width:100%;height:100%"/>
          </template>
        </el-table-column>
        <el-table-column prop="resultIndex" label="角标2" align="center" min-width="100">
          <template #default="scope">
            <el-input-number :min="0" clearable controls-position="right" size="mini" v-model="scope.row.resultIndex" style="width:100%;height:100%"/>
          </template>
        </el-table-column>
        <el-table-column prop="isWrite" label="是否下发" align="center" min-width="100">
          <template #default="scope">
            <el-switch size="small" v-model="scope.row.isWrite" :active-value="1"
                       :inactive-value="0"/>
          </template>
        </el-table-column>
        <el-table-column
          prop=""
          label="测点名称"
          align="center" min-width="200">
          <template #default="scope">
            <el-select v-model="scope.row.pointNo"
                       filterable
                       placeholder="请选择">
              <el-option
                v-for="(item, index) in modelparamListMap['DATAPOINT']"
                :key="index"
                :label="item.name"
                :value="item.itemNo"/>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column prop="disturbancePointNo’" label="无扰切换点位" align="center" min-width="200">
          <template #default="scope">
            <el-select v-model="scope.row.disturbancePointNo"
                       filterable
                       placeholder="请选择">
              <el-option
                v-for="(item, index) in modelparamListMap['DATAPOINT']"
                :key="index"
                :label="item.name"
                :value="item.itemNo"/>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column label="操作" fixed="right" header-align="center" align="center" width="100">
          <template #default="scope">
            <el-button
              @click="deleteModelOutRow(scope.$index)"
              key="danger"
              type="danger"
              link
            >删除
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </el-form>
    <template #footer>
      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
@@ -284,6 +361,7 @@
  import * as ScheduleModelApi from '@/api/model/sche/model'
  import { CommonStatusEnum } from '@/utils/constants'
  import * as MpkApi from "@/api/model/mpk/mpk";
  import {generateUUID} from "@/utils";
  defineOptions({ name: 'ScheduleModelForm' })
@@ -307,7 +385,8 @@
    invocation: undefined,
    status: CommonStatusEnum.ENABLE,
    paramList: [],
    settingList: []
    settingList: [],
    modelOut: []
  })
  const formRules = reactive({
    modelCode: [{ required: true, message: '模型编号不能为空', trigger: 'blur' }],
@@ -413,7 +492,8 @@
      invocation: undefined,
      status: CommonStatusEnum.ENABLE,
      paramList: [],
      settingList: []
      settingList: [],
      modelOut: []
    }
    formRef.value?.resetFields()
  }
@@ -490,4 +570,23 @@
  function changeModelparamtype(row) {
    row.modelparamid = ''
  }
  const addRowOut= function () {
    if(formData.value.modelOut===undefined) {
      formData.value.modelOut = []
    }
    formData.value.modelOut.push({
      id: generateUUID(),
      resultKey: undefined,
      resultType: "double[][]",
      port: 0,
      index: 0,
      isWrite: 1,
      pointNo:undefined,
      sort:undefined,
      disturbancePointNo:undefined,
    })
  }
  const deleteModelOutRow = function (index) {
    formData.value.modelOut.splice(index, 1)
  }
</script>
src/views/model/sche/scheme/index.vue
@@ -52,7 +52,7 @@
  <ContentWrap>
    <el-table v-loading="loading" :data="list">
      <el-table-column label="方案编号" align="center" prop="code" min-width="100"/>
      <el-table-column label="方案名称" align="center" prop="name" min-width="100"/>
      <el-table-column label="方案名称" header-align="center" align="left" prop="name" min-width="100"/>
      <el-table-column label="触发方式" align="center" prop="triggerMethod" min-width="100">
        <template #default="scope">
          <dict-tag :type="DICT_TYPE.SCHE_TRIGGER_METHOD" :value="scope.row.triggerMethod" />
@@ -63,13 +63,13 @@
      <el-table-column label="调整类型" align="center" prop="scheduleType" min-width="100"/>
      <el-table-column label=" 调整策略" align="center" prop="scheduleStrategy" min-width="100"/>
      <el-table-column label="调度时间" align="center" prop="scheduleTime" min-width="160" />
      <el-table-column label="备注" align="center" prop="remark" min-width="100" />
      <el-table-column label="备注" header-align="center" align="left" prop="remark" min-width="160" />
      <el-table-column label="状态" align="center" prop="status" min-width="100">
        <template #default="scope">
          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" min-width="110" fixed="right">
      <el-table-column label="操作" align="center" min-width="100" fixed="right">
        <template #default="scope">
          <el-button
            link
@@ -78,6 +78,14 @@
            v-hasPermi="['sche:scheme:update']"
          >
            编辑
          </el-button>
          <el-button
            link
            type="primary"
            @click="openRecordList(scope.row.id)"
            v-hasPermi="['sche:record:query']"
          >
            日志
          </el-button>
          <el-button
            link
@@ -102,13 +110,14 @@
  <!-- 表单弹窗:添加/修改 -->
  <ScheduleSchemeForm ref="formRef" @success="getList" />
  <!-- 表单弹窗:添加/修改 -->
  <RecordList ref="recordRef" />
</template>
<script lang="ts" setup>
  import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
  import {dateFormatter} from '@/utils/formatTime'
  import download from '@/utils/download'
  import * as ScheduleSchemeApi from '@/api/model/sche/scheme'
  import ScheduleSchemeForm from './ScheduleSchemeForm.vue'
  import RecordList from  './record/index.vue'
  defineOptions({name: 'ScheduleScheme'})
@@ -171,6 +180,12 @@
    }
  }
  /** 调用日志查看 */
  const recordRef = ref()
  const openRecordList = (id?: string) => {
    recordRef.value.open(id)
  }
  /** 初始化 **/
  onMounted(async () => {
    await getList()
src/views/model/sche/scheme/record/index.vue
对比新文件
@@ -0,0 +1,153 @@
<template>
  <el-drawer
    v-model="drawer"
    size="50%"
    title="调度日志"
    :direction="direction"
    :before-close="handleClose"
  >
    <!-- 搜索 -->
    <ContentWrap>
      <el-form
        class="-mb-15px"
        :model="queryParams"
        ref="queryFormRef"
        :inline="true"
        label-width="68px"
      >
        <el-form-item>
          <el-date-picker
            v-model="queryParams.startTime"
            format="YYYY-MM-DD HH:mm:00"
            value-format="YYYY-MM-DD HH:mm:00"
            type="datetime"
            placeholder="选择日期时间"
          />
        </el-form-item>
        <el-form-item>
          <el-date-picker
            v-model="queryParams.endTime"
            format="YYYY-MM-DD HH:mm:00"
            value-format="YYYY-MM-DD HH:mm:00"
            type="datetime"
            placeholder="选择日期时间"
          />
        </el-form-item>
        <el-form-item>
          <el-button @click="handleQuery">
            <Icon icon="ep:search" class="mr-5px" />
            搜索
          </el-button>
          <el-button @click="resetQuery">
            <Icon icon="ep:refresh" class="mr-5px" />
            重置
          </el-button>
        </el-form-item>
      </el-form>
    </ContentWrap>
    <!-- 列表 -->
    <ContentWrap>
      <el-table v-loading="loading" :data="list">
        <el-table-column
          prop="scheduleTime"
          label="调度时间"
          header-align="center"
          align="left"
          min-width="150"
        />
        <el-table-column
          prop="resultCode"
          label="结果状态"
          header-align="center"
          align="center"
        />
        <el-table-column
          prop="resultData"
          label="结果数据"
          header-align="center"
          align="center"
          min-width="400"
        />
      </el-table>
      <!-- 分页 -->
      <Pagination
        :total="total"
        v-model:page="queryParams.pageNo"
        v-model:limit="queryParams.pageSize"
        @pagination="getList"
      />
    </ContentWrap>
  </el-drawer>
</template>
<script lang="ts" setup>
import type { DrawerProps } from 'element-plus'
import * as ScheduleRecordApi from "@/api/model/sche/record";
import {reactive, ref} from "vue";
defineOptions({name: 'RecordList'})
const message = useMessage() // 消息弹窗
const {t} = useI18n() // 国际化
const drawer = ref(false)
const direction = ref<DrawerProps['direction']>('rtl')
const loading = ref(true) // 列表的加载中
const total = ref(0) // 列表的总页数
const list = ref([]) // 列表的数据
const queryParams = reactive({
  pageNo: 1,
  pageSize: 10,
  schemeId: undefined,
  startTime: undefined,
  endTime: undefined,
})
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
/** 查询列表 */
const getList = async () => {
  loading.value = true
  try {
    const page = await ScheduleRecordApi.getScheduleRecordPage(queryParams)
    list.value = page.list
    total.value = page.total
  } finally {
    loading.value = false
  }
}
/** 搜索按钮操作 */
const handleQuery = () => {
  queryParams.pageNo = 1
  getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
  queryFormRef.value.resetFields()
  handleQuery()
}
/** 打开弹窗 */
const open = async (id?: string) => {
  resetForm()
  drawer.value = true
  queryParams.schemeId = id
  if (id) {
    getList()
  }
}
defineExpose({open}) // 提供 open 方法,用于打开弹窗
/** 重置表单 */
const resetForm = () => {
  queryParams.pageNo = 1
  queryParams.pageSize = 10
  queryParams.schemeId = ''
  queryParams.startTime = undefined
  queryParams.endTime = undefined
}
const handleClose = (done: () => void) => {
  drawer.value = false
}
</script>