Forráskód Böngészése

更新页面信息

dumingliang 1 hete
szülő
commit
253f408520

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -18,7 +18,7 @@ server:
   port: 8082
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /gxpt-api
   tomcat:
     # tomcat的URI编码
     uri-encoding: UTF-8
@@ -120,7 +120,7 @@ swagger:
   # 是否开启swagger
   enabled: true
   # 请求前缀
-  pathMapping: /sh-api
+  pathMapping: /gxpt-api
 
 # 防止XSS攻击
 xss:

+ 2 - 2
ruoyi-ui/.env.development

@@ -6,9 +6,9 @@ VITE_PORT = 9002
 # 开发环境配置
 VITE_APP_ENV = 'development'
 
-VITE_APP_BASE_Title = '/sh'
+VITE_APP_BASE_Title = '/tba-gxpt'
 # 若依管理系统/生产环境
-VITE_APP_BASE_API = '/sh-api'
+VITE_APP_BASE_API = '/gxpt-api'
 VITE_APP_WEBSOCKET_PATH = '/websocket'
 VITE_DEV_PATH = 'http://localhost:8082'
 VITE_WS_BASE_URL = 'localhost:8082'

+ 2 - 2
ruoyi-ui/.env.production

@@ -6,9 +6,9 @@ VITE_PORT = 9002
 # 生产环境配置
 VITE_APP_ENV = 'production'
 
-VITE_APP_BASE_Title = '/sh'
+VITE_APP_BASE_Title = '/tba-gxpt'
 # 若依管理系统/生产环境
-VITE_APP_BASE_API = '/sh-api'
+VITE_APP_BASE_API = '/gxpt-api'
 VITE_APP_WEBSOCKET_PATH = '/websocket'
 VITE_DEV_PATH = 'http://localhost:8082'
 # 是否在打包时开启压缩,支持 gzip 和 brotli

+ 2 - 2
ruoyi-ui/.env.staging

@@ -6,9 +6,9 @@ VITE_PORT = 9002
 # 生产环境配置
 VITE_APP_ENV = 'staging'
 
-VITE_APP_BASE_Title = '/sh'
+VITE_APP_BASE_Title = '/tba-gxpt'
 # 若依管理系统/生产环境
-VITE_APP_BASE_API = '/sh-api'
+VITE_APP_BASE_API = '/gxpt-api'
 
 VITE_DEV_PATH = 'http://localhost:8082'
 

+ 47 - 73
ruoyi-ui/src/components/Breadcrumb.vue

@@ -1,86 +1,60 @@
 <template>
   <div class="breakcrumb_div">
-    <el-icon :color="locColor" style="float: left">
-      <location-filled/>
-    </el-icon>
-    <el-breadcrumb :separator-icon="ArrowRight">
-      <el-breadcrumb-item
-          v-for="(item, index) in breadcrumbList"
-          :key="index"
-          :to="item.path"
-      >{{ item.name }}
+    <el-breadcrumb>
+      <el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
+        <span
+            v-if="item.redirect === 'noRedirect' || index == levelList.length - 1"
+            class="no-redirect"
+        >{{ item.meta.title }}</span
+        >
+        <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
       </el-breadcrumb-item>
     </el-breadcrumb>
   </div>
 </template>
+<script setup>
+const route = useRoute();
+const router = useRouter();
+const levelList = ref([]);
 
-<script>
-import {ArrowRight, LocationFilled} from '@element-plus/icons-vue'
-import {reactive, ref, watch} from 'vue'
-import {useRoute} from 'vue-router'
-
-export default {
-  name: 'Banner',
-  components: {LocationFilled},
-  props: {
-    msg: String,
-  },
-  setup() {
-    const route = useRoute()
-    const locColor = ref('#67C23A')
-    const breadcrumbLists = reactive([
-      {
-        path: '/openData',
-        value: [
-          {name: '首页', path: '/openIndex'},
-          {name: '开放数据', path: '/openData/dataQuery'},
-        ],
-      },
-      {
-        path: '/developCenter',
-        value: [
-          {name: '首页', path: '/openIndex'},
-          {name: '开发者中心', path: '/developCenter/a1'},
-        ],
-      },
-      {
-        path: '/interactive',
-        value: [
-          {name: '首页', path: '/openIndex'},
-          {name: '互动交流', path: '/interactive/consultList'},
-        ],
-      },
-      {
-        path: '/userCenter',
-        value: [
-          {name: '首页', path: '/openIndex'},
-          {name: '个人中心', path: '/userCenter/appInfo'},
-        ],
-      },
-    ])
-    let breadcrumbList = ref([
-      {name: '首页', path: '/openIndex'},
-      {name: '开放数据', path: '/openData/dataQuery'},
-    ])
+function getBreadcrumb() {
+  // only show routes with meta.title
+  let matched = route.matched.filter((item) => item.meta && item.meta.title);
+  const first = matched[0];
+  // 判断是否为首页
+  if (!isDashboard(first)) {
+    console.log(first, "2222");
+  }
+  console.log(first, "333");
+  levelList.value = matched.filter(
+      (item) => item.meta && item.meta.title && item.meta.breadcrumb !== false
+  );
+}
 
-    watch(
-        () => route.path,
-        (val) => {
-          for (let i in breadcrumbLists) {
-            if (val.includes(breadcrumbLists[i].path)) {
-              breadcrumbList.value = breadcrumbLists[i].value
-            }
-          }
-        },
-        {
-          immediate: true,
-          deep: true,
-        }
-    )
+function isDashboard(route) {
+  const name = route && route.name;
+  if (!name) {
+    return false;
+  }
+  return name.trim() === "Index";
+}
 
-    return {breadcrumbList, locColor, ArrowRight}
-  },
+function handleLink(item) {
+  const {redirect, path} = item;
+  if (redirect) {
+    router.push(redirect);
+    return;
+  }
+  router.push(path);
 }
+
+watchEffect(() => {
+  if (route.path.startsWith("/redirect/")) {
+    return;
+  }
+  getBreadcrumb();
+});
+getBreadcrumb();
 </script>
 <style scoped>
 .breakcrumb_div {

+ 1 - 1
ruoyi-ui/src/frontLayout/components/footer.vue

@@ -18,7 +18,7 @@
         <i>|</i>
         <a href="javascript:;">联系方式</a>
       </div>
-       <p class="other">太湖流域管理局</p>
+      <p class="other">太湖流域管理局水文局(信息中心)</p>
       <p class="other">支撑单位:北京金水信息技术发展有限公司</p>
       <!-- <p>
         <a href="http://beian.miit.gov.cn" target="_blank">

+ 4 - 10
ruoyi-ui/src/frontLayout/index.vue

@@ -7,7 +7,7 @@
             <div class="index_logo"></div>
           </el-col>
           <el-col :span="19" style="display:flex;align-items: center;">
-             <div class="index_title">太湖流域管理局信息中心<br />数据服务平台</div>
+            <div class="index_title">太湖流域管理局信息中心<br/>数据服务平台</div>
           </el-col>
         </el-row>
       </el-col>
@@ -33,10 +33,7 @@
               <template #dropdown>
                 <el-dropdown-menu>
                   <el-dropdown-item @click="router.push('/datamonitor/monitorservice')">
-                    后台服务
-                  </el-dropdown-item>
-                  <el-dropdown-item @click="router.push('/userCenter/appInfo')">
-                    个人中心
+                    后台管理
                   </el-dropdown-item>
                   <el-dropdown-item @click="logout" divided>
                     退出
@@ -59,7 +56,6 @@
             <el-menu-item v-for="item in menus" :key="item.id" :index="item.path">
               {{ item.name }}
             </el-menu-item>
-
             <el-menu-item index="/userCenter/appInfo" v-if="isLogin">
               个人中心
             </el-menu-item>
@@ -92,9 +88,7 @@ export default {
       menus: [
         {id: '1', name: '首页', path: '/openIndex'},
         {id: '2', name: '开放数据', path: '/openData/dataQuery'},
-        // { id: '3', name: '帮助中心', path: '/helpCenter' },
-        {id: '3', name: '开发者中心', path: '/developCenter/a1'},
-        {id: '4', name: '互动交流', path: '/interactive/consultList'},
+        {id: '3', name: '互动交流', path: '/interactive/consultList'},
       ],
     })
 
@@ -140,7 +134,7 @@ export default {
   margin: 10px;
   width: 80px;
   height: 80px;
-  background: url('assets/logo3.png') no-repeat;
+  background: url('assets/logo.png') no-repeat;
   background-size: 100% 100%;
   float: left;
 }

+ 1 - 1
ruoyi-ui/src/layout/components/Sidebar/index.vue

@@ -5,7 +5,7 @@
     <el-row class="headBar">
       <el-col :span="7">
         <div class="line-left-img">
-          <!-- <img src="@/assets/images/top.png" alt=""/> -->
+          <img src="@/assets/images/top.png" alt=""/>
         </div>
         <div class="line-left-name" style="margin-left: 4%;">
           <span>数据服务平台</span>

+ 12 - 0
ruoyi-ui/src/router/index.js

@@ -93,6 +93,18 @@ export const constantRoutes = [
                     },
                 ],
             },
+            {
+                path: 'developCenter',
+                name: 'developCenter',
+                component: () => import('@/views/OpenData.vue'),
+                children: [
+                    {
+                        path: 'a1',
+                        name: 'a1',
+                        component: () => import('@/views/developCenter/a1.vue'),
+                    },
+                ],
+            },
             {
                 path: 'helpCenter',
                 name: 'helpCenter',

+ 0 - 5
ruoyi-ui/src/views/Interactive.vue

@@ -6,11 +6,6 @@
       </div>
     </el-col>
   </el-row>
-  <el-row :gutter="20" style="background: #f2f6fc; margin: 0">
-    <el-col :span="22" :offset="2" class="user-breadcrumb">
-      <breadcrumb></breadcrumb>
-    </el-col>
-  </el-row>
   <el-row :gutter="20" class="user-center" style="margin: 20px 0">
     <el-col :span="4" :offset="2">
       <el-card>

+ 0 - 5
ruoyi-ui/src/views/OpenData.vue

@@ -6,11 +6,6 @@
       </div>
     </el-col>
   </el-row>
-  <el-row :gutter="20" style="margin: 0">
-    <el-col :span="20" :offset="2">
-      <breadcrumb></breadcrumb>
-    </el-col>
-  </el-row>
   <el-row :gutter="20" style="margin: 0">
     <el-col :span="5" :offset="2">
       <router-view name="left"/>

+ 1 - 6
ruoyi-ui/src/views/UserCenter.vue

@@ -1,15 +1,10 @@
 <template>
-  <!-- <el-row>
+  <el-row>
     <el-col :span="24">
       <div class="index_head">
         <h3>打造数字平台,建设魅力中国</h3>
       </div>
     </el-col>
-  </el-row> -->
-  <el-row :gutter="20" style="background: #f2f6fc; margin: 0">
-    <el-col :span="20" :offset="2" class="user-breadcrumb">
-      <breadcrumb></breadcrumb>
-    </el-col>
   </el-row>
   <el-row :gutter="20" class="user-center" style="margin: 20px 0">
     <el-col :span="3" :offset="2">

+ 155 - 119
ruoyi-ui/src/views/codeModel(developer).vue

@@ -2,37 +2,38 @@
   <div style="width: 100%;padding-top: 1%;display: flex;" :style="{'height':heightAll+'px'}">
     <div style="width: 10%;;">
       <Plus style="width: 1em; height: 1em; margin-left:90%;cursor: pointer;color: #337ecc;" @click="showAddTree"/>
-      <el-tree  :data="data" :props="defaultProps" @node-click="handleNodeClick" style="margin-left: 1%;background-color: #F7F7F7;width: 100%;" default-expand-all>
+      <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"
+               style="margin-left: 1%;background-color: #F7F7F7;width: 100%;" default-expand-all>
         <template #default="{ node, data }">
           <span class="custom-tree-node">
             <span>{{ node.label }}</span>
             <span>
-              <el-button type="primary"  @click="editTree(node, data)" text style="margin-left: 15%;">编辑</el-button>
-              <el-button type="danger"  @click="delTree(node, data)" text style="margin-left: -17%;">删除</el-button>
+              <el-button type="primary" @click="editTree(node, data)" text style="margin-left: 15%;">编辑</el-button>
+              <el-button type="danger" @click="delTree(node, data)" text style="margin-left: -17%;">删除</el-button>
             </span>
           </span>
         </template>
       </el-tree>
     </div>
     <div style="width: 86%;margin-left: 1%;">
-        <div style="display: flex;justify-content: space-between;width: 100%;align-items: center;margin-left: 2%;">
-            <div style="display: flex;width: 50%;align-items: center;">
-                <div>
-                    名称
-                </div>
-                <el-input v-model="formTree.itemNo" style="width: 30%;margin-left: 1%;" placeholder="" />
-                <el-button type="primary" @click="showAdd" style="margin-left:1%;">查询 </el-button>
-            </div>
-            <el-button type="primary" @click="showAdd" style="margin-left:1%;">新增</el-button>
+      <div style="display: flex;justify-content: space-between;width: 100%;align-items: center;margin-left: 2%;">
+        <div style="display: flex;width: 50%;align-items: center;">
+          <div>
+            名称
+          </div>
+          <el-input v-model="formTree.itemNo" style="width: 30%;margin-left: 1%;" placeholder=""/>
+          <el-button type="primary" @click="showAdd" style="margin-left:1%;">查询</el-button>
         </div>
-      <el-table 
-        :data="tableData" 
-        style="width: 100%;margin-left: 2%;margin-top: 0.5%;"
-        :cell-style="{ padding:'5px' }"
-        :header-cell-style="{fontSize: '14px',height: heightAll*0.01+'px',}"
-        :row-style="{ fontSize: '17px',textAlign:'center'}"
-        border 
-        :height="tableheight">
+        <el-button type="primary" @click="showAdd" style="margin-left:1%;">新增</el-button>
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%;margin-left: 2%;margin-top: 0.5%;"
+          :cell-style="{ padding:'5px' }"
+          :header-cell-style="{fontSize: '14px',height: heightAll*0.01+'px',}"
+          :row-style="{ fontSize: '17px',textAlign:'center'}"
+          border
+          :height="tableheight">
         <el-table-column type="index" label="序号" width="80"></el-table-column>
         <el-table-column prop="itemName" label="字段名称:">
         </el-table-column>
@@ -45,17 +46,17 @@
         </el-table-column>
         <el-table-column prop="itemNotes" label="备注" width="170"/>
         <el-table-column prop="address" label="操作" width="222">
-            <template #default="scope">
-                <div style="display: flex;justify-content: space-between;width: 100%;">
-                    <el-button type="primary" @click="showEdit(scope.row)" text style="margin-left: 1%;">编辑</el-button>
-                    <el-button @click="showDe(scope.row)" type="primary" text style="margin-left: 1%;">查看</el-button>
-                    <el-button @click="delRow(scope.row)" type="danger" text style="margin-left: 1%;">删除</el-button>
-                </div>
-            </template>
+          <template #default="scope">
+            <div style="display: flex;justify-content: space-between;width: 100%;">
+              <el-button type="primary" @click="showEdit(scope.row)" text style="margin-left: 1%;">编辑</el-button>
+              <el-button @click="showDe(scope.row)" type="primary" text style="margin-left: 1%;">查看</el-button>
+              <el-button @click="delRow(scope.row)" type="danger" text style="margin-left: 1%;">删除</el-button>
+            </div>
+          </template>
         </el-table-column>
       </el-table>
       <div style="float: right;margin-top: 1%;margin-right: 1%;">
-          <el-pagination
+        <el-pagination
             small
             v-model='currentPage'
             @current-change="changePage"
@@ -63,32 +64,34 @@
             layout="prev, pager, next"
             :total="total"
             class="mt-4"
-          />
-        </div>
+        />
+      </div>
     </div>
   </div>
-  <el-dialog :title="title" @close="clearForm" v-model="dialogVisible" title="" width="30%"  destroy-on-close :key="tableKey">
-    <el-form :disabled="isEdit" style="margin-left: 5%;margin-top: 2%;"  :model="formZu" class="demo-form-inline" ref="formRefZu" :rules="rulesZu">
+  <el-dialog :title="title" @close="clearForm" v-model="dialogVisible" title="" width="30%" destroy-on-close
+             :key="tableKey">
+    <el-form :disabled="isEdit" style="margin-left: 5%;margin-top: 2%;" :model="formZu" class="demo-form-inline"
+             ref="formRefZu" :rules="rulesZu">
       <el-form-item label="字段名称:" prop="itemName" style="margin-left: -2%;">
-        <el-input v-model="formZu.itemName" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemName" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="英文名称:" prop="itemEn" style="margin-left: -2%;">
-        <el-input v-model="formZu.itemEn" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemEn" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="字段数据项类型:" prop="itemTp" style="margin-left: -2%;">
-        <el-input v-model="formZu.itemTp" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemTp" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="字段数据类型:" prop="itemDataTp" style="margin-left: -2%;">
-        <el-input v-model="formZu.itemDataTp" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemDataTp" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="默认值:" prop="itemDefaultVal" style="margin-left: -2%;">
-        <el-input v-model="formZu.itemDefaultVal" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemDefaultVal" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="单位:" prop="itemUnit">
-        <el-input v-model="formZu.itemUnit" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemUnit" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="备注:" prop="itemNotes">
-        <el-input v-model="formZu.itemNotes" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formZu.itemNotes" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
     </el-form>
     <template #footer>
@@ -103,19 +106,21 @@
       </span>
     </template>
   </el-dialog>
-  <el-dialog @close="clearFromTree" :title="titleTree" v-model="dialogVisibleTree" title="" width="30%" destroy-on-close :key="tableKey">
-    <el-form style="margin-left: 5%;margin-top: 2%;"  :model="formTree" class="demo-form-inline" ref="formRefTree" :rules="rulesTree">
+  <el-dialog @close="clearFromTree" :title="titleTree" v-model="dialogVisibleTree" title="" width="30%" destroy-on-close
+             :key="tableKey">
+    <el-form style="margin-left: 5%;margin-top: 2%;" :model="formTree" class="demo-form-inline" ref="formRefTree"
+             :rules="rulesTree">
       <el-form-item label="名称:" prop="itemName" style="margin-left: -2%;">
         <el-input v-model="formTree.itemName" style="width: 75%;" placeholder=""/>
       </el-form-item>
       <el-form-item label="父节点id:" prop="catePid" style="margin-left: -2%;">
-        <el-input v-model="formTree.catePid" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formTree.catePid" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="排序:" prop="itemNo" style="margin-left: -2%;">
-        <el-input v-model="formTree.itemNo" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formTree.itemNo" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
       <el-form-item label="备注:" prop="itemNotes" style=" ">
-        <el-input v-model="formTree.itemNotes" style="width: 75%;" placeholder=""  resize="none"/>
+        <el-input v-model="formTree.itemNotes" style="width: 75%;" placeholder="" resize="none"/>
       </el-form-item>
     </el-form>
     <template #footer>
@@ -131,18 +136,30 @@
     </template>
   </el-dialog>
 </template>
-<script   setup>
-import { reactive } from 'vue'
-import { addDataCate,getCateTree,getCateDe,editCate,delCate,addDataItem,getItem,getItemDe,editItem,delItem} from "@/api/service/cate";
-import { ref, onMounted, onUnmounted, nextTick } from 'vue';
-const { proxy } = getCurrentInstance();
-const data =  ref([])
-const title =  ref([])
-const titleTree =  ref([])
-const currentPage =  ref(1)
-const total =  ref(1)
+<script setup>
+import {reactive} from 'vue'
+import {
+  addDataCate,
+  getCateTree,
+  getCateDe,
+  editCate,
+  delCate,
+  addDataItem,
+  getItem,
+  getItemDe,
+  editItem,
+  delItem
+} from "@/api/service/cate";
+import {ref, onMounted, onUnmounted, nextTick} from 'vue';
+
+const {proxy} = getCurrentInstance();
+const data = ref([])
+const title = ref([])
+const titleTree = ref([])
+const currentPage = ref(1)
+const total = ref(1)
 const tableData = ref([])
-const tableheight = window.innerHeight*0.7
+const tableheight = window.innerHeight * 0.7
 const heightAll = window.innerHeight
 const dialogVisible = ref(false)
 const dialogVisibleTree = ref(false)
@@ -151,94 +168,101 @@ const isAddTa = ref(false)
 const treeId = ref('');
 
 const formZu = ref({
-  itemName:'',
-  itemTp:'',
-  itemEn:'',
-  itemDataTp:'',
-  itemDefaultVal:'',
-  itemUnit:'',
-  itemNotes:'',
+  itemName: '',
+  itemTp: '',
+  itemEn: '',
+  itemDataTp: '',
+  itemDefaultVal: '',
+  itemUnit: '',
+  itemNotes: '',
 });
 const rulesZu = reactive({
-  itemName: [{ required: true, message: '必填', trigger: 'blur' }],
-  itemEn: [{ required: true, message: '必填', trigger: 'blur' }],
-  itemTp: [{ required: true, message: '必填', trigger: 'blur' }],
-  itemDataTp: [{ required: true, message: '必填', trigger: 'blur' }],
-  itemDefaultVal: [{ required: true, message: '必填', trigger: 'blur' }],
+  itemName: [{required: true, message: '必填', trigger: 'blur'}],
+  itemEn: [{required: true, message: '必填', trigger: 'blur'}],
+  itemTp: [{required: true, message: '必填', trigger: 'blur'}],
+  itemDataTp: [{required: true, message: '必填', trigger: 'blur'}],
+  itemDefaultVal: [{required: true, message: '必填', trigger: 'blur'}],
 });
 const formRefZu = ref();
 
 const formTree = ref({
-  itemName:'',
-  catePid:'',
-  itemNo:'',
-  itemNotes:''
+  itemName: '',
+  catePid: '',
+  itemNo: '',
+  itemNotes: ''
 });
 const rulesTree = reactive({
-  itemNo: [{ required: true, message: '必填', trigger: 'blur' }],
-  catePid: [{ required: true, message: '必填', trigger: 'blur' }],
-  itemName: [{ required: true, message: '必填', trigger: 'blur' }],
+  itemNo: [{required: true, message: '必填', trigger: 'blur'}],
+  catePid: [{required: true, message: '必填', trigger: 'blur'}],
+  itemName: [{required: true, message: '必填', trigger: 'blur'}],
 });
 const formRefTree = ref();
 
-function clearForm(){
+function clearForm() {
   formZu.value = {
-    itemName:'',
-    itemTp:'',
-    itemEn:'',
-    itemTp:'',
-    itemDataTp:'',
-    itemDefaultVal:'',
-    itemUnit:'',
-    itemNotes:'',
+    itemName: '',
+    itemTp: '',
+    itemEn: '',
+    itemTp: '',
+    itemDataTp: '',
+    itemDefaultVal: '',
+    itemUnit: '',
+    itemNotes: '',
   }
 }
-function getTable(){
+
+function getTable() {
   var par = {
-    pageNum:currentPage.value,
-    pageSize:15,
-    cateId:''
+    pageNum: currentPage.value,
+    pageSize: 15,
+    cateId: ''
   }
-  getItem(par).then(res=>{
+  getItem(par).then(res => {
     tableData.value = res.rows
     total.value = res.total
   })
 }
-function showAdd(){
+
+function showAdd() {
   isAddTa.value = true
   title.value = '新增'
   dialogVisible.value = true
 }
-function showEdit(row){
+
+function showEdit(row) {
   isAddTa.value = false
   title.value = '编辑'
   dialogVisible.value = true
-  getItemDe(row.dataId).then(res=>{
+  getItemDe(row.dataId).then(res => {
     formZu.value = res.data
   })
 }
-function showAddTree(){
+
+function showAddTree() {
   isAdd.value = true
   titleTree.value = '新增节点'
   dialogVisibleTree.value = true
 }
-function clearFromTree(){
+
+function clearFromTree() {
   formTree.value = {
-    itemName:'',
-    catePid:'',
-    itemNo:'',
-    itemNotes:''
+    itemName: '',
+    catePid: '',
+    itemNo: '',
+    itemNotes: ''
   }
 }
-function getTree(){
-  getCateTree().then(res=>{
+
+function getTree() {
+  getCateTree().then(res => {
     data.value = res.data
   })
 }
-function addTa(){
+
+function addTa() {
   formRefZu.value.validate(async (valid) => {
-    await addDataItem(formZu.value).then(res=>{
-      if(res.code===200){
+    await addDataItem(formZu.value).then(res => {
+      if (res.code === 200) {
         proxy.$modal.msgSuccess("新增成功");
         getTable()
         dialogVisible.value = false
@@ -246,27 +270,31 @@ function addTa(){
     })
   });
 }
-function saveEditTa(){
-  editItem(formZu.value).then(res=>{
-    if(res.code===200){
+
+function saveEditTa() {
+  editItem(formZu.value).then(res => {
+    if (res.code === 200) {
       proxy.$modal.msgSuccess("修改成功");
       dialogVisible.value = false
       getTable()
     }
   })
 }
+
 function delRow(row) {
   proxy.$modal.confirm('是否确认删除?').then(function () {
     return delItem(row.dataId);
   }).then(() => {
     getTable();
     proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {});
+  }).catch(() => {
+  });
 };
-async function addTree(){
+
+async function addTree() {
   formRefTree.value.validate(async (valid) => {
-    await addDataCate(formTree.value).then(res=>{
-      if(res.code===200){
+    await addDataCate(formTree.value).then(res => {
+      if (res.code === 200) {
         proxy.$modal.msgSuccess("新增成功");
         getTree()
         dialogVisibleTree.value = false
@@ -274,37 +302,43 @@ async function addTree(){
     })
   });
 }
-function saveEditTree(){
-  editCate(formTree.value).then(res=>{
-    if(res.code===200){
+
+function saveEditTree() {
+  editCate(formTree.value).then(res => {
+    if (res.code === 200) {
       proxy.$modal.msgSuccess("修改成功");
       dialogVisibleTree.value = false
       getTree()
     }
   })
 }
-function handleNodeClick(node, data){
+
+function handleNodeClick(node, data) {
   treeId.value = data.id
   getTable()
 }
+
 function delTree(node, data) {
   proxy.$modal.confirm('是否确认删除?').then(function () {
     return delCate(data.id);
   }).then(() => {
     getTree();
     proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {});
+  }).catch(() => {
+  });
 };
-function editTree(node, data){
+
+function editTree(node, data) {
   console.log(data)
   titleTree.value = '编辑'
   isAdd.value = false
   dialogVisibleTree.value = true
-  getCateDe(data.id).then(res=>{
+  getCateDe(data.id).then(res => {
     formTree.value = res.data
   })
   console.log(node, data)
 }
+
 onMounted(() => {
   getTree()
   getTable()
@@ -334,15 +368,17 @@ onMounted(() => {
 .el-table .el-table__row td {
   height: 60px !important; /* 行高 */
 }
+
 .custom-tree-node {
-  display: flex;       /* 启用 Flex 布局 */
+  display: flex; /* 启用 Flex 布局 */
   align-items: center; /* 垂直居中 */
-  gap: 8px;            /* 图标与文字间距 */
+  gap: 8px; /* 图标与文字间距 */
 }
+
 .custom-tree-node {
   flex: 1;
   display: flex;
-  align-items: center; 
+  align-items: center;
   justify-content: space-between;
   font-size: 14px;
   padding-right: 8px;

+ 0 - 617
ruoyi-ui/src/views/evaluate/index.vue

@@ -1,617 +0,0 @@
-<template>
-   <div style="overflow-y: auto;background-color:  #F7F7F7;height: 100%;">
-     <div style="margin-left: 1%;width: 98%;display: flex;margin-top: 1%;height: 15vh;">
-      <div shadow="always" style="width: 33%;height: 100%;;border-radius: 10px;background-color: white;margin-left: 0%;" class="boxShadow">
-          <div style="width: 100%;display: flex;align-items: center;justify-content: center;font-size: 35px;font-weight: bold;color: #2DBEA2;;height: 70%">
-            {{yearAll}}
-          </div>
-          <div style="display: flex;align-items: center;justify-content: center;background-color: #2DBEA2;font-size: 20px;width: 100%;color: white;text-align: center;border-radius: 0 0 10px 10px;height: 30%;">
-            年调用次数
-          </div>
-        </div>
-        <div shadow="always" style="width: 33%;height: 100%;;border-radius: 10px;background-color: white;margin-left: 1%;" class="boxShadow">
-          <div style="width: 100%;display: flex;align-items: center;justify-content: center;font-size: 35px;font-weight: bold;color: #40B0D7;;height: 70%">
-            {{monAll}}
-          </div>
-          <div style="display: flex;align-items: center;justify-content: center;background-color: #40B0D7;font-size: 20px;width: 100%;color: white;text-align: center;border-radius: 0 0 10px 10px;height: 30%;">
-            月调用次数
-          </div>
-        </div>
-        <div shadow="always" style="width: 33%;margin-left: 1%;height: 100%;;border-radius: 10px;background-color: white;" class="boxShadow">
-          <div style="width: 100%;display: flex;align-items: center;justify-content: center;font-size: 35px;font-weight: bold;color: #477ACF;;height: 70%">
-            {{dayAll}}
-          </div>
-          <div style="display: flex;align-items: center;justify-content: center;background-color: #477ACF;font-size: 20px;width: 100%;color: white;text-align: center;border-radius: 0 0 10px 10px;height: 30%;">
-            日调用次数
-          </div>
-        </div>
-      </div>
-      <div style="background-color:  #F7F7F7;padding-top:1%;">
-        <div style="margin-left: 1%;width: 98%;display: flex;height: 32vh;">
-          <div style="width: 100%;height: 100%;">
-            <el-card shadow="always" class="box-card" style="width:100%;height: 100%;">
-              <div style="font-weight: bold;font-size: 18px;">
-                模型每日服务调度次数统计
-              </div>
-              <div style="display: flex;align-items: center;line-height: 1;margin-top: 1%;">
-                <div style="font-size: 17px;">今日模型服务调度次数</div>
-                <div style="color: #79bbff;margin-left: 1%;"> {{daySum}} </div>
-                <div style="margin-left: 1%;"> 次 </div>
-                <el-date-picker
-                  v-model="valueYue"
-                  type="month"
-                  style="margin-left: 1%;"
-                  @change="getDay"
-                  placeholder="本月"
-                  value-format="YYYY-MM-DD"
-                />
-                <el-select
-                v-model="valueMod"
-                @change="getDay"
-                class="m-2"
-                placeholder="上海市城区洪涝仿真模型"
-                style="width: 15%;margin-left: 1%;"
-                >
-                    <el-option
-                    v-for="item in optionsModel"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.id"
-                    />
-                </el-select>
-              </div>
-              <div id="top1" style="width: 98%;margin-left: 1%;margin-top: -1%;height:23vh">
-
-              </div>
-            </el-card>
-          </div>
-        </div>
-        <div style="margin-left: 1%;width: 98%;display: flex;margin-top: 1%;height: 45vh;">
-          <el-card shadow="always" class="box-card" style="width:50%;height: 100%;">
-            <div style="margin-left: 1%;font-weight: bold;">
-              模型每月服务调度次数统计
-            </div>
-            <div style="width: 100%;display: flex;margin-top: 2%;">
-              <el-date-picker
-                  v-model="valueMon"
-                  type="year"
-                  style="margin-left: 1%;"
-                  @change="getMon"
-                  placeholder="本年"
-                  value-format="YYYY-MM-DD"
-                />
-                <el-select
-                v-model="valueModMon"
-                @change="getMon"
-                class="m-2"
-                placeholder=""
-                style="width: 25%;margin-left: 1%;"
-                >
-                    <el-option
-                    v-for="item in optionsModel"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.id"
-                    />
-                </el-select>
-            </div>
-            <div id="bt1"  style="width: 100%;margin-left: 0%;margin-top: -1%;height: 30vh;">
-
-            </div>
-          </el-card>
-          <el-card shadow="always" class="box-card" style="width:50%;height: 100%;margin-left: 1%;">
-            <div style="margin-left: 1%;font-weight: bold;">
-              模型调用次数年度排名
-            </div>
-            <div style="width: 100%;display: flex;margin-top: 2%;">
-              <el-date-picker
-                  v-model="valuePai"
-                  type="year"
-                  style="margin-left: 1%;"
-                  @change="getPai"
-                  placeholder="本年"
-                  value-format="YYYY-MM-DD"
-                />
-                <!-- <el-select
-                v-model="value"
-                class="m-2"
-                placeholder="上海市城区洪涝仿真模型"
-                style="width:20%;margin-left: 1%;"
-                >
-                    <el-option
-                    v-for="item in options"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                    />
-                </el-select> -->
-            </div>
-            <div id="bt2"  style="width: 100%;margin-left: 1%;margin-top: -1%;height: 35vh;">
-
-            </div>
-          </el-card>
-        </div>
-      </div>
-   </div>
-</template>
-<script setup>
-import { ref, onMounted } from 'vue';
-import * as echarts from 'echarts';
-import { modelTreeSelect,getDayChart,getDaySum,getYueChart,getSumAll,getPaihang } from "@/api/service/info";
-const listHelp = [
-]
-const valuePai = ref()
-const modelList = ref([])
-const daySum = ref('')
-const valueYue = ref('')
-const dayAll = ref()
-const monAll = ref()
-const yearAll = ref()
-const valueModMon = ref('')
-const valueMon = ref('')
-const valueMod = ref('')
-const heightAll = window.innerHeight
-const seledMo = ['primary','plain','plain','plain','plain','plain','plain']
-const optionsModel = ref({})
-function getLastDayOfMonth(firstDay) {
-    // 从第一天字符串解析年月
-    const [year, month] = firstDay.split('-').map(Number);
-    
-    // 创建下个月第一天的日期对象
-    const nextMonthFirstDay = new Date(year, month, 1); // month是1-12,JS会自动处理跨年
-    
-    // 获取当月最后一天(下个月第一天减1毫秒)
-    const lastDay = new Date(nextMonthFirstDay - 1);
-    
-    // 格式化输出
-    const lastDayYear = lastDay.getFullYear();
-    const lastDayMonth = (lastDay.getMonth() + 1).toString().padStart(2, '0');
-    const lastDayDate = lastDay.getDate().toString().padStart(2, '0');
-    
-    return `${lastDayYear}-${lastDayMonth}-${lastDayDate}`;
-}
-function getAllDaysInMonth(firstDayOfMonth) {
-    // 解析输入字符串获取年月
-    const [year, month] = firstDayOfMonth.split('-').map(Number);
-    
-    // 创建当月最后一天的日期对象
-    const lastDay = new Date(year, month, 0); // 月份从0开始,所以month即下个月
-    
-    // 获取当月天数
-    const daysCount = lastDay.getDate();
-    
-    // 生成所有天数的数组
-    return Array.from({length: daysCount}, (_, i) => 
-        (i + 1).toString().padStart(2, '0')
-    );
-}
-function getLastDayOfYear(firstDay) {
-    // 从输入字符串中提取年份
-    const year = parseInt(firstDay.split('-')[0]);
-    
-    // 计算下一年度的第一天
-    const nextYearFirstDay = new Date(year + 1, 0, 1); // 月份0代表1月
-    
-    // 计算本年度的最后一天(下一年第一天减去1毫秒)
-    const lastDay = new Date(nextYearFirstDay.getTime() - 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const lastDayYear = lastDay.getFullYear();
-    const lastDayMonth = String(lastDay.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
-    const lastDayDate = String(lastDay.getDate()).padStart(2, '0');
-    
-    return `${lastDayYear}-${lastDayMonth}-${lastDayDate}`;
-}
-function getMon(){
-  var mdName
-  for(var i = 0;i<optionsModel.value.length;i++){
-    if(valueModMon.value===optionsModel.value[i].id){
-      mdName = optionsModel.value[i].label
-    }
-  }
-  console.log(mdName.value)
-  var par = {
-    params:{
-      beginTime:valueMon.value,
-      endTime:getLastDayOfYear(valueMon.value)
-    },
-    mdId:valueModMon.value
-  }
-  var x = getMonthsFromJanuaryToCurrent()
-  var y = []
-  x.forEach(item=>{
-    y.push(0)
-  })
-  getYueChart(par).then(res=>{
-    for(var i = 0;i<res.data.length;i++){
-      for(var i1 = 0;i1<y.length;i1++){
-        if(Number(res.data[i].statisTm.slice(-5,-3))===i1+1){
-          y[i1] = res.data[i].statisNum
-        }
-      }
-    }
-    initChartbt1(y,mdName)
-  })
-}
-function getMonthsFromJanuaryToCurrent() {
-    const today = new Date();
-    const currentYear = today.getFullYear();
-    const currentMonth = today.getMonth() + 1; // 获取当前月份 (1-12)
-    
-    const monthsArray = [];
-    
-    // 从1月循环到当前月份
-    for (let month = 1; month <= currentMonth; month++) {
-        monthsArray.push(month);
-    }
-    
-    return monthsArray;
-}
-function getDaysFromFirstToToday() {
-    const today = new Date();
-    const currentYear = today.getFullYear();
-    const currentMonth = today.getMonth();
-    const currentDay = today.getDate(); // 获取今天是几号
-    
-    const daysArray = [];
-    
-    // 从1号循环到今天
-    for (let day = 1; day <= currentDay; day++) {
-        daysArray.push(day);
-    }
-    
-    return daysArray;
-}
-function getDateRangeArray(dateStr) {
-  const inputDate = new Date(dateStr);
-  const inputYear = inputDate.getFullYear();
-  const inputMonth = inputDate.getMonth(); // 0-based
-  const inputDay = inputDate.getDate();
-
-  const currentDate = new Date();
-  const currentYear = currentDate.getFullYear();
-  const currentMonth = currentDate.getMonth();
-  const currentDay = currentDate.getDate();
-
-  const daysArray = [];
-
-  // 判断是否属于当前月
-  if (inputYear === currentYear && inputMonth === currentMonth) {
-    // 若输入日期晚于当前日期,返回空数组
-    if (inputDay > currentDay) return daysArray;
-    
-    for (let day = inputDay; day <= currentDay; day++) {
-      daysArray.push(day);
-    }
-  } else {
-    // 生成传入月份的全部天数
-    const daysInMonth = new Date(inputYear, inputMonth + 1, 0).getDate();
-    for (let day = 1; day <= daysInMonth; day++) {
-      daysArray.push(day);
-    }
-  }
-
-  return daysArray;
-}
-function getDay(){
-  var mdName
-  for(var i = 0;i<optionsModel.value.length;i++){
-    if(valueMod.value===optionsModel.value[i].id){
-      mdName = optionsModel.value[i].label
-    }
-  }
-  var par = {
-    params:{
-      beginTime:valueYue.value,
-      endTime:getLastDayOfMonth(valueYue.value)
-    },
-    mdId:valueMod.value
-  }
-
-  var x = getDateRangeArray(valueYue.value)
-  console.log(x)
-  var y = []
-  x.forEach(item=>{
-    y.push(0)
-  })
-  var par1 = {
-    mdId:valueMod.value
-  }
-  getDaySum(par1).then(res=>{
-    daySum.value = res.data
-  })
-  getDayChart(par).then(res=>{
-    for(var i = 0;i<res.data.length;i++){
-      for(var i1 = 0;i1<y.length;i1++){
-        if(Number(res.data[i].statisTm.slice(-2))===i1+1){
-          y[i1] = res.data[i].statisNum
-        }
-      }
-    }
-    inintChartTop1(x,y,mdName)
-  })
-}
-function inintChartTop1(x,y,mdName){
-  var chartDom = document.getElementById('top1');
-  var myChart = echarts.init(chartDom);
-  var option;
-
-  option = {
-    tooltip: {
-        trigger: 'axis'
-    },
-    legend: {
-      top:'90%'
-    },
-    xAxis: {
-      splitLine: { show: false },
-      // type: 'category',
-      data: x,
-      axisLabel: {
-      fontSize: 14, // y轴标签字体大小
-        color: '#666'
-      },
-    },
-    yAxis: {
-      type: 'value',
-      show: true,
-      axisLabel: {
-      fontSize: 14, // y轴标签字体大小
-        color: '#666'
-      },
-      splitLine: { show: false },
-      name: '单位:次', 
-      minInterval: 1, 
-      axisTick: {
-        show: true // 确保显示刻度线
-      },
-       axisLine: {
-        show: true, // 确保显示轴线
-        lineStyle: {
-          color: '#333', // 可以设置轴线的颜色,例如与文字颜色一致
-          // width: 1 // 可以设置轴线宽度,可选
-        }
-      },
-    },
-    series: [
-      {
-      name: mdName,
-      type: 'line',
-      color:'#409EFF',
-      data: y,
-      smooth: true
-    },
-    ]
-  };
-  
-  option && myChart.setOption(option);
-
-}
-function initChartbt1(y,mdName){
-  var chartDom = document.getElementById('bt1');
-  var myChart = echarts.init(chartDom);
-  var option;
-  option = {
-    tooltip: {
-        trigger: 'axis'
-    },
-    legend: {
-      data: ['上海市城区洪涝仿真模型', '上海沿海风暴潮预报模型', '黄浦江水系水文分析预报数值模拟模型', '苏州河水系水情预报模型', 
-      '内涝风险实时预警与预报模型','上海市中心城区排水系统模型', '温带风暴潮预报模型',],
-      top:'90%'
-    },
-    xAxis: {
-      splitLine: { show: false },
-      // type: 'category',
-      data: [1,2,3,4,5,6,7,8,9,10,11,12],
-      axisLabel: {
-      fontSize: 14, // y轴标签字体大小
-        color: '#666'
-      },
-    },
-    yAxis: {
-      type: 'value',
-      show: true,
-      name: '单位:次', 
-      axisLabel: {
-      fontSize: 14, // y轴标签字体大小
-        color: '#666'
-      },
-      minInterval: 1, 
-      splitLine: { show: false },
-      axisTick: {
-        show: true // 确保显示刻度线
-      },
-       axisLine: {
-        show: true, // 确保显示轴线
-        lineStyle: {
-          color: '#333', // 可以设置轴线的颜色,例如与文字颜色一致
-          // width: 1 // 可以设置轴线宽度,可选
-        }
-      },
-    },
-    series: [
-      {
-      name: mdName,
-      type: 'line',
-      color:'#409EFF',
-      data: y,
-      smooth: true
-    },
-    ]
-  };
-  
-  option && myChart.setOption(option);
-
-}
-function initChartbt2(y){
-  var chartDom = document.getElementById('bt2');
-  var myChart = echarts.init(chartDom);
-  var option;
-  option = {
-    tooltip: {
-        trigger: 'axis'
-    },
-    xAxis: {
-      axisLabel: {
-      fontSize: 14, // y轴标签字体大小
-        color: '#666'
-      },
-      splitLine: { show: false },
-      type: 'category',
-      data: modelList.value,
-      axisLabel: {
-      interval: 0,  // 强制显示所有标签
-      rotate: -25,   // 旋转角度,正值表示顺时针旋转,负值表示逆时针旋转
-      // 可以设置文字样式,如字体大小、颜色等
-      textStyle: {
-        fontSize: 10,
-        color: '#333'
-      }
-    }
-    },
-    yAxis: {
-      type: 'value',
-      name: '单位:次', 
-      minInterval: 1, 
-      show: true,
-      nameLocation: 'end', 
-      axisLabel: {
-      fontSize: 14, // y轴标签字体大小
-        color: '#666'
-      },
-      splitLine: { show: false },
-      axisTick: {
-        show: true // 确保显示刻度线
-      },
-       axisLine: {
-        show: true, // 确保显示轴线
-        lineStyle: {
-          color: '#333', // 可以设置轴线的颜色,例如与文字颜色一致
-          // width: 1 // 可以设置轴线宽度,可选
-        }
-      },
-    },
-    series: [
-      {
-      type: 'bar',
-      color:'#409EFF',
-      data: y,
-      smooth: true
-    },
-    ]
-  };
-  
-  option && myChart.setOption(option);
-
-}
-const getFirstDayOfMonthShort = () => {
-    const now = new Date();
-    return `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-01`;
-};
-function getFirstDayOfYear() {
-    const currentYear = new Date().getFullYear();
-    const firstDay = new Date(currentYear, 0, 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const year = firstDay.getFullYear();
-    const month = String(firstDay.getMonth() + 1).padStart(2, '0');
-    const day = String(firstDay.getDate()).padStart(2, '0');
-    
-    return `${year}-${month}-${day}`;
-}
-function getPai(){
-  var par = {
-    params:{
-      beginTime:valuePai.value,
-      endTime:getLastDayOfYear(valueMon.value)
-    },
-  }
-  modelList.value = []
-  var y = []
-  getPaihang(par).then(res=>{
-    res.data.forEach(item=>{
-      modelList.value.push(item.mdName)
-      y.push(item.statisNum)
-    })
-    initChartbt2(y)
-  })
-}
-async function getTreeLeft(){
-  var par = {
-    params:{
-      level:'2',
-      devkind:'APP'
-    }
-  }
-  await modelTreeSelect(par).then(res=>{
-    optionsModel.value = res.data[0].children
-    valueMod.value = optionsModel.value[0].id
-    valueModMon.value = optionsModel.value[0].id
-    valueMon.value = getFirstDayOfYear()
-    valueYue.value = getFirstDayOfMonthShort()
-    valuePai.value = getFirstDayOfYear()
-    getDay()
-    getMon()
-    // getPai()
-  })
-  var par1 = {
-    params:{
-      beginTime:valuePai.value,
-      endTime:getLastDayOfYear(valueMon.value)
-    },
-  }
-  modelList.value = []
-  var y = []
-  await getPaihang(par1).then(res=>{
-    res.data.forEach(item=>{
-      modelList.value.push(item.mdName)
-      y.push(item.statisNum)
-    })
-    initChartbt2(y)
-  })
-  var parDay = {
-    params:{
-      beginTime:`${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, '0')}-${String(new Date().getDate()).padStart(2, '0')}`,
-      endTime:`${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, '0')}-${String(new Date().getDate()).padStart(2, '0')}`
-    },
-  }
-  var parMon = {
-    params:{
-      beginTime:getFirstDayOfMonthShort(),
-      endTime:getLastDayOfMonth(valueYue.value)
-    },
-  }
-  var parYear = {
-    params:{
-      beginTime:getFirstDayOfYear(),
-      endTime:getLastDayOfYear(valueMon.value)
-    },
-  }
-  getSumAll(parDay).then(res=>{
-    dayAll.value = res.data
-  })
-  getSumAll(parMon).then(res=>{
-    monAll.value = res.data
-  })
-  getSumAll(parYear).then(res=>{
-    yearAll.value = res.data
-  })
-}
-onMounted(() => {
-  getTreeLeft()
-  
-  // inintChartTop1()
-  // initChartbt1()
-  
-});
-</script>
-<style scoped lang="scss">
-.boxShadow{
-  box-shadow: 
-    -8px 0 15px -10px rgba(0, 0, 0, 0.1), /* 左侧阴影 */
-    8px 0 15px -10px rgba(0, 0, 0, 0.1);  /* 右侧阴影 */
-  transition: box-shadow 0.3s ease;
-
-}
-</style>

+ 0 - 338
ruoyi-ui/src/views/evaluate/quality.vue

@@ -1,338 +0,0 @@
-<template>
-  <div style="width: 100%;;display: flex;">
-    <div style="width: 98%;margin-left: 1%;padding-top: 0.5%;" class="tab-container">
-      <div>
-        <div style="position: absolute;left: 80%;z-index: 1000;">
-            <div>
-                <el-date-picker
-                v-model="timeYear"
-                type="year"
-                v-if="activeName=='third'"
-                value-format="YYYY-MM-DD"
-                @change="getQualityList"
-                placeholder="请选择年份"
-                />
-                <el-date-picker
-                v-model="timeMon"
-                type="month"
-                v-if="activeName=='second'"
-                value-format="YYYY-MM-DD"
-                @change="getQualityList"
-                placeholder="请选择月份"
-                />
-            </div>
-        </div>
-        <el-tabs
-        v-model="activeName"
-        type="card"
-        class="demo-tabs"
-        @tab-change="getQualityList"
-        >   
-        <el-tab-pane label="年" name="third"></el-tab-pane>
-        <el-tab-pane label="月" name="second"></el-tab-pane>
-        <el-tab-pane label="周" name="first"></el-tab-pane>
-        </el-tabs>
-        <el-table 
-          :data="tableData" 
-          style="width: 100%;margin-left: 0%;margin-top: -0.8%;height: 80vh;"
-          :cell-style="{ padding:'5px' }"
-          :header-cell-style="{fontSize: '14px',height: heightAll*0.01+'px',}"
-          :row-style="{ fontSize: '17px',textAlign:'center'}"
-          border >
-          <el-table-column type="index" label="序号" width="80">
-            <template #default="{ $index }">
-              <div style="text-align: center;">
-                {{ $index + 1 }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="mdName" label="模型名称" show-overflow-tooltip  width="250">
-          </el-table-column>
-          <el-table-column prop="statisNum" label="调用次数"  show-overflow-tooltip/>
-          <el-table-column prop="statisNumTrue" label="调用成功次数"/>
-          <el-table-column prop="rate" label="成功率(%)">
-            <template #default="scope">
-              <div v-if="scope.row.rate!=null">
-                {{ scope.row.rate }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="rateLv" label="质量">
-            <template #default="scope">
-              <div style="color:#67C23A" v-if="scope.row.rateLv==='优'">
-                {{ scope.row.rateLv }}
-              </div>
-              <div style="color:#67C23A" v-if="scope.row.rateLv==='良'">
-                {{ scope.row.E6A23C }}
-              </div>
-              <div style="color:#909399" v-if="scope.row.rateLv==='中'">
-                {{ scope.row.rateLv }}
-              </div>
-              <div style="color:#F56C6C" v-if="scope.row.rateLv==='差'">
-                {{ scope.row.rateLv }}
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-        <el-dialog @close="clearAdd" v-model="dialogVisible" title="" width="60%" destroy-on-close :key="tableKey">
-          <div style="display: flex;align-items: center;">
-            <div v-if="detailJson.rqtype==='GET'">
-              <el-tag class="ml-2" type="warning">GET</el-tag>
-            </div>
-            <div v-if="detailJson.rqtype==='POST'">
-              <el-tag class="ml-2" type="warning">POST</el-tag>
-            </div>
-            <div style="margin-left: 1%;">
-              {{ detailJson.name }}:
-            </div>
-            <div style="margin-left: 1%;">
-              {{ detailJson.url }}
-            </div>
-          </div>
-          <el-descriptions style="margin-top: 1%;" :column="3" border>
-            <el-descriptions-item label="接口类型">{{ detailJson.type }}</el-descriptions-item>
-            <el-descriptions-item label="请求方式">{{ detailJson.rqtype }}</el-descriptions-item>
-            <el-descriptions-item label="响应类型">{{ detailJson.rptype }}</el-descriptions-item>
-            <el-descriptions-item label="服务分类">{{ detailJson.cateCode }}</el-descriptions-item>
-          </el-descriptions>
-          <div style="margin-top:4%;font-size: 18px;">
-            请求参数
-          </div>
-           <el-table 
-            style="margin-top: 1%;width: 98%;"
-            :data="tableDataCan" 
-            :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-            :header-cell-style="{fontSize: '14px', textAlign: 'center'}"
-            :row-style="{ height: heightAll*0.01+'px',fontSize: '17px',textAlign:'center'  }"
-            border >
-                <el-table-column prop="paramCode" label="参数字段">
-                </el-table-column>
-                <el-table-column prop="paramName" label="参数名称">
-                </el-table-column>
-                <el-table-column prop="paramType" label="参数类型" width="200">
-                </el-table-column>
-                <el-table-column prop="paramValue" label="参数示例">
-                  
-                </el-table-column>
-                <el-table-column prop="paramNote" label="参数说明" show-overflow-tooltip>
-                </el-table-column>
-            </el-table>
-            <div style="margin-top:4%;font-size: 18px;">
-              返回参数
-            </div>
-            <el-input readonly  placeholder="" :rows="8" type="textarea" v-model="dataJsonXiang" text style="margin-top: 1%;width: 98%;" ></el-input>
-          <template #footer>
-            <span class="dialog-footer">
-              <el-button type="primary" @click="dialogVisible = false">
-                确定
-              </el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <el-dialog @close="clearFromLev" :title="titleTest" draggable v-model="dialogVisibleLevel" width="50%" destroy-on-close :key="tableKey">
-          <el-table 
-            style="margin-top: 1%;width: 98%;min-height: 500px;"
-            :data="tableDataLog" 
-            :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-            :header-cell-style="{fontSize: '14px', textAlign: 'center'}"
-            :row-style="{ height: heightAll*0.01+'px',fontSize: '17px',textAlign:'center'  }"
-            border >
-                <el-table-column prop="createBy" label="名称">
-                </el-table-column>
-                <el-table-column prop="runTm" label="评价结果">
-                </el-table-column>
-                <el-table-column prop="execTm" label="评价状态" show-overflow-tooltip>
-                </el-table-column>
-                <el-table-column prop="returnData" label="评价日期" show-overflow-tooltip>
-                </el-table-column>
-            </el-table>
-          <template #footer>
-              <span class="dialog-footer">
-                <el-button type="primary" @click="dialogVisibleLevel = false">
-                  确定
-                </el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <el-dialog  v-model="dialogVisibleDe" title="风暴潮" width="50%" @close="" destroy-on-close class="custom-dialog-bg">
-          <el-form :key="tableKey" style="margin-top:1%;width: 100%;" :model="formJi" label-position="right"
-                 ref="formRefJi" label-width="120px" :rules="rulesJi">
-            <el-form-item label="名称:" prop="name" style="">
-              <el-input v-model="formAdd.intro" style="width: 40%;"  resize="none" />
-            </el-form-item>
-            <el-row :gutter="48">
-              <el-col :span="10">
-                <el-form-item label="评价日期:" prop="url" style="">
-                    <el-date-picker
-                      v-model="value1"
-                      type="date"
-                      style="width: 100%"
-                      placeholder="选择日期"
-                    />
-                </el-form-item>
-              </el-col>
-              <el-col :span="10">
-                <el-form-item label="评价生效日期:" prop="url" style="">
-                  <div style="width: 100%">
-                    <el-date-picker
-                    v-model="value1"
-                    type="daterange"
-                    style="width: 100%"
-                    range-separator="-"
-                    start-placeholder="开始时间"
-                    end-placeholder="结束时间"
-                  />
-                  </div>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row :gutter="48">
-              <el-col :span="10">
-                <el-form-item label="质量:" prop="name" style="">
-                  <el-input v-model="formAdd.intro" style="width: 100%;"  resize="none" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="10">
-                <el-form-item label="评分:" prop="name" style="">
-                  <el-input v-model="formAdd.intro" style="width: 100%;"  resize="none" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-form-item label="说明:" prop="name" style="">
-              <el-input v-model="formAdd.intro" style="width: 40%;"  resize="none" type="textarea"/>
-            </el-form-item>
-          </el-form>
-        </el-dialog>
-    </div>
-  </div>
-</template>
-<script   setup>
-import { getQuality } from "@/api/service/info";
-
-const timeMon = ref('')
-const timeYear = ref('')
-const activeName = ref('first')
-const tableData = ref ([])
-
-function getWeekRange(date = new Date()) {
-  // 获取传入日期是本周的第几天(0是周日,1是周一,...,6是周六)
-  const dayOfWeek = date.getDay();
-  // 计算与本周第一天的天数差。如果今天是周日(0),则上周一需要减6天;否则减(当前星期数-1)天。
-  const diffToMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
-  
-  // 计算本周一的日期
-  const monday = new Date(date);
-  monday.setDate(date.getDate() + diffToMonday);
-  
-  // 计算本周日的日期(周一加6天)
-  const sunday = new Date(monday);
-  sunday.setDate(monday.getDate() + 6);
-
-  // 格式化日期为 "YYYY-MM-DD"
-  function formatDate(dateObj) {
-    const year = dateObj.getFullYear();
-    const month = String(dateObj.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
-    const day = String(dateObj.getDate()).padStart(2, '0');
-    return `${year}-${month}-${day}`;
-  }
-
-  return {
-    startOfWeek: formatDate(monday), // 本周开始日期 (周一)
-    endOfWeek: formatDate(sunday)    // 本周结束日期 (周日)
-  };
-}
-function getLastDayOfMonth(firstDay) {
-    // 从第一天字符串解析年月
-    const [year, month] = firstDay.split('-').map(Number);
-    
-    // 创建下个月第一天的日期对象
-    const nextMonthFirstDay = new Date(year, month, 1); // month是1-12,JS会自动处理跨年
-    
-    // 获取当月最后一天(下个月第一天减1毫秒)
-    const lastDay = new Date(nextMonthFirstDay - 1);
-    
-    // 格式化输出
-    const lastDayYear = lastDay.getFullYear();
-    const lastDayMonth = (lastDay.getMonth() + 1).toString().padStart(2, '0');
-    const lastDayDate = lastDay.getDate().toString().padStart(2, '0');
-    
-    return `${lastDayYear}-${lastDayMonth}-${lastDayDate}`;
-}
-function getLastDayOfYear(firstDay) {
-    // 从输入字符串中提取年份
-    const year = parseInt(firstDay.split('-')[0]);
-    
-    // 计算下一年度的第一天
-    const nextYearFirstDay = new Date(year + 1, 0, 1); // 月份0代表1月
-    
-    // 计算本年度的最后一天(下一年第一天减去1毫秒)
-    const lastDay = new Date(nextYearFirstDay.getTime() - 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const lastDayYear = lastDay.getFullYear();
-    const lastDayMonth = String(lastDay.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
-    const lastDayDate = String(lastDay.getDate()).padStart(2, '0');
-    
-    return `${lastDayYear}-${lastDayMonth}-${lastDayDate}`;
-}
-const getFirstDayOfMonthShort = () => {
-    const now = new Date();
-    return `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-01`;
-};
-function getFirstDayOfYear() {
-    const currentYear = new Date().getFullYear();
-    const firstDay = new Date(currentYear, 0, 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const year = firstDay.getFullYear();
-    const month = String(firstDay.getMonth() + 1).padStart(2, '0');
-    const day = String(firstDay.getDate()).padStart(2, '0');
-    
-    return `${year}-${month}-${day}`;
-}
-function setDate(){
-  timeMon.value = getFirstDayOfMonthShort()
-  timeYear.value = getFirstDayOfYear()
-}
-function getQualityList(val){
-  console.log('val',val)
-  var par = {
-    devkind:'APP',
-    params:{
-      beginTime:'',
-      endTime:''
-    }
-  }
-  if(activeName.value=='first'){
-    const weekRange = getWeekRange()
-    par.params.beginTime=weekRange.startOfWeek
-    par.params.endTime=weekRange.endOfWeek
-    getQuality(par).then((res)=>{
-      tableData.value=res.data
-    })
-  }else if(activeName.value=='second'){
-    par.params.beginTime=timeMon.value
-    par.params.endTime=getLastDayOfMonth(timeMon.value)
-    getQuality(par).then((res)=>{
-      tableData.value=res.data
-    })
-  }else if(activeName.value=='third'){
-    par.params.beginTime=timeYear.value
-    par.params.endTime=getLastDayOfYear(timeYear.value)
-    getQuality(par).then((res)=>{
-      tableData.value=res.data
-    })
-  }
-  
-}
-
-onMounted(() => {
-  setDate()
-  getQualityList();
-});
-
-</script>
-<style scoped>
-
-</style>

+ 0 - 407
ruoyi-ui/src/views/evaluate/score.vue

@@ -1,407 +0,0 @@
-<template>
-    <!-- 测试devkind = 'APP' -->
-  <div style="width: 100%;;display: flex;">
-    <div style="width: 98%;margin-left: 1%;padding-top: 0.5%;" class="tab-container">
-      <div>
-        <el-date-picker
-          v-model="valueMon"
-          type="year"
-          style="margin-left: 1%;"
-          @change="getMon"
-          placeholder="本年"
-          value-format="YYYY-MM-DD"
-        />
-        <el-table 
-          :data="tableData" 
-          style="width: 100%;margin-left: 1%;margin-top: 0.5%;"
-          :cell-style="{ padding:'5px' }"
-          :header-cell-style="{fontSize: '14px',height: heightAll*0.01+'px',}"
-          :row-style="{ fontSize: '17px',textAlign:'center'}"
-          border >
-          <el-table-column type="index" label="序号" width="80">
-            <template #default="{ $index }">
-              <div style="text-align: center;">
-                {{ $index + 1 }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column  label="模型名称" prop="mdName"  width="250">
-          </el-table-column>
-          <el-table-column prop="firmlyConfirm" label="认定结果">
-            <template #default="scope">
-              <div>
-                <span v-if="scope.row.firmlyConfirm==null">-</span>
-                <span v-else>{{scope.row.firmlyConfirm}}</span>
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="firmlyType" label="认定类型">
-            <template #default="scope">
-              <div>
-                <span v-if="scope.row.firmlyType==null">-</span>
-                <span v-if="scope.row.firmlyType=='1'">评分认定</span>
-                <span v-if="scope.row.firmlyType=='0'">直接认定</span>
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="firmlyState" label="认定状态">
-            <template #default="scope">
-              <div>
-                <span v-if="scope.row.firmlyState==null">待认定</span>
-                <span v-if="scope.row.firmlyState=='1'">已认定</span>
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="estimateNum" label="已评分人数">
-                </el-table-column>
-          <el-table-column prop="address" label="操作" width="200">
-              <template #default="scope">
-                  <div style="display: flex;">
-                    <el-button @click="showPing(scope.row)" type="primary" text style="margin-left: 0%;">评价</el-button>
-                    <el-button @click="showRen(scope.row)" type="primary" text style="margin-left: 0%;">认定</el-button>
-                    <el-button @click="showLog(scope.row)" type="primary" text style="margin-left: 0%;">日志</el-button>
-                  </div>
-              </template>
-          </el-table-column>
-        </el-table>
-      </div>
-        <el-dialog @close="clearFromLev" :title="titleTest" draggable v-model="dialogVisibleLevel" width="50%" destroy-on-close :key="tableKey">
-          <el-table 
-            style="margin-top: 1%;width: 98%;min-height: 500px;"
-            :data="tableDataLog" 
-            :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-            :header-cell-style="{fontSize: '14px', textAlign: 'center'}"
-            :row-style="{ height: heightAll*0.01+'px',fontSize: '17px',textAlign:'center'  }"
-            border >
-                <el-table-column prop="createBy" label="评价人">
-                </el-table-column>
-                <el-table-column prop="createTime" label="评分时间" >
-                </el-table-column>
-                <el-table-column prop="firmlyType" label="认定类型">
-                </el-table-column>
-                <el-table-column prop="firmlyState" label="认定状态">
-                </el-table-column>
-                
-                <el-table-column prop="mdEstimates" label="评分项目列表">
-                  <template #default="scope">
-                    <el-popover placement="right" :width="400" trigger="click">
-                      <template #reference>
-                        <el-button style="margin-right: 16px">展示详情</el-button>
-                      </template>
-                      <el-table :data="scope.row.mdEstimates" style="width: 100%;">
-                        <el-table-column width="150" property="createTime" label="评分时间" show-overflow-tooltip/>
-                        <el-table-column width="100" property="estimateScore" label="评分分值" />
-                        <el-table-column width="300" property="estimateType" label="评分项目">
-                          <template #default="scope">
-                            <div>
-                              <span v-if="scope.row.estimateType=='USE'">使用指标</span>
-                              <span v-if="scope.row.estimateType=='EFF'">效率指标</span>
-                              <span v-if="scope.row.estimateType=='SUP'">补充指标</span>
-                            </div>
-                          </template>
-                        </el-table-column>
-                      </el-table>
-                    </el-popover>
-                  </template>
-                </el-table-column>
-                <!-- <el-table-column prop="address" label="操作" width="150">
-                  <template #default="scope">
-                      <div style="display: flex;">
-                        <el-button @click="editLog(scope.row)" type="primary" text style="margin-left: 0%;">修改</el-button>
-                        <el-button @click="delLogList(scope.row)" type="danger" text style="margin-left: 0%;">删除</el-button>
-                      </div>
-                  </template>
-                </el-table-column> -->
-            </el-table>
-          <template #footer>
-              <span class="dialog-footer">
-                <el-button type="primary" @click="dialogVisibleLevel = false">
-                  确定
-                </el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <el-dialog @close="clearForm" v-model="dialogVisibleDe" :title="titleTest" width="35%" destroy-on-close class="custom-dialog-bg">
-          <el-form style="margin-top:5%;width: 98%;" :model="formAdd" label-position="right" :rules="rulesAdd"
-                 ref="formRefJi" label-width="120px" >
-            <el-form-item label="评价时间:" prop=""  style="">
-              <el-date-picker
-                v-model="valueMon"
-                type="year"
-                disabled
-                style="width: 100%;"
-                @change="getMon"
-                placeholder="本年"
-                value-format="YYYY-MM-DD"
-              />
-            </el-form-item>
-            <!-- <el-form-item label="评价分值:" prop="estimateScore" style="">
-              <el-input v-model="formAdd.estimateScore"  style="width: 100%;" />
-            </el-form-item> -->
-            <!-- <el-form-item label="评价项目:" prop="estimateType"  style="">
-              <el-select
-                  v-model="formAdd.estimateType"
-                  style="width: 100%;margin-left: 0%;"
-              >
-                  <el-option label="使用指标" value="USE"></el-option>
-                  <el-option label="效率指标" value="EFF"></el-option>
-                  <el-option label="补充指标" value="SUP"></el-option>
-              </el-select>
-            </el-form-item> -->
-            <el-form-item label="使用指标评分:" prop="USE"  style="">
-              <el-input v-model="formAdd.USE" style="width: 100%;" />
-            </el-form-item>
-            <el-form-item label="效率指标评分:" prop="EFF"  style="">
-              <el-input v-model="formAdd.EFF" style="width: 100%;" />
-            </el-form-item>
-            <el-form-item label="补充指标评分:" prop="SUP"  style="">
-              <el-input v-model="formAdd.SUP" style="width: 100%;" />
-            </el-form-item>
-            <el-form-item label="评价说明:" prop=""  style="">
-              <el-input v-model="formAdd.remark" type="textarea" :row="2" style="width: 100%;" />
-            </el-form-item>
-          </el-form>
-          <div style="display: flex;font-size: 13px;align-items: center;line-height: 1.5;margin-left: 1%;margin-top: 5%;">
-            <div style="">
-              当前审核人:
-            </div>
-            <div>
-              {{userName}}
-            </div>
-            <div style="margin-left: 5%;">
-              当前日期: 
-            </div>
-            <div>
-              {{date}}
-            </div>
-          </div>
-          <template #footer>
-              <span class="dialog-footer">
-                <el-button type="primary" v-if="isAdd" @click="addPing">确定</el-button>
-                <el-button type="primary" v-if="isEdit" @click="saveEdit">确定</el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <el-dialog @close="clearForm" v-model="dialogVisibleRen" :title="titleTest" width="30%" destroy-on-close class="custom-dialog-bg">
-          <el-form style="margin-top:1%;width: 98%;height:15vh;" :model="formRen" label-position="right" :rules="rulesRen"
-                 ref="formRefRen" label-width="100px" >
-            <el-form-item label="认定类型:" prop="firmlyType"  style="">
-              <el-select
-                  v-model="formRen.firmlyType"
-                  @change="changeRule"
-                  style="width: 100%;margin-left: 0%;"
-              >
-                  <el-option label="直接认定" value="0"></el-option>
-                  <el-option label="评分认定" value="1"></el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item v-if="formRen.firmlyType=='0'" label="认定分数:" prop="firmlyConfirm"  style="">
-              <el-input v-model="formRen.firmlyConfirm" style="width: 100%;" />
-            </el-form-item>
-
-          </el-form>
-          <template #footer>
-              <span class="dialog-footer">
-                <el-button type="primary" @click="addRen">确定</el-button>
-            </span>
-          </template>
-        </el-dialog>
-    </div>
-  </div>
-</template>
-<script setup>
-import { getScoreList,postPingjia,getScoreListLog,delLog,editLogping,estimateFirmly } from "@/api/service/info";
-import { fa } from "element-plus/es/locale/index.mjs";
-import { ref, onMounted, onUnmounted, nextTick,onBeforeMount } from 'vue';
-import { getUserProfile } from "@/api/system/user";
-const {proxy} = getCurrentInstance();
-const isAdd = ref(false)
-const isEdit = ref(false)
-const dialogVisibleLevel = ref(false)
-const dialogVisibleDe = ref(false) 
-const tableDataLog = ref([])
-const tableData = ref([])
-const rulesAdd = reactive({
-  USE: [{required: true, message: '必填', trigger: 'blur'}],
-  EFF: [{required: true, message: '必填', trigger: 'blur'}],
-  SUP: [{required: true, message: '必填', trigger: 'blur'}],
-});
-const formAdd = ref({
-  estimateScore:'',
-  estimateType:'',
-  time:[],
-  remark:''
-})
-const parRow = ref()
-const formRen = ref({
-  firmlyType:'',
-  firmlyConfirm:''
-})
-const rulesRen = reactive({
-  firmlyType: [{required: true, message: '必填', trigger: 'blur'}],
-  firmlyConfirm: []
-});
-const formRefRen = ref();
-const mdid = ref()
-const title = ref('')
-const estimateId = ref()
-const valueMon = ref('')
-const titleTest = ref('')
-function showPing(row){
-  titleTest.value = row.mdName
-  isAdd.value = true
-  isEdit.value = false
-  mdid.value = row.mdid
-  dialogVisibleDe.value = true
-  console.log(row)
-  title.value = row.name
-  formAdd.value.name = row.name
-}
-function clearForm(){
-  formAdd.value = {}
-}
-function getFirstDayOfYear() {
-    const currentYear = new Date().getFullYear();
-    const firstDay = new Date(currentYear, 0, 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const year = firstDay.getFullYear();
-    const month = String(firstDay.getMonth() + 1).padStart(2, '0');
-    const day = String(firstDay.getDate()).padStart(2, '0');
-    
-    return `${year}-${month}-${day}`;
-}
-function delLogList(row){
-  proxy.$modal.confirm('是否确认删除?').then(function () {
-    return delLog(row.estimateId);
-  }).then(() => {
-    showLog(parRow);
-    proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {});
-}
-const userName = ref('')
-const date = ref(new Date().toLocaleDateString())
-function fetchData() {
-  getUserProfile().then(response => {
-    userName.value = response.data.userName
-  });
-}
-function editLog(row){
-  dialogVisibleDe.value = true
-  isAdd.value = false
-  isEdit.value = true
-  estimateId.value = row.estimateId
-  formAdd.value.name = title.value
-  formAdd.value.time = [row.beginTime,row.endTime]
-  formAdd.value.estimateType = row.estimateType
-  formAdd.value.estimateScore = row.estimateScore
-  formAdd.value.remark = row.remark
-}
-function changeRule(){
-  if(formRen.value.firmlyType==='0'){
-    rulesRen.firmlyConfirm = [{required: true, message: '必填', trigger: 'blur'}]
-  }
-}
-function saveEdit(){
-  var par = formAdd.value
-  par.mdid = mdid.value
-  par.estimateId = estimateId.value
-  editLogping(par).then(res=>{
-    if(res.code==200){
-      proxy.$message.success(res.msg)
-      showLog(parRow)
-      dialogVisibleDe.value = false
-    }
-  })
-}
-function showLog(row){
-  title.value = row.name
-  parRow.value = row
-  mdid.value = row.mdid
-  dialogVisibleLevel.value = true
-  var par = {
-    mdid:row.mdid,
-    estimateTime:valueMon.value
-  }
-  getScoreListLog(par).then(res=>{
-    tableDataLog.value = res.data
-  })
-}
-function addRen(){
-  formRefRen.value.validate((valid) => {
-    if(valid){
-      var par = {
-        mdid:mdid.value,
-        firmlyType:formRen.value.firmlyType,
-        firmlyConfirm:formRen.value.firmlyConfirm,
-        firmlyYr:valueMon.value
-      }
-      estimateFirmly(par).then(res=>{
-        if(res.code==200){
-          proxy.$message.success(res.msg)
-          dialogVisibleRen.value = false
-          getlist()
-        }
-      })
-    }
-   })
-}
-function showRen(row){
-  dialogVisibleRen.value = true
-  mdid.value = row.mdid
-}
-const dialogVisibleRen = ref(false)
-const formRefJi = ref();
-function addPing(){
-  var par = [{
-    mdid:mdid.value,
-    estimateScore:formAdd.value.USE,
-    estimateType:'USE',
-    remark:formAdd.value.remark,
-    estimateTime:valueMon.value
-  },{
-    mdid:mdid.value,
-    estimateScore:formAdd.value.EFF,
-    estimateType:'EFF',
-    remark:formAdd.value.remark,
-    estimateTime:valueMon.value
-  },{
-    mdid:mdid.value,
-    estimateScore:formAdd.value.SUP,
-    estimateType:'SUP',
-    remark:formAdd.value.remark,
-    estimateTime:valueMon.value
-  }]
-   formRefJi.value.validate((valid) => {
-    if(valid){
-      postPingjia(par).then(res=>{
-        if(res.code==200){
-          proxy.$message.success(res.msg)
-          dialogVisibleDe.value = false
-          getlist()
-        }
-      })
-    }
-   })
-}
-function getlist(){
-  valueMon.value = getFirstDayOfYear()
-  var par = {
-    devkind:'APP',
-    firmlyYr:valueMon.value
-  }
-  getScoreList(par).then(res=>{
-    var a = res.rows
-    tableData.value = a
-  })
-}
-onMounted(() => {
-  getlist()
-  fetchData()
-});
-
-</script>
-<style scoped>
-
-
-</style>

+ 0 - 340
ruoyi-ui/src/views/evaluate/xiaolv.vue

@@ -1,340 +0,0 @@
-<template>
-  <div style="width: 100%;;display: flex;">
-    <div style="width: 98%;margin-left: 1%;padding-top: 0.5%;" class="tab-container">
-      <div>
-        <div style="position: absolute;left: 80%;z-index: 1000;">
-            <div>
-                <el-date-picker
-                v-model="timeYear"
-                type="year"
-                v-if="activeName=='third'"
-                value-format="YYYY-MM-DD"
-                @change="getEfficiencyList"
-                placeholder="请选择年份"
-                />
-                <el-date-picker
-                v-model="timeMon"
-                type="month"
-                v-if="activeName=='second'"
-                value-format="YYYY-MM-DD"
-                @change="getEfficiencyList"
-                placeholder="请选择月份"
-                />
-            </div>
-        </div>
-        <el-tabs
-        v-model="activeName"
-        type="card"
-        class="demo-tabs"
-        @tab-change="getEfficiencyList"
-        >   
-          <el-tab-pane label="年" name="third"></el-tab-pane>
-          <el-tab-pane label="月" name="second"></el-tab-pane>
-          <el-tab-pane label="周" name="first"></el-tab-pane>
-              
-            
-        </el-tabs>
-        <el-table 
-          :data="tableData" 
-          style="width: 100%;margin-left: 0%;margin-top: -0.8%;height: 80vh;"
-          :cell-style="{ padding:'5px' }"
-          :header-cell-style="{fontSize: '14px',height: heightAll*0.01+'px',}"
-          :row-style="{ fontSize: '17px',textAlign:'center'}"
-          border >
-          <el-table-column type="index" label="序号" width="80">
-            <template #default="{ $index }">
-              <div style="text-align: center;">
-                {{ $index + 1 }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="mdName" label="模型名称" show-overflow-tooltip width="250">
-          </el-table-column>
-          <el-table-column prop="statisNum" label="调用次数"  show-overflow-tooltip/>
-          <el-table-column prop="execTm" label="时长(ms)">
-            <template #default="scope">
-              <div v-if="scope.row.execTm!=null">
-                {{ scope.row.execTm }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="rate" label="评价时长"/>
-          <el-table-column prop="rateLv" label="效率">
-            <template #default="scope">
-              <div style="color:#67C23A" v-if="scope.row.rateLv==='优'">
-                {{ scope.row.rateLv }}
-              </div>
-              <div style="color:#67C23A" v-if="scope.row.rateLv==='良'">
-                {{ scope.row.E6A23C }}
-              </div>
-              <div style="color:#909399" v-if="scope.row.rateLv==='中'">
-                {{ scope.row.rateLv }}
-              </div>
-              <div style="color:#F56C6C" v-if="scope.row.rateLv==='差'">
-                {{ scope.row.rateLv }}
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-        <el-dialog @close="clearAdd" v-model="dialogVisible" title="" width="60%" destroy-on-close :key="tableKey">
-          <div style="display: flex;align-items: center;">
-            <div v-if="detailJson.rqtype==='GET'">
-              <el-tag class="ml-2" type="warning">GET</el-tag>
-            </div>
-            <div v-if="detailJson.rqtype==='POST'">
-              <el-tag class="ml-2" type="warning">POST</el-tag>
-            </div>
-            <div style="margin-left: 1%;">
-              {{ detailJson.name }}:
-            </div>
-            <div style="margin-left: 1%;">
-              {{ detailJson.url }}
-            </div>
-          </div>
-          <el-descriptions style="margin-top: 1%;" :column="3" border>
-            <el-descriptions-item label="接口类型">{{ detailJson.type }}</el-descriptions-item>
-            <el-descriptions-item label="请求方式">{{ detailJson.rqtype }}</el-descriptions-item>
-            <el-descriptions-item label="响应类型">{{ detailJson.rptype }}</el-descriptions-item>
-            <el-descriptions-item label="服务分类">{{ detailJson.cateCode }}</el-descriptions-item>
-          </el-descriptions>
-          <div style="margin-top:4%;font-size: 18px;">
-            请求参数
-          </div>
-           <el-table 
-            style="margin-top: 1%;width: 98%;"
-            :data="tableDataCan" 
-            :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-            :header-cell-style="{fontSize: '14px', textAlign: 'center'}"
-            :row-style="{ height: heightAll*0.01+'px',fontSize: '17px',textAlign:'center'  }"
-            border >
-                <el-table-column prop="paramCode" label="参数字段">
-                </el-table-column>
-                <el-table-column prop="paramName" label="参数名称">
-                </el-table-column>
-                <el-table-column prop="paramType" label="参数类型" width="200">
-                </el-table-column>
-                <el-table-column prop="paramValue" label="参数示例">
-                  
-                </el-table-column>
-                <el-table-column prop="paramNote" label="参数说明" show-overflow-tooltip>
-                </el-table-column>
-            </el-table>
-            <div style="margin-top:4%;font-size: 18px;">
-              返回参数
-            </div>
-            <el-input readonly  placeholder="" :rows="8" type="textarea" v-model="dataJsonXiang" text style="margin-top: 1%;width: 98%;" ></el-input>
-          <template #footer>
-            <span class="dialog-footer">
-              <el-button type="primary" @click="dialogVisible = false">
-                确定
-              </el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <el-dialog @close="clearFromLev" :title="titleTest" draggable v-model="dialogVisibleLevel" width="50%" destroy-on-close :key="tableKey">
-          <el-table 
-            style="margin-top: 1%;width: 98%;min-height: 500px;"
-            :data="tableDataLog" 
-            :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-            :header-cell-style="{fontSize: '14px', textAlign: 'center'}"
-            :row-style="{ height: heightAll*0.01+'px',fontSize: '17px',textAlign:'center'  }"
-            border >
-                <el-table-column prop="createBy" label="名称">
-                </el-table-column>
-                <el-table-column prop="runTm" label="评价结果">
-                </el-table-column>
-                <el-table-column prop="execTm" label="评价状态" show-overflow-tooltip>
-                </el-table-column>
-                <el-table-column prop="returnData" label="评价日期" show-overflow-tooltip>
-                </el-table-column>
-            </el-table>
-          <template #footer>
-              <span class="dialog-footer">
-                <el-button type="primary" @click="dialogVisibleLevel = false">
-                  确定
-                </el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <el-dialog  v-model="dialogVisibleDe" title="风暴潮" width="50%" @close="" destroy-on-close class="custom-dialog-bg">
-          <el-form :key="tableKey" style="margin-top:1%;width: 100%;" :model="formJi" label-position="right"
-                 ref="formRefJi" label-width="120px" :rules="rulesJi">
-            <el-form-item label="名称:" prop="name" style="">
-              <el-input v-model="formAdd.intro" style="width: 40%;"  resize="none" />
-            </el-form-item>
-            <el-row :gutter="48">
-              <el-col :span="10">
-                <el-form-item label="评价日期:" prop="url" style="">
-                    <el-date-picker
-                      v-model="value1"
-                      type="date"
-                      style="width: 100%"
-                      placeholder="选择日期"
-                    />
-                </el-form-item>
-              </el-col>
-              <el-col :span="10">
-                <el-form-item label="评价生效日期:" prop="url" style="">
-                  <div style="width: 100%">
-                    <el-date-picker
-                    v-model="value1"
-                    type="daterange"
-                    style="width: 100%"
-                    range-separator="-"
-                    start-placeholder="开始时间"
-                    end-placeholder="结束时间"
-                  />
-                  </div>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row :gutter="48">
-              <el-col :span="10">
-                <el-form-item label="质量:" prop="name" style="">
-                  <el-input v-model="formAdd.intro" style="width: 100%;"  resize="none" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="10">
-                <el-form-item label="评分:" prop="name" style="">
-                  <el-input v-model="formAdd.intro" style="width: 100%;"  resize="none" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-form-item label="说明:" prop="name" style="">
-              <el-input v-model="formAdd.intro" style="width: 40%;"  resize="none" type="textarea"/>
-            </el-form-item>
-          </el-form>
-        </el-dialog>
-    </div>
-  </div>
-</template>
-<script   setup>
-import { getEfficiency } from "@/api/service/info";
-
-const timeMon = ref('')
-const timeYear = ref('')
-const activeName = ref('third')
-const tableData = ref ([])
-
-function getWeekRange(date = new Date()) {
-  // 获取传入日期是本周的第几天(0是周日,1是周一,...,6是周六)
-  const dayOfWeek = date.getDay();
-  // 计算与本周第一天的天数差。如果今天是周日(0),则上周一需要减6天;否则减(当前星期数-1)天。
-  const diffToMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
-  
-  // 计算本周一的日期
-  const monday = new Date(date);
-  monday.setDate(date.getDate() + diffToMonday);
-  
-  // 计算本周日的日期(周一加6天)
-  const sunday = new Date(monday);
-  sunday.setDate(monday.getDate() + 6);
-
-  // 格式化日期为 "YYYY-MM-DD"
-  function formatDate(dateObj) {
-    const year = dateObj.getFullYear();
-    const month = String(dateObj.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
-    const day = String(dateObj.getDate()).padStart(2, '0');
-    return `${year}-${month}-${day}`;
-  }
-
-  return {
-    startOfWeek: formatDate(monday), // 本周开始日期 (周一)
-    endOfWeek: formatDate(sunday)    // 本周结束日期 (周日)
-  };
-}
-function getLastDayOfMonth(firstDay) {
-    // 从第一天字符串解析年月
-    const [year, month] = firstDay.split('-').map(Number);
-    
-    // 创建下个月第一天的日期对象
-    const nextMonthFirstDay = new Date(year, month, 1); // month是1-12,JS会自动处理跨年
-    
-    // 获取当月最后一天(下个月第一天减1毫秒)
-    const lastDay = new Date(nextMonthFirstDay - 1);
-    
-    // 格式化输出
-    const lastDayYear = lastDay.getFullYear();
-    const lastDayMonth = (lastDay.getMonth() + 1).toString().padStart(2, '0');
-    const lastDayDate = lastDay.getDate().toString().padStart(2, '0');
-    
-    return `${lastDayYear}-${lastDayMonth}-${lastDayDate}`;
-}
-function getLastDayOfYear(firstDay) {
-    // 从输入字符串中提取年份
-    const year = parseInt(firstDay.split('-')[0]);
-    
-    // 计算下一年度的第一天
-    const nextYearFirstDay = new Date(year + 1, 0, 1); // 月份0代表1月
-    
-    // 计算本年度的最后一天(下一年第一天减去1毫秒)
-    const lastDay = new Date(nextYearFirstDay.getTime() - 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const lastDayYear = lastDay.getFullYear();
-    const lastDayMonth = String(lastDay.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
-    const lastDayDate = String(lastDay.getDate()).padStart(2, '0');
-    
-    return `${lastDayYear}-${lastDayMonth}-${lastDayDate}`;
-}
-const getFirstDayOfMonthShort = () => {
-    const now = new Date();
-    return `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-01`;
-};
-function getFirstDayOfYear() {
-    const currentYear = new Date().getFullYear();
-    const firstDay = new Date(currentYear, 0, 1);
-    
-    // 格式化为 YYYY-MM-DD
-    const year = firstDay.getFullYear();
-    const month = String(firstDay.getMonth() + 1).padStart(2, '0');
-    const day = String(firstDay.getDate()).padStart(2, '0');
-    
-    return `${year}-${month}-${day}`;
-}
-function setDate(){
-  timeMon.value = getFirstDayOfMonthShort()
-  timeYear.value = getFirstDayOfYear()
-}
-function getEfficiencyList(){
-  
-  var par = {
-    devkind:'APP',
-    params:{
-      beginTime:'',
-      endTime:''
-    }
-  }
-  if(activeName.value=='first'){
-    const weekRange = getWeekRange()
-    par.params.beginTime=weekRange.startOfWeek
-    par.params.endTime=weekRange.endOfWeek
-    getEfficiency(par).then((res)=>{
-      tableData.value=res.data
-    })
-  }else if(activeName.value=='second'){
-    par.params.beginTime=timeMon.value
-    par.params.endTime=getLastDayOfMonth(timeMon.value)
-    getEfficiency(par).then((res)=>{
-      tableData.value=res.data
-    })
-  }else if(activeName.value=='third'){
-    par.params.beginTime=timeYear.value
-    par.params.endTime=getLastDayOfYear(timeYear.value)
-    getEfficiency(par).then((res)=>{
-      tableData.value=res.data
-    })
-  }
-  
-}
-
-onMounted(() => {
-  setDate()
-  getEfficiencyList();
-});
-
-</script>
-<style scoped>
-
-</style>

+ 1 - 1
ruoyi-ui/vite.config.js

@@ -47,7 +47,7 @@ export default defineConfig(({mode, command}) => {
                     ws: true, // 关键:启用WebSocket代理
                     rewrite: (path) => path.replace(/^\/websocket/, '') // 可选的路径重写
                 },
-                '/sh-api': {
+                '/gxpt-api': {
                     target: env.VITE_DEV_PATH,
                     changeOrigin: true,
                     rewrite: (p) => p.replace(/^\/sh-api/, '')