Browse Source

添加消息功能

wkw 7 months ago
parent
commit
6f5f216b6c

+ 43 - 24
comment/api.js

@@ -1,43 +1,62 @@
-import axios from 'axios';
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+import { ROOTPATH } from './httpUrl'
 
-import {
-	ROOTPATH
-} from './httpUrl'
-
-// 创建axios实例  
 const apiClient = axios.create({
-	baseURL: ROOTPATH, // 设置你的API基础URL  
-	timeout: 5000, // 设置请求超时时间(单位:毫秒)  
-});
+	baseURL: ROOTPATH,
+	timeout: 5000
+})
 
-// 添加请求拦截器  
+// 请求拦截器
 apiClient.interceptors.request.use(
 	config => {
-		//判断是否是表单提交form-data格式
 		if (config.type === 'json') {
 			config.headers['Content-Type'] = 'application/json'
 		} else {
 			config.headers['Content-Type'] = 'multipart/form-data'
 		}
-		// 在发送请求之前做些什么(例如:添加请求头,身份验证等)  
-		config.headers['token'] = localStorage.getItem('token');
-		return config;
+
+		// token
+		const token = localStorage.getItem('token')
+		if (token) {
+			config.headers['token'] = token
+		}
+
+		return config
 	},
 	error => {
-		// 对请求错误做些什么(例如:返回错误信息)  
-		return Promise.reject(error);
+		return Promise.reject(error)
 	}
-);
-// 添加响应拦截器  
+)
+
+// 响应拦截器
 apiClient.interceptors.response.use(
 	response => {
-		// 对响应数据做些什么(例如:处理返回的数据,提取有用的信息等)  
-		return response.data;
+		const res = response.data
+
+		// ✅ 判断业务状态码
+		if (res.code !== 0) {
+			// 弹出提示信息
+			ElMessage({
+				message: res.msg || '请求失败',
+				type: 'warning',
+				duration: 2000
+			})
+		}
+
+		// 无论成功失败都返回,方便前端继续逻辑判断
+		return res
 	},
 	error => {
-		// 对响应错误做些什么(例如:返回错误信息,重试等)  
-		return Promise.reject(error);
+		// 网络错误、超时、服务器错误时
+		ElMessage({
+			message: error.message || '网络错误,请稍后再试',
+			type: 'error',
+			duration: 2000
+		})
+
+		return Promise.reject(error)
 	}
-);
+)
 
-export default apiClient;
+export default apiClient

+ 293 - 134
src/components/header/header.vue

@@ -6,25 +6,15 @@
 			</div>
 			<div class="headers-box-right flex align-center">
 				<Notice v-if="gongao.length>0" :lists="gongao" />
-				<div class="flex align-center myVip" v-if="userType == 1" @click="openVip">
-					<el-image style="width: 22px; height: 22px;margin-right: 10px;" src="/images/index/vipIcon.png"
-						fit="cover" />
-					{{ isVip ? '会员用户' : '开通会员' }}
-				</div>
-				<div class="flex align-center myVip" v-else @click="openVip">
-					<el-image style="width: 22px; height: 22px;margin-right: 10px;" src="/images/index/vipIcon.png"
-						fit="cover" />
-					{{ isCompanyVip ? '会员用户' : '开通会员' }}
-				</div>
-				<!--<el-popover ref="popoverRef" trigger="click" :show-arrow="false" :popper-style="popperStyle"
+				<el-popover ref="popoverRef" trigger="click" :show-arrow="false" :popper-style="popperStyle"
 					placement="bottom" :width="340">
 					<template #reference>
-						<div class="flex align-center myVip" v-if="userType==1">
+						<!-- <div class="flex align-center myVip" v-if="userType==1">
 							<el-image style="width: 22px; height: 22px;margin-right: 10px;"
 								src="/images/index/vipIcon.png" fit="cover" />
 							{{isVip?'会员用户':'开通会员'}}
-						</div>
-						<div class="flex align-center myVip" v-else>
+						</div> -->
+						<div class="flex align-center myVip" v-if="userType == 2">
 							<el-image style="width: 22px; height: 22px;margin-right: 10px;"
 								src="/images/index/vipIcon.png" fit="cover" />
 							{{isCompanyVip?'会员用户':'开通会员'}}
@@ -33,20 +23,20 @@
 					 <div class="myVipCon">
 						<div class="myVipCon-bg flex align-center justify-between">
 							<div class="myVipCon-bg-l">
-								<div class="myVipCon-bg-l-title" v-if="userType==1">
+								<!-- <div class="myVipCon-bg-l-title" v-if="userType==1">
 									{{isVip==true?'已开通会员':'开通会员'}}
-								</div>
-								<div class="myVipCon-bg-l-title" v-else>
+								</div> -->
+								<div class="myVipCon-bg-l-title">
 									{{isCompanyVip==true?'已开通会员':'开通会员'}}
 								</div>
 								<div class="myVipCon-bg-l-title">
 									{{userType==1?'提升简历曝光':'提升岗位曝光'}}
 								</div>
-								<div class="myVipCon-bg-l-time" v-if="userType==1">
+								<!-- <div class="myVipCon-bg-l-time" v-if="userType==1">
 									{{isVip==true?'到期时间:'+vipTime:'开通会员更多招聘方联系你'}}
-								</div>
-								<div class="myVipCon-bg-l-time" v-else>
-									{{isCompanyVip==true?'到期时间:'+vipTimeC:'开通会员更多求职者联系你'}}
+								</div> -->
+								<div class="myVipCon-bg-l-time">
+									{{ isCompanyVip ? (vipName + ' 剩余 ' + remainingDays + ' 天到期') : '开通会员更多求职者联系你' }}
 								</div>
 
 							</div>
@@ -54,44 +44,52 @@
 						</div>
 						<div class="myVipCon-icon flex align-center justify-between">
 							<div class="myVipCon-icon-item flex align-center justify-center flex-wrap">
-								<img src="/images/hader/btn1.png" alt="" />
+								<div>{{ myViewTimes }}/{{ vipViewTimes }}</div>
 								<div class="myVipCon-icon-item-txt">
-									专属客服
+									查看权益
 								</div>
 							</div>
 							<div class="myVipCon-icon-item flex align-center justify-center flex-wrap">
-								<img src="/images/hader/btn2.png" alt="" />
+								<div>{{ myConTimes }}/{{ vipConTimes }}</div>
 								<div class="myVipCon-icon-item-txt">
-									{{userType==1?'优先提醒':'优先推荐'}}
+									沟通权益
 								</div>
 							</div>
 							<div class="myVipCon-icon-item flex align-center justify-center flex-wrap">
-								<img src="/images/hader/btn3.png" alt="" />
+								<div>{{ myPostTimes }}/{{ vipPostTimes }}</div>
 								<div class="myVipCon-icon-item-txt">
-									{{userType==1?'简历刷新':'招聘刷新'}}
+									普通职位
 								</div>
 							</div>
 							<div class="myVipCon-icon-item flex align-center justify-center flex-wrap">
-								<img src="/images/hader/btn4.png" alt="" />
+								<div>{{ myDueTimes }}/{{ vipDueTimes }}</div>
 								<div class="myVipCon-icon-item-txt">
-									{{userType==1?'简历置顶':'专属特权'}}
+									急聘职位
 								</div>
 							</div>
 						</div>
-						<div class="myVipCon-li" v-if="userType==1">
+						<!-- <div class="myVipCon-li" v-if="userType==1">
 							<div class="myVipCon-li-sj"></div>
 							<div class="myVipCon-li-con">
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										专属特权
+										在线普通职位
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1"
 										style="font-weight: 500;">
-										普通用户
+										基础权益
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2"
 										style="font-weight: 500;">
-										VIP
+										试用版
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2"
+										style="font-weight: 500;">
+										月付版
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2"
+										style="font-weight: 500;">
+										年度版
 									</div>
 								</div>
 								<div class="myVipCon-li-con-item flex align-center justify-between">
@@ -151,115 +149,166 @@
 									</div>
 								</div>
 							</div>
-						</div>
-						<div class="myVipCon-li" v-else>
+						</div> -->
+						<div class="myVipCon-li" v-if="userType == 2">
 							<div class="myVipCon-li-sj"></div>
 							<div class="myVipCon-li-con">
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										专属特
+										权益类型
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1"
 										style="font-weight: 500;">
-										普通用户
+										基础权益
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2"
 										style="font-weight: 500;">
-										VIP
+										{{ trialVersion.vipName }}
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2"
+										style="font-weight: 500;">
+										{{ monthlyPayment.vipName }}
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2"
+										style="font-weight: 500;">
+										{{ annual.vipName }}
 									</div>
 								</div>
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										招聘刷新
+										在线普通职位
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1">
-										{{noVipNumCom}}次/天
+										1个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ trialVersion.vipPostTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ monthlyPayment.vipPostTimes }}个
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
-										{{vipNumCom}}次/天
+										{{ annual.vipPostTimes }}个
 									</div>
 								</div>
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										优先推荐
+										在线急聘职位
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1">
-										<el-icon :size="iconSize">
-											<Close />
-										</el-icon>
+										0个
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
-										<el-icon :size="iconSize">
-											<Check />
-										</el-icon>
+										{{ trialVersion.vipDueTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ monthlyPayment.vipDueTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ annual.vipDueTimes }}个
 									</div>
 								</div>
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										专属客服
+										每日查看总数
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1">
-										<el-icon :size="iconSize">
-											<Close />
-										</el-icon>
+										5个
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
-										<el-icon :size="iconSize">
-											<Check />
-										</el-icon>
+										{{ trialVersion.vipViewTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ monthlyPayment.vipViewTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ annual.vipViewTimes }}个
 									</div>
 								</div>
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										免费沟通
+										每日沟通总数
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1">
-										{{msgNum}}次/天
+										5个
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
-										{{vipMsgNum}}次/天
+										{{ trialVersion.vipConTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ monthlyPayment.vipConTimes }}个
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ annual.vipConTimes }}个
 									</div>
 								</div>
 								<div class="myVipCon-li-con-item flex align-center justify-between">
 									<div class="myVipCon-li-con-items" style="font-weight: 500;">
-										沟通价格
+										价格
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor1">
-										{{msgPrice}}元/次
+										免费
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ trialVersion.money }}/年
+									</div>
+									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
+										{{ monthlyPayment.money }}/年
 									</div>
 									<div class="myVipCon-li-con-items myVipCon-li-con-itemscolor2">
-										{{vipMsgPrice}}元/次
+										{{ annual.money }}/年
 									</div>
 								</div>
 							</div>
 						</div>
-						<div v-if="userType==1 && isVip==false" class="myVipCon-xy flex align-center">
+						<!-- <div v-if="userType==1 && isVip==false" class="myVipCon-xy flex align-center">
 							<el-checkbox v-model="checkVipXy" style="margin-right: 10px;" size="large" />
 							阅读并同意<span @click="openAgree()">《会员开通协议》</span>
-						</div>
+						</div> -->
 						<div v-if="userType==2 && isCompanyVip==false" class="myVipCon-xy flex align-center">
 							<el-checkbox v-model="checkVipXy" style="margin-right: 10px;" size="large" />
 							阅读并同意<span @click="openAgree()">《会员开通协议》</span>
 						</div>
-						<div v-if="userType==1 && isVip==false" class="myVipCon-btn flex align-center justify-between">
+						<!-- <div v-if="userType==1 && isVip==false" class="myVipCon-btn flex align-center justify-between">
 							<div class="myVipCon-btn-l flex align-center">
 								<span>{{vipPrice}}</span>元/月
 							</div>
 							<div @click="openVipMenber()" class="myVipCon-btn-r flex align-center justify-center">
 								立即开通
 							</div>
-						</div>
+						</div> -->
 						<div v-if="userType==2 && isCompanyVip==false"
 							class="myVipCon-btn flex align-center justify-between">
 							<div class="myVipCon-btn-l flex align-center">
-								<span>{{vipPrice}}</span>元/月
+								<el-dropdown style="width: 100%;" :hide-after-click="false" @click.stop>
+									<span class="el-dropdown-link flex align-center justify-between" style="width: 100%; padding: 0 20px;">
+										<span style="color: #fff">{{ selectedPlan || '选择套餐' }}{{ vipPrice }}</span>
+										<el-icon class="el-icon--right">
+											<arrow-down />
+										</el-icon>
+									</span>
+									<template #dropdown>
+										<el-dropdown-menu>
+											<el-dropdown-item 
+												v-for="(plan, index) in viplist" 
+												:key="plan.id"
+												@click.stop="selectPlan(plan)">
+												{{ plan.vipName }}
+												<span style="margin-left: 10px;">
+													{{ plan.money }}元
+												</span>
+											</el-dropdown-item>
+										</el-dropdown-menu>
+									</template>
+								</el-dropdown>
 							</div>
-							<div @click="openVipMenber()" class="myVipCon-btn-r flex align-center justify-center">
+							<div @click.stop="openVipMenber()" class="myVipCon-btn-r flex align-center justify-center">
 								立即开通
 							</div>
 						</div>
 					</div> 
-				</el-popover>-->
+				</el-popover>
+				<!-- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7 -->
 				<div class="headers-box-right-item flex" @click="goHome()">
 					首页
 				</div>
@@ -557,11 +606,11 @@
 				<div class="wallet-pay">
 					<div class="wallet-pay-se">
 						<el-radio-group @change="changeRadio" v-model="radio" class="ml-4">
-							<el-radio :label="1" size="large" class="flex align-center">
+							<!-- <el-radio :label="1" size="large" class="flex align-center">
 								<img style="width: 30px;height: 30px;border-radius: 50%;margin-right: 10px;"
 									src="/images/money/weixin.png" alt="" />
 								微信支付
-							</el-radio>
+							</el-radio> -->
 							<el-radio :label="2" size="large">
 								<img style="width: 30px;height: 30px;border-radius: 50%;margin-right: 10px;"
 									src="/images/money/zhifubao.png" alt="" />
@@ -577,7 +626,7 @@
 					<div v-if="radio == 2 && alPay" style="margin-top: 20px;margin-bottom: 10px;width: 100%;"
 						class="flex align-center justify-center">
 						<iframe :srcdoc="alPay" frameborder="no" border="0" marginwidth="0" marginheight="0"
-							scrolling="no" width="160" height="160" style="overflow:hidden;"> </iframe>
+							scrolling="no" width="100%" height="200px" style="overflow:hidden;"> </iframe>
 					</div>
 					<div v-if="codeUrl || alPay" style="width: 100%;text-align: center;color: #999999;">
 						{{radio==1?'请使用微信扫码支付':'请使用支付宝扫码支付'}}
@@ -629,7 +678,7 @@
 				alPay: '',
 				orderId: '', //支付订单号
 				timer: null, //查询状态定时器
-				radio: 1, //1:微信支付 2:支付宝支付
+				radio: 2, //1:微信支付 2:支付宝支付
 				size: 160, //二维码大小
 				qrColor: {
 					'background': '#ffffff'
@@ -666,6 +715,7 @@
 				vipTimeC: '', //企业会员到期时间
 				vipTime: '', //用户会员到期时间
 				vipPrice: '0', //会员价格
+				vipId:'',
 				checkVipXy: false,
 				vipNum: 0,
 				noVipNum: 0,
@@ -703,6 +753,22 @@
 				vipMsgNum: 0, //会员每天免费联系次数
 				msgPrice: 0, //非会员每次联系价格
 				vipMsgPrice: 0, //会员每次联系价格
+				// 会员权益
+				myPostTimes: 0,
+				vipDueTimes: 0,
+				vipConTimes: 0,
+				myViewTimes: 0,
+				vipViewTimes: 0,
+				myConTimes: 0,
+				vipPostTimes: 0,
+				myDueTimes: 0,
+				viplist: [],
+				selectedPlan: '',
+				trialVersion: [],
+				monthlyPayment: [],
+				annual: [],
+				remainingDays: 0, // 剩余天数
+				vipName: "",
 			}
 		},
 		created() {
@@ -744,10 +810,13 @@
 			}, 6000);
 			this.getVipPeople()
 			this.getNoVipPeople()
-			this.getVipPrice()
+			// this.getVipPrice()
 			this.getVipCom()
 			this.getNoVipCom()
-
+			// 获取当前用户的vip数据
+			this.getUserInfoVipList();
+			this.selectVipDetails();
+			this.getVipdetile();
 		},
 		computed: {
 			userType() {
@@ -763,16 +832,115 @@
 		watch: {
 			//监听一下用户类型重新去获取开通会员的价格
 			userType() {
-				this.getVipPrice()
+				// this.getVipPrice()
 				this.getgonggaoList()
 			},
 		},
 		methods: {
-			openVip(){
-				ElMessage({
-					message: '请前往首页扫码下载app去使用',
-					type: 'warning',
-				})
+			// openVip(){
+			// 	ElMessage({
+			// 		message: '请前往首页扫码下载app去使用',
+			// 		type: 'warning',
+			// 	})
+			// },
+			//获取vip个人信息
+			getUserInfoVipList() {
+				this.$Request.get("/app/user/vipData").then((res) => {
+					if (res.code == 0) {
+						this.myPostTimes = res.data.myPostTimes || 0
+						this.vipDueTimes = res.data.vipDueTimes || 0
+						this.vipConTimes = res.data.vipConTimes || 0
+						this.myViewTimes = res.data.myViewTimes || 0
+						this.vipViewTimes = res.data.vipViewTimes || 0
+						this.myConTimes = res.data.myConTimes || 0
+						this.vipPostTimes = res.data.vipPostTimes || 0
+						this.myDueTimes = res.data.myDueTimes || 0
+					}
+				});
+			},
+			//vip 套餐
+		selectVipDetails() {
+			this.$Request.get("/app/VipDetails/selectVipDetails").then((res) => {
+				if (res.code == 0) {
+					this.viplist = res.data
+					if (res.data && res.data.length > 0) {
+						this.selectPlan(res.data[0]);
+					}
+					if (res.data) {
+						this.trialVersion = res.data[0];
+						this.monthlyPayment = res.data[1];
+						this.annual = res.data[2];
+					}
+					
+				} else {
+					uni.showToast({
+						title: '暂无VIP套餐',
+						icon: 'none'
+					})
+				}
+			});
+		},
+			// 获取会员到期天数
+			getVipdetile() {
+				this.$Request.get("/app/UserVip/selectUserVip").then((res) => {
+					if (res.code == 0) {
+						if (res.data) {
+							const endTimeStr = res.data.endTime; // 到期时间(格式:yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd)
+							const createTimeStr = res.data.createTime; // 创建时间(格式同上)
+
+							// 1. 时间字符串转时间戳(兼容不同格式)
+							const endTime = this.formatTimeToTimestamp(endTimeStr);
+							const createTime = this.formatTimeToTimestamp(createTimeStr);
+							const currentTime = new Date().getTime(); // 当前时间戳
+
+							// 2. 验证时间有效性
+							if (!endTime || !createTime) {
+								console.error("时间格式错误", { endTimeStr, createTimeStr });
+								this.remainingDays = 0;
+								// this.vipStatus = "已过期";
+
+								return;
+							}
+							if (res.data.vipDetails) {
+								this.vipName = res.data.vipDetails.vipName
+							}
+							// 3. 计算剩余时间(毫秒):到期时间 - 当前时间
+							const remainingTime = endTime - currentTime;
+
+							// 4. 处理不同情况
+							if (remainingTime <= 0) {
+								// 已过期
+								this.remainingDays = 0;
+								// this.vipStatus = "已过期";
+							} else {
+								// 计算剩余天数(向上取整,不足1天按1天算)
+								const days = Math.ceil(remainingTime / (1000 * 60 * 60 * 24));
+								this.remainingDays = days;
+								// this.vipStatus = `剩余${days}天到期`;
+								// // 可选:如果需要显示总有效期(创建到到期的总天数)
+								// this.totalValidDays = Math.ceil((endTime - createTime) / (1000 * 60 * 60 * 24));
+							}
+							
+						}
+					} else {
+						this.remainingDays = 0;
+						this.vipStatus = "未开通VIP";
+					}
+				}).catch((err) => {
+					console.error("获取VIP详情失败", err);
+					this.remainingDays = 0;
+					this.vipStatus = "未开通VIP";
+					// uni.showToast({
+					//     title: "获取VIP信息失败,请重试",
+					//     icon: "none"
+					// });
+				});
+			},
+			formatTimeToTimestamp(timeStr) {
+				if (!timeStr) return null;
+				const formattedTime = timeStr.replace(/-/g, "/");
+				const timestamp = new Date(formattedTime).getTime();
+				return isNaN(timestamp) ? null : timestamp;
 			},
 			//选择地址
 			handleSelect(item) {
@@ -874,7 +1042,7 @@
 				this.orderId = ''
 			},
 			closeVip() {
-				this.radio = 1
+				this.radio = 2
 				this.cleanTimer()
 				this.codeUrl = ''
 				this.alPay = ''
@@ -932,39 +1100,39 @@
 			},
 			//会员支付
 			payMoney() {
-				if (this.radio == 1) { //微信支付
-					// 微信支付
-					let data = {
-						classify: 6,
-						money: this.vipPrice,
-						type: 2,
-					}
-					this.$Request.post('/app/wxPay/wxPayOrder', data).then(res => {
-						if (res.code == 0) {
-							if (res.data) {
-								this.cleanTimer()
-								this.codeUrl = res.data.param.code_url
-								this.orderId = res.data.orderId
-								this.timer = setInterval(() => {
-									this.getPayStatus()
-								}, 1000)
-
-							}
-						} else {
-							this.cleanTimer()
-							ElMessage({
-								message: res.msg,
-								type: 'error',
-								duration: 1500,
-								offset: this.screenHeight / 2
-							})
-						}
-					})
-				} else {
+				// if (this.radio == 1) { //微信支付
+				// 	// 微信支付
+				// 	let data = {
+				// 		classify: 6,
+				// 		money: this.vipPrice,
+				// 		type: 2,
+				// 	}
+				// 	this.$Request.post('/app/wxPay/wxPayOrder', data).then(res => {
+				// 		if (res.code == 0) {
+				// 			if (res.data) {
+				// 				this.cleanTimer()
+				// 				this.codeUrl = res.data.param.code_url
+				// 				this.orderId = res.data.orderId
+				// 				this.timer = setInterval(() => {
+				// 					this.getPayStatus()
+				// 				}, 1000)
+
+				// 			}
+				// 		} else {
+				// 			this.cleanTimer()
+				// 			ElMessage({
+				// 				message: res.msg,
+				// 				type: 'error',
+				// 				duration: 1500,
+				// 				offset: this.screenHeight / 2
+				// 			})
+				// 		}
+				// 	})
+				// } else {
 					let data = {
 						classify: 7,
-						money: this.vipPrice,
-						type: 2,
+						// money: 0.1,
+						type: this.vipId,
 					}
 					this.$Request.post('/app/aliPay/payMoneyOrder', data).then(
 						res => {
@@ -987,7 +1155,7 @@
 								})
 							}
 						});
-				}
+				// }
 
 			},
 			//去企业中心
@@ -1307,21 +1475,12 @@
 					}
 				})
 			},
-			//获取会员开通价格
-			getVipPrice() {
-				if (this.userType == 1) { //用户会员价格
-					this.$Request.get('/app/common/type/331').then(res => {
-						if (res.code == 0) {
-							this.vipPrice = res.data.value
-						}
-					})
-				} else { //企业会员价格
-					this.$Request.get('/app/common/type/332').then(res => {
-						if (res.code == 0) {
-							this.vipPrice = res.data.value
-						}
-					})
-				}
+			// 选择套餐
+			selectPlan(plan) {
+				this.vipId = plan.id;
+				this.selectedPlan = plan.vipName;
+				// 更新会员价格
+				this.vipPrice = plan.money;
 			},
 			//会员简历刷新次数
 			getVipPeople() {
@@ -1356,11 +1515,11 @@
 			},
 			//去消息页面
 			goMessage() {
-				ElMessage({
-					message: '请前往首页扫码下载app去使用',
-					type: 'warning',
-				})
-				return;
+				// ElMessage({
+				// 	message: '请前往首页扫码下载app去使用',
+				// 	type: 'warning',
+				// })
+				// return;
 				if (localStorage.getItem('token')) {
 					this.$router.push({
 						name: 'message'
@@ -1500,7 +1659,7 @@
 						} else {
 							this.$store.commit('SET_USER_TYPE', 2);
 							localStorage.setItem('userType', 2)
-							if (res.data.isCompanyVip == 1) { //判断企业用户是否是vip
+							if (res.data.isCompanyVip + "" == "1") { //判断企业用户是否是vip
 								this.isCompanyVip = true
 								this.vipTimeC = res.data.companyMonthTime
 								this.$store.commit('SET_IS_COMPANY_VIP', true);

+ 99 - 31
src/components/messageCom/messageCom.vue

@@ -20,17 +20,17 @@
 				</div>
 				<div class="my-header flex align-center" v-else>
 					<div class="my-header-title" style="font-weight: bold;">
-						{{resumesInfo.resumesName}}
+						{{resumesInfo.userName}}
 					</div>
 					<el-divider direction="vertical" />
 					<div class="my-header-name">
-						{{resumesInfo.resumesPost}}
+						{{resumesInfo.intentionRuleClassifyName}}
 					</div>
 					<div class="my-header-price">
-						{{resumesInfo.resumesCompensation}}
+						{{resumesInfo.intentionSalaryRange}}
 					</div>
 					<div class="my-header-yq">
-						{{resumesInfo.resumesWorkExperience}}
+						{{ resumesInfo.resumesWorkExperience || '0' }}
 					</div>
 				</div>
 			</template>
@@ -269,19 +269,37 @@
 			<el-dialog v-model="dialogms" title="面试邀请" @close="closeMs" width="30%" :destroy-on-close="true">
 				<div style="padding: 20px;">
 					<el-form label-position="right" ref="formms" :model="miamshi" class="">
+						<el-form-item prop="position"
+							:rules="[{ required: true, message: '请选择面试岗位', trigger: 'blur', },]" label="面试岗位">
+							<el-select v-model="miamshi.position" placeholder="请选择面试岗位" filterable clearable>
+								<el-option v-for="item in jobList" :key="item.id" :label="item.ruleClassifyName"
+									:value="item.ruleClassifyId" />
+							</el-select>
+						</el-form-item>
 						<el-form-item prop="interviewDateTime"
-							:rules="[{required: true,message: '请选择面试时间',trigger: 'blur',},]" label="面试时间">
+							:rules="[{ required: true, message: '请选择面试时间', trigger: 'blur', },]" label="面试时间">
 							<el-date-picker style="width: 100%;" v-model="miamshi.interviewDateTime" type="datetime"
 								placeholder="请选择面试时间" format="YYYY-MM-DD HH:mm" date-format="MMM DD, YYYY"
 								time-format="HH:mm" />
 						</el-form-item>
-						<el-form-item prop="detailedAddress"
-							:rules="[{required: true,message: '请选择面试地点',trigger: 'blur',},]" label="面试地点">
-							<el-autocomplete style="width: 100%;" v-model="miamshi.detailedAddress"
+						<el-form-item prop="address" :rules="[{ required: true, message: '请选择面试地点', trigger: 'blur', },]"
+							label="面试地点">
+							<el-autocomplete style="width: 100%;" v-model="miamshi.address"
 								:fetch-suggestions="querySearchAsync" placeholder="请输入面试地点" @select="handleSelect" />
-							<!-- <el-input v-model="miamshi.detailedAddress" placeholder="请选择面试地点" clearable /> -->
 						</el-form-item>
-						<el-form-item prop="remarks" :rules="[{required: true,message: '请输入备注',trigger: 'blur',},]"
+						<el-form-item prop="detailedAddress"
+							:rules="[{ required: true, message: '请输入详细地址', trigger: 'blur', },]" label="详细地址">
+							<el-input v-model="miamshi.detailedAddress" placeholder="请输入详细地址" clearable />
+						</el-form-item>
+						<el-form-item prop="hrName"
+							:rules="[{ required: true, message: '请输入联系人名称', trigger: 'blur', },]" label="联系姓名">
+							<el-input v-model="miamshi.hrName" placeholder="请输入联系人" clearable />
+						</el-form-item>
+						<el-form-item prop="hrPhone" :rules="[{ required: true, message: '请输入手机号', trigger: 'blur', },]"
+							label="手机号码">
+							<el-input v-model="miamshi.hrPhone" placeholder="请输入手机号" clearable />
+						</el-form-item>
+						<el-form-item prop="remarks" :rules="[{ required: true, message: '请输入备注', trigger: 'blur', },]"
 							label="面试备注">
 							<el-input v-model="miamshi.remarks" placeholder="请输入备注" clearable />
 						</el-form-item>
@@ -290,7 +308,7 @@
 
 
 				<template #footer>
-					<span class="dialog-footer flex align-center justify-end">
+					<span class="dialog-footer flex align-center justify-end" style="padding-right: 20px;padding-bottom: 20px;">
 						<el-button @click="dialogms = false">取消</el-button>
 						<el-button type="primary" @click="submitMs()">
 							确认
@@ -352,6 +370,9 @@
 		data() {
 			return {
 				miamshi: {
+					hrPhone: '', //手机号
+					hrName: '', //联系人
+					position: '', //面试岗位
 					interviewDateTime: '', //面试时间
 					companyId: '', //公司id
 					remarks: '', //面试备注
@@ -362,6 +383,7 @@
 					county: '', //区
 					lng: '', //经度
 					lat: '', //纬度
+					address: '', //地址
 					detailedAddress: '', //详细地址
 				},
 				dialogms: false, //面试邀请弹窗
@@ -410,6 +432,7 @@
 						srcS: '/images/postimg/weichat_s.png',
 					}
 				], //操作图片
+				jobList: []
 			}
 		},
 		computed: {
@@ -438,8 +461,6 @@
 					srcS: '/images/postimg/yms_.png',
 				})
 				this.getPostPushInfo(this.postPushId)
-				//获取简历信息
-				this.getResumesInfo(this.resumesId)
 			}
 			//建立webscoket连接
 			this.initScoket()
@@ -449,28 +470,37 @@
 			//关闭面试邀请回掉
 			closeMs() {
 				//清楚输入的值
-				this.miamshi.interviewDateTime = ''
-				this.miamshi.detailedAddress = ''
-				this.miamshi.remarks = ''
+				this.miamshi.detailedAddress = '';
+				this.miamshi.interviewDateTime = '';
+				this.miamshi.address = '';
+				this.miamshi.remarks = '';
+				this.miamshi.userId = '';
+				this.miamshi.hrPhone = ''; //手机号
+				this.miamshi.hrName = ''; //联系人
+				this.miamshi.position = ''; //面试岗位
 			},
 			jumpToTencentMap(latitude, longitude, name) {
 				var url = 'https://apis.map.qq.com/uri/v1/search?keyword=' + name + '&center=' + latitude + ',' +
 					longitude + '&radius=100&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77';
 				window.open(url)
 			},
-			formatDate(dates) {
+			formatDate(dates, type) {
 				let date = new Date(dates)
 				var year = date.getFullYear();
 				var month = ("0" + (date.getMonth() + 1)).slice(-2);
 				var day = ("0" + date.getDate()).slice(-2);
 				var hour = ("0" + date.getHours()).slice(-2);
 				var minute = ("0" + date.getMinutes()).slice(-2);
-				return year + "-" + month + "-" + day + " " + hour + ":" + minute + ':00';
+				if (type == 1) {
+					return year + "-" + month + "-" + day + " " + '00' + ":" + '00' + ':00';
+				} else {
+					return hour + ":" + minute;
+				}
 			},
 			submitMs() {
-
 				let obj = JSON.parse(JSON.stringify(this.miamshi))
-				obj.interviewDateTime = this.formatDate(obj.interviewDateTime)
+				let Time = this.formatDate(obj.interviewDateTime, 1);
+				obj.detailTime = this.formatDate(obj.interviewDateTime, 2);
 				let formms = this.$refs.formms
 				formms.validate((valid) => {
 					if (valid) {
@@ -483,7 +513,26 @@
 							})
 							return
 						}
-						this.$Request.post("/app/interviewRecord/saveInterview", obj, {
+						let dataInfo = {
+							address: obj.address,
+							companyId: obj.companyId,
+							detailTime: obj.detailTime,
+							detailedAddress: obj.detailedAddress,
+							hrName: obj.hrName,
+							hrPhone: obj.hrPhone,
+							interviewDateTime: Time,
+							interviewerId: obj.userId,
+							lat: obj.lat,
+							lng: obj.lng,
+							onlineMsg: '',
+							onlineType: '',
+							postPushId: obj.postPushId,
+							recordId: '',//发送的这份面试的id,为空,代表添加,如果有值的话代表修改
+							remarks: obj.remarks,
+							resumesId: this.resumesId,
+							type: 0
+						}
+						this.$Request.post("/app/interviewRecord/saveInterview", dataInfo, {
 							type: 'json'
 						}).then(res => {
 							if (res.code == 0) {
@@ -494,14 +543,15 @@
 									offset: this.screenHeight / 2
 								})
 								this.dialogms = false
-							} else {
-								ElMessage({
-									message: res.msg,
-									type: 'error',
-									duration: 1500,
-									offset: this.screenHeight / 2
-								})
-							}
+							} 
+							// else {
+							// 	ElMessage({
+							// 		message: res.msg,
+							// 		type: 'error',
+							// 		duration: 1500,
+							// 		offset: this.screenHeight / 2
+							// 	})
+							// }
 						})
 					}
 				})
@@ -556,8 +606,18 @@
 					params: data
 				}).then(res => {
 					if (res.code == 0) {
+						res.data.intentionRuleClassifyName = this.postPushInfo.ruleClassifyName
+						res.data.intentionSalaryRange = this.postPushInfo.salaryRange
+						// res.data.intentionExprence = []
+						res.data.intentionList.forEach(item=>{
+							if (item.ruleClassifyName == this.postPushInfo.ruleClassifyName) {
+								res.data.intentionRuleClassifyName = item.ruleClassifyName
+								res.data.intentionSalaryRange = item.salaryRange
+								// res.data.intentionExprence = item.industry && item.industry.split('/') || []
+							}
+						})
 						this.resumesInfo = res.data
-						// this.postPushInfo.positionWelfare = this.postPushInfo.positionWelfare.split(',')
+					
 					}
 				})
 			},
@@ -960,9 +1020,17 @@
 					params: data
 				}).then(res => {
 					if (res.code == 0) {
+						// 选择的岗位列表
+						this.jobList = [{
+							...res.data
+						}];
 						this.title = res.data.company.companyName
 						this.postPushInfo = res.data
-						this.postPushInfo.positionWelfare = this.postPushInfo.positionWelfare.split(',')
+						// this.postPushInfo.positionWelfare = this.postPushInfo.positionWelfare && this.postPushInfo.positionWelfare.split(',') || []
+						if(this.userType != 1){
+							//获取简历信息
+							this.getResumesInfo(this.resumesId)
+						}
 					}
 				})
 			},

+ 1 - 0
src/store/index.js

@@ -32,6 +32,7 @@ const store = createStore({
 			state.isCompanyVip = false //企业是否是会员
 			state.phone = '' //用户手机号
 			state.zhiRate = '' //分成比例(一级)
+			localStorage.setItem('postPushId', '')
 		},
 		SET_AVATAR(state, payload) {
 			state.avatar = payload

+ 2 - 0
src/views/index/indexCompany.vue

@@ -504,6 +504,7 @@
 				}).then(res => {
 					if (res.code == 0) {
 						this.tabs = res.data;
+						localStorage.setItem('postPushId', this.tabs[this.tabsCurr].postPushId)
 						//定位
 						this.getLocation();
 					}
@@ -626,6 +627,7 @@
 					return;
 				}
 				if (localStorage.getItem('token')) {
+					localStorage.setItem('postPushId', this.tabs[this.tabsCurr].postPushId)
 					this.$router.push({
 						name: 'resumeInfo',
 						query: {

+ 2270 - 361
src/views/message/emoj.json

@@ -1,363 +1,2272 @@
 {
-	"emojList": [{
-		"url": "100.gif",
-		"alt": "[微笑]"
-	}, {
-		"url": "101.gif",
-		"alt": "[伤心]"
-	}, {
-		"url": "102.gif",
-		"alt": "[美女]"
-	}, {
-		"url": "103.gif",
-		"alt": "[发呆]"
-	}, {
-		"url": "104.gif",
-		"alt": "[墨镜]"
-	}, {
-		"url": "105.gif",
-		"alt": "[哭]"
-	}, {
-		"url": "106.gif",
-		"alt": "[羞]"
-	}, {
-		"url": "107.gif",
-		"alt": "[哑]"
-	}, {
-		"url": "108.gif",
-		"alt": "[睡]"
-	}, {
-		"url": "109.gif",
-		"alt": "[哭]"
-	}, {
-		"url": "110.gif",
-		"alt": "[囧]"
-	}, {
-		"url": "111.gif",
-		"alt": "[怒]"
-	}, {
-		"url": "112.gif",
-		"alt": "[调皮]"
-	}, {
-		"url": "113.gif",
-		"alt": "[笑]"
-	}, {
-		"url": "114.gif",
-		"alt": "[惊讶]"
-	}, {
-		"url": "115.gif",
-		"alt": "[难过]"
-	}, {
-		"url": "116.gif",
-		"alt": "[酷]"
-	}, {
-		"url": "117.gif",
-		"alt": "[汗]"
-	}, {
-		"url": "118.gif",
-		"alt": "[抓狂]"
-	}, {
-		"url": "119.gif",
-		"alt": "[吐]"
-	}, {
-		"url": "120.gif",
-		"alt": "[笑]"
-	}, {
-		"url": "121.gif",
-		"alt": "[快乐]"
-	}, {
-		"url": "122.gif",
-		"alt": "[奇]"
-	}, {
-		"url": "123.gif",
-		"alt": "[傲]"
-	}, {
-		"url": "124.gif",
-		"alt": "[饿]"
-	}, {
-		"url": "125.gif",
-		"alt": "[累]"
-	}, {
-		"url": "126.gif",
-		"alt": "[吓]"
-	}, {
-		"url": "127.gif",
-		"alt": "[汗]"
-	}, {
-		"url": "128.gif",
-		"alt": "[高兴]"
-	}, {
-		"url": "129.gif",
-		"alt": "[闲]"
-	}, {
-		"url": "130.gif",
-		"alt": "[努力]"
-	}, {
-		"url": "131.gif",
-		"alt": "[骂]"
-	}, {
-		"url": "132.gif",
-		"alt": "[疑问]"
-	}, {
-		"url": "133.gif",
-		"alt": "[秘密]"
-	}, {
-		"url": "134.gif",
-		"alt": "[乱]"
-	}, {
-		"url": "135.gif",
-		"alt": "[疯]"
-	}, {
-		"url": "136.gif",
-		"alt": "[哀]"
-	}, {
-		"url": "137.gif",
-		"alt": "[鬼]"
-	}, {
-		"url": "138.gif",
-		"alt": "[打击]"
-	}, {
-		"url": "139.gif",
-		"alt": "[bye]"
-	}, {
-		"url": "140.gif",
-		"alt": "[汗]"
-	}, {
-		"url": "141.gif",
-		"alt": "[抠]"
-	}, {
-		"url": "142.gif",
-		"alt": "[鼓掌]"
-	}, {
-		"url": "143.gif",
-		"alt": "[糟糕]"
-	}, {
-		"url": "144.gif",
-		"alt": "[恶搞]"
-	}, {
-		"url": "145.gif",
-		"alt": "[什么]"
-	}, {
-		"url": "146.gif",
-		"alt": "[什么]"
-	}, {
-		"url": "147.gif",
-		"alt": "[累]"
-	}, {
-		"url": "148.gif",
-		"alt": "[看]"
-	}, {
-		"url": "149.gif",
-		"alt": "[难过]"
-	}, {
-		"url": "150.gif",
-		"alt": "[难过]"
-	}, {
-		"url": "151.gif",
-		"alt": "[坏]"
-	}, {
-		"url": "152.gif",
-		"alt": "[亲]"
-	}, {
-		"url": "153.gif",
-		"alt": "[吓]"
-	}, {
-		"url": "154.gif",
-		"alt": "[可怜]"
-	}, {
-		"url": "155.gif",
-		"alt": "[刀]"
-	}, {
-		"url": "156.gif",
-		"alt": "[水果]"
-	}, {
-		"url": "157.gif",
-		"alt": "[酒]"
-	}, {
-		"url": "158.gif",
-		"alt": "[篮球]"
-	}, {
-		"url": "159.gif",
-		"alt": "[乒乓]"
-	}, {
-		"url": "160.gif",
-		"alt": "[咖啡]"
-	}, {
-		"url": "161.gif",
-		"alt": "[美食]"
-	}, {
-		"url": "162.gif",
-		"alt": "[动物]"
-	}, {
-		"url": "163.gif",
-		"alt": "[鲜花]"
-	}, {
-		"url": "164.gif",
-		"alt": "[枯]"
-	}, {
-		"url": "165.gif",
-		"alt": "[唇]"
-	}, {
-		"url": "166.gif",
-		"alt": "[爱]"
-	}, {
-		"url": "167.gif",
-		"alt": "[分手]"
-	}, {
-		"url": "168.gif",
-		"alt": "[生日]"
-	}, {
-		"url": "169.gif",
-		"alt": "[电]"
-	}, {
-		"url": "170.gif",
-		"alt": "[炸弹]"
-	}, {
-		"url": "171.gif",
-		"alt": "[刀子]"
-	}, {
-		"url": "172.gif",
-		"alt": "[足球]"
-	}, {
-		"url": "173.gif",
-		"alt": "[瓢虫]"
-	}, {
-		"url": "174.gif",
-		"alt": "[翔]"
-	}, {
-		"url": "175.gif",
-		"alt": "[月亮]"
-	}, {
-		"url": "176.gif",
-		"alt": "[太阳]"
-	}, {
-		"url": "177.gif",
-		"alt": "[礼物]"
-	}, {
-		"url": "178.gif",
-		"alt": "[抱抱]"
-	}, {
-		"url": "179.gif",
-		"alt": "[拇指]"
-	}, {
-		"url": "180.gif",
-		"alt": "[贬低]"
-	}, {
-		"url": "181.gif",
-		"alt": "[握手]"
-	}, {
-		"url": "182.gif",
-		"alt": "[剪刀手]"
-	}, {
-		"url": "183.gif",
-		"alt": "[抱拳]"
-	}, {
-		"url": "184.gif",
-		"alt": "[勾引]"
-	}, {
-		"url": "185.gif",
-		"alt": "[拳头]"
-	}, {
-		"url": "186.gif",
-		"alt": "[小拇指]"
-	}, {
-		"url": "187.gif",
-		"alt": "[拇指八]"
-	}, {
-		"url": "188.gif",
-		"alt": "[食指]"
-	}, {
-		"url": "189.gif",
-		"alt": "[ok]"
-	}, {
-		"url": "190.gif",
-		"alt": "[情侣]"
-	}, {
-		"url": "191.gif",
-		"alt": "[爱心]"
-	}, {
-		"url": "192.gif",
-		"alt": "[蹦哒]"
-	}, {
-		"url": "193.gif",
-		"alt": "[颤抖]"
-	}, {
-		"url": "194.gif",
-		"alt": "[怄气]"
-	}, {
-		"url": "195.gif",
-		"alt": "[跳舞]"
-	}, {
-		"url": "196.gif",
-		"alt": "[发呆]"
-	}, {
-		"url": "197.gif",
-		"alt": "[背着]"
-	}, {
-		"url": "198.gif",
-		"alt": "[伸手]"
-	}, {
-		"url": "199.gif",
-		"alt": "[耍帅]"
-	}, {
-		"url": "200.png",
-		"alt": "[微笑]"
-	}, {
-		"url": "201.png",
-		"alt": "[生病]"
-	}, {
-		"url": "202.png",
-		"alt": "[哭泣]"
-	}, {
-		"url": "203.png",
-		"alt": "[吐舌]"
-	}, {
-		"url": "204.png",
-		"alt": "[迷糊]"
-	}, {
-		"url": "205.png",
-		"alt": "[瞪眼]"
-	}, {
-		"url": "206.png",
-		"alt": "[恐怖]"
-	}, {
-		"url": "207.png",
-		"alt": "[忧愁]"
-	}, {
-		"url": "208.png",
-		"alt": "[眨眉]"
-	}, {
-		"url": "209.png",
-		"alt": "[闭眼]"
-	}, {
-		"url": "210.png",
-		"alt": "[鄙视]"
-	}, {
-		"url": "211.png",
-		"alt": "[阴暗]"
-	}, {
-		"url": "212.png",
-		"alt": "[小鬼]"
-	}, {
-		"url": "213.png",
-		"alt": "[礼物]"
-	}, {
-		"url": "214.png",
-		"alt": "[拜佛]"
-	}, {
-		"url": "215.png",
-		"alt": "[力量]"
-	}, {
-		"url": "216.png",
-		"alt": "[金钱]"
-	}, {
-		"url": "217.png",
-		"alt": "[蛋糕]"
-	}, {
-		"url": "218.png",
-		"alt": "[彩带]"
-	}, {
-		"url": "219.png",
-		"alt": "[礼物]"
-	}]
+	"emojList": [
+		{
+			"url": "1f600.gif",
+			"alt": "[1f600]"
+		},
+		{
+			"url": "1f603.gif",
+			"alt": "[1f603]"
+		},
+		{
+			"url": "1f604.gif",
+			"alt": "[1f604]"
+		},
+		{
+			"url": "1f601.gif",
+			"alt": "[1f601]"
+		},
+		{
+			"url": "1f606.gif",
+			"alt": "[1f606]"
+		},
+		{
+			"url": "1f605.gif",
+			"alt": "[1f605]"
+		},
+		{
+			"url": "1f923.gif",
+			"alt": "[1f923]"
+		},
+		{
+			"url": "1f602.gif",
+			"alt": "[1f602]"
+		},
+		{
+			"url": "1f642.gif",
+			"alt": "[1f642]"
+		},
+		{
+			"url": "1f643.gif",
+			"alt": "[1f643]"
+		},
+		{
+			"url": "1f609.gif",
+			"alt": "[1f609]"
+		},
+		{
+			"url": "1f60a.gif",
+			"alt": "[1f60a]"
+		},
+		{
+			"url": "1f607.gif",
+			"alt": "[1f607]"
+		},
+		{
+			"url": "1f970.gif",
+			"alt": "[1f970]"
+		},
+		{
+			"url": "1f60d.gif",
+			"alt": "[1f60d]"
+		},
+		{
+			"url": "1f929.gif",
+			"alt": "[1f929]"
+		},
+		{
+			"url": "1f618.gif",
+			"alt": "[1f618]"
+		},
+		{
+			"url": "1f617.gif",
+			"alt": "[1f617]"
+		},
+		{
+			"url": "263a-fe0f.gif",
+			"alt": "[263a-fe0f]"
+		},
+		{
+			"url": "1f61a.gif",
+			"alt": "[1f61a]"
+		},
+		{
+			"url": "1f619.gif",
+			"alt": "[1f619]"
+		},
+		{
+			"url": "1f972.gif",
+			"alt": "[1f972]"
+		},
+		{
+			"url": "1f60b.gif",
+			"alt": "[1f60b]"
+		},
+		{
+			"url": "1f61b.gif",
+			"alt": "[1f61b]"
+		},
+		{
+			"url": "1f61c.gif",
+			"alt": "[1f61c]"
+		},
+		{
+			"url": "1f92a.gif",
+			"alt": "[1f92a]"
+		},
+		{
+			"url": "1f61d.gif",
+			"alt": "[1f61d]"
+		},
+		{
+			"url": "1f911.gif",
+			"alt": "[1f911]"
+		},
+		{
+			"url": "1f917.gif",
+			"alt": "[1f917]"
+		},
+		{
+			"url": "1f92d.gif",
+			"alt": "[1f92d]"
+		},
+		{
+			"url": "1f92b.gif",
+			"alt": "[1f92b]"
+		},
+		{
+			"url": "1f914.gif",
+			"alt": "[1f914]"
+		},
+		{
+			"url": "1f910.gif",
+			"alt": "[1f910]"
+		},
+		{
+			"url": "1f928.gif",
+			"alt": "[1f928]"
+		},
+		{
+			"url": "1f610.gif",
+			"alt": "[1f610]"
+		},
+		{
+			"url": "1f611.gif",
+			"alt": "[1f611]"
+		},
+		{
+			"url": "1f636.gif",
+			"alt": "[1f636]"
+		},
+		{
+			"url": "1f60f.gif",
+			"alt": "[1f60f]"
+		},
+		{
+			"url": "1f612.gif",
+			"alt": "[1f612]"
+		},
+		{
+			"url": "1f644.gif",
+			"alt": "[1f644]"
+		},
+		{
+			"url": "1f62c.gif",
+			"alt": "[1f62c]"
+		},
+		{
+			"url": "1f925.gif",
+			"alt": "[1f925]"
+		},
+		{
+			"url": "1f60c.gif",
+			"alt": "[1f60c]"
+		},
+		{
+			"url": "1f614.gif",
+			"alt": "[1f614]"
+		},
+		{
+			"url": "1f62a.gif",
+			"alt": "[1f62a]"
+		},
+		{
+			"url": "1f924.gif",
+			"alt": "[1f924]"
+		},
+		{
+			"url": "1f634.gif",
+			"alt": "[1f634]"
+		},
+		{
+			"url": "1f637.gif",
+			"alt": "[1f637]"
+		},
+		{
+			"url": "1f912.gif",
+			"alt": "[1f912]"
+		},
+		{
+			"url": "1f915.gif",
+			"alt": "[1f915]"
+		},
+		{
+			"url": "1f922.gif",
+			"alt": "[1f922]"
+		},
+		{
+			"url": "1f92e.gif",
+			"alt": "[1f92e]"
+		},
+		{
+			"url": "1f927.gif",
+			"alt": "[1f927]"
+		},
+		{
+			"url": "1f975.gif",
+			"alt": "[1f975]"
+		},
+		{
+			"url": "1f976.gif",
+			"alt": "[1f976]"
+		},
+		{
+			"url": "1f974.gif",
+			"alt": "[1f974]"
+		},
+		{
+			"url": "1f635.gif",
+			"alt": "[1f635]"
+		},
+		{
+			"url": "1f92f.gif",
+			"alt": "[1f92f]"
+		},
+		{
+			"url": "1f920.gif",
+			"alt": "[1f920]"
+		},
+		{
+			"url": "1f973.gif",
+			"alt": "[1f973]"
+		},
+		{
+			"url": "1f978.gif",
+			"alt": "[1f978]"
+		},
+		{
+			"url": "1f60e.gif",
+			"alt": "[1f60e]"
+		},
+		{
+			"url": "1f913.gif",
+			"alt": "[1f913]"
+		},
+		{
+			"url": "1f9d0.gif",
+			"alt": "[1f9d0]"
+		},
+		{
+			"url": "1f615.gif",
+			"alt": "[1f615]"
+		},
+		{
+			"url": "1f61f.gif",
+			"alt": "[1f61f]"
+		},
+		{
+			"url": "1f641.gif",
+			"alt": "[1f641]"
+		},
+		{
+			"url": "2639-fe0f.gif",
+			"alt": "[2639-fe0f]"
+		},
+		{
+			"url": "1f62e.gif",
+			"alt": "[1f62e]"
+		},
+		{
+			"url": "1f62f.gif",
+			"alt": "[1f62f]"
+		},
+		{
+			"url": "1f632.gif",
+			"alt": "[1f632]"
+		},
+		{
+			"url": "1f633.gif",
+			"alt": "[1f633]"
+		},
+		{
+			"url": "1f97a.gif",
+			"alt": "[1f97a]"
+		},
+		{
+			"url": "1f626.gif",
+			"alt": "[1f626]"
+		},
+		{
+			"url": "1f627.gif",
+			"alt": "[1f627]"
+		},
+		{
+			"url": "1f628.gif",
+			"alt": "[1f628]"
+		},
+		{
+			"url": "1f630.gif",
+			"alt": "[1f630]"
+		},
+		{
+			"url": "1f625.gif",
+			"alt": "[1f625]"
+		},
+		{
+			"url": "1f622.gif",
+			"alt": "[1f622]"
+		},
+		{
+			"url": "1f62d.gif",
+			"alt": "[1f62d]"
+		},
+		{
+			"url": "1f631.gif",
+			"alt": "[1f631]"
+		},
+		{
+			"url": "1f616.gif",
+			"alt": "[1f616]"
+		},
+		{
+			"url": "1f623.gif",
+			"alt": "[1f623]"
+		},
+		{
+			"url": "1f61e.gif",
+			"alt": "[1f61e]"
+		},
+		{
+			"url": "1f613.gif",
+			"alt": "[1f613]"
+		},
+		{
+			"url": "1f629.gif",
+			"alt": "[1f629]"
+		},
+		{
+			"url": "1f62b.gif",
+			"alt": "[1f62b]"
+		},
+		{
+			"url": "1f971.gif",
+			"alt": "[1f971]"
+		},
+		{
+			"url": "1f624.gif",
+			"alt": "[1f624]"
+		},
+		{
+			"url": "1f621.gif",
+			"alt": "[1f621]"
+		},
+		{
+			"url": "1f620.gif",
+			"alt": "[1f620]"
+		},
+		{
+			"url": "1f92c.gif",
+			"alt": "[1f92c]"
+		},
+		{
+			"url": "1f608.gif",
+			"alt": "[1f608]"
+		},
+		{
+			"url": "1f47f.gif",
+			"alt": "[1f47f]"
+		},
+		{
+			"url": "1f480.gif",
+			"alt": "[1f480]"
+		},
+		{
+			"url": "2620-fe0f.gif",
+			"alt": "[2620-fe0f]"
+		},
+		{
+			"url": "1f4a9.gif",
+			"alt": "[1f4a9]"
+		},
+		{
+			"url": "1f921.gif",
+			"alt": "[1f921]"
+		},
+		{
+			"url": "1f479.gif",
+			"alt": "[1f479]"
+		},
+		{
+			"url": "1f47a.gif",
+			"alt": "[1f47a]"
+		},
+		{
+			"url": "1f47b.gif",
+			"alt": "[1f47b]"
+		},
+		{
+			"url": "1f47d.gif",
+			"alt": "[1f47d]"
+		},
+		{
+			"url": "1f47e.gif",
+			"alt": "[1f47e]"
+		},
+		{
+			"url": "1f916.gif",
+			"alt": "[1f916]"
+		},
+		{
+			"url": "1f63a.gif",
+			"alt": "[1f63a]"
+		},
+		{
+			"url": "1f638.gif",
+			"alt": "[1f638]"
+		},
+		{
+			"url": "1f639.gif",
+			"alt": "[1f639]"
+		},
+		{
+			"url": "1f63b.gif",
+			"alt": "[1f63b]"
+		},
+		{
+			"url": "1f63c.gif",
+			"alt": "[1f63c]"
+		},
+		{
+			"url": "1f63d.gif",
+			"alt": "[1f63d]"
+		},
+		{
+			"url": "1f640.gif",
+			"alt": "[1f640]"
+		},
+		{
+			"url": "1f63f.gif",
+			"alt": "[1f63f]"
+		},
+		{
+			"url": "1f63e.gif",
+			"alt": "[1f63e]"
+		},
+		{
+			"url": "1f648.gif",
+			"alt": "[1f648]"
+		},
+		{
+			"url": "1f649.gif",
+			"alt": "[1f649]"
+		},
+		{
+			"url": "1f64a.gif",
+			"alt": "[1f64a]"
+		},
+		{
+			"url": "1f48b.gif",
+			"alt": "[1f48b]"
+		},
+		{
+			"url": "1f48c.gif",
+			"alt": "[1f48c]"
+		},
+		{
+			"url": "1f498.gif",
+			"alt": "[1f498]"
+		},
+		{
+			"url": "1f49d.gif",
+			"alt": "[1f49d]"
+		},
+		{
+			"url": "1f496.gif",
+			"alt": "[1f496]"
+		},
+		{
+			"url": "1f497.gif",
+			"alt": "[1f497]"
+		},
+		{
+			"url": "1f493.gif",
+			"alt": "[1f493]"
+		},
+		{
+			"url": "1f49e.gif",
+			"alt": "[1f49e]"
+		},
+		{
+			"url": "1f495.gif",
+			"alt": "[1f495]"
+		},
+		{
+			"url": "1f49f.gif",
+			"alt": "[1f49f]"
+		},
+		{
+			"url": "2763-fe0f.gif",
+			"alt": "[2763-fe0f]"
+		},
+		{
+			"url": "1f494.gif",
+			"alt": "[1f494]"
+		},
+		{
+			"url": "2764-fe0f.gif",
+			"alt": "[2764-fe0f]"
+		},
+		{
+			"url": "1f9e1.gif",
+			"alt": "[1f9e1]"
+		},
+		{
+			"url": "1f49b.gif",
+			"alt": "[1f49b]"
+		},
+		{
+			"url": "1f49a.gif",
+			"alt": "[1f49a]"
+		},
+		{
+			"url": "1f499.gif",
+			"alt": "[1f499]"
+		},
+		{
+			"url": "1f49c.gif",
+			"alt": "[1f49c]"
+		},
+		{
+			"url": "1f90e.gif",
+			"alt": "[1f90e]"
+		},
+		{
+			"url": "1f5a4.gif",
+			"alt": "[1f5a4]"
+		},
+		{
+			"url": "1f90d.gif",
+			"alt": "[1f90d]"
+		},
+		{
+			"url": "1f4af.gif",
+			"alt": "[1f4af]"
+		},
+		{
+			"url": "1f4a2.gif",
+			"alt": "[1f4a2]"
+		},
+		{
+			"url": "1f4a5.gif",
+			"alt": "[1f4a5]"
+		},
+		{
+			"url": "1f4ab.gif",
+			"alt": "[1f4ab]"
+		},
+		{
+			"url": "1f4a3.gif",
+			"alt": "[1f4a3]"
+		},
+		{
+			"url": "1f4ac.gif",
+			"alt": "[1f4ac]"
+		},
+		{
+			"url": "1f5ef-fe0f.gif",
+			"alt": "[1f5ef-fe0f]"
+		},
+		{
+			"url": "1f4ad.gif",
+			"alt": "[1f4ad]"
+		},
+		{
+			"url": "1f4a4.gif",
+			"alt": "[1f4a4]"
+		},
+		{
+			"url": "1f44b.gif",
+			"alt": "[1f44b]"
+		},
+		{
+			"url": "1f91a.gif",
+			"alt": "[1f91a]"
+		},
+		{
+			"url": "1f590-fe0f.gif",
+			"alt": "[1f590-fe0f]"
+		},
+		{
+			"url": "270b.gif",
+			"alt": "[270b]"
+		},
+		{
+			"url": "1f596.gif",
+			"alt": "[1f596]"
+		},
+		{
+			"url": "1f44c.gif",
+			"alt": "[1f44c]"
+		},
+		{
+			"url": "1f90c.gif",
+			"alt": "[1f90c]"
+		},
+		{
+			"url": "1f90f.gif",
+			"alt": "[1f90f]"
+		},
+		{
+			"url": "270c-fe0f.gif",
+			"alt": "[270c-fe0f]"
+		},
+		{
+			"url": "1f91e.gif",
+			"alt": "[1f91e]"
+		},
+		{
+			"url": "1f91f.gif",
+			"alt": "[1f91f]"
+		},
+		{
+			"url": "1f918.gif",
+			"alt": "[1f918]"
+		},
+		{
+			"url": "1f919.gif",
+			"alt": "[1f919]"
+		},
+		{
+			"url": "1f448.gif",
+			"alt": "[1f448]"
+		},
+		{
+			"url": "1f449.gif",
+			"alt": "[1f449]"
+		},
+		{
+			"url": "1f446.gif",
+			"alt": "[1f446]"
+		},
+		{
+			"url": "1f595.gif",
+			"alt": "[1f595]"
+		},
+		{
+			"url": "1f447.gif",
+			"alt": "[1f447]"
+		},
+		{
+			"url": "261d-fe0f.gif",
+			"alt": "[261d-fe0f]"
+		},
+		{
+			"url": "1f44d.gif",
+			"alt": "[1f44d]"
+		},
+		{
+			"url": "1f44e.gif",
+			"alt": "[1f44e]"
+		},
+		{
+			"url": "270a.gif",
+			"alt": "[270a]"
+		},
+		{
+			"url": "1f44a.gif",
+			"alt": "[1f44a]"
+		},
+		{
+			"url": "1f91b.gif",
+			"alt": "[1f91b]"
+		},
+		{
+			"url": "1f91c.gif",
+			"alt": "[1f91c]"
+		},
+		{
+			"url": "1f44f.gif",
+			"alt": "[1f44f]"
+		},
+		{
+			"url": "1f64c.gif",
+			"alt": "[1f64c]"
+		},
+		{
+			"url": "1f450.gif",
+			"alt": "[1f450]"
+		},
+		{
+			"url": "1f932.gif",
+			"alt": "[1f932]"
+		},
+		{
+			"url": "1f91d.gif",
+			"alt": "[1f91d]"
+		},
+		{
+			"url": "1f64f.gif",
+			"alt": "[1f64f]"
+		},
+		{
+			"url": "270d-fe0f.gif",
+			"alt": "[270d-fe0f]"
+		},
+		{
+			"url": "1f485.gif",
+			"alt": "[1f485]"
+		},
+		{
+			"url": "1f4aa.gif",
+			"alt": "[1f4aa]"
+		},
+		{
+			"url": "1f9be.gif",
+			"alt": "[1f9be]"
+		},
+		{
+			"url": "1f9bf.gif",
+			"alt": "[1f9bf]"
+		},
+		{
+			"url": "1f9b5.gif",
+			"alt": "[1f9b5]"
+		},
+		{
+			"url": "1f9b6.gif",
+			"alt": "[1f9b6]"
+		},
+		{
+			"url": "1f442.gif",
+			"alt": "[1f442]"
+		},
+		{
+			"url": "1f9bb.gif",
+			"alt": "[1f9bb]"
+		},
+		{
+			"url": "1f443.gif",
+			"alt": "[1f443]"
+		},
+		{
+			"url": "1f9b7.gif",
+			"alt": "[1f9b7]"
+		},
+		{
+			"url": "1f440.gif",
+			"alt": "[1f440]"
+		},
+		{
+			"url": "1f445.gif",
+			"alt": "[1f445]"
+		},
+		{
+			"url": "1f444.gif",
+			"alt": "[1f444]"
+		},
+		{
+			"url": "1f476.gif",
+			"alt": "[1f476]"
+		},
+		{
+			"url": "1f475.gif",
+			"alt": "[1f475]"
+		},
+		{
+			"url": "1f926.gif",
+			"alt": "[1f926]"
+		},
+		{
+			"url": "1f926-200d-2642-fe0f.gif",
+			"alt": "[1f926-200d-2642-fe0f]"
+		},
+		{
+			"url": "1f937.gif",
+			"alt": "[1f937]"
+		},
+		{
+			"url": "1f937-200d-2642-fe0f.gif",
+			"alt": "[1f937-200d-2642-fe0f]"
+		},
+		{
+			"url": "1f937-200d-2640-fe0f.gif",
+			"alt": "[1f937-200d-2640-fe0f]"
+		},
+		{
+			"url": "1f468-200d-2695-fe0f.gif",
+			"alt": "[1f468-200d-2695-fe0f]"
+		},
+		{
+			"url": "1f469-200d-2695-fe0f.gif",
+			"alt": "[1f469-200d-2695-fe0f]"
+		},
+		{
+			"url": "1f468-200d-1f3eb.gif",
+			"alt": "[1f468-200d-1f3eb]"
+		},
+		{
+			"url": "1f9d1-200d-1f4bb.gif",
+			"alt": "[1f9d1-200d-1f4bb]"
+		},
+		{
+			"url": "1f468-200d-1f4bb.gif",
+			"alt": "[1f468-200d-1f4bb]"
+		},
+		{
+			"url": "1f469-200d-1f4bb.gif",
+			"alt": "[1f469-200d-1f4bb]"
+		},
+		{
+			"url": "1f46e-200d-2642-fe0f.gif",
+			"alt": "[1f46e-200d-2642-fe0f]"
+		},
+		{
+			"url": "1f46e-200d-2640-fe0f.gif",
+			"alt": "[1f46e-200d-2640-fe0f]"
+		},
+		{
+			"url": "1f930.gif",
+			"alt": "[1f930]"
+		},
+		{
+			"url": "1f385.gif",
+			"alt": "[1f385]"
+		},
+		{
+			"url": "1f936.gif",
+			"alt": "[1f936]"
+		},
+		{
+			"url": "1f9d1-200d-1f384.gif",
+			"alt": "[1f9d1-200d-1f384]"
+		},
+		{
+			"url": "1f9db.gif",
+			"alt": "[1f9db]"
+		},
+		{
+			"url": "1f9db-200d-2642-fe0f.gif",
+			"alt": "[1f9db-200d-2642-fe0f]"
+		},
+		{
+			"url": "1f9db-200d-2640-fe0f.gif",
+			"alt": "[1f9db-200d-2640-fe0f]"
+		},
+		{
+			"url": "1f9df.gif",
+			"alt": "[1f9df]"
+		},
+		{
+			"url": "1f9df-200d-2642-fe0f.gif",
+			"alt": "[1f9df-200d-2642-fe0f]"
+		},
+		{
+			"url": "1f9df-200d-2640-fe0f.gif",
+			"alt": "[1f9df-200d-2640-fe0f]"
+		},
+		{
+			"url": "1f483.gif",
+			"alt": "[1f483]"
+		},
+		{
+			"url": "1f57a.gif",
+			"alt": "[1f57a]"
+		},
+		{
+			"url": "1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.gif",
+			"alt": "[1f469-200d-2764-fe0f-200d-1f48b-200d-1f468]"
+		},
+		{
+			"url": "1f468-200d-1f469-200d-1f467-200d-1f466.gif",
+			"alt": "[1f468-200d-1f469-200d-1f467-200d-1f466]"
+		},
+		{
+			"url": "1f5e3-fe0f.gif",
+			"alt": "[1f5e3-fe0f]"
+		},
+		{
+			"url": "1f464.gif",
+			"alt": "[1f464]"
+		},
+		{
+			"url": "1f465.gif",
+			"alt": "[1f465]"
+		},
+		{
+			"url": "1fac2.gif",
+			"alt": "[1fac2]"
+		},
+		{
+			"url": "1f463.gif",
+			"alt": "[1f463]"
+		},
+		{
+			"url": "1f435.gif",
+			"alt": "[1f435]"
+		},
+		{
+			"url": "1f98d.gif",
+			"alt": "[1f98d]"
+		},
+		{
+			"url": "1f436.gif",
+			"alt": "[1f436]"
+		},
+		{
+			"url": "1f98a.gif",
+			"alt": "[1f98a]"
+		},
+		{
+			"url": "1f99d.gif",
+			"alt": "[1f99d]"
+		},
+		{
+			"url": "1f431.gif",
+			"alt": "[1f431]"
+		},
+		{
+			"url": "1f408.gif",
+			"alt": "[1f408]"
+		},
+		{
+			"url": "1f408-200d-2b1b.gif",
+			"alt": "[1f408-200d-2b1b]"
+		},
+		{
+			"url": "1f981.gif",
+			"alt": "[1f981]"
+		},
+		{
+			"url": "1f406.gif",
+			"alt": "[1f406]"
+		},
+		{
+			"url": "1f434.gif",
+			"alt": "[1f434]"
+		},
+		{
+			"url": "1f984.gif",
+			"alt": "[1f984]"
+		},
+		{
+			"url": "1f993.gif",
+			"alt": "[1f993]"
+		},
+		{
+			"url": "1f98c.gif",
+			"alt": "[1f98c]"
+		},
+		{
+			"url": "1f9ac.gif",
+			"alt": "[1f9ac]"
+		},
+		{
+			"url": "1f402.gif",
+			"alt": "[1f402]"
+		},
+		{
+			"url": "1f404.gif",
+			"alt": "[1f404]"
+		},
+		{
+			"url": "1f437.gif",
+			"alt": "[1f437]"
+		},
+		{
+			"url": "1f43d.gif",
+			"alt": "[1f43d]"
+		},
+		{
+			"url": "1f999.gif",
+			"alt": "[1f999]"
+		},
+		{
+			"url": "1f992.gif",
+			"alt": "[1f992]"
+		},
+		{
+			"url": "1f42d.gif",
+			"alt": "[1f42d]"
+		},
+		{
+			"url": "1f439.gif",
+			"alt": "[1f439]"
+		},
+		{
+			"url": "1f430.gif",
+			"alt": "[1f430]"
+		},
+		{
+			"url": "1f407.gif",
+			"alt": "[1f407]"
+		},
+		{
+			"url": "1f994.gif",
+			"alt": "[1f994]"
+		},
+		{
+			"url": "1f987.gif",
+			"alt": "[1f987]"
+		},
+		{
+			"url": "1f43b.gif",
+			"alt": "[1f43b]"
+		},
+		{
+			"url": "1f43b-200d-2744-fe0f.gif",
+			"alt": "[1f43b-200d-2744-fe0f]"
+		},
+		{
+			"url": "1f428.gif",
+			"alt": "[1f428]"
+		},
+		{
+			"url": "1f43c.gif",
+			"alt": "[1f43c]"
+		},
+		{
+			"url": "1f998.gif",
+			"alt": "[1f998]"
+		},
+		{
+			"url": "1f43e.gif",
+			"alt": "[1f43e]"
+		},
+		{
+			"url": "1f983.gif",
+			"alt": "[1f983]"
+		},
+		{
+			"url": "1f414.gif",
+			"alt": "[1f414]"
+		},
+		{
+			"url": "1f423.gif",
+			"alt": "[1f423]"
+		},
+		{
+			"url": "1f424.gif",
+			"alt": "[1f424]"
+		},
+		{
+			"url": "1f425.gif",
+			"alt": "[1f425]"
+		},
+		{
+			"url": "1f426.gif",
+			"alt": "[1f426]"
+		},
+		{
+			"url": "1f427.gif",
+			"alt": "[1f427]"
+		},
+		{
+			"url": "1f54a-fe0f.gif",
+			"alt": "[1f54a-fe0f]"
+		},
+		{
+			"url": "1f986.gif",
+			"alt": "[1f986]"
+		},
+		{
+			"url": "1f9a2.gif",
+			"alt": "[1f9a2]"
+		},
+		{
+			"url": "1f989.gif",
+			"alt": "[1f989]"
+		},
+		{
+			"url": "1f9a9.gif",
+			"alt": "[1f9a9]"
+		},
+		{
+			"url": "1f99c.gif",
+			"alt": "[1f99c]"
+		},
+		{
+			"url": "1f438.gif",
+			"alt": "[1f438]"
+		},
+		{
+			"url": "1f422.gif",
+			"alt": "[1f422]"
+		},
+		{
+			"url": "1f40d.gif",
+			"alt": "[1f40d]"
+		},
+		{
+			"url": "1f995.gif",
+			"alt": "[1f995]"
+		},
+		{
+			"url": "1f996.gif",
+			"alt": "[1f996]"
+		},
+		{
+			"url": "1f433.gif",
+			"alt": "[1f433]"
+		},
+		{
+			"url": "1f9ad.gif",
+			"alt": "[1f9ad]"
+		},
+		{
+			"url": "1f41f.gif",
+			"alt": "[1f41f]"
+		},
+		{
+			"url": "1f420.gif",
+			"alt": "[1f420]"
+		},
+		{
+			"url": "1f419.gif",
+			"alt": "[1f419]"
+		},
+		{
+			"url": "1f40c.gif",
+			"alt": "[1f40c]"
+		},
+		{
+			"url": "1f98b.gif",
+			"alt": "[1f98b]"
+		},
+		{
+			"url": "1f41b.gif",
+			"alt": "[1f41b]"
+		},
+		{
+			"url": "1f41c.gif",
+			"alt": "[1f41c]"
+		},
+		{
+			"url": "1f41d.gif",
+			"alt": "[1f41d]"
+		},
+		{
+			"url": "1fab2.gif",
+			"alt": "[1fab2]"
+		},
+		{
+			"url": "1f41e.gif",
+			"alt": "[1f41e]"
+		},
+		{
+			"url": "1f997.gif",
+			"alt": "[1f997]"
+		},
+		{
+			"url": "1fab3.gif",
+			"alt": "[1fab3]"
+		},
+		{
+			"url": "1f577-fe0f.gif",
+			"alt": "[1f577-fe0f]"
+		},
+		{
+			"url": "1f578-fe0f.gif",
+			"alt": "[1f578-fe0f]"
+		},
+		{
+			"url": "1f99f.gif",
+			"alt": "[1f99f]"
+		},
+		{
+			"url": "1f9a0.gif",
+			"alt": "[1f9a0]"
+		},
+		{
+			"url": "1f490.gif",
+			"alt": "[1f490]"
+		},
+		{
+			"url": "1f338.gif",
+			"alt": "[1f338]"
+		},
+		{
+			"url": "1f3f5-fe0f.gif",
+			"alt": "[1f3f5-fe0f]"
+		},
+		{
+			"url": "1f339.gif",
+			"alt": "[1f339]"
+		},
+		{
+			"url": "1f33a.gif",
+			"alt": "[1f33a]"
+		},
+		{
+			"url": "1f33c.gif",
+			"alt": "[1f33c]"
+		},
+		{
+			"url": "1f337.gif",
+			"alt": "[1f337]"
+		},
+		{
+			"url": "1f331.gif",
+			"alt": "[1f331]"
+		},
+		{
+			"url": "1f332.gif",
+			"alt": "[1f332]"
+		},
+		{
+			"url": "1f333.gif",
+			"alt": "[1f333]"
+		},
+		{
+			"url": "1f334.gif",
+			"alt": "[1f334]"
+		},
+		{
+			"url": "1f335.gif",
+			"alt": "[1f335]"
+		},
+		{
+			"url": "1f33f.gif",
+			"alt": "[1f33f]"
+		},
+		{
+			"url": "2618-fe0f.gif",
+			"alt": "[2618-fe0f]"
+		},
+		{
+			"url": "1f340.gif",
+			"alt": "[1f340]"
+		},
+		{
+			"url": "1f34c.gif",
+			"alt": "[1f34c]"
+		},
+		{
+			"url": "1f351.gif",
+			"alt": "[1f351]"
+		},
+		{
+			"url": "1f353.gif",
+			"alt": "[1f353]"
+		},
+		{
+			"url": "1f346.gif",
+			"alt": "[1f346]"
+		},
+		{
+			"url": "1f968.gif",
+			"alt": "[1f968]"
+		},
+		{
+			"url": "1f95e.gif",
+			"alt": "[1f95e]"
+		},
+		{
+			"url": "1f356.gif",
+			"alt": "[1f356]"
+		},
+		{
+			"url": "1f357.gif",
+			"alt": "[1f357]"
+		},
+		{
+			"url": "1f354.gif",
+			"alt": "[1f354]"
+		},
+		{
+			"url": "1f35f.gif",
+			"alt": "[1f35f]"
+		},
+		{
+			"url": "1f355.gif",
+			"alt": "[1f355]"
+		},
+		{
+			"url": "1f32d.gif",
+			"alt": "[1f32d]"
+		},
+		{
+			"url": "1f96a.gif",
+			"alt": "[1f96a]"
+		},
+		{
+			"url": "1f32e.gif",
+			"alt": "[1f32e]"
+		},
+		{
+			"url": "1f959.gif",
+			"alt": "[1f959]"
+		},
+		{
+			"url": "1f373.gif",
+			"alt": "[1f373]"
+		},
+		{
+			"url": "1f37f.gif",
+			"alt": "[1f37f]"
+		},
+		{
+			"url": "1f96b.gif",
+			"alt": "[1f96b]"
+		},
+		{
+			"url": "1f371.gif",
+			"alt": "[1f371]"
+		},
+		{
+			"url": "1f358.gif",
+			"alt": "[1f358]"
+		},
+		{
+			"url": "1f359.gif",
+			"alt": "[1f359]"
+		},
+		{
+			"url": "1f362.gif",
+			"alt": "[1f362]"
+		},
+		{
+			"url": "1f363.gif",
+			"alt": "[1f363]"
+		},
+		{
+			"url": "1f365.gif",
+			"alt": "[1f365]"
+		},
+		{
+			"url": "1f361.gif",
+			"alt": "[1f361]"
+		},
+		{
+			"url": "1f99e.gif",
+			"alt": "[1f99e]"
+		},
+		{
+			"url": "1f990.gif",
+			"alt": "[1f990]"
+		},
+		{
+			"url": "1f991.gif",
+			"alt": "[1f991]"
+		},
+		{
+			"url": "1f366.gif",
+			"alt": "[1f366]"
+		},
+		{
+			"url": "1f369.gif",
+			"alt": "[1f369]"
+		},
+		{
+			"url": "1f36a.gif",
+			"alt": "[1f36a]"
+		},
+		{
+			"url": "1f382.gif",
+			"alt": "[1f382]"
+		},
+		{
+			"url": "1f370.gif",
+			"alt": "[1f370]"
+		},
+		{
+			"url": "1f9c1.gif",
+			"alt": "[1f9c1]"
+		},
+		{
+			"url": "1f967.gif",
+			"alt": "[1f967]"
+		},
+		{
+			"url": "1f36b.gif",
+			"alt": "[1f36b]"
+		},
+		{
+			"url": "1f36d.gif",
+			"alt": "[1f36d]"
+		},
+		{
+			"url": "1f36e.gif",
+			"alt": "[1f36e]"
+		},
+		{
+			"url": "1f37c.gif",
+			"alt": "[1f37c]"
+		},
+		{
+			"url": "1f95b.gif",
+			"alt": "[1f95b]"
+		},
+		{
+			"url": "2615.gif",
+			"alt": "[2615]"
+		},
+		{
+			"url": "1f37e.gif",
+			"alt": "[1f37e]"
+		},
+		{
+			"url": "1f377.gif",
+			"alt": "[1f377]"
+		},
+		{
+			"url": "1f378.gif",
+			"alt": "[1f378]"
+		},
+		{
+			"url": "1f379.gif",
+			"alt": "[1f379]"
+		},
+		{
+			"url": "1f942.gif",
+			"alt": "[1f942]"
+		},
+		{
+			"url": "1f943.gif",
+			"alt": "[1f943]"
+		},
+		{
+			"url": "1f964.gif",
+			"alt": "[1f964]"
+		},
+		{
+			"url": "1f9cb.gif",
+			"alt": "[1f9cb]"
+		},
+		{
+			"url": "1f9c3.gif",
+			"alt": "[1f9c3]"
+		},
+		{
+			"url": "1f9c9.gif",
+			"alt": "[1f9c9]"
+		},
+		{
+			"url": "1f37d-fe0f.gif",
+			"alt": "[1f37d-fe0f]"
+		},
+		{
+			"url": "1f9ed.gif",
+			"alt": "[1f9ed]"
+		},
+		{
+			"url": "1f3d5-fe0f.gif",
+			"alt": "[1f3d5-fe0f]"
+		},
+		{
+			"url": "1f3d6-fe0f.gif",
+			"alt": "[1f3d6-fe0f]"
+		},
+		{
+			"url": "1f3dd-fe0f.gif",
+			"alt": "[1f3dd-fe0f]"
+		},
+		{
+			"url": "1f3db-fe0f.gif",
+			"alt": "[1f3db-fe0f]"
+		},
+		{
+			"url": "1f3e0.gif",
+			"alt": "[1f3e0]"
+		},
+		{
+			"url": "2668-fe0f.gif",
+			"alt": "[2668-fe0f]"
+		},
+		{
+			"url": "1f3a2.gif",
+			"alt": "[1f3a2]"
+		},
+		{
+			"url": "1f682.gif",
+			"alt": "[1f682]"
+		},
+		{
+			"url": "1f691.gif",
+			"alt": "[1f691]"
+		},
+		{
+			"url": "1f693.gif",
+			"alt": "[1f693]"
+		},
+		{
+			"url": "1f695.gif",
+			"alt": "[1f695]"
+		},
+		{
+			"url": "1f697.gif",
+			"alt": "[1f697]"
+		},
+		{
+			"url": "1f6e5-fe0f.gif",
+			"alt": "[1f6e5-fe0f]"
+		},
+		{
+			"url": "2708-fe0f.gif",
+			"alt": "[2708-fe0f]"
+		},
+		{
+			"url": "1f680.gif",
+			"alt": "[1f680]"
+		},
+		{
+			"url": "1f9f3.gif",
+			"alt": "[1f9f3]"
+		},
+		{
+			"url": "231b.gif",
+			"alt": "[231b]"
+		},
+		{
+			"url": "23f3.gif",
+			"alt": "[23f3]"
+		},
+		{
+			"url": "1f311.gif",
+			"alt": "[1f311]"
+		},
+		{
+			"url": "1f312.gif",
+			"alt": "[1f312]"
+		},
+		{
+			"url": "1f313.gif",
+			"alt": "[1f313]"
+		},
+		{
+			"url": "1f314.gif",
+			"alt": "[1f314]"
+		},
+		{
+			"url": "1f315.gif",
+			"alt": "[1f315]"
+		},
+		{
+			"url": "1f316.gif",
+			"alt": "[1f316]"
+		},
+		{
+			"url": "1f317.gif",
+			"alt": "[1f317]"
+		},
+		{
+			"url": "1f318.gif",
+			"alt": "[1f318]"
+		},
+		{
+			"url": "1f31a.gif",
+			"alt": "[1f31a]"
+		},
+		{
+			"url": "1f31b.gif",
+			"alt": "[1f31b]"
+		},
+		{
+			"url": "1f31c.gif",
+			"alt": "[1f31c]"
+		},
+		{
+			"url": "1f321-fe0f.gif",
+			"alt": "[1f321-fe0f]"
+		},
+		{
+			"url": "2600-fe0f.gif",
+			"alt": "[2600-fe0f]"
+		},
+		{
+			"url": "1f31d.gif",
+			"alt": "[1f31d]"
+		},
+		{
+			"url": "1f31e.gif",
+			"alt": "[1f31e]"
+		},
+		{
+			"url": "2b50.gif",
+			"alt": "[2b50]"
+		},
+		{
+			"url": "1f31f.gif",
+			"alt": "[1f31f]"
+		},
+		{
+			"url": "2601-fe0f.gif",
+			"alt": "[2601-fe0f]"
+		},
+		{
+			"url": "26c5.gif",
+			"alt": "[26c5]"
+		},
+		{
+			"url": "26c8-fe0f.gif",
+			"alt": "[26c8-fe0f]"
+		},
+		{
+			"url": "1f324-fe0f.gif",
+			"alt": "[1f324-fe0f]"
+		},
+		{
+			"url": "1f325-fe0f.gif",
+			"alt": "[1f325-fe0f]"
+		},
+		{
+			"url": "1f326-fe0f.gif",
+			"alt": "[1f326-fe0f]"
+		},
+		{
+			"url": "1f327-fe0f.gif",
+			"alt": "[1f327-fe0f]"
+		},
+		{
+			"url": "1f328-fe0f.gif",
+			"alt": "[1f328-fe0f]"
+		},
+		{
+			"url": "1f329-fe0f.gif",
+			"alt": "[1f329-fe0f]"
+		},
+		{
+			"url": "1f308.gif",
+			"alt": "[1f308]"
+		},
+		{
+			"url": "26a1.gif",
+			"alt": "[26a1]"
+		},
+		{
+			"url": "2744-fe0f.gif",
+			"alt": "[2744-fe0f]"
+		},
+		{
+			"url": "2603-fe0f.gif",
+			"alt": "[2603-fe0f]"
+		},
+		{
+			"url": "26c4.gif",
+			"alt": "[26c4]"
+		},
+		{
+			"url": "1f525.gif",
+			"alt": "[1f525]"
+		},
+		{
+			"url": "1f383.gif",
+			"alt": "[1f383]"
+		},
+		{
+			"url": "1f384.gif",
+			"alt": "[1f384]"
+		},
+		{
+			"url": "1f386.gif",
+			"alt": "[1f386]"
+		},
+		{
+			"url": "1f387.gif",
+			"alt": "[1f387]"
+		},
+		{
+			"url": "1f9e8.gif",
+			"alt": "[1f9e8]"
+		},
+		{
+			"url": "2728.gif",
+			"alt": "[2728]"
+		},
+		{
+			"url": "1f388.gif",
+			"alt": "[1f388]"
+		},
+		{
+			"url": "1f389.gif",
+			"alt": "[1f389]"
+		},
+		{
+			"url": "1f38a.gif",
+			"alt": "[1f38a]"
+		},
+		{
+			"url": "1f397-fe0f.gif",
+			"alt": "[1f397-fe0f]"
+		},
+		{
+			"url": "1f39f-fe0f.gif",
+			"alt": "[1f39f-fe0f]"
+		},
+		{
+			"url": "1f3ab.gif",
+			"alt": "[1f3ab]"
+		},
+		{
+			"url": "1f396-fe0f.gif",
+			"alt": "[1f396-fe0f]"
+		},
+		{
+			"url": "1f3c6.gif",
+			"alt": "[1f3c6]"
+		},
+		{
+			"url": "1f3c5.gif",
+			"alt": "[1f3c5]"
+		},
+		{
+			"url": "1f947.gif",
+			"alt": "[1f947]"
+		},
+		{
+			"url": "1f948.gif",
+			"alt": "[1f948]"
+		},
+		{
+			"url": "1f949.gif",
+			"alt": "[1f949]"
+		},
+		{
+			"url": "26bd.gif",
+			"alt": "[26bd]"
+		},
+		{
+			"url": "1f3c0.gif",
+			"alt": "[1f3c0]"
+		},
+		{
+			"url": "1f3af.gif",
+			"alt": "[1f3af]"
+		},
+		{
+			"url": "1f52e.gif",
+			"alt": "[1f52e]"
+		},
+		{
+			"url": "1fa84.gif",
+			"alt": "[1fa84]"
+		},
+		{
+			"url": "1f3ae.gif",
+			"alt": "[1f3ae]"
+		},
+		{
+			"url": "1f3b0.gif",
+			"alt": "[1f3b0]"
+		},
+		{
+			"url": "1f3b2.gif",
+			"alt": "[1f3b2]"
+		},
+		{
+			"url": "1f3ad.gif",
+			"alt": "[1f3ad]"
+		},
+		{
+			"url": "1f3a8.gif",
+			"alt": "[1f3a8]"
+		},
+		{
+			"url": "1f45b.gif",
+			"alt": "[1f45b]"
+		},
+		{
+			"url": "1f45c.gif",
+			"alt": "[1f45c]"
+		},
+		{
+			"url": "1f6cd-fe0f.gif",
+			"alt": "[1f6cd-fe0f]"
+		},
+		{
+			"url": "1f460.gif",
+			"alt": "[1f460]"
+		},
+		{
+			"url": "1f451.gif",
+			"alt": "[1f451]"
+		},
+		{
+			"url": "1f3a9.gif",
+			"alt": "[1f3a9]"
+		},
+		{
+			"url": "1f393.gif",
+			"alt": "[1f393]"
+		},
+		{
+			"url": "1fa96.gif",
+			"alt": "[1fa96]"
+		},
+		{
+			"url": "1f48e.gif",
+			"alt": "[1f48e]"
+		},
+		{
+			"url": "1f4e3.gif",
+			"alt": "[1f4e3]"
+		},
+		{
+			"url": "1f3b5.gif",
+			"alt": "[1f3b5]"
+		},
+		{
+			"url": "1f3b6.gif",
+			"alt": "[1f3b6]"
+		},
+		{
+			"url": "1f399-fe0f.gif",
+			"alt": "[1f399-fe0f]"
+		},
+		{
+			"url": "1f3a4.gif",
+			"alt": "[1f3a4]"
+		},
+		{
+			"url": "1f4f1.gif",
+			"alt": "[1f4f1]"
+		},
+		{
+			"url": "1f4f2.gif",
+			"alt": "[1f4f2]"
+		},
+		{
+			"url": "260e-fe0f.gif",
+			"alt": "[260e-fe0f]"
+		},
+		{
+			"url": "1f4de.gif",
+			"alt": "[1f4de]"
+		},
+		{
+			"url": "1f4bb.gif",
+			"alt": "[1f4bb]"
+		},
+		{
+			"url": "1f5a8-fe0f.gif",
+			"alt": "[1f5a8-fe0f]"
+		},
+		{
+			"url": "2328-fe0f.gif",
+			"alt": "[2328-fe0f]"
+		},
+		{
+			"url": "1f9ee.gif",
+			"alt": "[1f9ee]"
+		},
+		{
+			"url": "1f3ac.gif",
+			"alt": "[1f3ac]"
+		},
+		{
+			"url": "1f4fa.gif",
+			"alt": "[1f4fa]"
+		},
+		{
+			"url": "1f50d.gif",
+			"alt": "[1f50d]"
+		},
+		{
+			"url": "1f50e.gif",
+			"alt": "[1f50e]"
+		},
+		{
+			"url": "1f4a1.gif",
+			"alt": "[1f4a1]"
+		},
+		{
+			"url": "1f4d6.gif",
+			"alt": "[1f4d6]"
+		},
+		{
+			"url": "1f4da.gif",
+			"alt": "[1f4da]"
+		},
+		{
+			"url": "1f4f0.gif",
+			"alt": "[1f4f0]"
+		},
+		{
+			"url": "1f4b0.gif",
+			"alt": "[1f4b0]"
+		},
+		{
+			"url": "1fa99.gif",
+			"alt": "[1fa99]"
+		},
+		{
+			"url": "1f4b8.gif",
+			"alt": "[1f4b8]"
+		},
+		{
+			"url": "2709-fe0f.gif",
+			"alt": "[2709-fe0f]"
+		},
+		{
+			"url": "1f4e4.gif",
+			"alt": "[1f4e4]"
+		},
+		{
+			"url": "1f4e5.gif",
+			"alt": "[1f4e5]"
+		},
+		{
+			"url": "1f4ec.gif",
+			"alt": "[1f4ec]"
+		},
+		{
+			"url": "1f5f3-fe0f.gif",
+			"alt": "[1f5f3-fe0f]"
+		},
+		{
+			"url": "270f-fe0f.gif",
+			"alt": "[270f-fe0f]"
+		},
+		{
+			"url": "1f4dd.gif",
+			"alt": "[1f4dd]"
+		},
+		{
+			"url": "1f4bc.gif",
+			"alt": "[1f4bc]"
+		},
+		{
+			"url": "1f4c1.gif",
+			"alt": "[1f4c1]"
+		},
+		{
+			"url": "1f4c2.gif",
+			"alt": "[1f4c2]"
+		},
+		{
+			"url": "1f5c2-fe0f.gif",
+			"alt": "[1f5c2-fe0f]"
+		},
+		{
+			"url": "1f4c5.gif",
+			"alt": "[1f4c5]"
+		},
+		{
+			"url": "1f4c8.gif",
+			"alt": "[1f4c8]"
+		},
+		{
+			"url": "1f4c9.gif",
+			"alt": "[1f4c9]"
+		},
+		{
+			"url": "1f4ca.gif",
+			"alt": "[1f4ca]"
+		},
+		{
+			"url": "1f510.gif",
+			"alt": "[1f510]"
+		},
+		{
+			"url": "1f511.gif",
+			"alt": "[1f511]"
+		},
+		{
+			"url": "1f5dd-fe0f.gif",
+			"alt": "[1f5dd-fe0f]"
+		},
+		{
+			"url": "1f9f0.gif",
+			"alt": "[1f9f0]"
+		},
+		{
+			"url": "1f9ea.gif",
+			"alt": "[1f9ea]"
+		},
+		{
+			"url": "1f52c.gif",
+			"alt": "[1f52c]"
+		},
+		{
+			"url": "1f52d.gif",
+			"alt": "[1f52d]"
+		},
+		{
+			"url": "1f489.gif",
+			"alt": "[1f489]"
+		},
+		{
+			"url": "1f48a.gif",
+			"alt": "[1f48a]"
+		},
+		{
+			"url": "1fa7a.gif",
+			"alt": "[1fa7a]"
+		},
+		{
+			"url": "1f9fb.gif",
+			"alt": "[1f9fb]"
+		},
+		{
+			"url": "1f9fc.gif",
+			"alt": "[1f9fc]"
+		},
+		{
+			"url": "1f9fd.gif",
+			"alt": "[1f9fd]"
+		},
+		{
+			"url": "1f6d2.gif",
+			"alt": "[1f6d2]"
+		},
+		{
+			"url": "26b0-fe0f.gif",
+			"alt": "[26b0-fe0f]"
+		},
+		{
+			"url": "1f5ff.gif",
+			"alt": "[1f5ff]"
+		},
+		{
+			"url": "1f6b9.gif",
+			"alt": "[1f6b9]"
+		},
+		{
+			"url": "1f6ba.gif",
+			"alt": "[1f6ba]"
+		},
+		{
+			"url": "1f6bc.gif",
+			"alt": "[1f6bc]"
+		},
+		{
+			"url": "1f6c2.gif",
+			"alt": "[1f6c2]"
+		},
+		{
+			"url": "1f6c3.gif",
+			"alt": "[1f6c3]"
+		},
+		{
+			"url": "1f6c4.gif",
+			"alt": "[1f6c4]"
+		},
+		{
+			"url": "1f6c5.gif",
+			"alt": "[1f6c5]"
+		},
+		{
+			"url": "1f51e.gif",
+			"alt": "[1f51e]"
+		},
+		{
+			"url": "1f51d.gif",
+			"alt": "[1f51d]"
+		},
+		{
+			"url": "2648.gif",
+			"alt": "[2648]"
+		},
+		{
+			"url": "2649.gif",
+			"alt": "[2649]"
+		},
+		{
+			"url": "264a.gif",
+			"alt": "[264a]"
+		},
+		{
+			"url": "264b.gif",
+			"alt": "[264b]"
+		},
+		{
+			"url": "264c.gif",
+			"alt": "[264c]"
+		},
+		{
+			"url": "264d.gif",
+			"alt": "[264d]"
+		},
+		{
+			"url": "264e.gif",
+			"alt": "[264e]"
+		},
+		{
+			"url": "264f.gif",
+			"alt": "[264f]"
+		},
+		{
+			"url": "2650.gif",
+			"alt": "[2650]"
+		},
+		{
+			"url": "2651.gif",
+			"alt": "[2651]"
+		},
+		{
+			"url": "2652.gif",
+			"alt": "[2652]"
+		},
+		{
+			"url": "2653.gif",
+			"alt": "[2653]"
+		},
+		{
+			"url": "26ce.gif",
+			"alt": "[26ce]"
+		},
+		{
+			"url": "203c-fe0f.gif",
+			"alt": "[203c-fe0f]"
+		},
+		{
+			"url": "2049-fe0f.gif",
+			"alt": "[2049-fe0f]"
+		},
+		{
+			"url": "2753.gif",
+			"alt": "[2753]"
+		},
+		{
+			"url": "2754.gif",
+			"alt": "[2754]"
+		},
+		{
+			"url": "2755.gif",
+			"alt": "[2755]"
+		},
+		{
+			"url": "2757.gif",
+			"alt": "[2757]"
+		},
+		{
+			"url": "1f4b1.gif",
+			"alt": "[1f4b1]"
+		},
+		{
+			"url": "2705.gif",
+			"alt": "[2705]"
+		},
+		{
+			"url": "2611-fe0f.gif",
+			"alt": "[2611-fe0f]"
+		},
+		{
+			"url": "2714-fe0f.gif",
+			"alt": "[2714-fe0f]"
+		},
+		{
+			"url": "274c.gif",
+			"alt": "[274c]"
+		},
+		{
+			"url": "1f192.gif",
+			"alt": "[1f192]"
+		},
+		{
+			"url": "1f193.gif",
+			"alt": "[1f193]"
+		},
+		{
+			"url": "1f195.gif",
+			"alt": "[1f195]"
+		},
+		{
+			"url": "1f197.gif",
+			"alt": "[1f197]"
+		},
+		{
+			"url": "1f199.gif",
+			"alt": "[1f199]"
+		},
+		{
+			"url": "1f3c1.gif",
+			"alt": "[1f3c1]"
+		},
+		{
+			"url": "1f1e7-1f1fe.gif",
+			"alt": "[1f1e7-1f1fe]"
+		},
+		{
+			"url": "1faf1.gif",
+			"alt": "[1faf1]"
+		},
+		{
+			"url": "1faf0.gif",
+			"alt": "[1faf0]"
+		},
+		{
+			"url": "1faf6.gif",
+			"alt": "[1faf6]"
+		},
+		{
+			"url": "1faf5.gif",
+			"alt": "[1faf5]"
+		},
+		{
+			"url": "1faf2.gif",
+			"alt": "[1faf2]"
+		},
+		{
+			"url": "1faf3.gif",
+			"alt": "[1faf3]"
+		},
+		{
+			"url": "1faf4.gif",
+			"alt": "[1faf4]"
+		},
+		{
+			"url": "1f979.gif",
+			"alt": "[1f979]"
+		},
+		{
+			"url": "1faaa.gif",
+			"alt": "[1faaa]"
+		},
+		{
+			"url": "1faa9.gif",
+			"alt": "[1faa9]"
+		},
+		{
+			"url": "1fad7.gif",
+			"alt": "[1fad7]"
+		},
+		{
+			"url": "1fae6.gif",
+			"alt": "[1fae6]"
+		},
+		{
+			"url": "1fae3.gif",
+			"alt": "[1fae3]"
+		},
+		{
+			"url": "1fae2.gif",
+			"alt": "[1fae2]"
+		},
+		{
+			"url": "1fae1.gif",
+			"alt": "[1fae1]"
+		},
+		{
+			"url": "1fae0.gif",
+			"alt": "[1fae0]"
+		},
+		{
+			"url": "1fae5.gif",
+			"alt": "[1fae5]"
+		},
+		{
+			"url": "1fae4.gif",
+			"alt": "[1fae4]"
+		},
+		{
+			"url": "2764-fe0f-200d-1f525.gif",
+			"alt": "[2764-fe0f-200d-1f525]"
+		},
+		{
+			"url": "2764-fe0f-200d-1fa79.gif",
+			"alt": "[2764-fe0f-200d-1fa79]"
+		},
+		{
+			"url": "1f62e-200d-1f4a8.gif",
+			"alt": "[1f62e-200d-1f4a8]"
+		},
+		{
+			"url": "1f635-200d-1f4ab.gif",
+			"alt": "[1f635-200d-1f4ab]"
+		},
+		{
+			"url": "1f636-200d-1f32b-fe0f.gif",
+			"alt": "[1f636-200d-1f32b-fe0f]"
+		}
+	]
 }

+ 97 - 33
src/views/message/index.vue

@@ -128,18 +128,18 @@
 						</div>
 					</view>
 					<view class="content-r-msg-title flex align-center" v-if="userType == 2">
-						<div class="content-r-msg-title-s" v-if="resumesInfo.resumesName">
-							{{resumesInfo.resumesName}}
+						<div class="content-r-msg-title-s" v-if="resumesInfo.userName">
+							{{resumesInfo.userName}}
 						</div>
 						<el-divider direction="vertical" />
-						<div class="content-r-msg-title-n" v-if="resumesInfo.resumesPost">
-							{{resumesInfo.resumesPost}}
+						<div class="content-r-msg-title-n" v-if="resumesInfo.intentionRuleClassifyName">
+							{{resumesInfo.intentionRuleClassifyName}}
 						</div>
-						<div class="content-r-msg-title-p" v-if="resumesInfo.resumesCompensation">
-							{{resumesInfo.resumesCompensation}}
+						<div class="content-r-msg-title-p" v-if="resumesInfo.intentionSalaryRange">
+							{{resumesInfo.intentionSalaryRange}}
 						</div>
 						<div class="content-r-msg-title-e" v-if="resumesInfo.resumesWorkExperience">
-							{{resumesInfo.resumesWorkExperience}}
+							{{ resumesInfo.resumesWorkExperience || '0' }}
 						</div>
 					</view>
 					<!-- 聊天记录 -->
@@ -324,7 +324,7 @@
 											我的微信号为:{{JSON.parse(item.content).userWx}}
 										</div>
 										<div v-else>
-											我的微信号为:{{JSON.parse(item.content).userWx}}
+											我的微信号为:{{JSON.parse(item.content).companyWx}}
 										</div>
 									</div>
 									<!-- 交换手机号请求拒绝 -->
@@ -396,17 +396,35 @@
 		<el-dialog v-model="dialogms" title="面试邀请" width="30%" @close="closeMs" :destroy-on-close="true">
 			<div style="padding: 20px;">
 				<el-form label-position="right" ref="formms" :model="miamshi" class="">
+					<el-form-item prop="position"
+						:rules="[{ required: true, message: '请选择面试岗位', trigger: 'blur', },]" label="面试岗位">
+						<el-select v-model="miamshi.position" placeholder="请选择面试岗位" filterable clearable>
+							<el-option v-for="item in jobList" :key="item.id" :label="item.ruleClassifyName"
+								:value="item.ruleClassifyId" />
+						</el-select>
+					</el-form-item>
 					<el-form-item prop="interviewDateTime"
 						:rules="[{required: true,message: '请选择面试时间',trigger: 'blur',},]" label="面试时间">
 						<el-date-picker style="width: 100%;" v-model="miamshi.interviewDateTime" type="datetime"
 							placeholder="请选择面试时间" format="YYYY-MM-DD HH:mm" date-format="MMM DD, YYYY"
 							time-format="HH:mm" />
 					</el-form-item>
-					<el-form-item prop="detailedAddress"
+					<el-form-item prop="address"
 						:rules="[{required: true,message: '请选择面试地点',trigger: 'blur',},]" label="面试地点">
-						<el-autocomplete style="width: 100%;" v-model="miamshi.detailedAddress"
+						<el-autocomplete style="width: 100%;" v-model="miamshi.address"
 							:fetch-suggestions="querySearchAsync" placeholder="请输入面试地点" @select="handleSelect" />
-						<!-- <el-input v-model="miamshi.detailedAddress" placeholder="请选择面试地点" clearable /> -->
+					</el-form-item>
+					<el-form-item prop="detailedAddress" :rules="[{ required: true, message: '请输入详细地址', trigger: 'blur', },]"
+						label="详细地址">
+						<el-input v-model="miamshi.detailedAddress" placeholder="请输入详细地址" clearable />
+					</el-form-item>
+					<el-form-item prop="hrName" :rules="[{ required: true, message: '请输入联系人名称', trigger: 'blur', },]"
+						label="联系姓名">
+						<el-input v-model="miamshi.hrName" placeholder="请输入联系人" clearable />
+					</el-form-item>
+					<el-form-item prop="hrPhone"
+						:rules="[{ required: true, message: '请输入手机号', trigger: 'blur', },]" label="手机号码">
+						<el-input v-model="miamshi.hrPhone" placeholder="请输入手机号" clearable />
 					</el-form-item>
 					<el-form-item prop="remarks" :rules="[{required: true,message: '请输入备注',trigger: 'blur',},]"
 						label="面试备注">
@@ -446,6 +464,9 @@
 		data() {
 			return {
 				miamshi: {
+					hrPhone: '', //手机号
+					hrName: '', //联系人
+					position: '', //面试岗位
 					interviewDateTime: '', //面试时间
 					companyId: '', //公司id
 					remarks: '', //面试备注
@@ -456,6 +477,7 @@
 					county: '', //区
 					lng: '', //经度
 					lat: '', //纬度
+					address: '', //地址
 					detailedAddress: '', //详细地址
 				},
 				dialogms: false, //面试邀请弹窗
@@ -515,6 +537,7 @@
 				sysPgae: 1,
 				sysPages: 1,
 				sysLimit: 10,
+				jobList:[]
 			}
 		},
 		computed: {
@@ -548,29 +571,37 @@
 			//关闭面试邀请回掉
 			closeMs() {
 				//清楚输入的值
-				this.miamshi.interviewDateTime = ''
-				this.miamshi.detailedAddress = ''
-				this.miamshi.remarks = ''
-				this.miamshi.userId = ''
+				this.miamshi.detailedAddress = '';
+				this.miamshi.interviewDateTime = '';
+				this.miamshi.address = '';
+				this.miamshi.remarks = '';
+				this.miamshi.userId = '';
+				this.miamshi.hrPhone = ''; //手机号
+				this.miamshi.hrName = ''; //联系人
+				this.miamshi.position = ''; //面试岗位
 			},
 			jumpToTencentMap(latitude, longitude, name) {
 				var url = 'https://apis.map.qq.com/uri/v1/search?keyword=' + name + '&center=' + latitude + ',' +
 					longitude + '&radius=100&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77';
 				window.open(url)
 			},
-			formatDate(dates) {
+			formatDate(dates,type) {
 				let date = new Date(dates)
 				var year = date.getFullYear();
 				var month = ("0" + (date.getMonth() + 1)).slice(-2);
 				var day = ("0" + date.getDate()).slice(-2);
 				var hour = ("0" + date.getHours()).slice(-2);
 				var minute = ("0" + date.getMinutes()).slice(-2);
-				return year + "-" + month + "-" + day + " " + hour + ":" + minute + ':00';
+				if(type == 1){
+					return year + "-" + month + "-" + day + " " + '00' + ":" + '00' + ':00';
+				}else{
+					return hour + ":" + minute;
+				}
 			},
 			submitMs() {
-
 				let obj = JSON.parse(JSON.stringify(this.miamshi))
-				obj.interviewDateTime = this.formatDate(obj.interviewDateTime)
+				let Time = this.formatDate(obj.interviewDateTime,1);
+				obj.detailTime = this.formatDate(obj.interviewDateTime,2);
 				let formms = this.$refs.formms
 				formms.validate((valid) => {
 					if (valid) {
@@ -583,7 +614,26 @@
 							})
 							return
 						}
-						this.$Request.post("/app/interviewRecord/saveInterview", obj, {
+						let dataInfo = {
+							address:obj.address,
+							companyId:obj.companyId,
+							detailTime: obj.detailTime,
+							detailedAddress:obj.detailedAddress,
+							hrName: obj.hrName,
+							hrPhone: obj.hrPhone,
+							interviewDateTime: Time,
+							interviewerId:obj.userId,
+							lat: obj.lat,
+							lng: obj.lng,
+							onlineMsg:'',
+							onlineType:'',
+							postPushId: obj.postPushId,
+							recordId:'',//发送的这份面试的id,为空,代表添加,如果有值的话代表修改
+							remarks: obj.remarks,
+							resumesId:this.resumesId,
+							type:0
+						}
+						this.$Request.post("/app/interviewRecord/saveInterview", dataInfo, {
 							type: 'json'
 						}).then(res => {
 							if (res.code == 0) {
@@ -594,21 +644,22 @@
 									offset: this.screenHeight / 2
 								})
 								this.dialogms = false
-							} else {
-								ElMessage({
-									message: res.msg,
-									type: 'error',
-									duration: 1500,
-									offset: this.screenHeight / 2
-								})
-							}
+							} 
+							// else {
+							// 	ElMessage({
+							// 		message: res.msg,
+							// 		type: 'error',
+							// 		duration: 1500,
+							// 		offset: this.screenHeight / 2
+							// 	})
+							// }
 						})
 					}
 				})
 			},
 			//选择地址
 			handleSelect(item) {
-				this.miamshi.companyId = localStorage.getItem('companyId')
+				this.miamshi.companyId = localStorage.getItem('companyId');
 				this.miamshi.userId = this.byUserId
 				this.miamshi.postPushId = this.postPushId
 				this.miamshi.province = item.province
@@ -718,6 +769,7 @@
 			},
 			//开始聊天
 			startMsg(item, index) {
+				this.ruleClassifyName = item.stationName;//岗位名称
 				//关闭scoket
 				if (this.webSco) {
 					this.webSco.close()
@@ -753,9 +805,9 @@
 				]
 				this.postPushId = item.postPushId
 				this.chatConversationId = item.chatConversationId
+				this.getPostPushInfo()
 				if (this.userType == 1) { //用户
 					this.byUserId = item.focusedUserId
-					this.getPostPushInfo()
 					this.czList[2].name = '发简历'
 
 				} else { //招聘者
@@ -1206,12 +1258,20 @@
 					params: data
 				}).then(res => {
 					if (res.code == 0) {
+						res.data.intentionRuleClassifyName = this.ruleClassifyName
+						res.data.intentionSalaryRange = ''
+						res.data.intentionList.forEach(item => {
+							if (item.ruleClassifyName == this.ruleClassifyName) {
+								res.data.intentionRuleClassifyName = item.ruleClassifyName
+								res.data.intentionSalaryRange = item.salaryRange
+							}
+						})
 						this.resumesInfo = res.data
 					}
 				})
 			},
 			//获取岗位数据
-			getPostPushInfo(id) {
+			getPostPushInfo() {
 				let data = {
 					userId: this.userId,
 					postPushId: this.postPushId
@@ -1222,7 +1282,11 @@
 					if (res.code == 0) {
 						this.title = res.data.company.companyName
 						this.postPushInfo = res.data
-						this.postPushInfo.positionWelfare = this.postPushInfo.positionWelfare.split(',')
+						// this.postPushInfo.positionWelfare = this.postPushInfo?.positionWelfare.split(',');
+						// 选择的岗位列表
+						this.jobList = [{
+							...res.data
+						}];
 					}
 				})
 			},
@@ -1243,7 +1307,7 @@
 					params: data
 				}).then(res => {
 					if (res.code == 0) {
-						this.leftList = res.data.list
+						this.leftList = res.data?.list || []
 					}
 				});
 			},

+ 5 - 5
src/views/post/postInfo.vue

@@ -257,11 +257,11 @@
 			},
 			//立即联系
 			openMeg() {
-				ElMessage({
-					message: '请前往首页扫码下载app去使用',
-					type: 'warning',
-				})
-				return;
+				// ElMessage({
+				// 	message: '请前往首页扫码下载app去使用',
+				// 	type: 'warning',
+				// })
+				// return;
 				if (!localStorage.getItem('token')) {
 					this.goLogo()
 					return

+ 5 - 6
src/views/resume/resumeInfo.vue

@@ -243,7 +243,7 @@
 		mounted() {
 			this.screenHeight = window.innerHeight
 			this.resumesId = this.$route.query.resumesId
-			this.postPushId = this.$route.query.postPushId || ''
+			this.postPushId = this.$route.query.postPushId || localStorage.getItem('postPushId')
 			let inviterCode = this.$route.query.inviterCode
 			if (inviterCode) {
 				localStorage.setItem('inviterCode', inviterCode)
@@ -606,11 +606,6 @@
 			},
 			//立即联系
 			openMeg() {
-				ElMessage({
-					message: '请前往首页扫码下载app去使用',
-					type: 'warning',
-				});
-				return;
 				if (!localStorage.getItem('token')) {
 					this.goLogo()
 					return
@@ -717,6 +712,10 @@
 		background-color: #F7F7F7 !important;
 		box-shadow: none !important;
 	}
+	:deep(.el-select__wrapper){
+		background-color: #F7F7F7 !important;
+			box-shadow: none !important;
+	}
 
 	:deep(.el-input) {
 		--el-input-focus-border: none;