ソースを参照

0612 vue3修改

nanjingliujinyu 7 ヶ月 前
コミット
08a19d208d

+ 3 - 3
ruoyi-admin/src/main/resources/application-test.yml

@@ -6,7 +6,7 @@ spring:
     druid:
       # 主库数据源
       master:
-        url: jdbc:mysql://192.168.0.146:3306/sh_project?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://39.98.38.2:13306/sh_project?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: shmodel
         password: shmodel#$0526
       # 从库数据源
@@ -62,13 +62,13 @@ spring:
   # redis 配置
   redis:
     # 地址
-    host: 192.168.0.146
+    host: 127.0.0.1
     # 端口,默认为6379
     port: 6379
     # 数据库索引
     database: 5
     # 密码
-    password: 123456
+    password:
     # 连接超时时间
     timeout: 20s
     lettuce:

+ 1 - 0
ruoyi-ui/.env.development

@@ -10,6 +10,7 @@ VITE_APP_BASE_Title = '/sh'
 # 若依管理系统/生产环境
 VITE_APP_BASE_API = '/sh-api'
 
+# VITE_DEV_PATH = 'http://localhost:8082'
 VITE_DEV_PATH = 'http://39.98.38.2:18082/sh-api'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli

+ 39 - 16
ruoyi-ui/src/views/base/catalogue/index.vue

@@ -17,13 +17,14 @@
       </el-form-item>
       <el-form-item label="状态" prop="cateStatus">
         <el-select
+         style="width: 100px;"
           v-model="queryParams.cateStatus"
           placeholder="目录状态"
           clearable
           size="small"
         >
           <el-option
-            v-for="dict in dict.type.sys_normal_disable"
+            v-for="dict in optionsDirary"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -33,13 +34,13 @@
       <el-form-item>
         <el-button
           type="primary"
-          icon="el-icon-search"
+          icon="Search"
           size="mini"
           @click="handleQuery"
         >
           搜索
         </el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">
+        <el-button icon="Refresh" size="mini" @click="resetQuery">
           重置
         </el-button>
       </el-form-item>
@@ -49,7 +50,7 @@
       <el-col :span="1.5">
         <el-button
           type="primary"
-          icon="el-icon-plus"
+          icon="plus"
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:dept:add']"
@@ -62,7 +63,7 @@
         <el-button
           type="info"
           plain
-          icon="el-icon-sort"
+          icon="sort"
           size="mini"
           @click="toggleExpandAll"
         >展开/折叠
@@ -90,9 +91,9 @@
         width="200"
       ></el-table-column>
       <el-table-column prop="cateStatus" label="状态" width="100">
-        <template slot-scope="scope">
+        <template #default="scope">
           <dict-tag
-            :options="dict.type.sys_normal_disable"
+            :options="sys_normal_disable"
             :value="scope.row.cateStatus"
           />
         </template>
@@ -103,7 +104,7 @@
         class-name="small-padding"
         width="260"
       >
-        <template slot-scope="scope">
+        <template #default="scope">
           <el-button
             size="mini"
             type="text"
@@ -137,12 +138,13 @@
     </el-table>
 
     <!-- 添加或修改目录对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+    <el-dialog :title="title" v-model="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="24" v-if="form.catePcode !== 0">
             <el-form-item label="上级目录" prop="catePcode">
-              <treeselect
+              <TreeSelect
+                style="width: 100%;"
                 v-model="form.catePcode"
                 :options="deptOptions"
                 :normalizer="normalizer"
@@ -187,9 +189,9 @@
             <el-form-item label="目录状态">
               <el-radio-group v-model="form.cateStatus">
                 <el-radio
-                  v-for="dict in dict.type.sys_normal_disable"
+                  v-for="dict in optionsDirary"
                   :key="dict.value"
-                  :label="dict.value"
+                  :label="dict.label"
                 >
                   {{ dict.label }}
                 </el-radio>
@@ -205,7 +207,10 @@
     </el-dialog>
   </div>
 </template>
-
+<script setup>
+const { proxy } = getCurrentInstance();
+const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
+</script>
 <script>
 import {
   listCatalog,
@@ -213,17 +218,22 @@ import {
   delCatalog,
   addCatalog,
 } from "@/api/base/catalog";
-import Treeselect from 'vue3-treeselect';
-import 'vue3-treeselect/dist/vue3-treeselect.css';
+import TreeSelect from "@/components/TreeSelect";
+// import Treeselect from 'vue3-treeselect';
+
+// import 'vue3-treeselect/dist/vue3-treeselect.css';
+
+import { getDicts } from "@/api/system/dict/data";
 
 export default {
   name: "Catalog",
   dicts: ["sys_normal_disable"],
-  components: {Treeselect},
+  components: {TreeSelect},
   data() {
     return {
       // 遮罩层
       loading: true,
+      optionsDirary:[],
       // 显示搜索条件
       showSearch: true,
       // 表格树数据
@@ -262,9 +272,21 @@ export default {
     };
   },
   created() {
+    this.getDicts()
     this.getList();
   },
   methods: {
+    async getDicts(){
+      await getDicts("sys_normal_disable").then((r) => {
+        for(var i =0;i<r.data.length;i++){
+          var par = {
+            value:r.data[i].dictCode.toString(),
+            label:r.data[i].dictLabel
+          }
+          this.optionsDirary.push(par)
+        }
+      });
+    },
     /** 查询目录列表 */
     getList() {
       this.loading = true;
@@ -344,6 +366,7 @@ export default {
         this.deptOptions = this.handleTree(r.data, "cateCode", "catePcode");
       });
     },
+    
     /** 提交按钮 */
     submitForm: function () {
       this.$refs["form"].validate((valid) => {

+ 1 - 1
ruoyi-ui/src/views/gateway/proxy/index.vue

@@ -296,7 +296,7 @@ import {
   getParamTypeList,
   getPluginHandleList,
 } from "@/api/gateway/proxy.js";
-
+import useDictStore from '@/store/modules/dict'
 export default {
   name: "proxy",
   data() {

+ 12 - 1
ruoyi-ui/src/views/service/apply/AeServiceApplyAudit.vue

@@ -2,7 +2,7 @@
   <el-dialog
     center
     title="审核服务申请"
-    :visible.sync="dialogVisible"
+    v-model="localVisible"
     @close="closeDialog"
   >
     <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
@@ -91,7 +91,18 @@
     </el-form>
   </el-dialog>
 </template>
+<script setup>
+import { computed } from 'vue';
 
+const props = defineProps(['dialogVisible']);
+const emit = defineEmits(['update:dialogVisible']);
+
+// 定义计算属性中转
+const localVisible = computed({
+  get: () => props.dialogVisible,
+  set: (val) => emit('update:dialogVisible', val)
+});
+</script>
 <script>
 import {auditServiceApply, getServiceApply} from "@/api/service/apply.js";
 import {deleteFile} from "@/api/service/file.js";

+ 33 - 10
ruoyi-ui/src/views/service/apply/index.vue

@@ -10,7 +10,7 @@
           <el-input v-model="query.data.unitName"></el-input>
         </el-form-item>
         <el-form-item label="审核状态">
-          <el-select clearable v-model="query.data.applyState">
+          <el-select clearable v-model="query.data.applyState" style="width: 100px">
             <el-option label="待审核" value="0"></el-option>
             <el-option label="同意" value="1"></el-option>
             <el-option label="拒绝" value="2"></el-option>
@@ -20,8 +20,8 @@
           <el-button
             type="primary"
             @click="getList"
-            icon="el-icon-search"
-          ></el-button>
+            icon="Search"
+          >搜索</el-button>
         </el-form-item>
       </el-form>
     </el-row>
@@ -50,7 +50,7 @@
           prop="name"
           label="服务名称"
         >
-          <template slot-scope="scope">
+          <template #default="scope">
             <el-link @click="serviceDetail(scope.row.srvId)">
               {{ scope.row.name }}
             </el-link>
@@ -113,9 +113,13 @@
                   审核结果:
                   <el-tag type="danger">拒绝</el-tag>
                 </p>
+                <p v-if="scope.row.applyState === '0'">
+                  审核结果:
+                  <el-tag type="info">待审核</el-tag>
+                </p>
                 <p
                   v-if="
-                    scope.row.applyState === '1' || scope.row.applyState === '2'
+                    scope.row.applyState === '1' || scope.row.applyState === '2'|| scope.row.applyState === '0'
                   "
                 >
                   审核说明: {{ scope.row.approveNote }}
@@ -152,18 +156,28 @@
         </el-table-column>
       </el-table>
     </el-row>
-    <pagination
+    <!-- <pagination
       v-show="dataTotal > 0"
       :total="dataTotal"
       :page.sync="query.pageNum"
       :limit.sync="query.pageSize"
       @pagination="getList"
-    />
-
+    /> -->
+    <el-pagination
+      v-show="dataTotal > 0"
+      style="margin-top:1%"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :page-sizes="[ 20, 30, 40]"
+      :page-size="pageSize"
+      :current-page="pageNum"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="dataTotal">
+      </el-pagination>
+      
     <ae-service-apply-audit
       :dialogVisible="dialogVisible"
       :id="currentApplyId"
-      @close-dialog="closeDialog"
     >
     </ae-service-apply-audit>
   </div>
@@ -182,6 +196,8 @@ export default {
     return {
       dialogVisible: false,
       currentApplyId: undefined,
+      pageSize:'',
+      pageNum:'',
       tableData: [],
       tableHeight: window.innerHeight - 300,
       paramList: [
@@ -222,10 +238,17 @@ export default {
     this.getList();
   },
   methods: {
+    handleSizeChange(num){
+      this.query.pageSize = num
+      this.getList()
+    },
+    handleCurrentChange(num){
+      this.query.pageNum = num
+      this.getList()
+    },
     /** 获取服务申请列表数据 */
     getList() {
       getServiceApplyList(this.query).then((r) => {
-        debugger
         this.tableData = r.rows;
         this.dataTotal = r.total;
       });

+ 55 - 15
ruoyi-ui/src/views/service/info/AeService.vue

@@ -56,10 +56,10 @@
                 <el-form-item label="数据领域">
                   <el-select v-model="form.dataField">
                     <el-option
-                      v-for="dict in dict.type.service_data_field"
+                      v-for="dict in optionsDataField"
                       :key="dict.value"
-                      :label="dict.label"
-                      :value="dict.value"
+                      :label="dict.dictLabel"
+                      :value="dict.dictCode"
                     ></el-option>
                   </el-select>
                 </el-form-item>
@@ -154,7 +154,7 @@
             </el-form-item>
             <el-row type="flex" justify="center">
               <el-button
-                icon="el-icon-arrow-left"
+                icon="ArrowLeft"
                 size="small"
                 disabled
                 @click="forwardStep"
@@ -163,7 +163,7 @@
               <el-button type="primary" @click="onSubmit"> 保存</el-button>
               <el-button @click="exit">退出</el-button>
               <el-button
-                icon="el-icon-arrow-right"
+                icon="ArrowRight"
                 size="small"
                 @click="nextStep"
                 circle
@@ -198,6 +198,8 @@ import {saveServiceInfo} from "@/api/service/info";
 import {getCatalog} from "@/api/service/catalog";
 import ParamAndFile from "./paramAndFile.vue";
 import ServiceFile from "./serviceFile.vue";
+import { getDicts } from "@/api/system/dict/data";
+import useDictStore from '@/store/modules/dict'
 
 export default {
   props: ["service", "serviceVisible"],
@@ -207,6 +209,7 @@ export default {
     return {
       step: 0,
       type: "添加",
+      optionsDataField:[],
       form: {
         srvId: "",
         cateCode: "",
@@ -225,7 +228,7 @@ export default {
         maintainUnit: "",
         maintainContacer: "",
         intro: "",
-        dataField: "22",
+        dataField: "",
         openCndtn: "0",
       },
       cascader: {
@@ -270,8 +273,17 @@ export default {
   },
   mounted() {
     this.fetchData();
+    this.getDicts()
   },
   methods: {
+    getDicts(){
+      getDicts('service_data_field').then((r) => {
+        for(var i =0;i<r.data.length;i++){
+          r.data[i].dictCode = r.data[i].dictCode.toString()
+        }
+        this.optionsDataField = r.data
+      });
+    },
     exit() {
       this.$emit("close");
     },
@@ -326,14 +338,44 @@ export default {
         return false;
       });
     },
+    buildTree(flatData, rootValue = '0') {
+      // 1. 创建哈希映射和结果集
+      const nodeMap = new Map();
+      const tree = [];
+
+      // 2. 构建初始映射(浅拷贝节点,避免污染原数据)
+      flatData.forEach(item => {
+        nodeMap.set(item.cateCode, { ...item, children: [] });
+      });
+
+      // 3. 构建树结构
+      for (const [code, node] of nodeMap) {
+        const parentCode = node.catePcode;
+        
+        // 根节点直接加入结果集
+        if (parentCode === rootValue || !parentCode) {
+          tree.push(node);
+          continue;
+        }
+
+        // 非根节点:挂载到父节点
+        const parent = nodeMap.get(parentCode);
+        if (parent) {
+          parent.children.push(node);
+        } else {
+          // 处理孤儿节点(可选:也可选择忽略)
+          console.warn(`Orphan node detected: ${code}. Parent ${parentCode} not found`);
+        }
+      }
+
+      return tree;
+    },
     fetchData() {
       getCatalog().then((r) => {
-        this.cascader.options = this.handleTree2(
-          r.data,
-          "catePcode",
-          "cateCode",
-          "0"
+        this.cascader.options = this.buildTree(
+          r.data
         );
+        console.log(this.cascader.options)
       });
     },
     addParam() {
@@ -376,15 +418,13 @@ export default {
           maintainUnit: "",
           maintainContacer: "",
           intro: "",
-          dataField: "22",
+          dataField: "",
           openCndtn: "0",
         };
-
-        if (this.service.srvId) {
+        if (this.service) {
           this.type = "修改";
           const httpsReg = new RegExp("https://", "i");
           const httpReg = new RegExp("http://", "i");
-
           this.form = this.service;
           if (this.form.url) {
             let isHas = this.form.url.match(httpsReg);

+ 41 - 17
ruoyi-ui/src/views/service/info/index.vue

@@ -13,7 +13,7 @@
           <el-input v-model="query.data.unitName"></el-input>
         </el-form-item>
         <el-form-item label="服务状态">
-          <el-select clearable v-model="query.data.applyState">
+          <el-select clearable v-model="query.data.applyState" style="width:100px ;">
             <el-option label="待审核" value="0"></el-option>
             <el-option label="同意" value="1"></el-option>
           </el-select>
@@ -22,8 +22,8 @@
           <el-button
             type="primary"
             @click="getList"
-            icon="el-icon-search"
-          ></el-button>
+            icon="Search"
+          >搜索</el-button>
         </el-form-item>
       </el-form>
     </el-row>
@@ -72,7 +72,7 @@
           prop="status"
           label="状态"
         >
-          <template slot-scope="scope">
+          <template #default="scope">
             <el-tag
               :type="scope.row.status === '1' ? 'success' : 'warning'"
               disable-transitions
@@ -111,17 +111,22 @@
       </el-table>
     </el-row>
     <el-row>
-      <pagination
-        v-show="dataTotal > 0"
-        :total="dataTotal"
-        :page.sync="query.pageNum"
-        :limit.sync="query.pageSize"
-        @pagination="getList"
-      />
+      
     </el-row>
-
+    <div style="text-align: center;" class="123">
+        <el-pagination
+            style="margin-top:1%"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :page-sizes="[ 20, 30, 40]"
+            :page-size="pageSize"
+            :current-page="pageNum"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="dataTotal">
+        </el-pagination>
+      </div>
     <el-dialog
-      :visible.sync="addServiceVisible"
+      v-model="addServiceVisible"
       title="服务"
       fullscreen
       @close="closeDialog"
@@ -134,8 +139,12 @@
       ></ae-service>
     </el-dialog>
   </div>
+  <div>
+    
+  </div>
 </template>
-
+<script setup name="Menu">
+</script>
 <script>
 import "@/assets/styles/common.scss";
 import AeService from "./AeService";
@@ -152,9 +161,11 @@ export default {
   },
   data() {
     return {
+      dialogVisible:false,
       addServiceVisible: false,
       checkedService: undefined,
       tableData: [],
+      pageSize:20,
       tableHeight: window.innerHeight - 300,
       paramList: [
         {
@@ -169,7 +180,7 @@ export default {
         {
           paramCode: "serviceDept",
           paramName: "所属部门",
-          align: "left",
+          align: "left", 
           width: "120",
         },
         {
@@ -182,6 +193,7 @@ export default {
         {paramCode: "rlstm", paramName: "发布时间", width: "110"},
       ],
       dataTotal: 0,
+      pageNum:1,
       query: {
         pageNum: 1,
         pageSize: 20,
@@ -197,6 +209,14 @@ export default {
     this.getList();
   },
   methods: {
+    handleSizeChange(num){
+      this.query.pageSize = num
+      this.getList()
+    },
+    handleCurrentChange(num){
+      this.query.pageNum = num
+      this.getList()
+    },
     getList() {
       getServiceInfo(this.query).then((r) => {
         this.tableData = r.rows;
@@ -210,10 +230,14 @@ export default {
     },
     /** 添加、修改服务 */
     saveService(service) {
-      if (service) {
+      this.addServiceVisible = true;
+      if (service.srvId) {
         this.checkedService = service;
       }
-      this.addServiceVisible = true;
+      else{
+        return
+      }
+      
     },
     // 更新状态
     updateStatus(service) {

+ 3 - 3
ruoyi-ui/src/views/service/info/serviceFile.vue

@@ -24,7 +24,7 @@
             <el-button
               type="primary"
               @click="getOpenDataList"
-              icon="el-icon-search"
+              icon="Search"
               size="small"
             >
               查询
@@ -115,13 +115,13 @@
     </el-row>
     <el-row type="flex" justify="center">
       <el-button
-        icon="el-icon-arrow-left"
+        icon="ArrowLeft"
         @click="forwardStep"
         circle
       ></el-button>
       <el-button @click="exit">退出</el-button>
       <el-button
-        icon="el-icon-arrow-right"
+        icon="ArrowRight"
         @click="nextStep"
         disabled
         circle

+ 2 - 2
ruoyi-ui/src/views/service/info/serviceParam.vue

@@ -77,7 +77,7 @@
     </table>
     <el-row type="flex" justify="center">
       <el-button
-        icon="el-icon-arrow-left"
+        icon="ArrowLeft"
         @click="forwardStep"
         circle
       ></el-button>
@@ -87,7 +87,7 @@
       </el-button>
       <el-button @click="exit">退出</el-button>
       <el-button
-        icon="el-icon-arrow-right"
+        icon="ArrowRight"
         @click="nextStep"
         circle
       ></el-button>

+ 2 - 2
ruoyi-ui/src/views/service/info/serviceReturn.vue

@@ -81,7 +81,7 @@
     </table>
     <el-row type="flex" justify="center">
       <el-button
-        icon="el-icon-arrow-left"
+        icon="ArrowLeft"
         @click="forwardStep"
         circle
       ></el-button>
@@ -91,7 +91,7 @@
       </el-button>
       <el-button @click="exit">退出</el-button>
       <el-button
-        icon="el-icon-arrow-right"
+        icon="ArrowRight"
         @click="nextStep"
         circle
       ></el-button>

+ 22 - 9
ruoyi-ui/src/views/service/log/index.vue

@@ -26,9 +26,8 @@
           <el-button
             type="primary"
             @click="getOpenDataList"
-            icon="el-icon-search"
-          >
-          </el-button>
+            icon="Search"
+          >搜索</el-button>
         </el-form-item>
       </el-form>
     </el-row>
@@ -94,13 +93,17 @@
         />
       </el-table>
     </el-row>
-    <pagination
+    <el-pagination
       v-show="dataTotal > 0"
-      :total="dataTotal"
-      :page.sync="query.pageNum"
-      :limit.sync="query.pageSize"
-      @pagination="getOpenDataList"
-    />
+      style="margin-top:1%"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :page-sizes="[ 20, 30, 40]"
+      :page-size="pageSize"
+      :current-page="pageNum"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="dataTotal">
+      </el-pagination>
   </div>
 </template>
 
@@ -116,6 +119,8 @@ export default {
       tableData: [],
       tableHeight: window.innerHeight - 300,
       dataTotal: 0,
+      pageSize:20,
+      pageNum:'',
       query: {
         pageNum: 1,
         pageSize: 20,
@@ -172,6 +177,14 @@ export default {
     this.getOpenDataList();
   },
   methods: {
+    handleSizeChange(num){
+      this.query.pageSize = num
+      this.getOpenDataList()
+    },
+    handleCurrentChange(num){
+      this.query.pageNum = num
+      this.getOpenDataList()
+    },
     getOpenDataList() {
       // 获取服务调用数据
       request.post(this.dataUrl, this.query).then((r) => {

+ 1 - 0
ruoyi-ui/src/views/system/dept/index.vue

@@ -174,6 +174,7 @@ const { queryParams, form, rules } = toRefs(data);
 
 /** 查询部门列表 */
 function getList() {
+   console.log(sys_normal_disable)
   loading.value = true;
   listDept(queryParams.value).then(response => {
     deptList.value = proxy.handleTree(response.data, "deptId");