Explorar el Código

修改聊天记录

zs hace 1 año
padre
commit
bbbb93cdbf
Se han modificado 74 ficheros con 21713 adiciones y 36824 borrados
  1. 0 1
      components/tabs/index.vue
  2. 3 0
      config.js
  3. 39 5
      pages/home/index.vue
  4. 9 7
      pages/my/index.vue
  5. 212 0
      pagesHome/friend/common/submit_1.vue
  6. 51 183
      pagesHome/friend/index.vue
  7. 233 39
      pagesMy/group/index.vue
  8. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  9. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  10. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  11. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/components/upload/index.js.map
  12. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/index.js.map
  13. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  14. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
  15. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/index.js.map
  16. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/science/index.js.map
  17. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/friend/common/submit_1.js.map
  18. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/friend/index.js.map
  19. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/group/index.js.map
  20. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/other/agree.js.map
  21. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMy/answer/index.js.map
  22. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMy/basic/index.js.map
  23. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesMy/group/index.js.map
  24. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pagesScience/science/index.js.map
  25. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.js.map
  26. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.js.map
  27. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js.map
  28. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js.map
  29. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js.map
  30. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
  31. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.js.map
  32. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
  33. 2 2
      unpackage/dist/dev/mp-weixin/common/runtime.js
  34. 17800 16769
      unpackage/dist/dev/mp-weixin/common/vendor.js
  35. 15 15
      unpackage/dist/dev/mp-weixin/components/upload/index.js
  36. 50 5
      unpackage/dist/dev/mp-weixin/pages/home/index.js
  37. 1 1
      unpackage/dist/dev/mp-weixin/pages/home/index.wxml
  38. 54 51
      unpackage/dist/dev/mp-weixin/pages/my/index.js
  39. 0 19133
      unpackage/dist/dev/mp-weixin/pagesHome/common/vendor.js
  40. 351 0
      unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.js
  41. 6 0
      unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.json
  42. 1 0
      unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.wxml
  43. 65 0
      unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.wxss
  44. 88 213
      unpackage/dist/dev/mp-weixin/pagesHome/friend/index.js
  45. 2 1
      unpackage/dist/dev/mp-weixin/pagesHome/friend/index.json
  46. 1 1
      unpackage/dist/dev/mp-weixin/pagesHome/friend/index.wxml
  47. 8 52
      unpackage/dist/dev/mp-weixin/pagesHome/friend/index.wxss
  48. 1 1
      unpackage/dist/dev/mp-weixin/pagesHome/group/index.js
  49. 108 108
      unpackage/dist/dev/mp-weixin/pagesHome/other/agree.js
  50. 16 16
      unpackage/dist/dev/mp-weixin/pagesMy/answer/index.js
  51. 17 17
      unpackage/dist/dev/mp-weixin/pagesMy/basic/index.js
  52. 295 75
      unpackage/dist/dev/mp-weixin/pagesMy/group/index.js
  53. 7 1
      unpackage/dist/dev/mp-weixin/pagesMy/group/index.json
  54. 1 1
      unpackage/dist/dev/mp-weixin/pagesMy/group/index.wxml
  55. 65 5
      unpackage/dist/dev/mp-weixin/pagesMy/group/index.wxss
  56. 16 16
      unpackage/dist/dev/mp-weixin/pagesScience/science/index.js
  57. 15 15
      unpackage/dist/dev/mp-weixin/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.js
  58. 14 14
      unpackage/dist/dev/mp-weixin/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.js
  59. 682 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js
  60. 6 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.json
  61. 1 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxml
  62. 112 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxss
  63. 611 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js
  64. 4 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.json
  65. 1 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxml
  66. 97 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxss
  67. 563 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js
  68. 4 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.json
  69. 1 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxml
  70. 4 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxss
  71. 15 15
      unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js
  72. 15 15
      unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.js
  73. 15 15
      unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js
  74. 11 11
      unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js

+ 0 - 1
components/tabs/index.vue

@@ -19,7 +19,6 @@
 			tabs: {
 				type: Object,
 			},
-
 		},
 		data() {
 			return {};

+ 3 - 0
config.js

@@ -18,16 +18,19 @@ export default {
 			icon: "icon-yonghuxinxi",
 			title: "基本信息",
 			route: "pagesMy/basic/index",
+			role: ['Doctor', 'Nurse', 'Patient']
 		},
 		{
 			icon: "icon-qunzu",
 			title: "群组信息",
 			route: "pagesMy/group/index",
+			role: ['Doctor', 'Nurse']
 		},
 		{
 			icon: "icon-Detailsoftheproblem",
 			title: "答复记录",
 			route: "pagesMy/answer/index",
+			role: ['Doctor', 'Nurse', 'Patient']
 		}
 	],
 	china: [

+ 39 - 5
pages/home/index.vue

@@ -29,10 +29,10 @@
 						</view>
 						<view class="list" v-for="(item, index) in friendList" :key="index"
 							@tap="toInfo(item,'friend')">
-							<uni-list-chat title="uni-app"
-								avatar="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png"
-								note="您收到一条新的消息" time="2020-02-02 20:20" badge-positon="left" badge-text="99"
-								link="navigateTo" @click="toInfo(item,'friend')">
+							<uni-list-chat :title="item.patientName"
+								:avatar="item.patientIcon[0].url||config.user_url[0].url" :note="item.content"
+								:time="item.time" badge-positon="left" :badge-text="item.notRead" link="navigateTo"
+								@click="toInfo(item,'friend')">
 							</uni-list-chat>
 						</view>
 					</view>
@@ -128,6 +128,11 @@
 					...that.searchfriend
 				})
 				if (res.errcode == '0') {
+					for (let val of res.data) {
+						if (val.type == 'image') val.content = '[图片]'
+						if (val.type == 'record') val.content = '[语音]'
+						val.time = that.formatDate(val.time)
+					}
 					that.$set(that, `friendList`, res.data)
 				} else {
 					uni.showToast({
@@ -150,6 +155,35 @@
 				else that.$set(that, `searchfriend`, {})
 				that.search();
 			},
+			// 处理时间
+			formatDate(value) {
+				if (typeof(value) == 'undefined') {
+					return ''
+				} else {
+					let date = new Date(value)
+					let now = new Date()
+					let y = date.getFullYear()
+					let MM = date.getMonth() + 1
+					MM = MM < 10 ? ('0' + MM) : MM
+					let d = date.getDate()
+					d = d < 10 ? ('0' + d) : d
+					let h = date.getHours()
+					h = h < 10 ? ('0' + h) : h
+					let m = date.getMinutes()
+					m = m < 10 ? ('0' + m) : m
+					let s = date.getSeconds()
+					s = s < 10 ? ('0' + s) : s
+					if (now.getDate() - d == 1 && now - date < 172800000) {
+						return '昨天' + h + ':' + m
+					} else if (now - date < 86400000) {
+						return h + ':' + m
+					} else if (now - date >= 86400000 && now - date < 31536000000) {
+						return MM + '-' + d + ' ' + h + ':' + m
+					} else if (now - date >= 31536000000) {
+						return y + '-' + MM + '-' + d + ' ' + h + ':' + m
+					}
+				}
+			},
 			// 详情
 			toInfo(item, type) {
 				if (type == 'group') {
@@ -158,7 +192,7 @@
 					})
 				} else {
 					uni.navigateTo({
-						url: `/pagesHome/friend/index?patientId=${item.patient._id}&doctorId=${that.doctor._id}&groupId=${item.group._id}&title=${item.patient.name}`
+						url: `/pagesHome/friend/index?patientId=${item.patient}&doctorId=${item.doctor}&groupId=${item.group}&title=${item.patientName}`
 					})
 				}
 			},

+ 9 - 7
pages/my/index.vue

@@ -39,14 +39,11 @@
 				menuList: []
 			}
 		},
-		onLoad: async function() {
-			const that = this;
-			await that.searchOther();
-		},
 		onShow: async function(e) {
 			const that = this;
-			that.searchConfig();
-			that.searchToken();
+			await that.searchConfig();
+			await that.searchToken();
+			await that.searchOther();
 			await that.search();
 		},
 		methods: {
@@ -96,7 +93,12 @@
 			async searchOther() {
 				const that = this;
 				let config = that.$config;
-				that.$set(that, `menuList`, config.menuList);
+				let menu = []
+				for (let val of config.menuList) {
+					const role = val.role.find((i) => i == that.user.role);
+					if (role) menu.push(val)
+				}
+				that.$set(that, `menuList`, menu);
 			}
 		}
 	}

+ 212 - 0
pagesHome/friend/common/submit_1.vue

@@ -0,0 +1,212 @@
+<template>
+	<view>
+		<view class="submit">
+			<view class="submit-chat">
+				<!-- 文本框 -->
+				<uni-icons v-if="!isRecorder" @tap="onRecorderchange" type="mic" size="30" color="#333333"></uni-icons>
+				<uni-icons v-else @tap="onRecorderchange" type="mic-filled" size="30" color="#333333"></uni-icons>
+				<view class="onRecorder" v-if="isRecorder" @touchstart="onStart" @touchend="onEnd"
+					:id="inrecord ? 'inRecorder' : ''">
+					按住说话
+				</view>
+				<textarea v-else cursor-spacing='20' class="chat-send" :show-confirm-bar="false"
+					disable-default-padding="true" placeholder="输入你想说的话" confirm-type="send" @confirm="onSend"
+					v-model="msg">
+				</textarea>
+				<uni-icons @tap="more" type="plus" size="30" color="#333333"></uni-icons>
+			</view>
+			<!-- 更多 -->
+			<view class="more" :class="{displaynone:!ismore}">
+				<view class="more_1">
+					<view class="more-list" @tap="chooseImage">
+						<uni-icons type="image-filled" size="30" color="#8183F2"></uni-icons>
+						<view class="more-list-title">图片</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			// 是否处于录音状态
+			inrecord: {
+				type: Boolean,
+				default: false
+			},
+			// 是否处于语音状态
+			isRecorder: {
+				type: Boolean,
+				default: false
+			},
+			// 全局唯一录音管理器
+			record: {
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				msg: "",
+				ismore: false, // 是否处于更多状态
+			};
+		},
+		methods: {
+			//获取高度方法
+			getElementHeight() {
+				const query = uni.createSelectorQuery().in(this);
+				query.select('.submit').boundingClientRect(data => {
+					this.$emit('heights', data.height);
+				}).exec();
+			},
+			//更多功能
+			more() {
+				const that = this;
+				that.ismore = !that.ismore;
+				that.isRecorder = false
+				setTimeout(() => {
+					that.getElementHeight();
+				}, 10)
+			},
+			// 切换语音 or 键盘
+			onRecorderchange() {
+				const that = this
+				that.$emit('onRecorderchange');
+			},
+			// 长按开始录入语音
+			onStart() {
+				const that = this
+				that.$emit('onStart');
+			},
+			// 长按结束录入语音
+			onEnd() {
+				const that = this
+				that.$emit('onEnd');
+			},
+			//文字发送
+			onSend() {
+				const that = this;
+				if (that.msg.length > 0) {
+					// 0为表情和文字
+					let msg = that.msg.replace(/[\r\n]/g, "");
+					let mess = {
+						type: 'text',
+						content: msg,
+						time: new Date() - 0
+					}
+					that.sendmessage(mess)
+					that.msg = '';
+				}
+			},
+			// 发送图片
+			chooseImage() {
+				const that = this;
+				let serverFile = that.$config.serverFile;
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album', 'camera'],
+					success: async function(res) {
+						let tempFile = JSON.parse(JSON.stringify(res.tempFilePaths));
+						const arr = await that.$apifile(`/applet/upload`, 'file', tempFile[0],
+							'file');
+						if (arr.errcode == '0') {
+							let mess = {
+								type: 'image',
+								content: serverFile + arr.data.uri,
+								time: new Date() - 0
+							}
+							that.sendmessage(mess)
+						} else {
+							uni.showToast({
+								title: arr.errmsg,
+								icon: 'none'
+							});
+						}
+					}
+				});
+			},
+			//发送
+			sendmessage(msg) {
+				const that = this;
+				that.$emit('toSend', msg);
+				that.$set(that, `ismore`, false);
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	.displaynone {
+		display: none;
+	}
+
+	.submit-chat {
+		display: flex;
+		align-items: center;
+		box-sizing: border-box;
+		padding: 3vw;
+
+		.chat-send {
+			width: 75vw;
+			height: 35px;
+			background: #F7F7F9;
+			border-radius: 2vw;
+			padding: 2vw;
+			margin: 0 2vw;
+			font-size: var(--font14Size);
+			box-sizing: border-box;
+		}
+
+		.onRecorder {
+			width: 75vw;
+			height: 35px;
+			text-align: center;
+			background: #F7F7F9;
+			border-radius: 2vw;
+			padding: 2vw;
+			margin: 0 2vw;
+			font-size: var(--font14Size);
+			box-sizing: border-box;
+		}
+
+		#inRecorder {
+			background: #cdcdcd;
+		}
+
+	}
+
+	.more {
+		width: 100%;
+		height: 450rpx;
+		background: #ecedee;
+		box-shadow: 0px 11rpx 0px 0px rgba(0, 0, 0, 0.1);
+		bottom: env(safe-area-inset-bottom);
+		padding: 8rpx;
+		box-sizing: border-box;
+
+		.more_1 {
+			display: flex;
+			flex-wrap: wrap;
+
+			.more-list {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				width: 15vw;
+				margin: 2vw;
+				padding: 2vw;
+				background-color: #ffffff;
+				border-radius: 5px;
+
+				.more-list-title {
+					margin: 1vw 0;
+					font-size: 14px;
+					color: rgba(39, 40, 50, 0.5);
+				}
+			}
+		}
+	}
+</style>

+ 51 - 183
pagesHome/friend/index.vue

@@ -7,18 +7,20 @@
 						<view class="time" v-if="index == 0 || item.time - list[index-1].time >= 300000">
 							<text>{{formatDate(item.time)}}</text>
 						</view>
-						<view class="list" :id="item.speaker != user._id ? 'left' : 'right'">
-							<image class="avatar" :src="item.avatar"></image>
+						<view class="list" :id="item.speaker._id != user._id ? 'left' : 'right'">
+							<image class="avatar"
+								:src="item.speaker&&item.speaker.icon.length>0?item.speaker.icon[0].url:config.user_url[0].url"
+								mode=""></image>
 							<text class="record" v-if="item.type == 'text'">{{item.content}}</text>
 							<image :src="item.content" v-if="item.type == 'image'" @tap="onPreview(item.content)"
 								mode="widthFix">
 							</image>
 							<view class="record" v-if="item.type == 'record'" @tap="onPlay(item.voice,index)">
-								<uni-icons v-if="item.speaker != user._id" custom-prefix="iconfont"
+								<uni-icons v-if="item.speaker._id != user._id" custom-prefix="iconfont"
 									type="icon-zuobofang" size="15" color="#333333">
 								</uni-icons>
 								<text class="voice">{{item.content}}</text>"
-								<uni-icons v-if="item.speaker == user._id" custom-prefix="iconfont"
+								<uni-icons v-if="item.speaker._id == user._id" custom-prefix="iconfont"
 									type="icon-youbofang" size="15" color="#ffffff">
 								</uni-icons>
 							</view>
@@ -29,24 +31,9 @@
 			</scroll-view>
 		</view>
 		<view class="bottom">
-			<uni-icons v-if="!isRecorder" @tap="onRecorderchange" type="mic" size="25" color="#333333"></uni-icons>
-			<uni-icons v-else @tap="onRecorderchange" type="mic-filled" size="25" color="#333333"></uni-icons>
-			<view class="onRecorder" v-if="isRecorder" @touchstart="onStart" @touchend="onEnd"
-				:id="inrecord ? 'inRecorder' : ''">
-				按住说话
-			</view>
-			<input type="text" placeholder="输入你想说的话" v-model="chat" confirm-type="send" @confirm="onSend" v-else>
-			<uni-icons @tap="showPopup" type="plus" size="30" color="#333333"></uni-icons>
+			<submit_1 :record="record" :inrecord="inrecord" :isRecorder="isRecorder" @toSend="toSend" @heights="heights"
+				@onRecorderchange="onRecorderchange" @onStart="onStart" @onEnd="onEnd"></submit_1>
 		</view>
-		<!-- 底部弹出层 -->
-		<uni-popup ref="popup" background-color="#fff">
-			<view class="other">
-				<view class="list" @tap="chooseImage">
-					<uni-icons type="image-filled" size="26" color="#8183F2"></uni-icons>
-					<text>图片</text>
-				</view>
-			</view>
-		</uni-popup>
 		<!-- 语音 -->
 		<uni-popup ref="voice" background-color="#fff">
 			<view class="image">
@@ -57,7 +44,11 @@
 </template>
 
 <script>
+	import submit_1 from './common/submit_1.vue';
 	export default {
+		components: {
+			submit_1,
+		},
 		data() {
 			return {
 				id: '',
@@ -70,51 +61,14 @@
 				user: {},
 				config: {},
 				// 聊天列表数据
-				list: [{
-						content: "这是一条虚拟消息",
-						speaker: '6535c8a6fbaf18f8aa656800',
-						type: 'text',
-						avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-						time: 1683791638972
-					},
-					{
-						content: "哈哈",
-						speaker: '6535c8a6fbaf18f8aa656800',
-						type: 'text',
-						avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-						time: 1683793245623
-					},
-					{
-						content: "https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png",
-						speaker: '6535c8a6fbaf18f8aa656800',
-						type: 'image',
-						avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-						time: 1683793315399
-					},
-					{
-						content: "这是一条虚拟消息",
-						speaker: '6535c8a6fbaf18f8aa65680c',
-						type: 'text',
-						avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-						time: 1683793764803
-					},
-					{
-						content: "10",
-						voice: "http://tmp/PlLDxzC6sRZc42d3f3f69e818a1612ed8917a6dff9eb.durationTime=2906.aac",
-						speaker: '6535c8a6fbaf18f8aa656800',
-						type: 'record',
-						avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-						time: 1683795488873
-					},
-				],
+				list: [],
 				total: 0,
 				skip: 0,
 				limit: 20,
-				bgAudioManager: '', // 全局音频播放
 				record: '', // 全局唯一录音管理区
 				inrecord: false, // 是否处于录音状态
-				chat: '', // 用户在聊天框中输入的内容
 				isRecorder: false, // 是否处于语音状态
+				bgAudioManager: '', // 全局音频播放
 				poaMessgae: 'poaMessgae',
 			}
 		},
@@ -202,6 +156,11 @@
 					}
 				}
 			},
+			//输入框高度
+			heights(e) {
+				const that = this;
+				that.poalast()
+			},
 			// 切换语音 or 键盘
 			onRecorderchange() {
 				const that = this
@@ -235,19 +194,13 @@
 						return that.global.toast('请说话久一点')
 					}
 					let mess = {
-						speaker: that.user._id,
-						speaker_type: that.user.role,
-						group: that.groupId,
-						patient: that.patientId,
-						doctor: that.doctorId,
-						avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
 						type: 'record',
 						voice: res.tempFilePath,
 						content: Math.round(res.duration / 1000), // 时长
 						time: new Date() - 0
 					}
 					// 写在上传回调内
-					that.sendmessage(JSON.stringify(mess))
+					that.toSend(mess)
 				})
 				that.record.onError(err => {
 					that.global.toast('获取录音失败')
@@ -265,75 +218,40 @@
 					that.bgAudioManager = null
 				})
 			},
-			// 点击更多
-			showPopup() {
-				const that = this
-				that.$refs.popup.open('bottom')
-			},
 			// 预览图片
 			onPreview(e) {
 				uni.previewImage({
 					urls: [e]
 				})
 			},
-			// input 输入框 回车发送消息事件
-			onSend() {
-				const that = this
-				// 发送消息需要将 对象转换成字符串格式 接收消息在转换成对象
-				let mess = {
+			// 发送消息
+			async toSend(e) {
+				const that = this;
+				const mess = {
 					speaker: that.user._id,
 					speaker_type: that.user.role,
 					group: that.groupId,
 					patient: that.patientId,
 					doctor: that.doctorId,
-					avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-					type: 'text',
-					content: that.chat,
-					time: new Date() - 0
 				}
-				that.sendmessage(JSON.stringify(mess))
-				that.chat = ''
-			},
-			// 发送图片
-			chooseImage() {
-				const that = this;
-				let serverFile = that.$config.serverFile;
-				uni.chooseImage({
-					count: 1,
-					sizeType: ['original', 'compressed'],
-					sourceType: ['album', 'camera'],
-					success: async function(res) {
-						let tempFile = JSON.parse(JSON.stringify(res.tempFilePaths));
-						const arr = await that.$apifile(`/applet/upload`, 'file', tempFile[0],
-							'file');
-						if (arr.errcode == '0') {
-							let mess = {
-								speaker: that.user._id,
-								speaker_type: that.user.role,
-								group: that.groupId,
-								patient: that.patientId,
-								doctor: that.doctorId,
-								avatar: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
-								type: 'image',
-								content: serverFile + arr.data.uri,
-								time: new Date() - 0
-							}
-							that.sendmessage(JSON.stringify(mess))
-							that.$refs.popup.close()
-						} else {
-							uni.showToast({
-								title: arr.errmsg,
-								icon: 'none'
-							});
-						}
-					}
-				});
-			},
-			// 发送消息
-			sendmessage(e) {
-				const that = this;
-				that.list.push(JSON.parse(e))
-				that.poalast() // 定位消息最后一行
+				const data = {
+					...e,
+					...mess
+				}
+				let res = await that.$api(`/chat`, 'POST', data)
+				if (res.errcode == '0') {
+					that.list.push({
+						...e,
+						...mess
+					});
+					that.$set(that, `isRecorder`, false);
+					that.poalast() // 定位消息最后一行
+				} else {
+					uni.showToast({
+						title: res.errmsg,
+						icon: 'none'
+					});
+				}
 			},
 			// 定位到消息最后一行
 			poalast() {
@@ -365,7 +283,7 @@
 				display: flex;
 				align-items: center;
 				flex-direction: column;
-				margin-bottom: 2vw;
+				margin: 2vw 0;
 
 				text {
 					background: rgba(0, 0, 0, 0.6);
@@ -439,51 +357,7 @@
 		}
 
 		.bottom {
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			padding: 3vw;
 			background: var(--mainColor);
-
-			input {
-				width: 75vw;
-				height: 6vh;
-				background: #F7F7F9;
-				border-radius: 2vw;
-				padding: 0 2vw;
-				font-size: var(--font14Size);
-				box-sizing: border-box;
-			}
-
-			.onRecorder {
-				width: 75vw;
-				height: 6vh;
-				line-height: 6vh;
-				text-align: center;
-				background: #F7F7F9;
-				border-radius: 2vw;
-				padding: 0 2vw;
-				font-size: var(--font14Size);
-				box-sizing: border-box;
-			}
-
-			#inRecorder {
-				background: #cdcdcd;
-			}
-		}
-	}
-
-	.scroll-view {
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-
-		.list-scroll-view {
-			display: flex;
-			flex-direction: column;
-			margin: 2vw;
 		}
 	}
 
@@ -497,23 +371,17 @@
 		}
 	}
 
-	.other {
-		display: flex;
-		align-items: center;
-		padding: 6vw;
-		box-sizing: border-box;
+	.scroll-view {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
 
-		.list {
+		.list-scroll-view {
 			display: flex;
-			align-items: center;
 			flex-direction: column;
-			margin-right: 2vw;
-
-			text {
-				font-size: var(--font13Size);
-				color: var(--f33Color);
-				margin-top: 1vw;
-			}
+			margin: 0 2vw;
 		}
 	}
 </style>

+ 233 - 39
pagesMy/group/index.vue

@@ -1,20 +1,51 @@
 <template>
+	<!-- 禁止滚动穿透 -->
+	<page-meta :page-style="'overflow:'+(show?'hidden':'visible')"></page-meta>
 	<view class="main">
 		<view class="one">
-			<input type="text" v-model="searchInfo.name" @input="toInput" placeholder="搜索群组名称">
+			<view class="one_1">
+				<input type="text" v-model="searchInfo.name" @input="toInput" placeholder="搜索群组名称">
+			</view>
+			<view class="one_2">
+				<button size="mini" class="button" type="primary" @click="toAdd">添加</button>
+			</view>
 		</view>
 		<view class="two">
 			<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
 				<view class="list-scroll-view">
-					<view class="list" v-for="(item, index) in list" :key="index" @tap="toInfo(item)">
-						1111
-					</view>
-					<view class="is_bottom" v-if="is_bottom">
-						<text>{{config.bottom_title||'到底了!'}}</text>
+					<view class="list" v-for="(item, index) in list" :key="index" @tap="toView(item)">
+						<view class="title">{{item.name||'暂无群组名称'}}</view>
+						<view class="button">
+							<button class="warning" size="mini" type="warn" @tap.stop="toEdit(item)">修改</button>
+							<button class="warning" size="mini" type="warn" @tap.stop="toCode(item)">群二维码</button>
+							<button class="danger" size="mini" type="warn" @tap.stop="toDel(item)">删除</button>
+						</view>
 					</view>
 				</view>
+				<view class="is_bottom" v-if="is_bottom">
+					<text>{{config.bottom_title||'到底了!'}}</text>
+				</view>
 			</scroll-view>
 		</view>
+		<uni-popup ref="popup" background-color="#fff" type="center" :is-mask-click="false" @change="change">
+			<view class="popup">
+				<view class="close">
+					<text>信息管理</text>
+					<uni-icons @tap="toClose" type="close" size="20"></uni-icons>
+				</view>
+				<view class="info_1">
+					<uni-forms ref="valiForm" :rules="rules" :modelValue="form">
+						<uni-forms-item label="群名" required name="name">
+							<uni-easyinput v-model="form.name" placeholder="请输入群名" />
+						</uni-forms-item>
+						<uni-forms-item label="简介" required name="content">
+							<uni-easyinput type="textarea" autoHeight v-model="form.content" placeholder="请输入简介" />
+						</uni-forms-item>
+					</uni-forms>
+					<button class="button" size="mini" type="primary" @click="submit('valiForm')">保存</button>
+				</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
@@ -22,26 +53,42 @@
 	export default {
 		data() {
 			return {
-				config: {},
 				user: {},
+				config: {},
+				searchInfo: {},
 				list: [],
 				total: 0,
 				skip: 0,
-				limit: 6,
+				limit: 10,
 				page: 0,
+				form: {},
+				// 校验规则
+				rules: {
+					name: {
+						rules: [{
+							required: true,
+							errorMessage: '群名不能为空'
+						}]
+					},
+					content: {
+						rules: [{
+							required: true,
+							errorMessage: '简介不能为空'
+						}]
+					}
+				},
 				// 数据是否触底
 				is_bottom: false,
 				scrollTop: 0,
+				// 禁止滚动穿透
+				show: false
 			}
 		},
-		onLoad: async function(e) {
-			const that = this;
-			that.searchToken();
-			that.searchConfig();
-		},
 		onShow: async function() {
 			const that = this;
 			that.clearPage();
+			await that.searchToken();
+			await that.searchConfig();
 			await that.search();
 		},
 		onPullDownRefresh: async function() {
@@ -51,7 +98,11 @@
 			uni.stopPullDownRefresh();
 		},
 		methods: {
-			// 用户信息
+			// 禁止滚动穿透
+			change(e) {
+				const that = this;
+				that.show = e.show
+			},
 			searchToken() {
 				const that = this;
 				try {
@@ -71,11 +122,13 @@
 			},
 			async search() {
 				const that = this;
+				let user = that.user;
 				let info = {
 					skip: that.skip,
 					limit: that.limit,
-					is_use: '0'
 				}
+				if (that.user.role == 'Doctor') info.doctor = that.user._id
+				else info.doctor = that.user.doctor
 				const res = await that.$api(`/group`, 'GET', {
 					...info,
 					...that.searchInfo
@@ -87,24 +140,89 @@
 				} else {
 					uni.showToast({
 						title: res.errmsg,
-						icon: 'none'
 					});
 				}
 			},
 			// 输入框
 			toInput(e) {
 				const that = this;
-				if (that.searchInfo.name) that.$set(that.searchInfo, `name`, e.detail.value)
+				if (that.searchInfo.title) that.$set(that.searchInfo, `title`, e.detail.value)
 				else that.$set(that, `searchInfo`, {})
 				that.clearPage();
 				that.search();
 			},
-			// 查看详情
-			toInfo(item) {
-				uni.navigateTo({
-					url: `/pagesScience/science/index?id=${item.id||item._id}`
+			// 添加
+			toAdd() {
+				const that = this;
+				that.$refs.popup.open()
+			},
+			// 二维码
+			toCode() {
+				const that = this;
+				console.log('二维码');
+			},
+			// 修改
+			async toEdit(item) {
+				const that = this;
+				const res = await that.$api(`/group/${item._id}`, 'GET', {})
+				if (res.errcode == '0') {
+					that.$set(that, `form`, res.data)
+					that.$refs.popup.open()
+				} else {
+					uni.showToast({
+						title: res.errmsg,
+						icon: 'none'
+					});
+				}
+			},
+			// 保存
+			submit(ref) {
+				const that = this;
+				that.$refs[ref].validate().then(async form => {
+					let res;
+					if (form._id) res = await that.$api(`/group/${form._id}`, 'POST', form)
+					else res = await that.$api(`/group`, 'POST', form)
+					if (res.errcode == '0') {
+						that.toClose();
+						that.clearPage();
+						that.search();
+					} else {
+						uni.showToast({
+							title: res.errmsg,
+							icon: 'none'
+						});
+					}
 				})
 			},
+			// 删除
+			async toDel(item) {
+				const that = this;
+				uni.showModal({
+					title: '提示',
+					content: '您确定删除该数据吗?',
+					success: async function(res) {
+						if (res.confirm) {
+							const res = await that.$api(`/group/${item._id||item.id}`, 'DELETE', {},
+								'freeLabel')
+							if (res.errcode == 0) {
+								that.clearPage();
+								that.search();
+							} else {
+								uni.showToast({
+									title: res.errmsg,
+									icon: 'none'
+								})
+							}
+						}
+					}
+				});
+			},
+			// 关闭弹框
+			toClose() {
+				const that = this;
+				that.$set(that, `form`, {})
+				that.$refs.popup.close();
+			},
 			// 分页
 			toPage(e) {
 				const that = this;
@@ -135,7 +253,7 @@
 				const that = this;
 				that.$set(that, `list`, [])
 				that.$set(that, `skip`, 0)
-				that.$set(that, `limit`, 6)
+				that.$set(that, `limit`, 10)
 				that.$set(that, `page`, 0)
 			}
 		}
@@ -148,56 +266,132 @@
 		flex-direction: column;
 		width: 100vw;
 		height: 100vh;
-	
+
 		.one {
 			display: flex;
 			justify-content: center;
 			align-items: center;
 			padding: 2vw;
-	
-			input {
-				width: 100%;
-				padding: 2vw;
-				background-color: var(--f1Color);
-				font-size: var(--font14Size);
-				border-radius: 5px;
+
+			.one_1 {
+				padding: 0 2vw;
+				width: 75vw;
+
+				input {
+					padding: 2vw;
+					background-color: var(--f1Color);
+					font-size: var(--font14Size);
+					border-radius: 5px;
+				}
+			}
+
+			.one_2 {
+				padding: 2vw 0;
+
+				.button {
+					background-color: var(--f3CColor);
+					color: var(--mainColor);
+				}
 			}
 		}
-	
+
 		.two {
 			position: relative;
 			flex-grow: 1;
 			background-color: var(--f9Color);
-			margin: 2vw 0 0 0;
-	
+
+			.list:first-child {
+				margin: 2vw;
+			}
+
 			.list {
-				display: flex;
 				background-color: var(--mainColor);
 				border: 1px solid var(--f5Color);
 				padding: 2vw;
-				margin: 2vw 2vw 0 2vw;
+				margin: 0 2vw 2vw 2vw;
 				border-radius: 5px;
+
+				.title {
+					font-size: var(--font14Size);
+					font-weight: bold;
+					padding: 2vw 0;
+				}
+
+
+				.button {
+					margin: 2vw 0 0 0;
+					text-align: center;
+
+					.warning {
+						background: var(--f3CColor);
+					}
+
+					.danger {
+						background: var(--fF0Color);
+					}
+
+					button {
+						margin: 0 1vw 0 0;
+					}
+				}
+			}
+		}
+
+		.uni-popup {
+			z-index: 9999 !important;
+		}
+
+		.popup {
+			display: flex;
+			flex-direction: column;
+			width: 90vw;
+			height: 35vh;
+			background-color: var(--f9Color);
+
+			.close {
+				display: flex;
+				justify-content: space-between;
+				padding: 2vw;
+
+				text:first-child {
+					font-size: var(--font16Size);
+					font-weight: bold;
+				}
+			}
+
+			.info_1 {
+				position: relative;
+				display: flex;
+				flex-direction: column;
+				max-height: 30vh;
+				padding: 2vw;
+
+				.button {
+					background-color: var(--f3CColor);
+					color: var(--mainColor);
+					font-size: var(--font14Size);
+				}
 			}
 		}
 	}
-	
+
 	.scroll-view {
 		position: absolute;
 		top: 0;
 		left: 0;
 		right: 0;
 		bottom: 0;
-	
+
 		.list-scroll-view {
 			display: flex;
 			flex-direction: column;
 		}
 	}
-	
+
 	.is_bottom {
 		width: 100%;
 		text-align: center;
-	
+
 		text {
 			padding: 2vw 0;
 			display: inline-block;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/components/upload/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/science/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/friend/common/submit_1.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/friend/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/group/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/other/agree.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMy/answer/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMy/basic/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesMy/group/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pagesScience/science/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
unpackage/dist/dev/mp-weixin/common/runtime.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 17800 - 16769
unpackage/dist/dev/mp-weixin/common/vendor.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 15 - 15
unpackage/dist/dev/mp-weixin/components/upload/index.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 50 - 5
unpackage/dist/dev/mp-weixin/pages/home/index.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/home/index.wxml


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 54 - 51
unpackage/dist/dev/mp-weixin/pages/my/index.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 19133
unpackage/dist/dev/mp-weixin/pagesHome/common/vendor.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 351 - 0
unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.js


+ 6 - 0
unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons"
+  },
+  "component": true
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.wxml


+ 65 - 0
unpackage/dist/dev/mp-weixin/pagesHome/friend/common/submit_1.wxss

@@ -0,0 +1,65 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.displaynone.data-v-81732052 {
+  display: none;
+}
+.submit-chat.data-v-81732052 {
+  display: flex;
+  align-items: center;
+  box-sizing: border-box;
+  padding: 3vw;
+}
+.submit-chat .chat-send.data-v-81732052 {
+  width: 75vw;
+  height: 35px;
+  background: #F7F7F9;
+  border-radius: 2vw;
+  padding: 2vw;
+  margin: 0 2vw;
+  font-size: var(--font14Size);
+  box-sizing: border-box;
+}
+.submit-chat .onRecorder.data-v-81732052 {
+  width: 75vw;
+  height: 35px;
+  text-align: center;
+  background: #F7F7F9;
+  border-radius: 2vw;
+  padding: 2vw;
+  margin: 0 2vw;
+  font-size: var(--font14Size);
+  box-sizing: border-box;
+}
+.submit-chat #inRecorder.data-v-81732052 {
+  background: #cdcdcd;
+}
+.more.data-v-81732052 {
+  width: 100%;
+  height: 450rpx;
+  background: #ecedee;
+  box-shadow: 0px 11rpx 0px 0px rgba(0, 0, 0, 0.1);
+  bottom: env(safe-area-inset-bottom);
+  padding: 8rpx;
+  box-sizing: border-box;
+}
+.more .more_1.data-v-81732052 {
+  display: flex;
+  flex-wrap: wrap;
+}
+.more .more_1 .more-list.data-v-81732052 {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 15vw;
+  margin: 2vw;
+  padding: 2vw;
+  background-color: #ffffff;
+  border-radius: 5px;
+}
+.more .more_1 .more-list .more-list-title.data-v-81732052 {
+  margin: 1vw 0;
+  font-size: 14px;
+  color: rgba(39, 40, 50, 0.5);
+}
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 88 - 213
unpackage/dist/dev/mp-weixin/pagesHome/friend/index.js


+ 2 - 1
unpackage/dist/dev/mp-weixin/pagesHome/friend/index.json

@@ -2,6 +2,7 @@
   "navigationBarTitleText": "好友",
   "usingComponents": {
     "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons",
-    "uni-popup": "/uni_modules/uni-popup/components/uni-popup/uni-popup"
+    "uni-popup": "/uni_modules/uni-popup/components/uni-popup/uni-popup",
+    "submit_1": "/pagesHome/friend/common/submit_1"
   }
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesHome/friend/index.wxml


+ 8 - 52
unpackage/dist/dev/mp-weixin/pagesHome/friend/index.wxss

@@ -16,7 +16,7 @@
   display: flex;
   align-items: center;
   flex-direction: column;
-  margin-bottom: 2vw;
+  margin: 2vw 0;
 }
 .main .content .time text.data-v-ce92db0a {
   background: rgba(0, 0, 0, 0.6);
@@ -74,34 +74,15 @@
   color: var(--mainColor);
 }
 .main .bottom.data-v-ce92db0a {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  padding: 3vw;
   background: var(--mainColor);
 }
-.main .bottom input.data-v-ce92db0a {
-  width: 75vw;
-  height: 6vh;
-  background: #F7F7F9;
-  border-radius: 2vw;
-  padding: 0 2vw;
-  font-size: var(--font14Size);
-  box-sizing: border-box;
-}
-.main .bottom .onRecorder.data-v-ce92db0a {
-  width: 75vw;
-  height: 6vh;
-  line-height: 6vh;
-  text-align: center;
-  background: #F7F7F9;
-  border-radius: 2vw;
-  padding: 0 2vw;
-  font-size: var(--font14Size);
-  box-sizing: border-box;
+.image.data-v-ce92db0a {
+  display: flex;
+  align-items: center;
 }
-.main .bottom #inRecorder.data-v-ce92db0a {
-  background: #cdcdcd;
+.image .avatar.data-v-ce92db0a {
+  width: 50vw;
+  height: 50vw;
 }
 .scroll-view.data-v-ce92db0a {
   position: absolute;
@@ -113,31 +94,6 @@
 .scroll-view .list-scroll-view.data-v-ce92db0a {
   display: flex;
   flex-direction: column;
-  margin: 2vw;
-}
-.image.data-v-ce92db0a {
-  display: flex;
-  align-items: center;
-}
-.image .avatar.data-v-ce92db0a {
-  width: 50vw;
-  height: 50vw;
-}
-.other.data-v-ce92db0a {
-  display: flex;
-  align-items: center;
-  padding: 6vw;
-  box-sizing: border-box;
-}
-.other .list.data-v-ce92db0a {
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  margin-right: 2vw;
-}
-.other .list text.data-v-ce92db0a {
-  font-size: var(--font13Size);
-  color: var(--f33Color);
-  margin-top: 1vw;
+  margin: 0 2vw;
 }
 

+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesHome/group/index.js

@@ -101,7 +101,7 @@ var components
 try {
   components = {
     uniPopup: function () {
-      return __webpack_require__.e(/*! import() | uni_modules/uni-popup/components/uni-popup/uni-popup */ "uni_modules/uni-popup/components/uni-popup/uni-popup").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 303))
+      return __webpack_require__.e(/*! import() | uni_modules/uni-popup/components/uni-popup/uni-popup */ "uni_modules/uni-popup/components/uni-popup/uni-popup").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 165))
     },
   }
 } catch (e) {

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 108 - 108
unpackage/dist/dev/mp-weixin/pagesHome/other/agree.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 16 - 16
unpackage/dist/dev/mp-weixin/pagesMy/answer/index.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 17 - 17
unpackage/dist/dev/mp-weixin/pagesMy/basic/index.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 295 - 75
unpackage/dist/dev/mp-weixin/pagesMy/group/index.js


+ 7 - 1
unpackage/dist/dev/mp-weixin/pagesMy/group/index.json

@@ -1,4 +1,10 @@
 {
   "navigationBarTitleText": "群组信息",
-  "usingComponents": {}
+  "usingComponents": {
+    "uni-popup": "/uni_modules/uni-popup/components/uni-popup/uni-popup",
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons",
+    "uni-forms": "/uni_modules/uni-forms/components/uni-forms/uni-forms",
+    "uni-forms-item": "/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item",
+    "uni-easyinput": "/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput"
+  }
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMy/group/index.wxml


+ 65 - 5
unpackage/dist/dev/mp-weixin/pagesMy/group/index.wxss

@@ -13,27 +13,87 @@
   align-items: center;
   padding: 2vw;
 }
-.main .one input.data-v-1761c2b6 {
-  width: 100%;
+.main .one .one_1.data-v-1761c2b6 {
+  padding: 0 2vw;
+  width: 75vw;
+}
+.main .one .one_1 input.data-v-1761c2b6 {
   padding: 2vw;
   background-color: var(--f1Color);
   font-size: var(--font14Size);
   border-radius: 5px;
 }
+.main .one .one_2.data-v-1761c2b6 {
+  padding: 2vw 0;
+}
+.main .one .one_2 .button.data-v-1761c2b6 {
+  background-color: var(--f3CColor);
+  color: var(--mainColor);
+}
 .main .two.data-v-1761c2b6 {
   position: relative;
   flex-grow: 1;
   background-color: var(--f9Color);
-  margin: 2vw 0 0 0;
+}
+.main .two .list.data-v-1761c2b6:first-child {
+  margin: 2vw;
 }
 .main .two .list.data-v-1761c2b6 {
-  display: flex;
   background-color: var(--mainColor);
   border: 1px solid var(--f5Color);
   padding: 2vw;
-  margin: 2vw 2vw 0 2vw;
+  margin: 0 2vw 2vw 2vw;
   border-radius: 5px;
 }
+.main .two .list .title.data-v-1761c2b6 {
+  font-size: var(--font14Size);
+  font-weight: bold;
+  padding: 2vw 0;
+}
+.main .two .list .button.data-v-1761c2b6 {
+  margin: 2vw 0 0 0;
+  text-align: center;
+}
+.main .two .list .button .warning.data-v-1761c2b6 {
+  background: var(--f3CColor);
+}
+.main .two .list .button .danger.data-v-1761c2b6 {
+  background: var(--fF0Color);
+}
+.main .two .list .button button.data-v-1761c2b6 {
+  margin: 0 1vw 0 0;
+}
+.main .uni-popup.data-v-1761c2b6 {
+  z-index: 9999 !important;
+}
+.main .popup.data-v-1761c2b6 {
+  display: flex;
+  flex-direction: column;
+  width: 90vw;
+  height: 35vh;
+  background-color: var(--f9Color);
+}
+.main .popup .close.data-v-1761c2b6 {
+  display: flex;
+  justify-content: space-between;
+  padding: 2vw;
+}
+.main .popup .close text.data-v-1761c2b6:first-child {
+  font-size: var(--font16Size);
+  font-weight: bold;
+}
+.main .popup .info_1.data-v-1761c2b6 {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  max-height: 30vh;
+  padding: 2vw;
+}
+.main .popup .info_1 .button.data-v-1761c2b6 {
+  background-color: var(--f3CColor);
+  color: var(--mainColor);
+  font-size: var(--font14Size);
+}
 .scroll-view.data-v-1761c2b6 {
   position: absolute;
   top: 0;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 16 - 16
unpackage/dist/dev/mp-weixin/pagesScience/science/index.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 15 - 15
unpackage/dist/dev/mp-weixin/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 14 - 14
unpackage/dist/dev/mp-weixin/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 682 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js


+ 6 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons"
+  },
+  "component": true
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxml


+ 112 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxss

@@ -0,0 +1,112 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.uni-easyinput {
+  width: 100%;
+  flex: 1;
+  position: relative;
+  text-align: left;
+  color: #333;
+  font-size: 14px;
+}
+.uni-easyinput__content {
+  flex: 1;
+  width: 100%;
+  display: flex;
+  box-sizing: border-box;
+  flex-direction: row;
+  align-items: center;
+  border-color: #fff;
+  transition-property: border-color;
+  transition-duration: 0.3s;
+}
+.uni-easyinput__content-input {
+  width: auto;
+  position: relative;
+  overflow: hidden;
+  flex: 1;
+  line-height: 1;
+  font-size: 14px;
+  height: 35px;
+}
+.uni-easyinput__placeholder-class {
+  color: #999;
+  font-size: 12px;
+}
+.is-textarea {
+  align-items: flex-start;
+}
+.is-textarea-icon {
+  margin-top: 5px;
+}
+.uni-easyinput__content-textarea {
+  position: relative;
+  overflow: hidden;
+  flex: 1;
+  line-height: 1.5;
+  font-size: 14px;
+  margin: 6px;
+  margin-left: 0;
+  height: 80px;
+  min-height: 80px;
+  min-height: 80px;
+  width: auto;
+}
+.input-padding {
+  padding-left: 10px;
+}
+.content-clear-icon {
+  padding: 0 5px;
+}
+.label-icon {
+  margin-right: 5px;
+  margin-top: -1px;
+}
+.is-input-border {
+  display: flex;
+  box-sizing: border-box;
+  flex-direction: row;
+  align-items: center;
+  border: 1px solid #F0F0F0;
+  border-radius: 4px;
+}
+.uni-error-message {
+  position: absolute;
+  bottom: -17px;
+  left: 0;
+  line-height: 12px;
+  color: #e43d33;
+  font-size: 12px;
+  text-align: left;
+}
+.uni-error-msg--boeder {
+  position: relative;
+  bottom: 0;
+  line-height: 22px;
+}
+.is-input-error-border {
+  border-color: #e43d33;
+}
+.is-input-error-border .uni-easyinput__placeholder-class {
+  color: #f29e99;
+}
+.uni-easyinput--border {
+  margin-bottom: 0;
+  padding: 10px 15px;
+  border-top: 1px #eee solid;
+}
+.uni-easyinput-error {
+  padding-bottom: 0;
+}
+.is-first-border {
+  border: none;
+}
+.is-disabled {
+  background-color: #f7f6f6;
+  color: #d5d5d5;
+}
+.is-disabled .uni-easyinput__placeholder-class {
+  color: #d5d5d5;
+  font-size: 12px;
+}
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 611 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxml


+ 97 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxss

@@ -0,0 +1,97 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.uni-forms-item {
+  position: relative;
+  display: flex;
+  margin-bottom: 22px;
+  flex-direction: row;
+}
+.uni-forms-item__label {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  text-align: left;
+  font-size: 14px;
+  color: #606266;
+  height: 36px;
+  padding: 0 12px 0 0;
+  vertical-align: middle;
+  flex-shrink: 0;
+  box-sizing: border-box;
+}
+.uni-forms-item__label.no-label {
+  padding: 0;
+}
+.uni-forms-item__content {
+  position: relative;
+  font-size: 14px;
+  flex: 1;
+  box-sizing: border-box;
+  flex-direction: row;
+}
+.uni-forms-item .uni-forms-item__nuve-content {
+  display: flex;
+  flex-direction: column;
+  flex: 1;
+}
+.uni-forms-item__error {
+  color: #f56c6c;
+  font-size: 12px;
+  line-height: 1;
+  padding-top: 4px;
+  position: absolute;
+  top: 100%;
+  left: 0;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+  -webkit-transform: translateY(-100%);
+          transform: translateY(-100%);
+  opacity: 0;
+}
+.uni-forms-item__error .error-text {
+  color: #f56c6c;
+  font-size: 12px;
+}
+.uni-forms-item__error.msg--active {
+  opacity: 1;
+  -webkit-transform: translateY(0%);
+          transform: translateY(0%);
+}
+.uni-forms-item.is-direction-left {
+  flex-direction: row;
+}
+.uni-forms-item.is-direction-top {
+  flex-direction: column;
+}
+.uni-forms-item.is-direction-top .uni-forms-item__label {
+  padding: 0 0 8px;
+  line-height: 1.5715;
+  text-align: left;
+  white-space: initial;
+}
+.uni-forms-item .is-required {
+  color: #dd524d;
+  font-weight: bold;
+}
+.uni-forms-item--border {
+  margin-bottom: 0;
+  padding: 10px 0;
+  border-top: 1px #eee solid;
+}
+.uni-forms-item--border .uni-forms-item__content {
+  flex-direction: column;
+  justify-content: flex-start;
+  align-items: flex-start;
+}
+.uni-forms-item--border .uni-forms-item__content .uni-forms-item__error {
+  position: relative;
+  top: 5px;
+  left: 0;
+  padding-top: 0;
+}
+.is-first-border {
+  border: none;
+}
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 563 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxml

@@ -0,0 +1 @@
+<view class="uni-forms"><form><slot></slot></form></view>

+ 4 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxss

@@ -0,0 +1,4 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 15 - 15
unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 15 - 15
unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 15 - 15
unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 11 - 11
unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js