whx 1 年間 前
コミット
b5b920f5ce
67 ファイル変更13733 行追加11715 行削除
  1. 16 8
      virgo.wzfrontend/wx/App.vue
  2. 13 2
      virgo.wzfrontend/wx/main.js
  3. 18 0
      virgo.wzfrontend/wx/pages.json
  4. 58 22
      virgo.wzfrontend/wx/pages/house/house.vue
  5. 13 1
      virgo.wzfrontend/wx/pages/index/index.vue
  6. 6 20
      virgo.wzfrontend/wx/pages/login/login.vue
  7. 71 22
      virgo.wzfrontend/wx/pages/message/message.vue
  8. 100 0
      virgo.wzfrontend/wx/pages/messageDetail/messageDetail.vue
  9. 117 0
      virgo.wzfrontend/wx/pages/messageList/messageList.vue
  10. 22 0
      virgo.wzfrontend/wx/pages/projectList/projectList.vue
  11. 47 0
      virgo.wzfrontend/wx/request/api/message.js
  12. 0 0
      virgo.wzfrontend/wx/request/api/organization.js
  13. 39 0
      virgo.wzfrontend/wx/request/api/project.js
  14. 44 0
      virgo.wzfrontend/wx/uitls/message.js
  15. 2 0
      virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/changelog.md
  16. 1 0
      virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/js_sdk/dayjs.min.js
  17. 80 0
      virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/package.json
  18. 1 0
      virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/readme.md
  19. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  20. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  21. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/house/houseList.js.map
  22. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/login/model.js.map
  23. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/previewVideo/previewVideo.js.map
  24. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/house/house.js.map
  25. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/houseDetail/houseDetail.js.map
  26. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  27. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  28. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map
  29. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/messageDetail/messageDetail.js.map
  30. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/messageList/messageList.js.map
  31. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/my.js.map
  32. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/order.js.map
  33. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/projectList/projectList.js.map
  34. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
  35. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-tag/components/uni-tag/uni-tag.js.map
  36. 4 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/app.json
  37. 26 5
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/main.js
  38. 11924 11441
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/vendor.js
  39. 15 15
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/house/houseList.js
  40. 14 14
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/model.js
  41. 15 15
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/previewVideo/previewVideo.js
  42. 75 10
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.js
  43. 3 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.json
  44. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.wxml
  45. 12 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.wxss
  46. 18 18
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/houseDetail/houseDetail.js
  47. 10 2
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.js
  48. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
  49. 8 22
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.js
  50. 75 3
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.js
  51. 3 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.json
  52. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.wxml
  53. 37 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.wxss
  54. 230 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.js
  55. 4 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.json
  56. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.wxml
  57. 42 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.wxss
  58. 256 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.js
  59. 6 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.json
  60. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.wxml
  61. 47 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.wxss
  62. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/my/my.js
  63. 159 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/projectList/projectList.js
  64. 4 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/projectList/projectList.json
  65. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/projectList/projectList.wxml
  66. 60 60
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js
  67. 14 14
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-tag/components/uni-tag/uni-tag.js

+ 16 - 8
virgo.wzfrontend/wx/App.vue

@@ -1,4 +1,7 @@
 <script>
+	import {
+		getUserInfo
+	} from '@/request/api/login'
 	export default {
 		onLaunch() {
 			console.log('App Launch')
@@ -10,19 +13,24 @@
 					'store'))));
 				sessionStorage.setItem('store', ''); //重新置完清空session
 			}
-			if (sessionStorage.getItem('stores')) {
-				this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem(
-					'stores'))));
-				sessionStorage.setItem('stores', ''); //重新置完清空session
-			}
 			window.addEventListener('beforeunload', () => {
 				sessionStorage.setItem('store', JSON.stringify(this.$store.state));
 			});
 			// #endif
+			// #ifdef MP-WEIXIN
+			console.log(uni.getStorageSync('token') && !this.$store.getters.user.userId);
+			if (uni.getStorageSync('token') && !this.$store.getters.user.userId) {
+				getUserInfo().then(user => {
+					if (user.code === 200) {
+						let userInfo = user.data;
+						this.$store.dispatch('app/changeOrganization', userInfo.organization);
+						this.$store.dispatch('app/changeUser', userInfo);
+					}
+				})
+			}
+			// #endif
 		},
-		onHide() {
-			console.log('App Hide')
-		}
+		onHide() {}
 	}
 </script>
 

+ 13 - 2
virgo.wzfrontend/wx/main.js

@@ -1,17 +1,28 @@
 import Vue from 'vue'
 import App from './App'
 import store from './store'
+import {
+	dayjs
+} from '@/uni_modules/iRainna-dayjs/js_sdk/dayjs.min.js'
 
 Vue.prototype.$store = store;
+Vue.prototype.$dayjs = dayjs;
+Vue.prototype.$toast = msg => {
+	uni.showToast({
+		title: msg,
+		icon: "none"
+	})
+};
 Vue.prototype.$navigateTo = (url) => {
+	console.log(uni.getStorageSync('token'));
 	uni.navigateTo({
 		url: url
 	})
 }
 
 import field from './config/field.js'
-Vue.prototype.$field = field;
-
+Vue.prototype.$field = field;
+
 
 Vue.config.productionTip = false;
 

+ 18 - 0
virgo.wzfrontend/wx/pages.json

@@ -39,6 +39,24 @@
 			"style": {
 				"navigationBarTitleText": "房源详情"
 			}
+		},
+		{
+			"path": "pages/messageList/messageList",
+			"style": {
+				"navigationBarTitleText": "消息列表"
+			}
+		},
+		{
+			"path": "pages/messageDetail/messageDetail",
+			"style": {
+				"navigationBarTitleText": "消息详情"
+			}
+		},
+		{
+			"path": "pages/projectList/projectList",
+			"style": {
+				"navigationBarTitleText": "项目列表"
+			}
 		}
 	],
 	"tabBar": {

+ 58 - 22
virgo.wzfrontend/wx/pages/house/house.vue

@@ -1,22 +1,58 @@
-<template>
-	<view>
-		
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			
-		}
-	}
-</script>
-
-<style>
-
-</style>
+<template>
+	<view class="house-index">
+		<house-list :list="houseList"></house-list>
+	</view>
+</template>
+
+<script>
+	import houseList from '@/components/house/houseList.vue'
+	import {
+		getHouseListByPage
+	} from '@/request/api/house'
+	export default {
+		data() {
+			return {
+				houseList: []
+			}
+		},
+		onShow() {
+			this.getHouseList();
+		},
+		methods: {
+			getHouseList() {
+				getHouseListByPage({
+					currPage: 1,
+					pageSize: 10,
+					projectId: 9
+				}).then(res => {
+					if (res.code === 200) {
+						let commonUrl =
+							'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/f488a1cc0e904ed089d52d88e3c1b33d';
+						this.houseList = res.data.dataList.map(node => {
+							if (node.picture) {
+								let picture = JSON.parse(node.picture);
+								if (picture.length === 0) {
+									node['privewImage'] = commonUrl;
+								} else {
+									node['privewImage'] = picture[0].url;
+								}
+							} else {
+								node['privewImage'] = commonUrl;
+							}
+							return node;
+						});
+					}
+				})
+			}
+		},
+		components: {
+			houseList
+		}
+	}
+</script>
+
+<style lang="scss">
+	.house-index {
+		padding: 0 30rpx;
+	}
+</style>

+ 13 - 1
virgo.wzfrontend/wx/pages/index/index.vue

@@ -17,7 +17,7 @@
 			</swiper>
 		</view>
 		<view class="grid">
-			<view class="grid-item red">
+			<view class="grid-item red" @click="$navigateTo('/pages/house/house')">
 				<view>
 					<view class="label">房源列表</view>
 					<view class="sub-label">
@@ -52,6 +52,9 @@
 	import {
 		getHouseListByPage
 	} from '@/request/api/house'
+	import {
+		getProjectList
+	} from '@/request/api/project'
 	export default {
 		data() {
 			return {
@@ -66,9 +69,18 @@
 			}
 		},
 		onShow() {
+			this.getAllProjectList();
 			this.getHouseList();
 		},
 		methods: {
+			getAllProjectList() {
+				getProjectList().then(res => {
+					if(res.code == 200){
+						
+					}
+					console.log(res);
+				})
+			},
 			getHouseList() {
 				getHouseListByPage({
 					currPage: 1,

+ 6 - 20
virgo.wzfrontend/wx/pages/login/login.vue

@@ -84,10 +84,7 @@
 		onLoad() {},
 		methods: {
 			getImageCode() {
-				if (!isTel(this.loginForm.phone)) return uni.showToast({
-					title: '请输入正确的手机号',
-					icon: "none"
-				})
+				if (!isTel(this.loginForm.phone)) return this.$toast('请输入正确的手机号');
 				if (this.isDisabled) return;
 				this.imgCodeFunc();
 				this.captchaShow = true;
@@ -100,17 +97,12 @@
 				})
 			},
 			confirmHandle() {
-				if (!this.imgCode) return uni.showToast({
-					title: '请输入图片验证码',
-					icon: "none"
-				})
+				if (!this.imgCode) return this.$toast('请输入图片验证码');
 				sendPhoneCode(this.loginForm.phone, this.imgCode).then(res => {
 					if (res.code === 200) {
 						this.codeReset();
-						uni.showToast({
-							title: '发送成功',
-							icon: "none"
-						})
+						this.$toast('发送成功');
+						this.captchaShow = false;
 					}
 				})
 			},
@@ -136,10 +128,7 @@
 				})
 			},
 			submitLogin() { //手机验证码登录
-				if (!this.loginForm.phoneCode) return uni.showToast({
-					title: '请输入短信验证码',
-					icon: "none"
-				})
+				if (!this.loginForm.phoneCode) return this.$toast('请输入短信验证码');
 				this.login(this.loginForm);
 			},
 			login(postData) {
@@ -167,10 +156,7 @@
 							let userInfo = user.data;
 							this.$store.dispatch('app/changeOrganization', userInfo.organization);
 							this.$store.dispatch('app/changeUser', userInfo);
-							uni.showToast({
-								title: '登录成功',
-								icon: "none"
-							})
+							this.$toast('登录成功');
 							setTimeout(() => {
 								uni.hideLoading();
 								uni.navigateBack();

+ 71 - 22
virgo.wzfrontend/wx/pages/message/message.vue

@@ -1,22 +1,71 @@
-<template>
-	<view>
-		message page
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			
-		}
-	}
-</script>
-
-<style>
-
-</style>
+<template>
+	<view class="message-index">
+		<view class="message-item" @click="$navigateTo('/pages/messageList/messageList?type=2')">
+			<view class="message-icon">
+				<uni-icons type="email" size="30" color="#fff"></uni-icons>
+			</view>
+			<view class="message-content">
+				<view class="message-title">
+					项目邀请通知
+				</view>
+				<view class="message-sub-label">
+					暂无消息
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getMessageList
+	} from '@/request/api/message.js'
+	export default {
+		data() {
+			return {
+
+			}
+		},
+		onShow() {
+			this.init();
+		},
+		methods: {
+			init() {}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.message-index {
+		padding-top: 20rpx;
+
+		.message-item {
+			display: flex;
+			align-items: center;
+			padding: 20rpx 30rpx;
+			background: $uni-white;
+		}
+
+		.message-icon {
+			background: #55bc9c;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 100rpx;
+			height: 100rpx;
+			border-radius: 20rpx;
+			margin-right: 20rpx;
+		}
+
+		.message-title {
+			font-size: 32rpx;
+			font-weight: 500;
+		}
+
+		.message-sub-label {
+			color: $uni-extra-color;
+			font-size: 24rpx;
+			margin-top: 10rpx;
+		}
+	}
+</style>

+ 100 - 0
virgo.wzfrontend/wx/pages/messageDetail/messageDetail.vue

@@ -0,0 +1,100 @@
+<template>
+	<view class="message-detail-index">
+		<view class="message-detail-content">
+			{{detail.sendUserName}}{{detail.message}}
+		</view>
+		<view class="message-btn-box">
+			<view class="message-btn red" @click="btnClick('拒绝')">拒绝</view>
+			<view class="line"></view>
+			<view class="message-btn primary" @click="btnClick('同意')">同意</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getMessageDetailById,
+		bindProject
+	} from '@/request/api/message.js'
+	export default {
+		data() {
+			return {
+				messageId: '',
+				detail: {}
+			}
+		},
+		onLoad(body) {
+			this.messageId = body.id;
+			this.detail = JSON.parse(body.item);
+		},
+		methods: {
+			init() {
+
+			},
+			btnClick(msg) {
+				uni.showModal({
+					title: '有极提示',
+					content: '是否' + msg + '加入该项目',
+					success: (res) => {
+						if (res.confirm) {
+							bindProject({
+								organizationId: this.detail.organizationId,
+								projectId: this.detail.projectId,
+								clientId: this.detail.dataId,
+								userId: this.$store.getters.user.userId,
+								identityId: this.detail.identityId || 1
+							}).then(res => {
+								if (res.code === 200) {
+									this.$toast('操作成功')
+								}
+							})
+						}
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.message-detail-index {
+		background: $uni-white;
+		padding: 20rpx;
+		padding-bottom: 0;
+		margin: 20rpx 30rpx;
+		border-radius: 10rpx;
+
+		.message-detail-content {
+			min-height: 200rpx;
+			padding-bottom: 40rpx;
+		}
+
+		.message-btn-box {
+			width: 100%;
+			display: flex;
+			height: 80rpx;
+			align-items: center;
+			border-top: 1px solid $uni-border-3;
+
+			.line {
+				width: 1px;
+				height: 40rpx;
+				background: $uni-border-3;
+			}
+
+			.message-btn {
+				text-align: center;
+				flex: 1;
+			}
+
+			.red {
+				color: $uni-error;
+			}
+
+			.primary {
+				color: $uni-primary;
+			}
+		}
+
+	}
+</style>

+ 117 - 0
virgo.wzfrontend/wx/pages/messageList/messageList.vue

@@ -0,0 +1,117 @@
+<template>
+	<view class="message-list">
+		<view class="message-item" :class="item.viewed ? 'viewed':''" v-for="item in list" :key="item.id"
+			@click="clickMessage(item)">
+			<view class="message-title">{{item.sendUserName}}{{item.message}}</view>
+			<view class="message-content">
+				<view class="content-item">
+					<uni-icons class="sub-label-icon" type="navigate" size="16"></uni-icons>
+					<text class="name">{{item.date}}</text>
+				</view>
+				<view class="content-item">
+					<uni-icons class="sub-label-icon" type="person" size="16"></uni-icons>
+					<text class="name">{{item.sendUserName}}</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getMessageList,
+		setMessageViewed
+	} from '@/request/api/message.js'
+	export default {
+		data() {
+			return {
+				list: [],
+				type: ''
+			}
+		},
+		onLoad(body) {
+			this.type = body.type;
+			this.init()
+		},
+		methods: {
+			init() {
+				getMessageList(this.$store.getters.user.userId || 3, this.type).then(res => {
+					if (res.code === 200) {
+						this.list = res.data.map(node => {
+							node['sendUserName'] = 'vincent';
+							node = Object.assign(node,JSON.parse(node.json))
+							return node;
+						});
+					}
+				})
+			},
+			clickMessage(item) {
+				setMessageViewed(item.id).then(res => {
+					if (res.code === 200) {
+						this.init();
+					}
+				})
+				this.$navigateTo('/pages/messageDetail/messageDetail?item=' + JSON.stringify(item));
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.message-list {
+		padding: 20rpx 30rpx;
+
+		.message-item {
+			background: $uni-white;
+			padding: 20rpx 30rpx;
+			border-radius: 20rpx;
+			margin-bottom: 20rpx;
+		}
+
+		.message-title {
+			font-size: 32rpx;
+			font-weight: 500;
+			margin-bottom: 8rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+		}
+
+		.viewed {
+			.message-title {
+				color: $uni-secondary-color;
+			}
+		}
+
+		.message-content {
+			font-size: 12px;
+			display: flex;
+			justify-content: space-between;
+		}
+
+		.content-item {
+			display: flex;
+			align-items: center;
+			height: 40rpx;
+
+			.name {
+				font-size: 24rpx;
+				color: $uni-extra-color;
+				margin-left: 8rpx;
+			}
+
+			.sub-label-icon {
+				/* #ifdef H5 */
+				color: $uni-extra-color !important;
+
+				/* #endif */
+				/* #ifdef MP-WEIXIN */
+				text {
+					color: $uni-extra-color !important;
+				}
+
+				/* #endif */
+			}
+		}
+	}
+</style>

+ 22 - 0
virgo.wzfrontend/wx/pages/projectList/projectList.vue

@@ -0,0 +1,22 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 47 - 0
virgo.wzfrontend/wx/request/api/message.js

@@ -0,0 +1,47 @@
+import {
+	request
+} from '@/request/request.js';
+
+
+/* 
+ * 获取消息列表
+ * 
+ */
+export function getMessageList(userId, messageType) {
+	return request({
+		url: `/manager/message/messageType/${userId}/${messageType}`,
+		method: 'get'
+	})
+}
+/* 
+ * 设置消息已读
+ * 
+ */
+export function setMessageViewed(id) {
+	return request({
+		url: `/manager/message/${id}`,
+		method: 'put'
+	})
+}
+/* 
+ * 通过id获取消息详情
+ * 
+ */
+export function getMessageDetailById(id) {
+	return request({
+		url: `/manager/message/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 绑定客户至组织项目
+ * 
+ * 
+ */
+export function bindProject(data) {
+	return request({
+		url: `/manager/bindProject`,
+		method: 'post',
+		data: data
+	})
+}

+ 0 - 0
virgo.wzfrontend/wx/request/api/organization.js


+ 39 - 0
virgo.wzfrontend/wx/request/api/project.js

@@ -0,0 +1,39 @@
+import {
+	request
+} from '@/request/request.js';
+
+/* 
+ * 获取项目列表
+ * 
+ * 
+ */
+export function getProjectList() {
+	let promise = new Promise((result, rej) => {
+		request({
+			url: `/manager/userContext/allProject`,
+			method: 'get'
+		}).then(res => {
+			if (res.code === 200) {
+				if (res.data.length === 0) return result({
+					code: 200,
+					data: null,
+					message: null
+				})
+				request({
+					url: `/api/project/getIds`,
+					method: 'post',
+					data: res.data
+				}).then(node => {
+					result(node)
+				})
+			} else {
+				result({
+					code: 200,
+					data: null,
+					message: null
+				})
+			}
+		})
+	})
+	return promise
+}

+ 44 - 0
virgo.wzfrontend/wx/uitls/message.js

@@ -0,0 +1,44 @@
+import request from '@/axios';
+import store from '@/store';
+
+const messageType = [{
+	id: 2,
+	name: '项目邀请'
+}, {
+	id: 3,
+	name: '巡查消息'
+}];
+export default {
+	send(data = {}, params = {}) {
+		
+		let postData = {
+			projectId: store.getters.project.id,
+			organizationId: store.getters.organization.id,
+			sender: store.getters.user.userId
+		}
+		let obj = this.data(data, params);
+		postData = Object.assign(postData, obj);
+		return request({
+			url: `/manager/message/{data.userIds}`,
+			method: 'post',
+			data: postData
+		})
+	},
+	viewed(messageId, callback) {
+		if (!messageId) return;
+		return request({
+			url: `/manager/operateMessage/${messageId}`,
+			method: 'put',
+		}).then(res => {
+			if (res.state && callback) callback()
+		})
+	},
+	data(data = {}, params = {}) {
+		let obj = params;
+		let message =
+			`【${type.title}】${store.getters.user.name}在${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')}${params.operation}${msg}${type.content}`
+		obj['message'] = message;
+		return obj
+	},
+	messageType
+}

+ 2 - 0
virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/changelog.md

@@ -0,0 +1,2 @@
+## 1.0.0(2023-09-19)
+first

ファイルの差分が大きいため隠しています
+ 1 - 0
virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/js_sdk/dayjs.min.js


+ 80 - 0
virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/package.json

@@ -0,0 +1,80 @@
+{
+  "id": "iRainna-dayjs",
+  "displayName": "dayjs",
+  "version": "1.0.0",
+  "description": "iRainna-dayjs",
+  "keywords": [
+    "iRainna-dayjs"
+],
+  "repository": "",
+"engines": {
+  },
+  "dcloudext": {
+    "type": "sdk-js",
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "插件不采集任何数据",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "y",
+          "vue3": "y"
+        },
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y",
+          "钉钉": "y",
+          "快手": "y",
+          "飞书": "y",
+          "京东": "y"
+        },
+        "快应用": {
+          "华为": "y",
+          "联盟": "y"
+        }
+      }
+    }
+  }
+}

+ 1 - 0
virgo.wzfrontend/wx/uni_modules/iRainna-dayjs/readme.md

@@ -0,0 +1 @@
+# iRainna-dayjs

ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/house/houseList.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/login/model.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/previewVideo/previewVideo.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/house/house.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/houseDetail/houseDetail.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map


ファイルの差分が大きいため隠しています
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/messageDetail/messageDetail.js.map


ファイルの差分が大きいため隠しています
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/messageList/messageList.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/my.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/order.js.map


ファイルの差分が大きいため隠しています
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/projectList/projectList.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map


ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-tag/components/uni-tag/uni-tag.js.map


+ 4 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/app.json

@@ -6,7 +6,10 @@
     "pages/my/my",
     "pages/message/message",
     "pages/house/house",
-    "pages/houseDetail/houseDetail"
+    "pages/houseDetail/houseDetail",
+    "pages/messageList/messageList",
+    "pages/messageDetail/messageDetail",
+    "pages/projectList/projectList"
   ],
   "subPackages": [],
   "window": {

ファイルの差分が大きいため隠しています
+ 26 - 5
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/main.js


ファイルの差分が大きいため隠しています
+ 11924 - 11441
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/vendor.js


ファイルの差分が大きいため隠しています
+ 15 - 15
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/house/houseList.js


ファイルの差分が大きいため隠しています
+ 14 - 14
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/model.js


ファイルの差分が大きいため隠しています
+ 15 - 15
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/previewVideo/previewVideo.js


ファイルの差分が大きいため隠しています
+ 75 - 10
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.js


+ 3 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.json

@@ -1,4 +1,6 @@
 {
   "navigationBarTitleText": "房源列表",
-  "usingComponents": {}
+  "usingComponents": {
+    "house-list": "/components/house/houseList"
+  }
 }

+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.wxml

@@ -1 +1 @@
-<view></view>
+<view class="house-index"><house-list vue-id="17a4f204-1" list="{{houseList}}" bind:__l="__l"></house-list></view>

+ 12 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/house/house.wxss

@@ -0,0 +1,12 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.house-index {
+  padding: 0 30rpx;
+}
+

ファイルの差分が大きいため隠しています
+ 18 - 18
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/houseDetail/houseDetail.js


+ 10 - 2
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.js

@@ -101,7 +101,7 @@ var components
 try {
   components = {
     uniIcons: function () {
-      return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 97))
+      return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 99))
     },
   }
 } catch (e) {
@@ -165,9 +165,10 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 var _house = __webpack_require__(/*! @/request/api/house */ 45);
+var _project = __webpack_require__(/*! @/request/api/project */ 170);
 var houseList = function houseList() {
   __webpack_require__.e(/*! require.ensure | components/house/houseList */ "components/house/houseList").then((function () {
-    return resolve(__webpack_require__(/*! @/components/house/houseList.vue */ 105));
+    return resolve(__webpack_require__(/*! @/components/house/houseList.vue */ 107));
   }).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
 };
 var _default = {
@@ -182,9 +183,16 @@ var _default = {
     };
   },
   onShow: function onShow() {
+    this.getAllProjectList();
     this.getHouseList();
   },
   methods: {
+    getAllProjectList: function getAllProjectList() {
+      (0, _project.getProjectList)().then(function (res) {
+        if (res.code == 200) {}
+        console.log(res);
+      });
+    },
     getHouseList: function getHouseList() {
       var _this = this;
       (0, _house.getHouseListByPage)({

ファイルの差分が大きいため隠しています
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.wxml


+ 8 - 22
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.js

@@ -101,7 +101,7 @@ var components
 try {
   components = {
     uniIcons: function () {
-      return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 97))
+      return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 99))
     },
   }
 } catch (e) {
@@ -227,7 +227,7 @@ var _validate = __webpack_require__(/*! @/uitls/validate */ 56);
 //
 var model = function model() {
   __webpack_require__.e(/*! require.ensure | components/login/model */ "components/login/model").then((function () {
-    return resolve(__webpack_require__(/*! @/components/login/model.vue */ 112));
+    return resolve(__webpack_require__(/*! @/components/login/model.vue */ 114));
   }).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
 };
 var _default = {
@@ -253,10 +253,7 @@ var _default = {
   onLoad: function onLoad() {},
   methods: {
     getImageCode: function getImageCode() {
-      if (!(0, _validate.isTel)(this.loginForm.phone)) return uni.showToast({
-        title: '请输入正确的手机号',
-        icon: "none"
-      });
+      if (!(0, _validate.isTel)(this.loginForm.phone)) return this.$toast('请输入正确的手机号');
       if (this.isDisabled) return;
       this.imgCodeFunc();
       this.captchaShow = true;
@@ -271,17 +268,12 @@ var _default = {
     },
     confirmHandle: function confirmHandle() {
       var _this2 = this;
-      if (!this.imgCode) return uni.showToast({
-        title: '请输入图片验证码',
-        icon: "none"
-      });
+      if (!this.imgCode) return this.$toast('请输入图片验证码');
       (0, _login2.sendPhoneCode)(this.loginForm.phone, this.imgCode).then(function (res) {
         if (res.code === 200) {
           _this2.codeReset();
-          uni.showToast({
-            title: '发送成功',
-            icon: "none"
-          });
+          _this2.$toast('发送成功');
+          _this2.captchaShow = false;
         }
       });
     },
@@ -310,10 +302,7 @@ var _default = {
     },
     submitLogin: function submitLogin() {
       //手机验证码登录
-      if (!this.loginForm.phoneCode) return uni.showToast({
-        title: '请输入短信验证码',
-        icon: "none"
-      });
+      if (!this.loginForm.phoneCode) return this.$toast('请输入短信验证码');
       this.login(this.loginForm);
     },
     login: function login(postData) {
@@ -338,10 +327,7 @@ var _default = {
             var userInfo = user.data;
             _this5.$store.dispatch('app/changeOrganization', userInfo.organization);
             _this5.$store.dispatch('app/changeUser', userInfo);
-            uni.showToast({
-              title: '登录成功',
-              icon: "none"
-            });
+            _this5.$toast('登录成功');
             setTimeout(function () {
               uni.hideLoading();
               uni.navigateBack();

ファイルの差分が大きいため隠しています
+ 75 - 3
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.js


+ 3 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.json

@@ -1,4 +1,6 @@
 {
   "navigationBarTitleText": "消息",
-  "usingComponents": {}
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons"
+  }
 }

+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.wxml

@@ -1 +1 @@
-<view>message page</view>
+<view class="message-index"><view data-event-opts="{{[['tap',[['$navigateTo',['/pages/messageList/messageList?type=2']]]]]}}" class="message-item" bindtap="__e"><view class="message-icon"><uni-icons vue-id="7ac9e6a0-1" type="email" size="30" color="#fff" bind:__l="__l"></uni-icons></view><view class="message-content"><view class="message-title">项目邀请通知</view><view class="message-sub-label">暂无消息</view></view></view></view>

+ 37 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/message/message.wxss

@@ -0,0 +1,37 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.message-index {
+  padding-top: 20rpx;
+}
+.message-index .message-item {
+  display: flex;
+  align-items: center;
+  padding: 20rpx 30rpx;
+  background: #ffffff;
+}
+.message-index .message-icon {
+  background: #55bc9c;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 100rpx;
+  height: 100rpx;
+  border-radius: 20rpx;
+  margin-right: 20rpx;
+}
+.message-index .message-title {
+  font-size: 32rpx;
+  font-weight: 500;
+}
+.message-index .message-sub-label {
+  color: #c7c7c7;
+  font-size: 24rpx;
+  margin-top: 10rpx;
+}
+

ファイルの差分が大きいため隠しています
+ 230 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.js


+ 4 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "消息详情",
+  "usingComponents": {}
+}

+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.wxml

@@ -0,0 +1 @@
+<view class="message-detail-index"><view class="message-detail-content">{{''+detail.sendUserName+detail.message+''}}</view><view class="message-btn-box"><view data-event-opts="{{[['tap',[['btnClick',['拒绝']]]]]}}" class="message-btn red" bindtap="__e">拒绝</view><view class="line"></view><view data-event-opts="{{[['tap',[['btnClick',['同意']]]]]}}" class="message-btn primary" bindtap="__e">同意</view></view></view>

+ 42 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageDetail/messageDetail.wxss

@@ -0,0 +1,42 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.message-detail-index {
+  background: #ffffff;
+  padding: 20rpx;
+  padding-bottom: 0;
+  margin: 20rpx 30rpx;
+  border-radius: 10rpx;
+}
+.message-detail-index .message-detail-content {
+  min-height: 200rpx;
+  padding-bottom: 40rpx;
+}
+.message-detail-index .message-btn-box {
+  width: 100%;
+  display: flex;
+  height: 80rpx;
+  align-items: center;
+  border-top: 1px solid #DCDCDC;
+}
+.message-detail-index .message-btn-box .line {
+  width: 1px;
+  height: 40rpx;
+  background: #DCDCDC;
+}
+.message-detail-index .message-btn-box .message-btn {
+  text-align: center;
+  flex: 1;
+}
+.message-detail-index .message-btn-box .red {
+  color: #e43d33;
+}
+.message-detail-index .message-btn-box .primary {
+  color: #3371FF;
+}
+

ファイルの差分が大きいため隠しています
+ 256 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.js


+ 6 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.json

@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "消息列表",
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons"
+  }
+}

ファイルの差分が大きいため隠しています
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.wxml


+ 47 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/messageList/messageList.wxss

@@ -0,0 +1,47 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.message-list {
+  padding: 20rpx 30rpx;
+}
+.message-list .message-item {
+  background: #ffffff;
+  padding: 20rpx 30rpx;
+  border-radius: 20rpx;
+  margin-bottom: 20rpx;
+}
+.message-list .message-title {
+  font-size: 32rpx;
+  font-weight: 500;
+  margin-bottom: 8rpx;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.message-list .viewed .message-title {
+  color: #909399;
+}
+.message-list .message-content {
+  font-size: 12px;
+  display: flex;
+  justify-content: space-between;
+}
+.message-list .content-item {
+  display: flex;
+  align-items: center;
+  height: 40rpx;
+}
+.message-list .content-item .name {
+  font-size: 24rpx;
+  color: #c7c7c7;
+  margin-left: 8rpx;
+}
+.message-list .content-item .sub-label-icon text {
+  color: #c7c7c7 !important;
+}
+

+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/my/my.js

@@ -101,7 +101,7 @@ var components
 try {
   components = {
     uniIcons: function () {
-      return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 97))
+      return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 99))
     },
   }
 } catch (e) {

ファイルの差分が大きいため隠しています
+ 159 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/projectList/projectList.js


+ 4 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/projectList/projectList.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "项目列表",
+  "usingComponents": {}
+}

+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/projectList/projectList.wxml

@@ -0,0 +1 @@
+<view></view>

ファイルの差分が大きいため隠しています
+ 60 - 60
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js


ファイルの差分が大きいため隠しています
+ 14 - 14
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-tag/components/uni-tag/uni-tag.js