浏览代码

## 2023年3月15日
### 更新 utils工具类
### 新增 apiConfig页面样板
### 更新 config配置文件自动读取接口地址的参考

shaojie32 2 年之前
父节点
当前提交
91d7e44fec

+ 4 - 0
vue-next-admin/src/Update.md

@@ -0,0 +1,4 @@
+## 2023年3月15日
+### 更新 utils工具类
+### 新增 apiConfig页面样板
+### 更新 config配置文件自动读取接口地址的参考

+ 8 - 0
vue-next-admin/src/config.ts

@@ -1,3 +1,4 @@
+import { Local, Session } from '/@/utils/storage';
 /**
  * 系统设置
  */
@@ -50,5 +51,12 @@ if (env.MODE == "customer") {
     config.file = "http://ssl.ycxxkj.com:38071";
     config.host = "http://ssl.ycxxkj.com:38071/index.php";
 }
+
+// 如果需要自动获取接口地址
+// console.log('href',window.location.href);
+// console.log('host',window.location.host);
+// config.file = Local.get('file') ? Local.get('file') : 'http://'+window.location.host;
+// config.host = Local.get('host') ? Local.get('host') : config.file+'/index.php';
+
 console.log("==config:==", config);
 export default config;

+ 108 - 0
vue-next-admin/src/utils/utils.ts

@@ -1,3 +1,4 @@
+import ruleReg from '/@/utils/ruleReg.ts';
 const Utils = {
     /**
      * @description 深拷贝的方法
@@ -16,5 +17,112 @@ const Utils = {
         // 返回新数组或对象
         return newdata;
     },
+
+    //更新页面数据,防止缓存导致页面数据不更新
+    flushPage(list:any){
+        //JavaScript 中的一个数组方法,用于将一个新元素添加到数组的末尾。它接受一个参数,即要添加到数组末尾的元素,可以是任何类型的值,包括另一个数组。
+        list.push([]);
+        //用于从数组中删除最后一个元素。它接受两个参数:第一个参数是要删除的元素的索引,第二个参数是要删除的元素的数量。
+        list.splice(-1,1);
+    },
+
+    //数组去重(keyAarr是要去重的数组,keyName是要去重的字段)
+    arr(keyAarr:any,keyName:any){
+        let uniqueNames = [...new Set(keyAarr.map((item:any) => item[keyName]))];
+        return uniqueNames;
+    },
+
+    // 动态模糊搜索(拆包管理18)
+    searchKey(keyword:string, list:any){
+        console.log('keyword=>',keyword);
+        let arr:any = [];
+        if(!ruleReg.emptyReg(keyword)){
+            return arr = list;
+        }
+        list.forEach((item:any)=>{
+            if(item.salaryRateItemDetail){
+                item.isDel = false;
+                item.salaryRateItemDetail.forEach((item2:any)=>{
+                    if(item2.admin.name.search(keyword) != -1){
+                        item.isDel = true;
+                    }
+                })
+                if(item.isDel == true){
+                    arr.push(item);
+                }
+            }
+        })
+        if(arr.length>0){
+            return arr;
+        }
+        return [];
+    },
+
+    // 获取当前日期
+    getDate(){
+        let date = new Date(); //创建时间对象
+        let year = date.getFullYear(); //当前年份
+        let month:string|number = date.getMonth()+1; //当前月份
+        let day:string|number = date.getDate(); //当前日期
+        month = month<10 ? '0'+month : String(month);
+        day = day<10 ? '0'+day : String(day);
+        return `${year}-${month}-${day}`;
+    },
+
+    /**
+     * @description 获取当前日期(自定义格式)
+     * @param format 
+     * @returns y-m-d H:M:S, y-m-d, y-m, H:M:S, H:M
+     */
+    getDateFormat(format: string){
+        if(!ruleReg.emptyReg(format)){
+            return '请传入日期格式,支持的格式:y-m-d H:M:S, y-m-d, y-m, H:M:S, H:M';
+        }
+        let result;
+        let date = new Date();
+        let y: string | number = date.getFullYear(); //获取当前年
+        let m: string | number = date.getMonth() + 1; //获取当前月 默认0-11
+        let d: string | number = date.getDate(); //获取当前日
+        let H: string | number = date.getHours();
+        let M: string | number = date.getMinutes();
+        let S: string | number = date.getSeconds();
+        m = m<10 ? `0${m}` : m;
+        d = d<10 ? `0${d}` : d;
+        H = H<10 ? `0${H}` : H;
+        M = M<10 ? `0${M}` : M;
+        S = S<10 ? `0${S}` : S;
+        switch(format){
+            case 'y-m-d H:M:S':
+                result = `${y}-${m}-${d} ${H}:${M}:${S}`;
+                break;
+            case 'y-m-d':
+                result = `${y}-${m}-${d}`;
+                break;
+            case 'y-m':
+                result = `${y}-${m}`;
+                break;
+            case 'H:M:S':
+                result = `${H}:${M}:${S}`;
+                break;
+            case 'H:M':
+                result = `${H}:${M}`;
+                break;
+            default:
+                result = `日期格式'${format}'不正确,支持的格式:y-m-d H:M:S, y-m-d, y-m, H:M:S, H:M`;
+                break;
+        }
+        return result;
+    },
+
+    /**
+     * @description 生成随机数
+     * @param n 期望的最小值
+     * @param m 期望的最大值
+     * @returns 返回的随机数
+     */
+    getRandom(n: number, m: number){
+        let random = Math.random() * (m - n) + n;
+        return random.toFixed(0);
+    },
 }
 export default Utils;

+ 86 - 0
vue-next-admin/src/views/system/baseSettings/components/apiConfig.vue

@@ -0,0 +1,86 @@
+<template>
+    <div>
+        <el-card shadow="hover" class="mt20">
+			<template #header>
+				<div class="card-header">
+					<span>后端地址配置</span>
+				</div>
+			</template>
+			<el-form
+				:label-position="state.labelPosition"
+				label-width="100px"
+				style="max-width: 960px"
+				:inline="false"
+			>
+				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+					<el-form-item label="接口地址">
+						<el-input v-model="state.file" />
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+					<el-form-item label="接口地址">
+						<el-input v-model="state.host" />
+					</el-form-item>
+				</el-col> -->
+			</el-form>
+			<el-button type="primary" @click="configSave3">保存</el-button>
+		</el-card>
+    </div>
+</template>
+
+<script lang="ts" setup name="systemConfig">
+import { defineComponent, onMounted, reactive, toRefs } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import ruleReg from '/@/utils/ruleReg.ts';
+import { Local, Session } from '/@/utils/storage';
+import config from '/@/config.ts';
+import mittBus from '/@/utils/mitt';
+import { useRoute } from 'vue-router';
+
+const state = reactive({
+	file: config.file,
+	// host: config.host,
+	timer:<any> {},
+	labelPosition: 'top',
+})
+
+const configSave3 = () => {
+	if (!ruleReg.emptyReg(state.file)) {
+		return ElMessage.warning('资源地址为空');
+	}
+	// if (!ruleReg.emptyReg(state.host)) {
+	// 	return ElMessage.warning('接口地址为空');
+	// }
+	clearTimeout(state.timer);
+	state.timer = setTimeout(()=>{
+		config.file = state.file;
+		// config.host = state.host;
+		Local.set('file',state.file);
+		// Local.set('host',state.host);
+		ElMessage.success('保存成功');
+		window.location.reload();
+		// refreshCurrentTagsView();
+	},500)
+}
+
+// 定义变量内容
+const route = useRoute();
+
+// 1、刷新当前 tagsView
+const refreshCurrentTagsView = () => {
+	mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 0, ...route }));
+};
+
+onMounted(()=>{
+	setTimeout(()=>{	
+		state.file = Local.get('file') ? Local.get('file') : state.file;
+		// state.host = Local.get('host') ? Local.get('host') : state.host;
+	},500)
+})
+</script>
+
+<style scoped lang="scss">
+    .demo-date-picker{
+		display: flex;
+	}
+</style>