Browse Source

Merge remote-tracking branch 'origin/2025北京诚祥' into 2025北京诚祥

wangxy 1 month ago
parent
commit
1245c6279f

+ 36 - 0
App.vue

@@ -28,6 +28,24 @@
 				});
 			}
 			// #endif
+			// #ifdef H5
+			if (cacheManager.get('auth')) {
+				uni.reLaunch({
+					url: `/pages/admin/ShouYe/shouye`,
+					success() {
+						
+					}
+				})
+			} else {
+				cacheManager.clearAll()
+				uni.reLaunch({
+					url: '/pages/Login/index',
+					success() {
+			
+					}
+				});
+			}
+			// #endif
 		},
 		onShow: function() {
 
@@ -43,6 +61,24 @@
 				}
 			});
 			// #endif
+			// #ifdef H5
+			if (cacheManager.get('auth')) {
+				uni.reLaunch({
+					url: `/pages/admin/ShouYe/shouye`,
+					success() {
+						
+					}
+				})
+			} else {
+				cacheManager.clearAll()
+				uni.reLaunch({
+					url: '/pages/Login/index',
+					success() {
+			
+					}
+				});
+			}
+			// #endif
 		},
 		onHide: function() {
 

+ 68 - 1
api/jiazheng.js

@@ -325,4 +325,71 @@ export function jiazhengUserDelete(data = {}) {
 		data,
 		timeout: 20000
 	})
-}
+}
+export function kcSelectList(data = {}) {
+	return request({
+		url: '/app/user/jiazheng/kecheng/select/list',
+		headers: {
+			isToken: false
+		},
+		method: 'post',
+		data,
+		timeout: 20000
+	})
+}
+export function jiazhengKcList(data = {}) {
+	return request({
+		url: '/app/user/jiazheng/kecheng/list',
+		headers: {
+			isToken: false
+		},
+		method: 'post',
+		data,
+		timeout: 20000
+	})
+}
+export function jiazhengKcAdd(data = {}) {
+	return request({
+		url: '/app/user/jiazheng/kecheng/add',
+		headers: {
+			isToken: false
+		},
+		method: 'post',
+		data,
+		timeout: 20000
+	})
+}
+export function jiazhengKcDelete(data = {}) {
+	return request({
+		url: '/app/user/jiazheng/kecheng/delete',
+		headers: {
+			isToken: false
+		},
+		method: 'post',
+		data,
+		timeout: 20000
+	})
+}
+export function getAdminClassify(data = {}) {
+  return request({
+    url: '/app/kecheng/guanliyuan/classify',
+    headers: {
+      isToken: true
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
+}
+
+export function kechengReset(data = {}) {
+  return request({
+    url: '/app/kecheng/guanliyuan/classify',
+    headers: {
+      isToken: true
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
+}

+ 23 - 1
common/styles/global/pages.scss

@@ -220,7 +220,7 @@
 			.kc-totalTm{margin-left: 0;}
 			.kc-fenlei{width: 360rpx;margin-left: 0;@include single-line-ellipsis();}
 			.kc-name{width: 360rpx;@include single-line-ellipsis();}
-			img{width: 300rpx;max-height: 260rpx;margin-right: 32rpx;}
+			img{width: 300rpx;height: 210rpx;margin-right: 32rpx;border-radius: 8rpx;flex-shrink: 0;}
 		}
 	}
 	
@@ -605,6 +605,8 @@
 			.head-status{font-size: 26rpx;color: #39c194;}
 			.status-line{margin: 0 8rpx;}
 			.bz-tel-btn{font-size: 24rpx;width: 100rpx;padding: 0 10rpx;flex-shrink: 0;
+			line-height: 50rpx;border-radius: 8rpx;margin: 0;margin-left: 24rpx;}
+			.bz-bind-btn{font-size: 24rpx;width: 120rpx;padding: 0 10rpx;flex-shrink: 0;
 			line-height: 50rpx;border-radius: 8rpx;margin: 0;margin-left: auto;}
 			.fx-btn-box{margin-left: 24rpx;}
 		}
@@ -983,4 +985,24 @@
 		border: 1rpx solid #ccc;border-radius: 12rpx;box-sizing: border-box;
 		icon{background-image: url("@/static/images/common/down-hb-icon.svg");}
 	}
+}
+
+/*** 课程绑定 ***/
+.kc-bind-page{
+	/*  #ifdef  APP-PLUS  */
+	.kc-bind-scroll-view{height: calc(100vh - 256rpx - var(--status-bar-height));overflow-y: auto;}
+	.kc-notbind-scroll-view{height: calc(100vh - 156rpx - var(--status-bar-height));overflow-y: auto;}
+	/*  #endif  */
+	/*  #ifdef  H5  */
+	.kc-bind-scroll-view{height: calc(100vh - 246rpx - var(--status-bar-height));overflow-y: auto;}
+	.kc-notbind-scroll-view{height: calc(100vh - 146rpx - var(--status-bar-height));overflow-y: auto;}
+	/*  #endif  */
+	.admin-list-box{
+		.kecheng-list-card{
+			.item-card-row {display: flex;flex-direction: column;justify-content: space-between;box-sizing: border-box;padding: 12rpx 0;}
+			.bind-btn-row{display: flex;align-items:center;}
+			.kc-bind-btn {width: 160rpx;font-size: 26rpx;margin:0;line-height: 2.4;}
+			.kc-bind-btn + .kc-bind-btn{margin-left: 24rpx;}
+		}
+	}
 }

+ 1 - 1
config.js

@@ -2,7 +2,7 @@
 // 切换环境后 注意 :map 要去对应manifest.json文件修改
 let isPro = process.env.NODE_ENV === 'production'
 const devUrl = 'https://kf3.mtavip.com/api'
-const proUrl = 'https://www.chengxiangjiaoyu.com/api'
+const proUrl = 'https://kf3.mtavip.com/api'
 const devKey = 'MZRBZ-Q6PKQ-THS5E-BOGKN-ZH4MQ-6YFWC'
 const proKey = 'VLOBZ-Q7XWB-YR4UP-NO4PH-EM7FS-G3BLR'
 export default   {

+ 5 - 0
pages.json

@@ -33,6 +33,11 @@
 			"style": {
 				"navigationStyle": "custom"
 			}
+		}, {
+			"path": "pages/admin/Jiazheng/kechengBind",
+			"style": {
+				"navigationStyle": "custom"
+			}
 		},{
 			"path": "pages/client/jiazheng/shareImage",
 			"style": {

+ 104 - 0
pages/admin/Jiazheng/common/kechengLeixing.vue

@@ -0,0 +1,104 @@
+<template>
+	<uni-popup ref="popupKechengLeixingRef" type="top" :animation="false" :is-mask-click="false"
+		mask-background-color="rgba(0, 0, 0, 0.4)">
+		<view class="phone-filter-page">
+			<view class="icon-title-navBar-box">
+				<view @click="goUpPage" class="nav-bar-icon"></view>
+				<text class="nav-bar-title">筛选</text>
+			</view>
+			<view class="filter-body-box">
+				<radio-group @change="handleChange">
+					<!-- 报证机构 -->
+					<view class="filter-body-radio" v-for="item in data.list">
+						<label class="radio-name-box"
+							:class="{radioActive: activeSelect && activeSelect.id==item.id}">
+							<radio :value="`${item.id}`" :checked="item.checked" activeBackgroundColor="#3fd2a1" style="transform:scale(0.8)"/>
+							{{item.lable}}
+						</label>
+						<view class="phone-radio-group filter-radio-group">
+							<view class="phone-radio-item" v-for="citem in item.children"
+								:class="{radioActive: activeSelect && activeSelect.id == citem.id}"
+								@click.stop="handleSelect(citem,item)">
+								{{citem.lable}}
+							</view>
+						</view>
+					</view>
+				</radio-group>
+			</view>
+			<view class="filter-btn-box">
+				<button type="default" class="phone-white-btn filter-btn" @click="handleReset">重置</button>
+				<button type="default" class="phone-green-btn filter-btn" @click="handleConfirm">筛选</button>
+			</view>
+		</view>
+	</uni-popup>
+
+
+</template>
+
+<script setup>
+	import {
+		reactive,
+		ref
+	} from "vue";
+
+	const emits = defineEmits(['select', 'reset']);
+	const data = reactive({
+		list: []
+	})
+	const activeSelect = ref(null);
+
+	const popupKechengLeixingRef = ref(null);
+
+	function goUpPage() {
+		popupKechengLeixingRef.value.close();
+	}
+
+	function handleConfirm() {
+		emits('select', activeSelect.value)
+		popupKechengLeixingRef.value.close();
+	}
+
+	function handleReset() {
+		activeSelect.value = null;
+		emits('reset')
+		popupKechengLeixingRef.value.close();
+	}
+
+	function handleChange(myData) {
+		const activeD = myData.detail.value;
+		data.list.forEach(item => {
+			if (item.id != activeD) {
+				item.checked = false
+			} else {
+				item.checked = true;
+				activeSelect.value = item;
+			}
+
+		})
+	}
+
+	function handleSelect(myData) {
+		data.list.forEach(item => {
+			item.checked = false
+		})
+		activeSelect.value = myData;
+	}
+
+	function showPopup({
+		data: myData
+	}) {
+		data.list = myData;
+		popupKechengLeixingRef.value.open('top')
+	}
+
+
+	defineExpose({
+		showPopup
+	})
+</script>
+
+<style lang="scss">
+	.active {
+		color: red
+	}
+</style>

+ 42 - 0
pages/admin/Jiazheng/common/search2.vue

@@ -0,0 +1,42 @@
+<template>
+	<uni-popup ref="searchPopup" type="top" :animation="false" :is-mask-click="true"
+	 mask-background-color="rgba(0, 0, 0, 0.4)">
+	   <view class="select-search-row">
+		   <view class="select-search-body">
+			  <input type="text" class="search-input" v-model="searchInput" placeholder="请输入课程名称" />
+			  <view class="search-icon" @click="handleSearch">
+			  	<uni-icons type="search" size="24" color="#fff"></uni-icons>
+			  </view>	
+			</view>
+		</view>
+  </uni-popup>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+const $emit = defineEmits(['search-btn'])
+const searchPopup = ref(null); // 索引
+
+const searchInput= ref('');
+ 
+// 打开弹窗
+function handleShow() {
+	searchPopup.value.open();
+}
+// 取消
+function handleClose() {
+	searchInput.value = '';
+	searchPopup.value.close();
+}
+// 确认
+function handleSearch(){
+	$emit('search-btn',searchInput);
+	searchPopup.value.close();
+}
+
+defineExpose({
+	handleShow,
+	handleClose
+})
+</script>
+

+ 0 - 145
pages/admin/Jiazheng/common/share copy.vue

@@ -1,145 +0,0 @@
-<template>
-
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      imageUrl: 'https://example.com/path/to/your/image.jpg' // 后端提供的图片地址
-    };
-  },
-  methods: {
-    // 显示分享菜单
-    showShareMenu() {
-      uni.showActionSheet({
-        itemList: ['下载图片'],
-        success: (res) => {
-          if (res.tapIndex === 0) {
-            this.downloadImage(); // 点击“下载图片”
-          }
-        }
-      });
-    },
-
-    // 下载图片
-    downloadImage() {
-      // #ifdef H5
-      this.downloadImageForH5();
-      // #endif
-
-      // #ifdef APP-PLUS
-      this.downloadImageForApp();
-      // #endif
-    },
-
-    // H5 环境下载图片
-    downloadImageForH5() {
-      // 创建一个隐藏的 <a> 标签
-      const link = document.createElement('a');
-      link.href = this.imageUrl;
-      link.download = 'image.jpg'; // 设置下载文件名
-      document.body.appendChild(link);
-      link.click(); // 触发下载
-      document.body.removeChild(link);
-
-      // 提示用户手动保存
-      uni.showToast({
-        title: '图片已下载,请手动保存到相册。',
-        icon: 'none'
-      });
-    },
-
-    // APP 环境下载图片
-    downloadImageForApp() {
-      uni.showLoading({
-        title: '下载中...',
-        mask: true
-      });
-
-      // 下载图片
-      uni.downloadFile({
-        url: this.imageUrl, // 图片地址
-        success: (res) => {
-          if (res.statusCode === 200) {
-            const tempFilePath = res.tempFilePath; // 下载后的临时文件路径
-            this.saveImageToAlbum(tempFilePath); // 保存到相册
-          } else {
-            uni.showToast({
-              title: '下载失败',
-              icon: 'none'
-            });
-          }
-        },
-        fail: (err) => {
-          console.error('下载失败:', err);
-          uni.showToast({
-            title: '下载失败',
-            icon: 'none'
-          });
-        },
-        complete: () => {
-          uni.hideLoading();
-        }
-      });
-    },
-
-    // 保存图片到相册(APP 环境)
-    saveImageToAlbum(tempFilePath) {
-      // 检查权限(仅 Android 需要)
-      // #ifdef APP-PLUS
-      if (uni.getSystemInfoSync().platform === 'android') {
-        uni.authorize({
-          scope: 'scope.writePhotosAlbum',
-          success: () => {
-            this.saveImage(tempFilePath);
-          },
-          fail: () => {
-            // 无权限,提示用户去设置
-            uni.showModal({
-              title: '提示',
-              content: '需要相册权限才能保存图片,是否去设置?',
-              success: (res) => {
-                if (res.confirm) {
-                  uni.openSetting(); // 打开设置页面
-                }
-              }
-            });
-          }
-        });
-      } else {
-        this.saveImage(tempFilePath);
-      }
-      // #endif
-    },
-    saveImage(tempFilePath) {
-      uni.saveImageToPhotosAlbum({
-        filePath: tempFilePath,
-        success: () => {
-          uni.showToast({
-            title: '保存成功',
-            icon: 'success'
-          });
-        },
-        fail: (err) => {
-          console.error('保存失败:', err);
-          uni.showToast({
-            title: '保存失败',
-            icon: 'none'
-          });
-        }
-      });
-    }
-  }
-};
-</script>
-
-<style>
-button {
-  margin-top: 20px;
-  padding: 10px 20px;
-  background-color: #007AFF;
-  color: white;
-  border-radius: 5px;
-}
-</style>

+ 17 - 11
pages/admin/Jiazheng/index.vue

@@ -3,8 +3,7 @@
 		<view class="phone-navBar-box">
 			<view @click="goUpPage" class="nav-bar-icon"></view>
 			<text class="nav-bar-title">家政人员</text>
-			<uni-icons class="nav-bar-right-icon bar-ml10" type="search" size="20"
-				@click="toggle('top')"></uni-icons>
+			<uni-icons class="nav-bar-right-icon bar-ml10" type="search" size="20" @click="toggle('top')"></uni-icons>
 		</view>
 		<view class="jiazheng-search-box">
 			<view @click.stop="clickAlltype" class="select-item-box">
@@ -40,17 +39,19 @@
 				class="jz-scroll-view">
 				<uni-list class="admin-list-box">
 					<view class="jz-new-btn-box">
-						<button type="default" class="phone-green-btn"
-							@click="addJiazhengRenyuan">新增人员</button>
+						<button type="default" class="phone-green-btn" @click="addJiazhengRenyuan">新增人员</button>
 					</view>
-					
+
 					<uni-list-item v-for="item in data.list" class="jz-list-item-box">
 						<template v-slot:body>
 							<view class="card-head-row">
 								<view class="head-name">{{item.realName}}</view>
-								<button type="default" class="phone-green-btn bz-tel-btn"
-									@click.stop="telephone(item)">打电话</button>
+								<button type="default" class="phone-green-btn bz-bind-btn"
+									@click.stop="kechengBind(item)">课程绑定</button>
+									<button type="default" class="phone-green-btn bz-tel-btn"
+										@click.stop="telephone(item)">打电话</button>
 								<share :id="item.id" ref="shareRef">分享</share>
+
 							</view>
 							<view @click="lookUserInfo(item)" class="card-body-row">
 								<view class="card-img-box">
@@ -68,7 +69,8 @@
 									</view>
 									<view class="content-lx-box">
 										<view class="content-lx-item" v-for="item2 in item.leixing" :key="item2">
-											{{item2}}</view>
+											{{item2}}
+										</view>
 									</view>
 									<!-- <view class="content-text-row">{{item.jiguan}}</view> -->
 								</view>
@@ -192,7 +194,7 @@
 	}
 
 	function juliClick() {
-		if(!data.weizhiFlag){
+		if (!data.weizhiFlag) {
 			uni.showToast({
 				title: `当前位置经纬度获取失败,请重新进入该页面!`,
 				icon: 'none',
@@ -297,10 +299,14 @@
 		}
 
 	}
-
+	function kechengBind(data){
+		uni.redirectTo({
+			url: `/pages/admin/Jiazheng/kechengBind?id=`+ data.id
+		})
+	}
 
 	function selectChangeSkill(item) {
-		if(item.length>0){
+		if (item.length > 0) {
 			data.leixing = item[0].name
 			console.log('selectChangeSkill', item);
 			data.page = 0;

+ 274 - 0
pages/admin/Jiazheng/kechengBind.vue

@@ -0,0 +1,274 @@
+<template>
+	<view class="phone-list-page kc-bind-page">
+		<view class="phone-navBar-box">
+			<view @click="goUpPage" class="nav-bar-icon"></view>
+			<text class="nav-bar-title">家政人员</text>
+			<uni-icons v-if="current ==0" class="nav-bar-right-icon bar-ml10" type="search" @click="searchBtn" size="20"></uni-icons>
+		</view>
+		<v-tabs v-model="current" :tabs="tabs" :scroll="false" @change="changeTab" field="name"
+			class="admin-tab-box"></v-tabs>
+		<view v-if="current ==0" class="jiazheng-search-box">
+			<view @click.stop="clickAlltype" class="select-item-box">
+				<text>{{leixing}}</text>
+				<icon class="select-jt-default" />
+			</view>
+		</view>
+		<view class="kc-bind-scroll-view scroll-top-border" v-if="current ==0">
+			<uni-list class="admin-list-box">
+				<uni-list-item v-for="item in list" class="admin-list-item-box">
+					<template v-slot:body>
+						<view @click="lookUserInfo(item)" class="kecheng-list-card">
+							<img :src="item.pic">
+							<view class="item-card-row">
+								<view class="ks-item-top">
+									<view class="kc-name">{{item.name}}</view>
+								</view>
+								<view class="ks-totalTm kc-fenlei">
+									<icon class="phone-fenlei-icon" />分类:{{item.kcClassifyName}}
+								</view>
+								<button class="kc-bind-btn phone-green-btn" type="default" size="mini"
+									@click.stop="toAdd(item)">绑定</button>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+		<view class="kc-notbind-scroll-view scroll-top-border" v-if="current ==1">
+			<uni-list class="admin-list-box">
+				<uni-list-item v-for="item in listYx" class="admin-list-item-box">
+					<template v-slot:body>
+						<view @click="lookUserInfo(item)" class="kecheng-list-card">
+							<img :src="item.pic" v-if="item.pic">
+							<view class="item-card-row">
+								<view class="ks-item-top">
+									<view class="kc-name">{{item.name}}</view>
+								</view>
+								<!-- <view class="ks-totalTm kc-fenlei">
+									<icon class="phone-fenlei-icon" />分类:{{item.kcClassifyName}}
+								</view> -->
+								<view class="bind-btn-row">
+									<button type="default" size="mini" class="kc-bind-btn phone-green-btn"
+										@click="toReset(item)">重置</button>			
+									<button type="default" size="mini" class="kc-bind-btn phone-white-btn"
+										@click="toDelete(item)">删除</button>
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+		<common-dialog ref="commonDialogRef" :title="deleteTitle" :content="deleteConcent"
+			@confirm-btn="deleteQuerenBtn"></common-dialog>
+		<kechengLeixingVue ref="kclxRef" @select="handleSelectLeixing" @reset="handleResetLeixing"></kechengLeixingVue>
+		<searchVue ref="searchRef" @search-btn="handleSearchFromBtn"></searchVue>
+	</view>
+</template>
+
+<script>
+	import {
+		ref
+	} from "vue";
+	import {
+		kcSelectList,
+		jiazhengKcList,
+		jiazhengKcAdd,
+		jiazhengKcDelete,
+		getAdminClassify,
+		kechengReset
+	} from "@/api/jiazheng.js";
+	import commonDialog from '@/components/dialog/commonDialog.vue';
+	import kechengLeixingVue from "./common/kechengLeixing.vue";
+	import searchVue from "./common/search2.vue";
+	import {
+		debounce
+	} from "@/utils/common";
+	export default {
+		data() {
+			return {
+				leixing: '全部类型',
+				leixingList: [],
+				selectClassify: null,
+				kcClassifyId: 0,
+				id: '',
+				name: '',
+				current: 0,
+				list: [],
+				listYx: [],
+				deleteTitle: '删除',
+				kcId: '',
+				deleteConcent: '你确定要执行这个操作吗',
+				tabs: [{
+						id: 1,
+						name: '未绑定课程',
+
+					},
+					{
+						id: 2,
+						name: '已绑定课程',
+
+					},
+				],
+			}
+		},
+		components: {
+			commonDialog,
+			kechengLeixingVue,
+			searchVue
+		},
+		onLoad(options) {
+			this.id = options.id
+			this.getList()
+			this.getKechengClassify()
+		},
+		methods: {
+			toReset(data){
+			let req = {
+				kcId: data.kcId,
+				id: this.id
+			}
+			kechengReset(req).then(res => {
+				if (res.code == 0) {
+					this.getList()
+					uni.showToast({
+						title: '成功',
+						icon: 'success'
+					});
+				} else {
+					uni.showToast({
+						title: '失败',
+						icon: 'success'
+					});
+					return false
+				}
+			})
+			},
+			searchBtn() {
+				this.$refs.searchRef.handleShow()
+			},
+			
+			handleSearchFromBtn(textD) {
+				this.name = textD;
+				this.getList()
+			},
+			handleResetLeixing() {
+				this.selectClassify = null;
+				this.leixing = '全部类型';
+				this.getList()
+			},
+			handleSelectLeixing(item) {
+				this.leixing = item.lable;
+				this.selectClassify = item;
+				this.getList()
+			},
+			clickAlltype() {
+				this.$refs.kclxRef.showPopup({
+					data: this.leixingList
+				})
+			},
+			getKechengClassify() {
+				getAdminClassify().then(res => {
+					res.data.children.forEach(item => {
+						item.checked = false;
+					})
+					this.leixingList = res.data.children || [];
+				})
+			},
+			toAdd(data) {
+				debounce(
+					this.jzAdd(data)
+				,500)
+			
+			},
+			
+			jzAdd(data){
+				let req = {
+					kcIds: [data.kcId],
+					id: this.id
+				}
+				jiazhengKcAdd(req).then(res => {
+					if (res.code == 0) {
+						this.getList()
+						uni.showToast({
+							title: '添加成功',
+							icon: 'success'
+						});
+					} else {
+						uni.showToast({
+							title: '添加失败',
+							icon: 'success'
+						});
+						return false
+					}
+				})
+			},
+			deleteQuerenBtn() {
+				let req = {
+					kcIds: this.kcId,
+					id: this.id
+				}
+				jiazhengKcDelete(req).then(res => {
+					if (res.code == 0) {
+						this.getYxList()
+						uni.showToast({
+							title: '删除成功',
+							icon: 'success'
+						});
+					} else {
+						uni.showToast({
+							title: '删除失败',
+							icon: 'success'
+						});
+						return false
+					}
+				})
+			},
+			toDelete(data) {
+				this.kcId = data.kcId
+				this.$refs.commonDialogRef.handleShow();
+			},
+			changeTab(data) {
+				this.current = data
+				if (this.current == 0) {
+					this.getList()
+				} else {
+					this.getYxList()
+				}
+
+				console.log('data', data);
+			},
+			goUpPage() {
+				uni.redirectTo({
+					url: "/pages/admin/Jiazheng/index"
+				})
+			},
+			getList() {
+				let req = {
+					id: this.id,
+					"kcClassifyId": this.selectClassify && this.selectClassify.id || 0,
+					name:this.name
+				}
+				kcSelectList(req).then(res => {
+					if (res.code == 0) {
+						this.list = res.data
+					} else {
+						return false
+					}
+				})
+			},
+			getYxList() {
+				let req = {
+					id: this.id,
+				}
+				jiazhengKcList(req).then(res => {
+					if (res.code == 0) {
+						this.listYx = res.data
+					} else {
+						return false
+					}
+				})
+			}
+		}
+	}
+</script>

+ 9 - 3
unpackage/dist/cache/.vite/deps/_metadata.json

@@ -2,18 +2,24 @@
   "hash": "7375ca5a",
   "configHash": "fdaa8c6f",
   "lockfileHash": "e3b0c442",
-  "browserHash": "150bab29",
+  "browserHash": "0905010f",
   "optimized": {
     "ts-md5/dist/md5": {
       "src": "../../../../../node_modules/ts-md5/dist/md5.js",
       "file": "ts-md5_dist_md5.js",
-      "fileHash": "4e67595f",
+      "fileHash": "215e17fa",
       "needsInterop": true
     },
     "jsonp": {
       "src": "../../../../../node_modules/jsonp/index.js",
       "file": "jsonp.js",
-      "fileHash": "591ba340",
+      "fileHash": "bb4a5317",
+      "needsInterop": true
+    },
+    "dayjs": {
+      "src": "../../../../../node_modules/dayjs/dayjs.min.js",
+      "file": "dayjs.js",
+      "fileHash": "046961b5",
       "needsInterop": true
     }
   },

+ 1 - 1
utils/common.js

@@ -168,4 +168,4 @@ export function jsonp2(url, params, callbackName = 'jsonp_callback') {
       // 将 script 标签添加到文档中
       document.body.appendChild(script);
     });
-}
+}