Browse Source

Merge branch 'dev4.5.5' of http://127.0.0.1:8080/qmx/jy into dev4.5.5

TANGSHIZHE 4 years ago
parent
commit
fdc4e5d487

+ 34 - 17
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyWord.js

@@ -13,7 +13,7 @@ var vm = new Vue({
     // 当前信息
     filter: {
       loaded: false, // 是否请求加载完成
-      pickerShow: false, //picker是否显示
+      pickerShow: false, // picker是否显示
       groupName: '', // 为空表示全部
       allKeywordsList: [],  // 筛选前的数组
       keywordsList: [], // 筛选后的数组
@@ -23,7 +23,9 @@ var vm = new Vue({
       upgrade: false // 关键词升级提示弹框
     },
     tip: {
-      fastImport: true
+      fastImport: true, // 控制快速导入入口的显示隐藏
+      i_vip_fastimport: 0,
+      ordinarykc: 0
     },
     scrollTop: 0 // 记录滚动高度
   },
@@ -34,7 +36,8 @@ var vm = new Vue({
       })
     },
     fastImportTipShow: function () {
-      return this.filter.allKeywordsList.length === 0 && this.filter.loaded && this.tip.fastImport
+      var needShow = this.tip.i_vip_fastimport == 0 && this.tip.ordinarykc > 0
+      return needShow && this.filter.loaded && this.tip.fastImport
     },
     listShow: function () {
       return this.filter.keywordsList.length !== 0 && this.filter.loaded
@@ -65,10 +68,13 @@ var vm = new Vue({
     }
   },
   created: function () {
-    this.getKeywordsGroupList(true)
     this.restoreState()
+    this.getKeywordsGroupList(true)
+  },
+  mounted: function () {
+    // 清除大会员初始化缓存
+    localStorage.removeItem('big_member_save_init_big_data_nov')
   },
-  mounted: function () {},
   methods: {
     showLoading: function () {
       return this.$toast.loading({
@@ -128,6 +134,14 @@ var vm = new Vue({
           }
           if (res && res.userData) {
             _this.userData = res.userData
+            if (res.userData) {
+              _this.tip.i_vip_fastimport = res.userData.i_vip_fastimport
+              _this.tip.ordinarykc = res.userData.ordinarykc
+              // 关键词弹窗提醒 fasle:需要弹窗 true:不需要弹窗
+              if (!res.userData.b_keytip) {
+                _this.dialog.upgrade = true
+              }
+            }
             if (res.userData && res.userData.o_vipjy) {
               // 整理数据
               var groupList = _this.addInfoToKeyItem(res.userData.o_vipjy.a_items)
@@ -165,7 +179,9 @@ var vm = new Vue({
       groupList.forEach(function (keywordsList, index) {
         if (keywordsList && Array.isArray(keywordsList.a_key)) {
           keywordsList.groupIndex = index
-          keywordsList.updatetime = _this.getMaxUpdateTime(keywordsList.a_key)
+          if (!keywordsList.updatetime) {
+            keywordsList.updatetime = 0
+          }
           keywordsList.a_key.forEach(function (keyword, iindex) {
             // 添加一些其他信息
             keyword.groupName = keywordsList.s_item // 分类名
@@ -190,22 +206,13 @@ var vm = new Vue({
           groupNameList.push({
             name: item.s_item, // 分类名
             count: count, // 分类下有多少个关键词
-            groupIndex: item.groupIndex
+            groupIndex: item.groupIndex,
+            updatetime: item.updatetime
           })
         }
       })
       return groupNameList
     },
-    getMaxUpdateTime: function (arr) {
-      var max = 0
-      if (!Array.isArray(arr)) return max
-      arr.some(function (item) {
-        if (item.updatetime && item.updatetime > max) {
-          max = item.updatetime
-        }
-      })
-      return max
-    },
     calcKeyInfo: function (item) {
       // 匹配方式 item.matchway 0/null精准 1模糊
       var key = item.key
@@ -454,6 +461,7 @@ var vm = new Vue({
       location.href = '/jyapp/vipsubscribe/toSetinfoPage' + '?' + queryString
     },
     toKeyManagePage: function () {
+      this.filter.pickerShow = false
       this.savePageState()
       location.href = '/jyapp/vipsubscribe/toSetmanagePage'
     },
@@ -489,6 +497,15 @@ var vm = new Vue({
         }
       })
     },
+    upgradeDialogClose: function () {
+      $.ajax({
+        type: 'POST',
+        url: '/subscribepay/afterPay/setUserInfo',
+        data: {
+          pageType: 'keytip'
+        }
+      })
+    },
     // 恢复数据
     restoreState: function () {
       var $data = sessionStorage.getItem(this.conf.sessKey)

+ 2 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyset-list.js

@@ -153,6 +153,8 @@ var keySet = new Vue({
   },
   mounted: function () {
     pTools.iosBackRefresh()
+    // 清除大会员初始化缓存
+    localStorage.removeItem('big_member_save_init_big_data_nov')
   },
   methods: {
     // 获取关键词数据

+ 13 - 3
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyword-info.js

@@ -48,7 +48,7 @@ var vm = new Vue({
   },
   computed: {
     tooLittleTipShow: function () {
-      return this.pInfo.pushCount != 0 && this.pInfo.pushCount < 30 && this.keyInfo.key
+      return this.pInfo.pushCount !== '' && this.pInfo.pushCount < 30 && this.keyInfo.key
     },
     // 监听关键词和匹配方式变化
     needGetRecList: function () {
@@ -64,6 +64,13 @@ var vm = new Vue({
         notKey: this.keyInfo.notKey,
         matchWay: this.keyInfo.matchWay
       }
+    },
+    keyInfoChange2: function () {
+      return {
+        key: this.keyInfo.key,
+        notKey: this.keyInfo.notKey,
+        matchWay: this.keyInfo.matchWay
+      }
     }
   },
   watch: {
@@ -72,7 +79,10 @@ var vm = new Vue({
     }, 2000),
     keyInfoChange: utils.debounce(function () {
       this.getPushCount()
-    }, 2000)
+    }, 2000),
+    keyInfoChange2: function () {
+      this.pInfo.pushCount = ''
+    }
   },
   created: function () {
     // 获取url参数
@@ -139,7 +149,7 @@ var vm = new Vue({
           matchway: this.keyInfo.matchWay
         },
         success: function (res) {
-          if (res && res.count) {
+          if (res && res.count !== undefined && res.count !== null) {
             _this.pInfo.pushCount = res.count
           }
         }

+ 4 - 12
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyword-manage.js

@@ -117,7 +117,9 @@ var vm = new Vue({
       groupList.forEach(function (keywordsList, index) {
         if (keywordsList && Array.isArray(keywordsList.a_key)) {
           keywordsList.groupIndex = index
-          keywordsList.updatetime = _this.getMaxUpdateTime(keywordsList.a_key)
+          if (!keywordsList.updatetime) {
+            keywordsList.updatetime = 0
+          }
           keywordsList.a_key.forEach(function (keyword, iindex) {
             // 添加一些其他信息
             keyword.groupName = keywordsList.s_item // 分类名
@@ -151,16 +153,6 @@ var vm = new Vue({
       })
       return groupNameList
     },
-    getMaxUpdateTime: function (arr) {
-      var max = 0
-      if (!Array.isArray(arr)) return max
-      arr.some(function (item) {
-        if (item.updatetime && item.updatetime > max) {
-          max = item.updatetime
-        }
-      })
-      return max
-    },
     // 通过已有分类得到一个未分类名
     getNewClassName: function () {
       var conf = {
@@ -368,7 +360,7 @@ var vm = new Vue({
         // 分类名不重复,新建分类
         this.saveGroupEdit(this.editGroupNameDialog.type)
       } else {
-        this.showToast('分类名不能重复')
+        // this.showToast('分类名不能重复')
       }
     },
     saveGroupEdit: function (type) {

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/infoWord.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="zh-CN">
 
 <head>
     {{include "/common/meta.html"}}

+ 2 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/keyWord.html

@@ -114,7 +114,7 @@
             </div>
             <div class="j-button-group" v-else>
                 <button class="j-button-confirm" @click="addKeyWord" :disabled="filter.allKeywordsList.length >= conf.keywordMax">
-                    <span class="info-text">新增关键词</span>
+                    <span class="info-text">新增关键词</span>
                     <span class="sub-text">(${ totalKeywordsCount } / ${ conf.keywordMax })</span>
                 </button>
             </div>
@@ -138,6 +138,7 @@
         v-model="dialog.upgrade"
         class="dialog-upgrade"
         title="关键词升级提示"
+        @close="upgradeDialogClose"
         confirm-button-text="我知道了"
         confirm-button-color="#2abed1">
         <div class="fast-import-content">

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/manageWord.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="zh-CN">
 
 <head>
     {{include "/common/meta.html"}}

+ 7 - 58
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -403,15 +403,12 @@ func (a *AfterPay) SetUserInfo() error {
 			match_way, _ := a.GetInteger("match_way")
 			//是否是首次添加关键词
 			kwscount := a.GetString("kwscount")
-			log.Println("===", a.GetString("pageType") == "keyWords", "---", actionType, "~~~", a.GetString("delete_key"))
 
 			//查询用vip关键词信息
 			data, ok := util.MQFW.FindById("user", userId, `{"o_vipjy.a_items":1}`)
 			if ok && data != nil && len(*data) > 0 {
-				log.Println(userId)
 				o_vipjy, _ := (*data)["o_vipjy"].(map[string]interface{})
 				a_items, errs := o_vipjy["a_items"].([]interface{})
-				log.Println("ok:", errs)
 				if !errs {
 					util.MQFW.UpdateById("user", userId, map[string]interface{}{
 						"$set": map[string]interface{}{
@@ -461,7 +458,6 @@ func (a *AfterPay) SetUserInfo() error {
 				if len([]rune(kws_name)) > 200 {
 					kws_name = qutil.SubString(kws_name, 0, 200)
 				}
-				log.Println(kws_name)
 				if kws_name != "" {
 					classify_index = strconv.Itoa(i)
 					var _kws []string
@@ -558,12 +554,12 @@ func (a *AfterPay) SetUserInfo() error {
 										saveData["o_vipjy.a_items."+classify_index+".a_key"] = []map[string]interface{}{}
 									}
 									saveData["o_vipjy.a_items."+classify_index+".s_item"] = classify_name
+									saveData["o_vipjy.a_items."+classify_index+".updatetime"] = time.Now().Unix()
 								}
 							}
 						}
 					} else {
 						if actionType == "DC" { //删除分类
-							log.Println("class", classify_index)
 							items := []interface{}{}
 							m := map[string]bool{}
 							for _, v := range strings.Split(classify_index, ",") {
@@ -574,11 +570,9 @@ func (a *AfterPay) SetUserInfo() error {
 									items = append(items, v)
 								}
 							}
-							log.Println(items)
 							saveData["o_vipjy.a_items"] = items
 						} else if actionType == "DK" { //删除关键词
 							delete_key := a.GetString("delete_key")
-							log.Println(delete_key, actionType)
 							dMap, err := JsonToMap(delete_key)
 							newMap := []interface{}{}
 							if err == nil && len(dMap) > 0 {
@@ -592,7 +586,6 @@ func (a *AfterPay) SetUserInfo() error {
 												if kk == "a_key" {
 													keyarrs := qutil.ObjArrToMapArr(vv.([]interface{}))
 													for kk, vk := range keyarrs {
-														log.Println(strconv.Itoa(kk), "yyyy:", strings.Split(dMap[strconv.Itoa(k)].(string), ","))
 														if IsContain(strings.Split(dMap[strconv.Itoa(k)].(string), ","), strconv.Itoa(kk)) {
 															continue
 														}
@@ -607,7 +600,6 @@ func (a *AfterPay) SetUserInfo() error {
 									} else {
 										newMap = append(newMap, v)
 									}
-
 								}
 							}
 							//newMap
@@ -622,12 +614,9 @@ func (a *AfterPay) SetUserInfo() error {
 			other, _ := a.GetInteger("other")
 			saveData["o_vipjy.i_matchbuyerclass_other"] = other
 		} else if a.GetString("pageType") == "keytip" {
-			if keytip, er := a.GetBool("keytip"); er == nil && keytip {
-				saveData["b_keytip"] = true //fasle:需要弹窗 true:不需要弹窗
-			}
+			saveData["b_keytip"] = true //fasle:需要弹窗 true:不需要弹窗
 		}
 		if len(saveData) > 0 {
-			log.Println(saveData)
 			flag = util.MQFW.UpdateById("user", userId, map[string]interface{}{
 				"$set": saveData,
 			})
@@ -785,15 +774,12 @@ func KeyWordsRepeat(obj map[string]interface{}, aitems []interface{}, c_i, k_i i
 	if isRepeat(key) || isRepeat(appendkey) {
 		return true
 	}
-	log.Println("obj", obj)
-	//
-	keys_before := map[string]bool{}
-	keyM := map[string]bool{} //已有的关键词组
-	for k, v := range aitems {
+	// 录入的关键词
+	for _, v := range aitems {
 		if items, ok := v.(map[string]interface{}); ok && len(items) > 0 {
 			for kk, vv := range items {
 				if kk == "a_key" {
-					for m, n := range qutil.ObjArrToMapArr(vv.([]interface{})) {
+					for _, n := range qutil.ObjArrToMapArr(vv.([]interface{})) {
 						db_not := []string{}
 						db_key := []string{}
 						db_append := []string{}
@@ -806,51 +792,14 @@ func KeyWordsRepeat(obj map[string]interface{}, aitems []interface{}, c_i, k_i i
 						if n["appendkey"] != nil {
 							db_append = qutil.ObjArrToStringArr(n["appendkey"].([]interface{}))
 						}
-						db_matchway := qutil.IntAllDef(n["matchway"], 0)
-						if k == c_i && m == k_i {
-							for _, v := range append(db_key, db_append...) {
-								keys_before[v] = true
-							}
-						}
-						k_m := ""
-						if db_matchway == 1 {
-							for _, x := range append(db_key, db_append...) {
-								k_m = fmt.Sprintf("%s_%s_%v", x, strings.Join(db_not, ""), db_matchway)
-								log.Println("--k_m-", k_m)
-								keyM[k_m] = true
-							}
-						} else {
-							k_m = fmt.Sprintf("%s_%s_%v", strings.Join(append(db_key, db_append...), ""), strings.Join(db_not, ""), db_matchway)
-							keyM[k_m] = true
-							log.Println("--k_m-", k_m)
+						if StringArrEqual(key, db_key) && StringArrEqual(notkey, db_not) && qutil.IntAllDef(n["matchway"], 0) == matchway && StringArrEqual(appendkey, db_append) {
+							return true
 						}
 					}
 				}
 			}
 		}
 	}
-	//剔除已存在的关键词 保留新增关键词
-	log.Println("keys_before:", keys_before)
-	if len(keyM) > 0 {
-		if matchway == 1 {
-			for _, v := range append(key, appendkey...) {
-				if keys_before[v] {
-					continue
-				}
-				k_m2 := fmt.Sprintf("%s_%s_%v", v, strings.Join(notkey, ""), matchway)
-				log.Println("--", k_m2)
-				if keyM[k_m2] {
-					return true
-				}
-			}
-		} else {
-			k_m2 := fmt.Sprintf("%s_%s_%v", strings.Join(append(key, appendkey...), ""), strings.Join(notkey, ""), matchway)
-			log.Println("--", k_m2)
-			if keyM[k_m2] {
-				return true
-			}
-		}
-	}
 	return false
 }
 

+ 4 - 4
src/jfw/modules/subscribepay/src/util/vrew.go

@@ -245,13 +245,13 @@ func GetSqlObjFromId(_id, item string, index int) *ViewCondition {
 		return nil
 	}
 	o_vipjy, _ := (*query)["o_vipjy"].(map[string]interface{})
-	a_items := o_vipjy["a_items"].([]interface{})
-	a_buyerclass := o_vipjy["a_buyerclass"].([]interface{})
+	a_items, _ := o_vipjy["a_items"].([]interface{})
+	a_buyerclass, _ := o_vipjy["a_buyerclass"].([]interface{})
 	if len(a_buyerclass) > 0 && qutil.IntAllDef(o_vipjy["i_matchbuyerclass_other"], 1) == 1 && len(a_items) > 0 {
 		a_buyerclass = append(a_buyerclass, "其它")
 	}
-	a_infotype := o_vipjy["a_infotype"].([]interface{})
-	o_area := o_vipjy["o_area"].(map[string]interface{})
+	a_infotype, _ := o_vipjy["a_infotype"].([]interface{})
+	o_area, _ := o_vipjy["o_area"].(map[string]interface{})
 	return &ViewCondition{
 		Keyword:    getKeyWordArrFromDbResult(a_items, item, index),
 		Buyerclass: qutil.ObjArrToStringArr(a_buyerclass),

+ 30 - 16
src/web/staticres/vipsubscribe/js/keyWord.js

@@ -13,7 +13,7 @@ var vm = new Vue({
     // 当前信息
     filter: {
       loaded: false, // 是否请求加载完成
-      pickerShow: false, //picker是否显示
+      pickerShow: false, // picker是否显示
       groupName: '', // 为空表示全部
       allKeywordsList: [],  // 筛选前的数组
       keywordsList: [], // 筛选后的数组
@@ -23,7 +23,9 @@ var vm = new Vue({
       upgrade: false // 关键词升级提示弹框
     },
     tip: {
-      fastImport: true
+      fastImport: true, // 控制快速导入入口的显示隐藏
+      i_vip_fastimport: 0,
+      ordinarykc: 0
     },
     scrollTop: 0 // 记录滚动高度
   },
@@ -34,7 +36,8 @@ var vm = new Vue({
       })
     },
     fastImportTipShow: function () {
-      return this.filter.allKeywordsList.length === 0 && this.filter.loaded && this.tip.fastImport
+      var needShow = this.tip.i_vip_fastimport == 0 && this.tip.ordinarykc > 0
+      return needShow && this.filter.loaded && this.tip.fastImport
     },
     listShow: function () {
       return this.filter.keywordsList.length !== 0 && this.filter.loaded
@@ -65,8 +68,8 @@ var vm = new Vue({
     }
   },
   created: function () {
-    this.getKeywordsGroupList(true)
     this.restoreState()
+    this.getKeywordsGroupList(true)
   },
   mounted: function () {},
   methods: {
@@ -128,6 +131,14 @@ var vm = new Vue({
           }
           if (res && res.userData) {
             _this.userData = res.userData
+            if (res.userData) {
+              _this.tip.i_vip_fastimport = res.userData.i_vip_fastimport
+              _this.tip.ordinarykc = res.userData.ordinarykc
+              // 关键词弹窗提醒 fasle:需要弹窗 true:不需要弹窗
+              if (!res.userData.b_keytip) {
+                _this.dialog.upgrade = true
+              }
+            }
             if (res.userData && res.userData.o_vipjy) {
               // 整理数据
               var groupList = _this.addInfoToKeyItem(res.userData.o_vipjy.a_items)
@@ -164,7 +175,9 @@ var vm = new Vue({
       groupList.forEach(function (keywordsList, index) {
         if (keywordsList && Array.isArray(keywordsList.a_key)) {
           keywordsList.groupIndex = index
-          keywordsList.updatetime = _this.getMaxUpdateTime(keywordsList.a_key)
+          if (!keywordsList.updatetime) {
+            keywordsList.updatetime = 0
+          }
           keywordsList.a_key.forEach(function (keyword, iindex) {
             // 添加一些其他信息
             keyword.groupName = keywordsList.s_item // 分类名
@@ -189,22 +202,13 @@ var vm = new Vue({
           groupNameList.push({
             name: item.s_item, // 分类名
             count: count, // 分类下有多少个关键词
-            groupIndex: item.groupIndex
+            groupIndex: item.groupIndex,
+            updatetime: item.updatetime
           })
         }
       })
       return groupNameList
     },
-    getMaxUpdateTime: function (arr) {
-      var max = 0
-      if (!Array.isArray(arr)) return max
-      arr.some(function (item) {
-        if (item.updatetime && item.updatetime > max) {
-          max = item.updatetime
-        }
-      })
-      return max
-    },
     calcKeyInfo: function (item) {
       // 匹配方式 item.matchway 0/null精准 1模糊
       var key = item.key
@@ -453,6 +457,7 @@ var vm = new Vue({
       location.href = '/front/vipsubscribe/toSetinfoPage' + '?' + queryString
     },
     toKeyManagePage: function () {
+      this.filter.pickerShow = false
       this.savePageState()
       location.href = '/front/vipsubscribe/toSetmanagePage'
     },
@@ -488,6 +493,15 @@ var vm = new Vue({
         }
       })
     },
+    upgradeDialogClose: function () {
+      $.ajax({
+        type: 'POST',
+        url: '/subscribepay/afterPay/setUserInfo',
+        data: {
+          pageType: 'keytip'
+        }
+      })
+    },
     // 恢复数据
     restoreState: function () {
       var $data = sessionStorage.getItem(this.conf.sessKey)

+ 13 - 3
src/web/staticres/vipsubscribe/js/keyword-info.js

@@ -48,7 +48,7 @@ var vm = new Vue({
   },
   computed: {
     tooLittleTipShow: function () {
-      return this.pInfo.pushCount != 0 && this.pInfo.pushCount < 30 && this.keyInfo.key
+      return this.pInfo.pushCount !== '' && this.pInfo.pushCount < 30 && this.keyInfo.key
     },
     // 监听关键词和匹配方式变化
     needGetRecList: function () {
@@ -64,6 +64,13 @@ var vm = new Vue({
         notKey: this.keyInfo.notKey,
         matchWay: this.keyInfo.matchWay
       }
+    },
+    keyInfoChange2: function () {
+      return {
+        key: this.keyInfo.key,
+        notKey: this.keyInfo.notKey,
+        matchWay: this.keyInfo.matchWay
+      }
     }
   },
   watch: {
@@ -72,7 +79,10 @@ var vm = new Vue({
     }, 2000),
     keyInfoChange: utils.debounce(function () {
       this.getPushCount()
-    }, 2000)
+    }, 2000),
+    keyInfoChange2: function () {
+      this.pInfo.pushCount = ''
+    }
   },
   created: function () {
     // 获取url参数
@@ -139,7 +149,7 @@ var vm = new Vue({
           matchway: this.keyInfo.matchWay
         },
         success: function (res) {
-          if (res && res.count) {
+          if (res && res.count !== undefined && res.count !== null) {
             _this.pInfo.pushCount = res.count
           }
         }

+ 4 - 12
src/web/staticres/vipsubscribe/js/keyword-manage.js

@@ -117,7 +117,9 @@ var vm = new Vue({
       groupList.forEach(function (keywordsList, index) {
         if (keywordsList && Array.isArray(keywordsList.a_key)) {
           keywordsList.groupIndex = index
-          keywordsList.updatetime = _this.getMaxUpdateTime(keywordsList.a_key)
+          if (!keywordsList.updatetime) {
+            keywordsList.updatetime = 0
+          }
           keywordsList.a_key.forEach(function (keyword, iindex) {
             // 添加一些其他信息
             keyword.groupName = keywordsList.s_item // 分类名
@@ -151,16 +153,6 @@ var vm = new Vue({
       })
       return groupNameList
     },
-    getMaxUpdateTime: function (arr) {
-      var max = 0
-      if (!Array.isArray(arr)) return max
-      arr.some(function (item) {
-        if (item.updatetime && item.updatetime > max) {
-          max = item.updatetime
-        }
-      })
-      return max
-    },
     // 通过已有分类得到一个未分类名
     getNewClassName: function () {
       var conf = {
@@ -368,7 +360,7 @@ var vm = new Vue({
         // 分类名不重复,新建分类
         this.saveGroupEdit(this.editGroupNameDialog.type)
       } else {
-        this.showToast('分类名不能重复')
+        // this.showToast('分类名不能重复')
       }
     },
     saveGroupEdit: function (type) {

+ 1 - 1
src/web/templates/weixin/vipsubscribe/infoWord.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="zh-CN">
 
 <head>
     <meta charset="UTF-8">

+ 1 - 0
src/web/templates/weixin/vipsubscribe/keyWord.html

@@ -131,6 +131,7 @@
         v-model="dialog.upgrade"
         class="dialog-upgrade"
         title="关键词升级提示"
+        @close="upgradeDialogClose"
         confirm-button-text="我知道了"
         confirm-button-color="#2abed1">
         <div class="fast-import-content">

+ 1 - 1
src/web/templates/weixin/vipsubscribe/manageWord.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="zh-CN">
 
 <head>
     <meta charset="UTF-8">