diff --git a/androidPrivacy.json b/androidPrivacy.json
index dc05560..36ff16d 100644
--- a/androidPrivacy.json
+++ b/androidPrivacy.json
@@ -2,13 +2,13 @@
     "version" : "1",
     "prompt" : "template",
     "title" : "服务协议与隐私政策",
-    "message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>\r\r\r
-\t你可以阅读 <a href=\"https://请修改为自己的域名/register.html\">《用户协议》</a> 与 <a href=\"https://请修改为自己的域名/protocol.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
+    "message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>\r\r\r\r
+\t你可以阅读 <a href=\"https://shop.lihaink.cn/register.html\">《用户协议》</a> 与 <a href=\"https://shop.lihaink.cn/protocol.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
     "buttonAccept" : "同意并接受",
     "buttonRefuse" : "暂不同意",
     "second" : {
         "title" : "确认提示",
-        "message" : "进入应用前,你需先同意<a href=\"https://请修改为自己的域名/register.html\">《用户协议》</a> 与 <a href=\"https://请修改为自己的域名/protocol.html\">《隐私政策》</a>,否则将退出应用。",
+        "message" : "进入应用前,你需先同意<a href=\"https://shop.lihaink.cn/register.html\">《用户协议》</a> 与 <a href=\"https://shop.lihaink.cn/protocol.html\">《隐私政策》</a>,否则将退出应用。",
         "buttonAccept" : "同意并继续",
         "buttonRefuse" : "退出应用"
     },
diff --git a/api/uniMP.js b/api/uniMP.js
new file mode 100644
index 0000000..3562f10
--- /dev/null
+++ b/api/uniMP.js
@@ -0,0 +1,27 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+import request from "@/utils/request.js";
+
+/**
+ * 获取供销平台版本信息
+ */
+export function getGXconfig(data) {
+  return request.get("global/config", data);
+}
+
+
+/**
+ * 获取商城小程序信息
+ */
+
+export function miniapp(data) {
+  return request.get("miniapp/version?version=1", data);
+}
+
diff --git a/components/shortPopupActive.vue b/components/shortPopupActive.vue
new file mode 100644
index 0000000..9f95187
--- /dev/null
+++ b/components/shortPopupActive.vue
@@ -0,0 +1,534 @@
+<template>
+  <view>
+    <uni-popup ref="popupRef" type="bottom" @change="changeShow">
+      <view class="pop">
+        <scroll-view scroll-y class="scroll">
+            <view class="image">
+              <swiper class="swiper" :current="current" autoplay style="width: 100%;height: 100%;" @change="changeCurrent">
+                <block v-if="product.slider_image && product.slider_image.length>0">
+                  <swiper-item v-for="(item,index) in product.slider_image" :key="index">
+                    <image class="img" :src="item"></image>
+                  </swiper-item>
+                </block>
+                <swiper-item v-else>
+                  <image class="img" :src="datas.image||defualtImg"></image>
+                </swiper-item>
+              </swiper>
+              <view class="current">{{current+1}}/{{product.slider_image && product.slider_image.length||1}}</view>
+              <image class="close" src="@/static/images/icon/close.png" @click="close()"></image>
+              <view class="border"></view>
+            </view>
+            <view class="white_card">
+              <view class="flex flex_end">
+                <block v-if="datas.limited_price">
+                  <view class="price">¥<text class="pro">{{leftPrice2}}.</text>{{rightPrice2}}
+                  </view>
+                  <view class="price" style="text-decoration: line-through;color: #999;font-weight: 400;font-size: 28rpx;">原价: ¥<text>{{leftPrice}}.</text>{{rightPrice}}</view>
+                </block>
+                <view v-else class="price">¥<text>{{leftPrice}}.</text>{{rightPrice}}</view>
+                <!-- <view>订货价</view> -->
+              </view>
+              <view class="short_name">{{datas.store_name}}</view>
+              <view class="flex">
+                <view class="shop_name">
+                  <image class="icon" src="@/static/images/icon/short.png"></image>
+                  <view>{{datas.merchant.mer_name}}</view>
+                </view>
+              </view>
+              <u-line></u-line>
+              <block name="规格选中" v-for="(att, indexw) in attr" :key="indexw">
+                <view class="m_title">{{att.attr_name}}</view>
+                <view class="flex" style="flex-wrap: wrap;">
+                  <view class="attr" :class="{'attr_active': item.check}" 
+                    v-for="(item, indexn) in att.attr_value" :key="indexn"
+                    @click="changeAttr(indexw, indexn)">
+                    {{item.attr}}
+                  </view>
+                </view>
+              </block>
+              <view class="m_title num">
+                <view>购买数量</view>
+                <view class="input">
+                  <view class="input_item sub" @click="subCartNum">-</view>
+                  <input class="input_item input_view" v-model="cart_num" type="number" @input="inputCartNum" />
+                  <view class="input_item plus" @click="plusCartNum">+</view>
+                </view>
+              </view>
+              <view>
+                商品库存 <text style="margin-left: 20rpx;">{{(sku[changeSkuKey] && sku[changeSkuKey].stock)||change.stock}}</text>
+              </view>
+            </view>
+        </scroll-view>
+        <view class="button">
+          <!-- <view class="b_icon" @click="navgoCart()">
+            <image src="@/static/images/icon/car.png"></image>
+            <view>购物车</view>
+            <view class="badge" v-if="goodsNum">{{goodsNum}}</view>
+          </view> -->
+          <view class="btn" @click.stop="$u.throttle(addcart, 1500)"> {{isBuy?'立即购买':'加入购物车'}} </view>
+        </view>
+      </view>
+    </uni-popup>
+  </view>
+</template>
+
+<script>
+  import {
+    postCartAdd,
+    getProductDetail
+  } from '@/api/store.js';
+import { Toast } from '../libs/uniApi';
+import { data } from '../uni_modules/uview-ui/libs/mixin/mixin';
+  export default {
+    name: "shortPopup",
+    props: {
+      source:{
+        type: Number,
+        default: null
+      },
+      isBuy: {
+        type: Boolean,
+        default: false
+      }
+    },
+    data() {
+      return {
+        isShow: false, //当前是否打开弹窗
+        defualtImg: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230130/00ebcfdf75684f5494c0193075055d1.png',
+        datas: {
+          image: '',
+          store_name: '',
+          merchant: {
+            mer_name: ''
+          },
+          price: '',
+        },
+        product: {},
+        attrValue: [],
+        attr: [], //多级规格
+        changeSkuKey: '', //多级规格选中的key
+        sku: {}, //规格
+        sku_key_list: [], //规格名称列表
+        changeSkuKey: '', //选中的规格名称
+        change: {
+          stock: ''
+        },
+        cart_num: 1, //购买数量
+        goodsNum: 0, //购物车数量
+        current: 0, //轮播图当前滑块
+      };
+    },
+    mounted() {},
+    computed:{
+      leftPrice(){
+        return this.sku[this.changeSkuKey]?.price?.split('.')[0]||'0';
+      },
+      rightPrice(){
+        return this.sku[this.changeSkuKey]?.price?.split('.')[1]||'00';
+      },
+      leftPrice2(){
+        return this.datas.limited_price.split('.')[0]||'0';
+      },
+      rightPrice2(){
+        return this.datas.limited_price.split('.')[1]||'00';
+      }
+    },
+    methods: {
+      // 注入参数,
+      setDatas(datas, goodsNum) {
+        getProductDetail(datas.product_id).then((res)=>{
+          this.attr = res.data.attr;
+          if(this.attr.length>0) this.attr.forEach((item, index)=>{
+            this.changeAttr(index, 0);
+          })
+          else this.changeSkuKey = '';
+        })
+        this.goodsNum = goodsNum;
+        this.datas = datas;
+        this.product = datas.product;
+        this.attrValue = datas.product?.attrValue;
+        this.change = this.attrValue[0];
+        this.cart_num = 1;
+        this.sku = datas.sku||{};
+        this.sku_key_list = Object.keys(this.sku);
+      },
+      // 输入购买数量
+      inputCartNum(e) {
+        if(this.sku){
+          if (+e.detail.value > this.sku[this.changeSkuKey].stock) {
+            uni.showToast({
+              icon: 'none',
+              title: '不能超出库存哦'
+            })
+            this.$nextTick(() => {
+              this.cart_num = this.sku[this.changeSkuKey].stock;
+            })
+          }
+        }else if (this.change.stock <= this.cart_num) {
+            uni.showToast({
+              icon: 'none',
+              title: '不能超出库存哦'
+            })
+            this.$nextTick(() => {
+              this.cart_num = this.change.stock;
+            })
+          }
+      },
+      // 减少购买数量
+      subCartNum() {
+        if (this.cart_num <= 1) {
+          return uni.showToast({
+            icon: 'none',
+            title: '最少要买一件哦'
+          })
+        }
+        this.cart_num--;
+      },
+      // 增加购买数量
+      plusCartNum() {
+        return Toast('最多购买一件哦');
+        if(this.sku){
+          if (this.sku[this.changeSkuKey].stock <= this.cart_num) {
+            return uni.showToast({
+              icon: 'none',
+              title: '不能超出库存哦'
+            })
+          }
+        }else if (this.change.stock <= this.cart_num) {
+            return uni.showToast({
+              icon: 'none',
+              title: '不能超出库存哦'
+            })
+          }
+        this.cart_num++;
+      },
+      changeAttr: function(indexw, indexn) {
+      	let that = this;
+      	this.$set(this.attr[indexw], 'index', this.attr[indexw].attr_values[indexn]);
+        this.attr[indexw].attr_value.forEach((item, index)=>{
+          if(index==indexn)item.check = true;
+          else item.check = false;
+        })
+      	let value = that.getCheckedValue().join(",");
+        this.changeSkuKey = value;
+      },
+      //获取被选中属性;
+      getCheckedValue: function() {
+      	let productAttr = this.attr;
+      	let value = [];
+      	for (let i = 0; i < productAttr.length; i++) {
+      		for (let j = 0; j < productAttr[i].attr_values.length; j++) {
+      			if (productAttr[i].index === productAttr[i].attr_values[j]) {
+      				value.push(productAttr[i].attr_values[j]);
+      			}
+      		}
+      	}
+      	return value;
+      },
+      // 加入购物车
+      addcart() {
+        if (this.sku[this.changeSkuKey]) {
+          if (this.cart_num > this.sku[this.changeSkuKey].stock) return uni.showToast({
+            icon: 'none',
+            title: '不能超出库存哦'
+          })
+          let data = {
+            cart_num: this.cart_num,
+            is_new: 0,
+            product_attr_unique: this.sku[this.changeSkuKey].unique,
+            product_id: this.datas.product_id,
+            product_type: this.datas.product_type,
+            source: this.source, 
+            spread_id: "",
+          }
+          let that = this
+          let res = postCartAdd({
+            ...data
+          }).then((res, err) => {
+            if(this.isBuy) return uni.navigateTo({
+            	url: `/pages/users/order_confirm/index?cartId=${res.data.cart_id}&type_id=${this.datas.merchant.type_id}&source=${this.source}`
+            });
+            uni.showToast({
+              title: "加入成功",
+              duration: 1000,
+            })
+            this.$emit('addCart');
+            this.close();
+            if(this.isBuy){
+              this.navgoCart();
+            }
+          }).catch(err => {
+            uni.showToast({
+              title: err,
+              icon: "none",
+              duration: 1000,
+            })
+          })
+        } else {
+          uni.showToast({
+            icon: 'none',
+            title: '商品规格不存在'
+          })
+        }
+      },
+      // 滑动轮播图
+      changeCurrent(e){
+        this.current = e.detail.current;
+      },
+      navgoCart(url=null) {
+        if(!url) {
+          if(this.source) url = '/pages/order_addcart/order_addcart?source='+this.source;
+          else url = '/pages/order_addcart/order_addcart';
+        }
+        uni.navigateTo({
+          url
+        })
+      },
+      open() {
+        this.$refs.popupRef.open();
+      },
+      close() {
+        this.$refs.popupRef.close();
+      },
+      changeShow(e) {
+        this.isShow = e.show;
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  .pop {
+    background-color: #fff;
+    border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
+    overflow: hidden;
+    position: relative;
+    
+    .scroll{
+      height: calc(90vh - 150rpx);
+    }
+
+    .flex_end {
+      align-items: flex-end;
+    }
+    
+
+    .image {
+      height: 750rpx;
+      width: 750rpx;
+      position: relative;
+      
+      .current{
+        position: absolute;
+        bottom: 70rpx;
+        left: 30rpx;
+        width: 67rpx;
+        height: 37rpx;
+        background: rgba(#333, 0.2);
+        border-radius: 11rpx 11rpx 11rpx 11rpx;
+        text-align: center;
+        color: #fff;
+        font-size: 26rpx;
+        font-family: PingFang SC-Regular, PingFang SC;
+        font-weight: 400;
+      }
+
+      .img {
+        width: 100%;
+        height: 100%;
+        border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
+        overflow: hidden;
+      }
+
+      .close {
+        position: absolute;
+        top: 30rpx;
+        right: 30rpx;
+        width: 50.82rpx;
+        height: 50.82rpx;
+      }
+
+      .border {
+        position: absolute;
+        bottom: -1rpx;
+        left: 0;
+        background-color: #fff;
+        height: 40rpx;
+        width: 100%;
+        border-radius: 40rpx 40rpx 0 0;
+      }
+    }
+
+    .white_card {
+      border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
+      background-color: #fff;
+      margin: 0 28rpx;
+      padding-bottom: 30rpx;
+      color: #737373;
+      font-size: 26.29rpx;
+
+      .price {
+        font-size: 35rpx;
+        font-family: SF Pro Display-Semibold, SF Pro Display;
+        font-weight: 600;
+        color: #F84221;
+        padding-right: 30rpx;
+
+        .pro {
+          font-size: 49.07rpx;
+        }
+      }
+
+      .short_name {
+        font-size: 33rpx;
+        font-family: PingFang SC-Semibold, PingFang SC;
+        font-weight: 600;
+        color: #333333;
+      }
+
+      .shop_name {
+        display: flex;
+        background: #FEF5F3;
+        padding: 0 16rpx;
+        border-radius: 26rpx 26rpx 26rpx 26rpx;
+        margin-top: 30rpx;
+        margin-bottom: 20rpx;
+        align-items: center;
+
+        .icon {
+          width: 31.54rpx;
+          height: 31.54rpx;
+          margin-right: 10rpx;
+        }
+      }
+
+      .m_title {
+        font-size: 30rpx;
+        font-family: PingFang SC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #333333;
+        margin-top: 31rpx;
+        margin-bottom: 21rpx;
+      }
+
+      .attr {
+        opacity: 1;
+        border: 1rpx solid #F84221;
+        color: #333333;
+        padding: 15rpx 30rpx;
+        margin-right: 20rpx;
+        height: 63rpx;
+        line-height: 60rpx;
+        border-radius: 63rpx;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+      }
+      
+      .attr_active{
+        // background-color: #FEF5F3;
+        // color: #F84221;
+        background-color: #F84221;
+        color: #fff;
+      }
+
+      .num {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+
+        .input {
+          display: flex;
+          align-items: center;
+          height: 48rpx;
+
+          .input_item {
+            width: 44rpx;
+            height: 44rpx;
+            text-align: center;
+            line-height: 40rpx;
+            border: 2rpx solid #fff;
+            font-size: 26rpx;
+            color: #333;
+          }
+
+          .input_view {
+            width: 60rpx;
+          }
+
+          .sub {
+            border: 2rpx solid #FCB9AD;
+            border-radius: 7rpx 0rpx 0rpx 7rpx;
+            background: #FFFFFF;
+            font-size: 26rpx;
+            color: #B3B3B3;
+          }
+
+          .plus {
+            border: 2rpx solid #FCB9AD;
+            border-radius: 0rpx 7rpx 7rpx 0rpx;
+            background: #FFFFFF;
+            font-size: 26rpx;
+            color: #B3B3B3;
+          }
+        }
+      }
+
+    }
+
+    .button {
+      padding: 28rpx;
+      margin-bottom: 28rpx;
+      background-color: #fff;
+      display: flex;
+      justify-content: space-around;
+      padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
+      padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
+      padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
+      padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
+
+      .b_icon {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        font-size: 19rpx;
+        font-weight: 400;
+        color: #333333;
+        position: relative;
+
+        image {
+          width: 50.82rpx;
+          height: 50.82rpx;
+        }
+
+        .badge {
+          position: absolute;
+          top: -5rpx;
+          right: -10rpx;
+          color: #fff;
+          min-width: 28rpx;
+          height: 28rpx;
+          text-align: center;
+          line-height: 24rpx;
+          background: #F84221;
+          border-radius: 16rpx 16rpx 16rpx 16rpx;
+          border: 2rpx solid #FFFFFF;
+        }
+      }
+
+      .btn {
+        width: 575rpx;
+        height: 84rpx;
+        background: linear-gradient(270deg, #FF6D20 0%, #F84221 100%);
+        border-radius: 42rpx 42rpx 42rpx 42rpx;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        font-size: 30rpx;
+        font-family: PingFang SC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #FFFFFF;
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 9505360..1d8799f 100644
--- a/manifest.json
+++ b/manifest.json
@@ -27,6 +27,9 @@
             "iBeacon" : {},
             "Maps" : {},
             "Geolocation" : {},
+            "UniMP" : {
+                "description" : "uni小程序"
+            },
             "Push" : {},
             "Barcode" : {},
             "Camera" : {}
@@ -153,6 +156,134 @@
                 "useOriginalMsgbox" : true,
                 "androidStyle" : "default"
             }
+        },
+        "nativePlugins" : {
+            "JG-JCore" : {
+                "JPUSH_APPKEY_IOS" : "8a5efd65cda14fafa6e64ad3",
+                "JPUSH_CHANNEL_IOS" : "8a5efd65cda14fafa6e64ad3",
+                "JPUSH_APPKEY_ANDROID" : "b5f679f4357018605ea6fd2e",
+                "JPUSH_CHANNEL_ANDROID" : "",
+                "__plugin_info__" : {
+                    "name" : "JG-JCore",
+                    "description" : "极光推送JCore插件",
+                    "platforms" : "Android,iOS",
+                    "url" : "",
+                    "android_package_name" : "uni.UNI3A527D1",
+                    "ios_bundle_id" : "",
+                    "isCloud" : false,
+                    "bought" : -1,
+                    "pid" : "",
+                    "parameters" : {
+                        "JPUSH_APPKEY_IOS" : {
+                            "des" : "[iOS]极光portal配置应用信息时分配的AppKey",
+                            "key" : "JCore:APP_KEY",
+                            "value" : "daebe19b547c43128796a078"
+                        },
+                        "JPUSH_CHANNEL_IOS" : {
+                            "des" : "[iOS]用于统计分发渠道,不需要可填默认值developer-default",
+                            "key" : "JCore:CHANNEL",
+                            "value" : ""
+                        },
+                        "JPUSH_APPKEY_ANDROID" : {
+                            "des" : "[Android]极光portal配置应用信息时分配的AppKey",
+                            "key" : "JPUSH_APPKEY",
+                            "value" : ""
+                        },
+                        "JPUSH_CHANNEL_ANDROID" : {
+                            "des" : "[Android]用于统计分发渠道,不需要可填默认值developer-default",
+                            "key" : "JPUSH_CHANNEL",
+                            "value" : ""
+                        }
+                    }
+                }
+            },
+            "JG-JPush" : {
+                "JPUSH_ISPRODUCTION_IOS" : "true",
+                "JPUSH_ADVERTISINGID_IOS" : "",
+                "JPUSH_DEFAULTINITJPUSH_IOS" : "true",
+                "JPUSH_OPPO_APPKEY" : "",
+                "JPUSH_OPPO_APPID" : "",
+                "JPUSH_OPPO_APPSECRET" : "",
+                "JPUSH_VIVO_APPKEY" : "",
+                "JPUSH_VIVO_APPID" : "",
+                "JPUSH_MEIZU_APPKEY" : "",
+                "JPUSH_MEIZU_APPID" : "",
+                "JPUSH_XIAOMI_APPKEY" : "",
+                "JPUSH_XIAOMI_APPID" : "",
+                "__plugin_info__" : {
+                    "name" : "JG-JPush",
+                    "description" : "极光推送Hbuilder插件",
+                    "platforms" : "Android,iOS",
+                    "url" : "",
+                    "android_package_name" : "uni.UNI3A527D1",
+                    "ios_bundle_id" : "",
+                    "isCloud" : false,
+                    "bought" : -1,
+                    "pid" : "",
+                    "parameters" : {
+                        "JPUSH_ISPRODUCTION_IOS" : {
+                            "des" : "[iOS]是否是生产环境,是填true,不是填false或者不填",
+                            "key" : "JPush:ISPRODUCTION",
+                            "value" : ""
+                        },
+                        "JPUSH_ADVERTISINGID_IOS" : {
+                            "des" : "[iOS]广告标识符(IDFA)如果不需要使用IDFA,可不填",
+                            "key" : "JPush:ADVERTISINGID",
+                            "value" : ""
+                        },
+                        "JPUSH_DEFAULTINITJPUSH_IOS" : {
+                            "des" : "[iOS]是否默认初始化,是填true,不是填false或者不填",
+                            "key" : "JPush:DEFAULTINITJPUSH",
+                            "value" : ""
+                        },
+                        "JPUSH_OPPO_APPKEY" : {
+                            "des" : "厂商OPPO-appkey,示例:OP-12345678",
+                            "key" : "OPPO_APPKEY",
+                            "value" : ""
+                        },
+                        "JPUSH_OPPO_APPID" : {
+                            "des" : "厂商OPPO-appId,示例:OP-12345678",
+                            "key" : "OPPO_APPID",
+                            "value" : ""
+                        },
+                        "JPUSH_OPPO_APPSECRET" : {
+                            "des" : "厂商OPPO-appSecret,示例:OP-12345678",
+                            "key" : "OPPO_APPSECRET",
+                            "value" : ""
+                        },
+                        "JPUSH_VIVO_APPKEY" : {
+                            "des" : "厂商VIVO-appkey,示例:12345678",
+                            "key" : "com.vivo.push.api_key",
+                            "value" : ""
+                        },
+                        "JPUSH_VIVO_APPID" : {
+                            "des" : "厂商VIVO-appId,示例:12345678",
+                            "key" : "com.vivo.push.app_id",
+                            "value" : ""
+                        },
+                        "JPUSH_MEIZU_APPKEY" : {
+                            "des" : "厂商MEIZU-appKey,示例:MZ-12345678",
+                            "key" : "MEIZU_APPKEY",
+                            "value" : ""
+                        },
+                        "JPUSH_MEIZU_APPID" : {
+                            "des" : "厂商MEIZU-appId,示例:MZ-12345678",
+                            "key" : "MEIZU_APPID",
+                            "value" : ""
+                        },
+                        "JPUSH_XIAOMI_APPKEY" : {
+                            "des" : "厂商XIAOMI-appKey,示例:MI-12345678",
+                            "key" : "XIAOMI_APPKEY",
+                            "value" : ""
+                        },
+                        "JPUSH_XIAOMI_APPID" : {
+                            "des" : "厂商XIAOMI-appId,示例:MI-12345678",
+                            "key" : "XIAOMI_APPID",
+                            "value" : ""
+                        }
+                    }
+                }
+            }
         }
     },
     /* 快应用特有相关 */
diff --git a/nativeplugins/JG-JCore/android/libs/arm64-v8a/libjcore420.so b/nativeplugins/JG-JCore/android/libs/arm64-v8a/libjcore420.so
new file mode 100644
index 0000000..8d35b04
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/arm64-v8a/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/libs/armeabi-v7a/libjcore420.so b/nativeplugins/JG-JCore/android/libs/armeabi-v7a/libjcore420.so
new file mode 100644
index 0000000..a642a0a
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/armeabi-v7a/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/libs/armeabi/libjcore420.so b/nativeplugins/JG-JCore/android/libs/armeabi/libjcore420.so
new file mode 100644
index 0000000..c8d4785
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/armeabi/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/libs/jcore-android-4.2.0.jar b/nativeplugins/JG-JCore/android/libs/jcore-android-4.2.0.jar
new file mode 100644
index 0000000..b886968
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/jcore-android-4.2.0.jar differ
diff --git a/nativeplugins/JG-JCore/android/libs/mips/libjcore420.so b/nativeplugins/JG-JCore/android/libs/mips/libjcore420.so
new file mode 100644
index 0000000..6e1d6f0
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/mips/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/libs/mips64/libjcore420.so b/nativeplugins/JG-JCore/android/libs/mips64/libjcore420.so
new file mode 100644
index 0000000..9a88bf3
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/mips64/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/libs/x86/libjcore420.so b/nativeplugins/JG-JCore/android/libs/x86/libjcore420.so
new file mode 100644
index 0000000..49f562c
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/x86/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/libs/x86_64/libjcore420.so b/nativeplugins/JG-JCore/android/libs/x86_64/libjcore420.so
new file mode 100644
index 0000000..eea298e
Binary files /dev/null and b/nativeplugins/JG-JCore/android/libs/x86_64/libjcore420.so differ
diff --git a/nativeplugins/JG-JCore/android/uniplugin_jcore-release.aar b/nativeplugins/JG-JCore/android/uniplugin_jcore-release.aar
new file mode 100644
index 0000000..6e023e9
Binary files /dev/null and b/nativeplugins/JG-JCore/android/uniplugin_jcore-release.aar differ
diff --git a/nativeplugins/JG-JCore/ios/JGInforCollectionAuth.h b/nativeplugins/JG-JCore/ios/JGInforCollectionAuth.h
new file mode 100644
index 0000000..1a378b8
--- /dev/null
+++ b/nativeplugins/JG-JCore/ios/JGInforCollectionAuth.h
@@ -0,0 +1,27 @@
+//
+//  JGInforCollectionAuth.h
+//  JCore
+//
+//  Created by 豆瓣 on 2021/10/27.
+//  Copyright © 2021 jiguang. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// 合规接口,是否授权极光采集一定的设备信息
+@interface JGInforCollectionAuthItems : NSObject
+/// 是否授权,默认YES
+@property(nonatomic,assign)BOOL isAuth;
+@end
+
+@interface JGInforCollectionAuth : NSObject
+
+/// 设备信息采集授权接口(合规接口)
+/// 请务必在调用初始化、功能性接口前调用此接口进行合规授权
+/// @param authBlock auth:YES 则极光认为您同意极光采集一定的设备信息
++(void)JCollectionAuth:(void(^_Nullable)(JGInforCollectionAuthItems *authInfo))authBlock;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/Headers/JCoreModule.h b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/Headers/JCoreModule.h
new file mode 100644
index 0000000..630b42d
--- /dev/null
+++ b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/Headers/JCoreModule.h
@@ -0,0 +1,17 @@
+//
+//  JCoreModule.h
+//  UniPluginJCore
+//
+//  Created by huangshuni on 2021/1/21.
+//
+
+#import <Foundation/Foundation.h>
+#import "DCUniModule.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface JCoreModule : DCUniModule
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/Info.plist b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/Info.plist
new file mode 100644
index 0000000..bec1b75
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/Info.plist differ
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/UniPluginJCore b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/UniPluginJCore
new file mode 100644
index 0000000..ed03bbf
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/UniPluginJCore differ
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeDirectory b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeDirectory
new file mode 100644
index 0000000..f85a079
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeDirectory differ
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeRequirements b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeRequirements
new file mode 100644
index 0000000..25365e2
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeRequirements differ
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeRequirements-1 b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeRequirements-1
new file mode 100644
index 0000000..7972195
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeRequirements-1 differ
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeResources b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeResources
new file mode 100644
index 0000000..ec357ae
--- /dev/null
+++ b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeResources
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>Headers/JCoreModule.h</key>
+		<data>
+		4aMcBALZuuQeh2JQjJqqvSkc2mA=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		06+wBVr403G+lX5fr/4efqHMj2A=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>Headers/JCoreModule.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			4aMcBALZuuQeh2JQjJqqvSkc2mA=
+			</data>
+			<key>hash2</key>
+			<data>
+			h/0w2CaU3JBhKI3Pp4EiSWqLf/ZY1Ju+5+tBAdowZ5k=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>
diff --git a/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeSignature b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeSignature
new file mode 100644
index 0000000..881600a
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/UniPluginJCore.framework/_CodeSignature/CodeSignature differ
diff --git a/nativeplugins/JG-JCore/ios/jcore-ios-4.2.0.a b/nativeplugins/JG-JCore/ios/jcore-ios-4.2.0.a
new file mode 100644
index 0000000..1dbe1e4
Binary files /dev/null and b/nativeplugins/JG-JCore/ios/jcore-ios-4.2.0.a differ
diff --git a/nativeplugins/JG-JCore/package.json b/nativeplugins/JG-JCore/package.json
new file mode 100644
index 0000000..7fcfe0b
--- /dev/null
+++ b/nativeplugins/JG-JCore/package.json
@@ -0,0 +1,61 @@
+{
+    "name": "JG-JCore",
+    "id": "JG-JCore",
+    "version": "1.1.3",
+    "description": "极光推送JCore插件",
+    "_dp_type":"nativeplugin",
+    "_dp_nativeplugin":{
+        "ios": {
+            "plugins": [
+                {
+                    "type": "module",
+                    "name": "JG-JCore",
+                    "class": "JCoreModule"
+                }
+            ],
+            "integrateType": "framework",
+            "deploymentTarget": "11.0",
+            "validArchitectures": [    
+                "arm64"
+            ],
+            "parameters": {
+                "JPUSH_APPKEY_IOS": {
+                    "des": "[iOS]极光portal配置应用信息时分配的AppKey",
+                    "key": "JCore:APP_KEY"
+                },
+                "JPUSH_CHANNEL_IOS": {
+                    "des": "[iOS]用于统计分发渠道,不需要可填默认值developer-default",
+                    "key": "JCore:CHANNEL"
+                }
+            }
+        },
+        "android": {
+            "plugins": [
+                {
+                    "type": "module",
+                    "name": "JG-JCore",
+                    "class": "cn.jiguang.uniplugin_jcore.JCoreModule"
+                }
+            ],
+            "integrateType": "aar",
+            "minSdkVersion": "19",
+            "permissions": [
+            ],
+            "abis": [
+                "armeabi-v7a",
+                "arm64-v8a",
+                "x86"
+            ],
+            "parameters": {
+                "JPUSH_APPKEY_ANDROID": {
+                    "des": "[Android]极光portal配置应用信息时分配的AppKey",
+                    "key": "JPUSH_APPKEY"
+                },
+                "JPUSH_CHANNEL_ANDROID":{
+                    "des": "[Android]用于统计分发渠道,不需要可填默认值developer-default",
+                    "key": "JPUSH_CHANNEL"
+                }
+            }
+        }
+    }
+}
diff --git a/nativeplugins/JG-JPush/android/com.heytap.msp-push-2.1.0.aar b/nativeplugins/JG-JPush/android/com.heytap.msp-push-2.1.0.aar
new file mode 100644
index 0000000..608aced
Binary files /dev/null and b/nativeplugins/JG-JPush/android/com.heytap.msp-push-2.1.0.aar differ
diff --git a/nativeplugins/JG-JPush/android/libs/MiPush_SDK_Client_3_8_5.jar b/nativeplugins/JG-JPush/android/libs/MiPush_SDK_Client_3_8_5.jar
new file mode 100644
index 0000000..7f94935
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/MiPush_SDK_Client_3_8_5.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/jpush-android-3.9.1.jar b/nativeplugins/JG-JPush/android/libs/jpush-android-3.9.1.jar
new file mode 100644
index 0000000..b9d13f3
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/jpush-android-3.9.1.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-meizu-v3.9.1.jar b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-meizu-v3.9.1.jar
new file mode 100644
index 0000000..88475eb
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-meizu-v3.9.1.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-oppo-v3.9.1.jar b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-oppo-v3.9.1.jar
new file mode 100644
index 0000000..291d237
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-oppo-v3.9.1.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-vivo-v3.9.1.jar b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-vivo-v3.9.1.jar
new file mode 100644
index 0000000..d544255
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-vivo-v3.9.1.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-xiaomi-v3.9.1.jar b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-xiaomi-v3.9.1.jar
new file mode 100644
index 0000000..1d0f401
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/jpush-android-plugin-xiaomi-v3.9.1.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/meizu-push-4.0.2.jar b/nativeplugins/JG-JPush/android/libs/meizu-push-4.0.2.jar
new file mode 100644
index 0000000..740e7c5
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/meizu-push-4.0.2.jar differ
diff --git a/nativeplugins/JG-JPush/android/libs/push_sdk_v3.0.0.jar b/nativeplugins/JG-JPush/android/libs/push_sdk_v3.0.0.jar
new file mode 100644
index 0000000..9c87567
Binary files /dev/null and b/nativeplugins/JG-JPush/android/libs/push_sdk_v3.0.0.jar differ
diff --git a/nativeplugins/JG-JPush/android/uniplugin_jpush-release.aar b/nativeplugins/JG-JPush/android/uniplugin_jpush-release.aar
new file mode 100644
index 0000000..22f9507
Binary files /dev/null and b/nativeplugins/JG-JPush/android/uniplugin_jpush-release.aar differ
diff --git a/nativeplugins/JG-JPush/ios/JPUSHService.h b/nativeplugins/JG-JPush/ios/JPUSHService.h
new file mode 100644
index 0000000..dd469aa
--- /dev/null
+++ b/nativeplugins/JG-JPush/ios/JPUSHService.h
@@ -0,0 +1,798 @@
+/*
+ *	| |    | |  \ \  / /  | |    | |   / _______|
+ *	| |____| |   \ \/ /   | |____| |  / /
+ *	| |____| |    \  /    | |____| |  | |   _____
+ * 	| |    | |    /  \    | |    | |  | |  |____ |
+ *  | |    | |   / /\ \   | |    | |  \ \______| |
+ *  | |    | |  /_/  \_\  | |    | |   \_________|
+ *
+ * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
+ */
+
+#define JPUSH_VERSION_NUMBER 3.4.0
+
+#import <Foundation/Foundation.h>
+
+@class CLRegion;
+@class UILocalNotification;
+@class CLLocation;
+@class UNNotificationCategory;
+@class UNNotificationSettings;
+@class UNNotificationRequest;
+@class UNNotification;
+@protocol JPUSHRegisterDelegate;
+@protocol JPUSHGeofenceDelegate;
+@protocol JPushInMessageDelegate;
+
+typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
+typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
+typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
+typedef void (^JPUSHInMssageCompletion)(NSInteger iResCode);
+
+extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
+extern NSString *const kJPFNetworkDidSetupNotification;     // 建立连接
+extern NSString *const kJPFNetworkDidCloseNotification;     // 关闭连接
+extern NSString *const kJPFNetworkDidRegisterNotification;  // 注册成功
+extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
+extern NSString *const kJPFNetworkDidLoginNotification;     // 登录成功
+extern NSString *const kJPFNetworkDidReceiveMessageNotification;         // 收到消息(非APNS)
+extern NSString *const kJPFServiceErrorNotification;  // 错误提示
+
+typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
+    JPAuthorizationOptionNone    = 0,   // the application may not present any UI upon a notification being received
+    JPAuthorizationOptionBadge   = (1 << 0),    // the application may badge its icon upon a notification being received
+    JPAuthorizationOptionSound   = (1 << 1),    // the application may play a sound upon a notification being received
+    JPAuthorizationOptionAlert   = (1 << 2),    // the application may display an alert upon a notification being received
+    JPAuthorizationOptionCarPlay = (1 << 3),    // The ability to display notifications in a CarPlay environment.
+    JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) ,   //The ability to play sounds for critical alerts.
+    JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) ,      //An option indicating the system should display a button for in-app notification settings.
+    JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) ,     //The ability to post noninterrupting notifications provisionally to the Notification Center.
+    JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods.
+};
+
+typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) {
+    JPAuthorizationNotDetermined    = 0,   // The user has not yet made a choice regarding whether the application may post user notifications.
+    JPAuthorizationStatusDenied,    // The application is not authorized to post user notifications.
+    JPAuthorizationStatusAuthorized,    // The application is authorized to post user notifications.
+    JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0),    // The application is authorized to post non-interruptive user notifications.
+};
+
+typedef NS_ENUM(NSInteger,JPushInMessageContentType){
+    JPushAdContentType = 1,         //广告类型的inMessage
+    JPushNotiContentType = 2,       //通知类型的inMessage
+};
+
+/*!
+ * 通知注册实体类
+ */
+@interface JPUSHRegisterEntity : NSObject
+
+/*!
+ * 支持的类型
+ * badge,sound,alert
+ */
+@property (nonatomic, assign) NSInteger types;
+/*!
+ * 注入的类别
+ * iOS10 UNNotificationCategory
+ * iOS8-iOS9 UIUserNotificationCategory
+ */
+@property (nonatomic, strong) NSSet *categories;
+@end
+
+/*!
+ * 进行删除、查找推送实体类
+ */
+@interface JPushNotificationIdentifier : NSObject<NSCopying, NSCoding>
+
+@property (nonatomic, copy) NSArray<NSString *> *identifiers; // 推送的标识数组
+@property (nonatomic, copy) UILocalNotification *notificationObj NS_DEPRECATED_IOS(4_0, 10_0);  // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效
+@property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的
+@property (nonatomic, copy) void (^findCompletionHandler)(NSArray *results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组)
+
+@end
+
+/*!
+ * 推送通知声音实体类
+ * iOS10以上有效
+ */
+@interface JPushNotificationSound : NSObject <NSCopying, NSCoding>
+@property (nonatomic, copy) NSString *soundName; //普通通知铃声
+@property (nonatomic, copy) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声
+@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1
+@end
+
+
+/*!
+ * 推送内容实体类
+ */
+@interface JPushNotificationContent : NSObject<NSCopying, NSCoding>
+
+@property (nonatomic, copy) NSString *title;                // 推送标题
+@property (nonatomic, copy) NSString *subtitle;             // 推送副标题
+@property (nonatomic, copy) NSString *body;                 // 推送内容
+@property (nonatomic, copy) NSNumber *badge;                // 角标的数字。如果不需要改变角标传@(-1)
+@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效)
+@property (nonatomic, copy) NSString *categoryIdentifier;   // 行为分类标识
+@property (nonatomic, copy) NSDictionary *userInfo;         // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo
+@property (nonatomic, copy) NSString *sound;                // 声音名称,不设置则为默认声音
+@property (nonatomic, copy) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0);   //推送声音实体
+@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0);                 // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型
+@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组
+@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0);  // 启动图片名,iOS10以上有效,从推送启动时将会用到
+@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0);  //插入到通知摘要中的部分参数。iOS12以上有效。
+@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。
+@property (nonatomic, copy) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0);  // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification.
+
+@end
+
+
+/*!
+ * 推送触发方式实体类
+ * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数
+ */
+@interface JPushNotificationTrigger : NSObject<NSCopying, NSCoding>
+
+@property (nonatomic, assign) BOOL repeat;                  // 设置是否重复,默认为NO
+@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0);           // 用来设置触发推送的时间,iOS10以上无效
+@property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0);                  // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权
+@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II
+@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0);    // 用来设置触发推送的时间,iOS10以上有效,优先级为III
+
+@end
+
+/*!
+ * 注册或更新推送实体类
+ */
+@interface JPushNotificationRequest : NSObject<NSCopying, NSCoding>
+
+@property (nonatomic, copy) NSString *requestIdentifier;    // 推送请求标识
+@property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容
+@property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式
+@property (nonatomic, copy) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil
+
+@end
+
+/*!
+ * JPush 核心头文件
+ */
+@interface JPUSHService : NSObject
+
+
+///----------------------------------------------------
+/// @name Setup 启动相关
+///----------------------------------------------------
+
+
+/*!
+ * @abstract 启动SDK
+ *
+ * @param launchingOption 启动参数.
+ * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识.
+ * @param channel 发布渠道. 可选.
+ * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
+ *                     App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
+ *
+ * @discussion 提供SDK启动必须的参数, 来启动 SDK.
+ * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
+ */
++ (void)setupWithOption:(NSDictionary *)launchingOption
+                 appKey:(NSString *)appKey
+                channel:(NSString *)channel
+       apsForProduction:(BOOL)isProduction;
+
+/*!
+ * @abstract 启动SDK
+ *
+ * @param launchingOption 启动参数.
+ * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识.
+ * @param channel 发布渠道. 可选.
+ * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
+ *                     App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
+ * @param advertisingId 广告标识符(IDFA) 如果不需要使用IDFA,传nil.
+ *
+ * @discussion 提供SDK启动必须的参数, 来启动 SDK.
+ * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
+ */
++ (void)setupWithOption:(NSDictionary *)launchingOption
+                 appKey:(NSString *)appKey
+                channel:(NSString *)channel
+       apsForProduction:(BOOL)isProduction
+  advertisingIdentifier:(NSString *)advertisingId;
+
+
+///----------------------------------------------------
+/// @name APNs about 通知相关
+///----------------------------------------------------
+
+/*!
+ * @abstract 注册要处理的远程通知类型
+ *
+ * @param types 通知类型
+ * @param categories 类别组
+ *
+ */
++ (void)registerForRemoteNotificationTypes:(NSUInteger)types
+                                categories:(NSSet *)categories;
+/*!
+ * @abstract 新版本的注册方法(兼容iOS10)
+ *
+ * @param config 注册通知配置
+ * @param delegate 代理
+ *
+ */
++ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(id<JPUSHRegisterDelegate>)delegate;
+
+
++ (void)registerDeviceToken:(NSData *)deviceToken;
+
+/*!
+ * @abstract 处理收到的 APNs 消息
+ */
++ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
+
+/*!
+ * @abstract  向极光服务器提交Token
+ *
+ * @param voipToken 推送使用的Voip Token
+ */
++ (void)registerVoipToken:(NSData *)voipToken;
+
+
+/*!
+ * @abstract  处理收到的 Voip 消息
+ *
+ * @param remoteInfo 下发的 Voip 内容
+ */
++ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
+
+
+/*!
+* @abstract 检测通知授权状态
+* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus
+*/
++ (void)requestNotificationAuthorization:(void (^)(JPAuthorizationStatus status))completion;
+
+/*!
+* @abstract 跳转至系统设置页面,iOS8及以上有效
+*/
++ (void)openSettingsForNotification:(void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0);
+
+/*!
+ * Tags操作接口
+ * 支持增加/覆盖/删除/清空/查询操作
+ * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
+ */
+
+/**
+ 增加tags
+
+ @param tags 需要增加的tags集合
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)addTags:(NSSet<NSString *> *)tags
+     completion:(JPUSHTagsOperationCompletion)completion
+            seq:(NSInteger)seq;
+
+/**
+ 覆盖tags
+ 调用该接口会覆盖用户所有的tags
+
+ @param tags 需要设置的tags集合
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)setTags:(NSSet<NSString *> *)tags
+     completion:(JPUSHTagsOperationCompletion)completion
+            seq:(NSInteger)seq;
+
+/**
+ 删除指定tags
+
+ @param tags 需要删除的tags集合
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)deleteTags:(NSSet<NSString *> *)tags
+        completion:(JPUSHTagsOperationCompletion)completion
+               seq:(NSInteger)seq;
+
+/**
+ 清空所有tags
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)cleanTags:(JPUSHTagsOperationCompletion)completion
+              seq:(NSInteger)seq;
+
+/**
+ 查询全部tags
+
+ @param completion 响应回调,请在回调中获取查询结果
+ @param seq 请求序列号
+ */
++ (void)getAllTags:(JPUSHTagsOperationCompletion)completion
+               seq:(NSInteger)seq;
+
+/**
+ 验证tag是否绑定
+ 
+ @param completion 响应回调,回调中查看是否绑定
+ @param seq 请求序列号
+ */
++ (void)validTag:(NSString *)tag
+      completion:(JPUSHTagValidOperationCompletion)completion
+             seq:(NSInteger)seq;
+
+/**
+ 设置Alias
+
+ @param alias 需要设置的alias
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)setAlias:(NSString *)alias
+      completion:(JPUSHAliasOperationCompletion)completion
+             seq:(NSInteger)seq;
+
+/**
+ 删除alias
+
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)deleteAlias:(JPUSHAliasOperationCompletion)completion
+                seq:(NSInteger)seq;
+
+/**
+ 查询当前alias
+
+ @param completion 响应回调
+ @param seq 请求序列号
+ */
++ (void)getAlias:(JPUSHAliasOperationCompletion)completion
+             seq:(NSInteger)seq;
+
+
+/*!
+ * @abstract 过滤掉无效的 tags
+ *
+ * @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags.
+ * 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤.
+ */
++ (NSSet *)filterValidTags:(NSSet *)tags;
+
+///----------------------------------------------------
+/// @name Stats 统计功能
+///----------------------------------------------------
+
+/*!
+ * @abstract 开始记录页面停留
+ *
+ * @param pageName 页面名称
+ * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
+ */
++ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
+
+/*!
+ * @abstract 停止记录页面停留
+ *
+ * @param pageName 页面
+ * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
+ */
++ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
+
+/*!
+ * @abstract 直接上报在页面的停留时间
+ *
+ * @param pageName 页面
+ * @param seconds 停留的秒数
+ * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
+ */
++ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期")));
+
+/*!
+ * @abstract 开启Crash日志收集
+ *
+ * @discussion 默认是关闭状态.
+ */
++ (void)crashLogON;
+
+/*!
+ * @abstract 地理位置上报
+ *
+ * @param latitude 纬度.
+ * @param longitude 经度.
+ *
+ */
++ (void)setLatitude:(double)latitude longitude:(double)longitude;
+
+/*!
+ * @abstract 地理位置上报
+ *
+ * @param location 直接传递 CLLocation * 型的地理信息
+ *
+ * @discussion 需要链接 CoreLocation.framework 并且 #import <CoreLocation/CoreLocation.h>
+ */
++ (void)setLocation:(CLLocation *)location;
+
+/**
+ 设置地理围栏的最大个数
+ 默认值为 10 ,iOS系统默认地理围栏最大个数为20
+ @param count 个数 count
+ */
++ (void)setGeofenecMaxCount:(NSInteger)count;
+/**
+ 注册地理围栏的代理
+
+ @param delegate 代理
+ @param launchOptions app启动完成是收到的字段参数
+ */
++ (void)registerLbsGeofenceDelegate:(id<JPUSHGeofenceDelegate>)delegate withLaunchOptions:(NSDictionary *)launchOptions;
+
+/**
+ 删除地理围栏
+ 
+ @param geofenceId 地理围栏id
+ */
++ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId;
+
+///----------------------------------------------------
+/// @name Local Notification 本地通知
+///----------------------------------------------------
+/*!
+ * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本)
+ *
+ * JPush 2.1.9新接口
+ * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回
+ * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换
+ *
+ */
++ (void)addNotification:(JPushNotificationRequest *)request;
+
+/*!
+ * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本)
+ *
+ * JPush 2.1.9新接口
+ * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。
+ * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换
+ *
+ */
++ (void)removeNotification:(JPushNotificationIdentifier *)identifier;
+
+/*!
+ * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本)
+ *
+ * JPush 2.1.9新接口
+ * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。
+ * @discussion 旧的查找推送接口被废弃,使用此接口可以替换
+ *
+ */
++ (void)findNotification:(JPushNotificationIdentifier *)identifier;
+
+/*!
+ * @abstract 本地推送,最多支持64个
+ *
+ * @param fireDate 本地推送触发的时间
+ * @param alertBody 本地推送需要显示的内容
+ * @param badge 角标的数字。如果不需要改变角标传-1
+ * @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动")
+ * @param notificationKey 本地推送标示符
+ * @param userInfo 自定义参数,可以用来标识推送和增加附加信息
+ * @param soundName 自定义通知声音,设置为nil为默认声音
+ *
+ * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代
+ */
++ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
+                                    alertBody:(NSString *)alertBody
+                                        badge:(int)badge
+                                  alertAction:(NSString *)alertAction
+                                identifierKey:(NSString *)notificationKey
+                                     userInfo:(NSDictionary *)userInfo
+                                    soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+
+/*!
+ * @abstract 本地推送 (支持 iOS8 新参数)
+ *
+ * IOS8新参数
+ * @param region 自定义参数
+ * @param regionTriggersOnce 自定义参数
+ * @param category 自定义参数
+ * @discussion 此方法被[addNotification:]方法取代
+ */
++ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
+                                    alertBody:(NSString *)alertBody
+                                        badge:(int)badge
+                                  alertAction:(NSString *)alertAction
+                                identifierKey:(NSString *)notificationKey
+                                     userInfo:(NSDictionary *)userInfo
+                                    soundName:(NSString *)soundName
+                                       region:(CLRegion *)region
+                           regionTriggersOnce:(BOOL)regionTriggersOnce
+                                     category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+
+/*!
+ * @abstract 前台展示本地推送
+ *
+ * @param notification 本地推送对象
+ * @param notificationKey 需要前台显示的本地推送通知的标示符
+ *
+ * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可
+ */
++ (void)showLocalNotificationAtFront:(UILocalNotification *)notification
+                       identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+/*!
+ * @abstract 删除本地推送定义
+ *
+ * @param notificationKey 本地推送标示符
+ * @discussion 此方法被[removeNotification:]方法取代
+ */
++ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+
+/*!
+ * @abstract 删除本地推送定义
+ * @discussion 此方法被[removeNotification:]方法取代
+ */
++ (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+
+/*!
+ * @abstract 获取指定通知
+ *
+ * @param notificationKey 本地推送标示符
+ * @return 本地推送对象数组, [array count]为0时表示没找到
+ * @discussion 此方法被[findNotification:]方法取代
+ */
++ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+
+/*!
+ * @abstract 清除所有本地推送对象
+ * @discussion 此方法被[removeNotification:]方法取代
+ */
++ (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期")));
+
+
+///----------------------------------------------------
+/// @name Server badge 服务器端 badge 功能
+///----------------------------------------------------
+
+/*!
+ * @abstract 设置角标(到服务器)
+ *
+ * @param value 新的值. 会覆盖服务器上保存的值(这个用户)
+ *
+ * @discussion 本接口不会改变应用本地的角标值.
+ * 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标.
+ *
+ * 本接口用于配合 JPush 提供的服务器端角标功能.
+ * 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理.
+ *
+ * JPush 服务器端脚标功能提供:
+ *
+ * - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来;
+ * - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户),
+ *   使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值;
+ */
++ (BOOL)setBadge:(NSInteger)value;
+
+/*!
+ * @abstract 重置脚标(为0)
+ *
+ * @discussion 相当于 [setBadge:0] 的效果.
+ * 参考 [JPUSHService setBadge:] 说明来理解其作用.
+ */
++ (void)resetBadge;
+
+///----------------------------------------------------
+/// @name Other Feature 其他功能
+///----------------------------------------------------
+
+/*!
+ * @abstract 设置手机号码(到服务器)
+ *
+ * @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码
+ * @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息
+ *
+ * @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。
+ *
+ */
++ (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion;
+
+///----------------------------------------------------
+/// @name Logs and others 日志与其他
+///----------------------------------------------------
+
+/*!
+ * @abstract JPush标识此设备的 registrationID
+ *
+ * @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到.
+ *
+ * JPush 支持根据 registrationID 来进行推送.
+ * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来.
+ * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil.
+ * 更多的理解请参考 JPush 的文档网站.
+ */
++ (NSString *)registrationID;
+
++ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
+
+/*!
+ * @abstract 打开日志级别到 Debug
+ *
+ * @discussion JMessage iOS 的日志系统参考 Android 设计了级别.
+ * 从低到高是: Verbose, Debug, Info, Warning, Error.
+ * 对日志级别的进一步理解, 请参考 Android 相关的说明.
+ *
+ * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
+ *
+ * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
+ */
++ (void)setDebugMode;
+
+/*!
+ * @abstract 关闭日志
+ *
+ * @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode]
+ *
+ * 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出.
+ *
+ * 建议在发布的版本里, 调用此接口, 关闭掉日志打印.
+ */
++ (void)setLogOFF;
+
+/*!
+ * @abstract 设置SDK地理位置权限开关
+ *
+ * @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。
+ *
+ */
++ (void)setLocationEanable:(BOOL)isEanble;
+
+/*!
+* @abstract 设置应用内消息的代理
+*
+* @discussion 遵守JPushInMessageDelegate的代理对象
+*
+*/
++ (void)setInMessageDelegate:(id<JPushInMessageDelegate>)inMessageDelegate;
+
+
+/*!
+* @abstract 主动拉取应用内消息的接口
+*
+* @discussion 拉取结果的回调
+*
+*/
++ (void)pullInMessageCompletion:(JPUSHInMssageCompletion)completion;
+
+///----------------------------------------------------
+///********************下列方法已过期********************
+///**************请使用新版tag/alias操作接口**************
+///----------------------------------------------------
+/// @name Tag alias setting 设置别名与标签
+///----------------------------------------------------
+
+/*!
+ * 下面的接口是可选的
+ * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
+ * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可.
+ * WARN: 使用block时需要注意循环引用问题
+ */
++ (void) setTags:(NSSet *)tags
+           alias:(NSString *)alias
+callbackSelector:(SEL)cbSelector
+          target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期")));
++ (void) setTags:(NSSet *)tags
+           alias:(NSString *)alias
+callbackSelector:(SEL)cbSelector
+          object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
++ (void) setTags:(NSSet *)tags
+callbackSelector:(SEL)cbSelector
+          object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
++ (void)setTags:(NSSet *)tags
+          alias:(NSString *)alias
+fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期")));
++ (void)  setTags:(NSSet *)tags
+aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期")));
++ (void)setAlias:(NSString *)alias
+callbackSelector:(SEL)cbSelector
+          object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
+
+@end
+
+@class UNUserNotificationCenter;
+@class UNNotificationResponse;
+
+@protocol JPUSHRegisterDelegate <NSObject>
+
+/*
+ * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:]
+ * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
+ * @param notification 前台得到的的通知对象
+ * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions
+ */
+- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler;
+/*
+ * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:]
+ * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
+ * @param response 通知响应对象
+ * @param completionHandler
+ */
+- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler;
+
+/*
+ * @brief handle UserNotifications.framework [openSettingsForNotification:]
+ * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
+ * @param notification 当前管理的通知对象
+ */
+- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0);
+
+/**
+ * 监测通知授权状态返回的结果
+ * @param status 授权通知状态,详见JPAuthorizationStatus
+ * @param info 更多信息,预留参数
+ */
+- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(NSDictionary *)info;
+
+@end
+
+@protocol JPUSHGeofenceDelegate <NSObject>
+
+/**
+ 进入地理围栏区域
+ 
+ @param geofenceId 地理围栏id
+ @param userInfo 地理围栏触发时返回的信息
+ @param error 错误信息
+ */
+- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *)userInfo error:(NSError *)error;
+
+/**
+ 离开地理围栏区域
+ 
+ @param geofenceId 地理围栏id
+ @param userInfo 地理围栏触发时返回的信息
+ @param error 错误信息
+ */
+- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *)userInfo error:(NSError *)error;
+
+@end
+
+@protocol JPushInMessageDelegate <NSObject>
+
+@optional
+/**
+ *是否允许应用内消息弹出,默认为允许
+*/
+- (BOOL)jPushInMessageIsAllowedInMessagePop;
+
+/**
+ *应用内消息展示的回调
+*/
+- (void)jPushInMessageAlreadyPop __attribute__((deprecated("JPush 3.4.0 版本已过期")));;
+
+/**
+ *应用内消息已消失
+*/
+- (void)jPushInMessageAlreadyDisappear;
+
+
+/**
+ inMessage展示的回调
+ 
+ @param messageType inMessage
+ @param content 下发的数据,广告类的返回数据为空时返回的信息
+
+ */
+- (void)jPushInMessageAlreadyPopInMessageType:(JPushInMessageContentType)messageType Content:(NSDictionary *)content;
+
+/**
+ inMessage点击的回调
+ 
+ @param messageType inMessage
+ @param content 下发的数据,广告类的返回数据为空时返回的信息
+
+ */
+- (void)jpushInMessagedidClickInMessageType:(JPushInMessageContentType)messageType Content:(NSDictionary *)content;
+
+@end
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/Headers/JPushModule.h b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/Headers/JPushModule.h
new file mode 100644
index 0000000..ad03617
--- /dev/null
+++ b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/Headers/JPushModule.h
@@ -0,0 +1,17 @@
+//
+//  JPushModule.h
+//  UniPluginJPush
+//
+//  Created by huangshuni on 2021/1/12.
+//
+
+#import <Foundation/Foundation.h>
+#import "DCUniModule.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface JPushModule : DCUniModule
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/Info.plist b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/Info.plist
new file mode 100644
index 0000000..69a80e2
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/Info.plist differ
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/UniPluginJPush b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/UniPluginJPush
new file mode 100644
index 0000000..247e2e7
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/UniPluginJPush differ
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeDirectory b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeDirectory
new file mode 100644
index 0000000..db16dc7
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeDirectory differ
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeRequirements b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeRequirements
new file mode 100644
index 0000000..92e2aad
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeRequirements differ
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeRequirements-1 b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeRequirements-1
new file mode 100644
index 0000000..d9451ab
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeRequirements-1 differ
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeResources b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeResources
new file mode 100644
index 0000000..532afdd
--- /dev/null
+++ b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeResources
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>Headers/JPushModule.h</key>
+		<data>
+		hAItQbWWuw4mOOySo6FeWH3MYsA=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		mdxdKDpLHqtEZTfNMy6MBCyizi8=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>Headers/JPushModule.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			hAItQbWWuw4mOOySo6FeWH3MYsA=
+			</data>
+			<key>hash2</key>
+			<data>
+			LHaZ7SfsmEBYhVCf3bEBp8fHG5II1obOplOf4kj6EZQ=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>
diff --git a/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeSignature b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeSignature
new file mode 100644
index 0000000..5a9909b
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/UniPluginJPush.framework/_CodeSignature/CodeSignature differ
diff --git a/nativeplugins/JG-JPush/ios/jpush-ios-3.4.0.a b/nativeplugins/JG-JPush/ios/jpush-ios-3.4.0.a
new file mode 100644
index 0000000..e5fa8b0
Binary files /dev/null and b/nativeplugins/JG-JPush/ios/jpush-ios-3.4.0.a differ
diff --git a/nativeplugins/JG-JPush/package.json b/nativeplugins/JG-JPush/package.json
new file mode 100644
index 0000000..0d0cfc2
--- /dev/null
+++ b/nativeplugins/JG-JPush/package.json
@@ -0,0 +1,138 @@
+{
+    "name": "JG-JPush",
+    "id": "JG-JPush",
+    "version": "1.0.3",
+    "description": "极光推送Hbuilder插件",
+    "_dp_type":"nativeplugin",
+    "_dp_nativeplugin":{
+        "ios": {
+            "plugins": [{
+                "type": "module",
+                "name": "JG-JPush",
+                "class": "JPushModule"
+            }],
+            "hooksClass": "JPushProxy",
+            "integrateType": "framework",
+            "deploymentTarget": "9.0",
+            "frameworks": [
+                "CFNetwork.framework",
+                "CoreFoundation.framework",
+                "CoreTelephony.framework",
+                "SystemConfiguration.framework",
+                "CoreGraphics.framework",
+                "Foundation.framework",
+                "UIKit.framework",
+                "Security.framework",
+                "libz.tbd",
+                "AdSupport.framework",
+                "UserNotifications.framework",
+                "libresolv.tbd",
+                "WebKit.framework",
+                "AppTrackingTransparency.framework",
+                "StoreKit.framework"
+            ],
+            "resources": [
+                
+            ],
+            "capabilities": {
+                "entitlements": {
+                    "aps-environment":"development"
+                }
+            },
+            "privacies": [
+                            "NSLocationAlwaysAndWhenInUseUsageDescription",
+                            "NSLocationAlwaysUsageDescription",
+                            "NSLocationWhenInUseUsageDescription"
+                        ],
+            "parameters": {
+                "JPUSH_ISPRODUCTION_IOS": {
+                    "des": "[iOS]是否是生产环境,是填true,不是填false或者不填",
+                    "key": "JPush:ISPRODUCTION"
+                },
+                "JPUSH_ADVERTISINGID_IOS": {
+                    "des": "[iOS]广告标识符(IDFA)如果不需要使用IDFA,可不填",
+                    "key": "JPush:ADVERTISINGID"
+                },
+                "JPUSH_DEFAULTINITJPUSH_IOS": {
+                    "des": "[iOS]是否默认初始化,是填true,不是填false或者不填",
+                    "key": "JPush:DEFAULTINITJPUSH"
+                }
+            }
+        },
+        "android": {
+            "plugins": [
+                {
+                    "type": "module",
+                    "name": "JG-JPush",
+                    "class": "cn.jiguang.uniplugin_jpush.JPushModule"
+                }
+            ],
+            "integrateType": "aar",
+            "minSdkVersion": "19",
+            "permissions": [
+                "${applicationId}.permission.JPUSH_MESSAGE",
+                "android.permission.RECEIVE_USER_PRESENT",
+                "android.permission.INTERNET",
+                "android.permission.READ_PHONE_STATE",
+                "android.permission.WRITE_EXTERNAL_STORAGE",
+                "android.permission.READ_EXTERNAL_STORAGE",
+                "android.permission.WRITE_SETTINGS",
+                "android.permission.MOUNT_UNMOUNT_FILESYSTEMS",
+                "android.permission.ACCESS_NETWORK_STATE",
+                "android.permission.ACCESS_WIFI_STATE",
+                "com.huawei.android.launcher.permission.CHANGE_BADGE",
+                "android.permission.VIBRATE",
+                "android.permission.SYSTEM_ALERT_WINDOW",
+                "android.permission.ACCESS_COARSE_LOCATION",
+                "android.permission.CHANGE_WIFI_STATE",
+                "android.permission.ACCESS_FINE_LOCATION",
+                "android.permission.ACCESS_BACKGROUND_LOCATION",
+                "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS",
+                "android.permission.CHANGE_NETWORK_STATE",
+                "android.permission.GET_TASKS",
+                "android.permission.QUERY_ALL_PACKAGES",
+                "${applicationId}.permission.MIPUSH_RECEIVE",
+                "com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE",
+                "com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE"
+            ],
+            "parameters": {
+                "JPUSH_OPPO_APPKEY": {
+                    "des": "厂商OPPO-appkey,示例:OP-12345678",
+                    "key": "OPPO_APPKEY"
+                },
+                "JPUSH_OPPO_APPID":{
+                    "des": "厂商OPPO-appId,示例:OP-12345678",
+                    "key": "OPPO_APPID"
+                },
+                "JPUSH_OPPO_APPSECRET":{
+                    "des": "厂商OPPO-appSecret,示例:OP-12345678",
+                    "key": "OPPO_APPSECRET"
+                },
+                "JPUSH_VIVO_APPKEY":{
+                    "des": "厂商VIVO-appkey,示例:12345678",
+                    "key": "com.vivo.push.api_key"
+                },
+                "JPUSH_VIVO_APPID":{
+                    "des": "厂商VIVO-appId,示例:12345678",
+                    "key": "com.vivo.push.app_id"
+                },
+                "JPUSH_MEIZU_APPKEY":{
+                    "des": "厂商MEIZU-appKey,示例:MZ-12345678",
+                    "key": "MEIZU_APPKEY"
+                },
+                "JPUSH_MEIZU_APPID":{
+                    "des": "厂商MEIZU-appId,示例:MZ-12345678",
+                    "key": "MEIZU_APPID"
+                },
+                "JPUSH_XIAOMI_APPKEY":{
+                    "des": "厂商XIAOMI-appKey,示例:MI-12345678",
+                    "key": "XIAOMI_APPKEY"
+                },
+                "JPUSH_XIAOMI_APPID":{
+                    "des": "厂商XIAOMI-appId,示例:MI-12345678",
+                    "key": "XIAOMI_APPID"
+                }
+            }
+        }
+    }
+}
diff --git a/pages.json b/pages.json
index b9e166d..02e1dd0 100644
--- a/pages.json
+++ b/pages.json
@@ -1,7 +1,4 @@
 {
-	"easycom": {
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
-	},
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
 		{
 			"path": "pages/guide/index",
@@ -148,7 +145,95 @@
 				"navigationStyle": "custom",
 				"onReachBottomDistance": 300
 			}
-		}
+		},
+    {
+      "path" : "pages/redpacket/redpacket",
+      "style" : 
+      {
+        "navigationBarTitleText" : "补贴",
+        "enablePullDownRefresh" : false
+      }
+    },
+    {
+      "path" : "pages/redpacket/redpack_type",
+      "style" : 
+      {
+        "navigationBarTitleText" : "补贴余额",
+        "enablePullDownRefresh": false,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/subsidy/subsidy2",
+      "style" : 
+      {
+        "navigationBarTitleText" : "实物通用补贴",
+        "enablePullDownRefresh": false,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/subsidy/subsidy3",
+      "style" : 
+      {
+        "navigationBarTitleText" : "现金抵扣补贴",
+        "enablePullDownRefresh": false,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/towPrice/towPrice",
+      "style" : 
+      {
+        "navigationBarTitleText" : "两元专区",
+        "enablePullDownRefresh": false,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/giftBag/giftBag",
+      "style" : 
+      {
+        "navigationBarTitleText" : "新人礼包",
+        "enablePullDownRefresh": false,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/activityDetail/activityDetail",
+      "style" : 
+      {
+        "navigationBarTitleText": "活动",
+        "enablePullDownRefresh": true,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/subsidy/subsidy",
+      "style" : 
+      {
+        "navigationBarTitleText": "补贴记录",
+        "enablePullDownRefresh": true,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    },
+    {
+      "path" : "pages/newActivity/invitation/invitation",
+      "style" : 
+      {
+        "navigationBarTitleText": "拉新活动",
+        "enablePullDownRefresh": true,
+        "navigationStyle": "custom",
+        "onReachBottomDistance": 300
+      }
+    }
 	],
 	"subPackages": [{
 			"root": "pages/cloud_warehouse",
@@ -446,6 +531,12 @@
 						"navigationBarTitleText": "申请退货"
 					}
 				},
+        {
+        	"path": "invite_code/index",
+        	"style": {
+        		"navigationBarTitleText": "邀请码"
+        	}
+        },
 				{
 					"path": "login/login_copy",
 					"style": {
@@ -636,7 +727,14 @@
 					"style": {
 						"navigationBarTitleText": "商家入驻"
 					}
-				}, {
+				}, 
+        {
+        	"path": "settled/unit",
+        	"style": {
+        		"navigationBarTitleText": "种养殖户入驻"
+        	}
+        }, 
+        {
 					"path": "applicationRecord/index",
 					"style": {
 						"navigationBarTitleText": "申请记录"
@@ -1363,8 +1461,8 @@
 			// },
       {
       	"pagePath": "pages/gather/gather",
-      	"iconPath": "static/images/5-001.png",
-      	"selectedIconPath": "static/images/5-002.png",
+      	"iconPath": "static/images/2-001.png",
+      	"selectedIconPath": "static/images/2-002.png",
       	"text": "工作台"
       },
 			{
diff --git a/pages/gather/gather.vue b/pages/gather/gather.vue
index 2c45e69..c68ef60 100644
--- a/pages/gather/gather.vue
+++ b/pages/gather/gather.vue
@@ -40,13 +40,10 @@
 				</u-transition>
 			</view>
 		</view>
-      <Loading></Loading>
 	</view>
 </template>
 
 <script>
-	import Cache from '@/utils/cache';
-  import { wgsToGcj } from "@/utils/wgs.js";
 	import {
 		mapState,
 		mapGetters
@@ -55,23 +52,12 @@
 		getStoreList,
 		getUserInfo
 	} from '@/api/user.js'
-	import {
-		getGeocoder,
-		microSeachBarCode,
-		microEadtProduct
-	} from '@/api/store.js'
 	import {
 		Toast
 	} from '@/libs/uniApi';
-	import {
-		getDiy
-	} from '@/api/api.js';
   import {
   	applet
   } from '@/api/public.js';
-  import {
-    ENV
-  } from "@/config/app.js"
 	// #ifdef APP-PLUS
 	import uniMP from '@/utils/uniMP.js';
 	// #endif
@@ -112,17 +98,16 @@
 		onLoad() {
 		},
 		onShow() {
-			if (this.isLogin) {
-				this.emptyText = '暂无可用应用'
-				this.jurisdiction = false
-        this.initAllAppLet();
-			} else {
-				this.emptyText = '请登录'
-				this.jurisdiction = true
-			}
-			this.getUserInfo();
+			// if (this.isLogin) {
+			// 	this.emptyText = '暂无可用应用'
+			// 	this.jurisdiction = false
+   //      this.initAllAppLet();
+			// } else {
+			// 	this.emptyText = '请登录'
+			// 	this.jurisdiction = true
+			// }
+			// this.getUserInfo();
 		},
-
 		onPullDownRefresh() {
 			this.getUserInfo()
 			uni.stopPullDownRefresh()
@@ -442,7 +427,7 @@
 	.special_work {
 		// padding: 17.54rpx;
 		width: 694.74rpx;
-		margin-top: 52.63rpx;
+    padding-top: 30rpx;
 		border-radius: 17.54rpx;
 		// box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.16);
 
diff --git a/pages/newActivity/activityDetail/activityDetail.vue b/pages/newActivity/activityDetail/activityDetail.vue
new file mode 100644
index 0000000..6067b4e
--- /dev/null
+++ b/pages/newActivity/activityDetail/activityDetail.vue
@@ -0,0 +1,195 @@
+<template>
+  <view>
+    <view class="bg">
+      <image class="bg_img" mode="widthFix"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/detail.webp"></image>
+      <image @click="back" class="bg_back"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="b_body">
+        <view class="b_content">
+          <view v-if="info.content" v-html="info.content.content"></view>
+        </view>
+      </view>
+    </view>
+    <view class="btn_box">
+      <image v-if="show_a1" @click="changeA(show_a1)" class="btn_image" mode="widthFix"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/detail_btn1.webp"></image>
+      <image v-if="show_a2" @click="changeA(show_a2)" class="btn_image" mode="widthFix"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/detail_btn2.webp"></image>
+    </view>
+    <u-modal :show="show" :closeOnClickOverlay="true" :title="`[${activity.title}]`"
+      content="选择活动后只有完成活动任务后才可参加另一个活动, 确定要参与这个活动吗" cancelText="我再想想" confirmText="参加活动" confirmColor="#e54841"
+      @cancel="show = false" @confirm="joinA()" showCancelButton></u-modal>
+    <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"
+      :isGoIndex="false"></authorize>
+  </view>
+</template>
+
+<script>
+  import { consumption, chooseConsumption } from "@/api/activity.js"
+  import { getArticleList } from "@/api/api.js"
+  import { Toast } from "../../../libs/uniApi";
+  import authorize from "@/components/Authorize.vue";
+  import { getUserInfo } from '@/api/user.js';
+  export default {
+    components: {
+      authorize
+    },
+    data() {
+      return {
+        info: {},
+        userInfo: {},
+        Alist: [],
+        activity: {
+          title: ''
+        },
+        show: false,
+        isAuto: false, //没有授权的不会自动授权
+        isShowAuth: false, //是否隐藏授权
+        is_join_activity: 0, //是否已确认参加活动
+      }
+    },
+    onLoad() {
+      this.getArticleList();
+      this.is_join_activity = uni.getStorageSync('is_join_activity');
+    },
+    onShow() {
+      this.getUserInfo();
+      this.consumption();
+    },
+    computed: {
+      show_a1() { //显示活动一
+        return this.Alist.find(item => item.title == '用户消费补贴活动')
+      },
+      show_a2() { //显示活动二
+        return this.Alist.find(item => item.title == '用户推荐拉新活动')
+      }
+    },
+    methods: {
+      consumption() {
+        consumption().then(res => {
+          this.Alist = res.data;
+        })
+      },
+      back() {
+        uni.navigateBack()
+      },
+      changeA(item) {
+        if (!this.userInfo.account) return this.openAuto();
+        this.activity = item;
+        if (this.is_join_activity) return this.joinA();
+        this.show = true;
+      },
+      getArticleList() {
+        getArticleList(25).then(res => {
+          this.info = res.data.list[0]
+        })
+      },
+      // 参加活动
+      joinA() {
+        chooseConsumption({
+          coupon_id: this.activity.coupon_id,
+          activity_id: 1, //活动默认传1即可
+        }).then(res => {
+          this.show = false;
+          let url = '';
+          if (this.activity.title == '用户消费补贴活动') url = "/pages/redpacket/redpack_type?type=1";
+          if (this.activity.title == '用户推荐拉新活动') url = "/pages/newActivity/invitation/invitation";
+          if (url) uni.navigateTo({
+            url: url
+          })
+        }).catch(err => {
+          this.show = false;
+          this.$nextTick(() => {
+            Toast('您正在参与活动,暂时不支持切换');
+          })
+        })
+        uni.setStorageSync('is_join_activity', 1);
+        this.is_join_activity = 1;
+      },
+      getUserInfo() {
+        getUserInfo().then(res => {
+          this.userInfo = res.data;
+        }).catch(err => {
+          console.log(err);
+        })
+      },
+      // 授权回调
+      onLoadFun(data) {
+        this.getUserInfo();
+        this.isShowAuth = false;
+      },
+      // 打开授权
+      openAuto() {
+        // console.log('hajhcdsohjcosvjco')
+        this.isAuto = true;
+        this.isShowAuth = true
+      },
+      // 授权关闭
+      authColse: function(e) {
+        this.isShowAuth = e
+      },
+    },
+    onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #fff5dd;
+  }
+
+  .bg {
+    position: relative;
+    padding-bottom: 300rpx;
+
+    .bg_img {
+      width: 750rpx;
+      height: 652rpx;
+      position: absolute;
+      top: 0;
+      left: 0;
+    }
+
+    .bg_back {
+      height: 34rpx;
+      width: 20rpx;
+      position: absolute;
+      top: calc(var(--status-bar-height) + 30rpx);
+      left: 30rpx;
+    }
+
+    .b_body {
+      width: 710rpx;
+      margin-left: 21rpx;
+      margin-right: 19rpx;
+      height: auto;
+      background-color: #fff;
+      border-radius: 0 0 60rpx 60rpx;
+      padding: 28rpx;
+      padding-top: 680rpx;
+      margin-bottom: 30rpx;
+
+      .b_content {
+        width: 100%;
+        // height: 800rpx;
+        // background-color: #eee;
+      }
+
+    }
+
+    
+  }
+  .btn_box {
+    position: fixed;
+    bottom: 30rpx;
+    left: 50%;
+    transform: translate(-50%);
+    width: 710rpx;
+    .btn_image {
+      width: 100%;
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/pages/newActivity/giftBag/giftBag.vue b/pages/newActivity/giftBag/giftBag.vue
new file mode 100644
index 0000000..b3b37e7
--- /dev/null
+++ b/pages/newActivity/giftBag/giftBag.vue
@@ -0,0 +1,900 @@
+<template>
+  <view class="m_body">
+    <view class="bg">
+      <view class="bg_box">
+        <image class="bg_img" mode="widthFix"
+          src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/recharge.webp"></image>
+        <view class="bg_border"></view>
+      </view>
+      <image @click="back" class="bg_back"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="body_card">
+        <view class="card1">
+          <view class="change_list">
+            <view class="change_item" @click="changeItem(item, index)"
+              v-for="(item, index) in changeList" :key="index">
+              <image class="item_pic" :src="item.pic"></image>
+              <view class="item_content">
+                <view class="top_left"><text class="c_icon">¥</text> <text class="c_content">{{item.count}}</text></view>
+                <view class="top_right">
+                  <text>数量: </text>
+                  <view @click="reduce(item)">- </view>
+                  <view style="width: 80rpx;">{{item.num}} </view>
+                  <view @click="append(item)">+ </view>
+                </view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+      <view class="a_tips">
+        <view>礼包说明:</view>
+        <view>购买1000-4999元礼包,补贴对应金额5%的现金抵扣补贴</view>
+        <view>购买5000-9999元礼包,补贴对应金额10%的现金抵扣补贴</view>
+        <view>购买10000-49999元礼包,补贴对应金额15%的现金抵扣补贴</view>
+        <view>购买50000-100000元礼包,补贴对应金额20%的现金抵扣补贴</view>
+      </view>
+    </view>
+    <view class="footer">
+      <view class="f_tip">
+        总计购买礼包金额:
+        <view class="price">
+          <text>{{total}}</text>元
+        </view>
+      </view>
+      <view class="primary_btn" @click="$u.throttle(submitSub, 1500)">立即购买</view>
+    </view>
+    <uni-popup ref="redTipsRef">
+      <view class="ref_ref">
+        <view class="ref_top">
+          购买礼包金额达到
+          <text v-if="red_type==0">1000-4999</text>
+          <text v-if="red_type==1">5000-9999</text>
+          <text v-if="red_type==2">10000-49999</text>
+          <text v-if="red_type==3">50000-100000</text>
+        </view>
+        <view class="ref_center">
+          赠送补贴变为
+        </view>
+        <view class="ref_bottom">
+          <view class="bottom_item" style="width: 100%;">
+            <image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/re_redpacket.webp"></image>
+            <view class="text">{{tipType[red_type].red1}}</view>
+          </view>
+        </view>
+      </view>
+    </uni-popup>
+    <payment :payMode="payMode" :order_id="rechar_id" :pay_close="pay_close" :is-call="true" @onChangeFun="onChangeFun"
+      :totalPrice="totalPrice"></payment>
+    <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
+  </view>
+</template>
+
+<script>
+  import { getCommissionInfo } from "@/api/user.js"
+  import { Toast } from "../../../libs/uniApi";
+  import {
+    mapGetters
+  } from "vuex";
+  import {
+    getUserInfo,
+    spreadInfo,
+    rechargeWechat
+  } from '@/api/user.js';
+  import authorize from '@/components/Authorize';
+  import payment from '@/components/payment';
+  export default {
+    components: {
+      authorize,
+      payment
+    },
+    data() {
+      return {
+        userInfo: {},
+        curNow: 0,
+        list1: [{
+          name: '余额购买'
+        }, {
+          name: '购买记录'
+        }],
+        changeList: [
+          {
+            count: 100, // 面额
+            pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item5.webp',
+            num: 0, //购买的个数
+          },
+          {
+            count: 200,
+            pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item6.webp',
+            num: 0, //购买的个数
+          },
+          {
+            count: 500,
+            pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item7.webp',
+            num: 0, //购买的个数
+          },
+          {
+            count: 1000,
+            pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item8.webp',
+            num: 0, //购买的个数
+          }
+        ],
+        nowChange: 0,
+        nowPrice: 0,
+        priceCount: 1,
+        isAuto: false, //没有授权的不会自动授权
+        isShowAuth: false, //是否隐藏授权
+        recordList: [],
+        tipType: [
+          {
+            red1: '5%的现金抵扣补贴',
+          },
+          {
+            red1: '10%的现金抵扣补贴',
+          },
+          {
+            red1: '15%的现金抵扣补贴',
+          },
+          {
+            red1: '20%的现金抵扣补贴',
+          },
+          {
+            red1: '',
+          },
+        ],
+        red_type: 4,
+        where: {
+          page: 1,
+          limit: 15,
+          type: 2
+        },
+        otherValue: '其他',
+        now_money: 0,
+        navRecharge: ['账户购买', '佣金转入'],
+        active: 0,
+        number: '',
+        from: '',
+        placeholder: "0.00",
+        picList: [],
+        activePic: 0,
+        money: "",
+        numberPic: '',
+        rechar_id: '0',
+        rechargeAttention: [],
+        pay_close: false,
+        totalPrice: '0',
+        payMode: [{
+          name: '微信支付',
+          icon: 'icon-weixinzhifu',
+          // #ifdef H5
+          value: 'h5',
+          // #endif
+          // #ifdef MP
+          value: 'routine',
+          // #endif
+          // #ifdef APP-PLUS
+          value: 'weixin',
+          // #endif
+          title: '微信快捷支付',
+          payStatus: true
+        }],
+      }
+    },
+    onLoad() {
+      if (this.isLogin) {
+        this.getUserInfo()
+      } else {
+        this.isAuto = true;
+        this.isShowAuth = true
+      }
+    },
+    onShow() {
+    },
+    computed: {
+      ...mapGetters(['isLogin', 'viewColor', 'keyColor']),
+      total() {
+        return this.changeList.reduce((t, obj)=>{
+          return t + (obj.count * obj.num);
+        }, 0);
+      }
+    },
+    onReachBottom() {
+      this.getCommissionInfo();
+    },
+    methods: {
+      back(){
+        uni.navigateBack();
+      },
+      clickTab1(e) {
+        this.curNow = e.index;
+        if (e.index == 1) {
+          this.recordList = [];
+          this.where.page = 1;
+          this.getCommissionInfo();
+        }
+      },
+      changeItem(e, index) {
+        this.nowPrice = e;
+        this.nowChange = index;
+        if (this.priceCount * this.nowPrice > 100000) {
+          this.priceCount = Math.floor(100000 / this.nowPrice);
+          return Toast('不可超过10万元');
+        }
+      },
+      append(item) {
+        if(this.total + item.count >=0 &&  this.total + item.count <1000) this.red_type = 4;
+        else if(this.total + item.count >=1000 &&  this.total + item.count <=4999 && this.red_type != 0){
+          this.red_type = 0;
+          this.$refs.redTipsRef.open();
+        }else if(this.total + item.count >=5000 &&  this.total + item.count <=9999 && this.red_type != 1){
+          this.red_type = 1;
+          this.$refs.redTipsRef.open();
+        }else if(this.total + item.count >=10000 &&  this.total + item.count <=49999 && this.red_type != 2){
+          this.red_type = 2;
+          this.$refs.redTipsRef.open();
+        }else if(this.total + item.count >=50000 &&  this.total + item.count <=100000 && this.red_type != 3){
+          this.red_type = 3;
+          this.$refs.redTipsRef.open();
+        }
+        if (this.total + item.count > 100000 || this.total>=100000) {
+          return Toast('不可超过10万元');
+        } else item.num++;
+      },
+      reduce(item) {
+        if(this.total - item.count >=0 &&  this.total - item.count <1000) this.red_type = 4;
+        else if(this.total - item.count >=1000 &&  this.total - item.count <=4999 && this.red_type != 0){
+          this.red_type = 0;
+          this.$refs.redTipsRef.open();
+        }else if(this.total - item.count >=5000 &&  this.total - item.count <=9999 && this.red_type != 1){
+          this.red_type = 1;
+          this.$refs.redTipsRef.open();
+        }else if(this.total - item.count >=10000 &&  this.total - item.count <=49999 && this.red_type != 2){
+          this.red_type = 2;
+          this.$refs.redTipsRef.open();
+        }else if(this.total - item.count >=50000 &&  this.total - item.count <=100000 && this.red_type != 3){
+          this.red_type = 3;
+          this.$refs.redTipsRef.open();
+        }
+        if (this.total==0||item.num==0) return Toast('不能再少啦');
+        else item.num--;
+      },
+      getCommissionInfo() {
+        getCommissionInfo(this.where).then((res) => {
+          if (res.data.list.length > 0) {
+            this.recordList = [...this.recordList, ...res.data.list];
+            if (res.data.list.length >= 15) this.where.page++;
+          }
+        })
+      },
+      /**
+       * 选择金额
+       */
+      picCharge(idx, item) {
+        this.activePic = idx;
+        if (item === undefined) {
+          this.rechar_id = '0';
+          this.numberPic = "";
+          this.otherValue = ''
+        } else {
+          this.otherValue = '其他'
+          this.total = "";
+          this.rechar_id = item.id.toString();
+          this.numberPic = item.data.price;
+        }
+      },
+      /**
+       * 购买额度选择
+       */
+      getRecharge() {
+        getRechargeApi()
+          .then(res => {
+            this.picList = res.data.recharge_quota;
+            if (this.picList[0]) {
+              this.rechar_id = this.picList[0].id.toString();
+              this.numberPic = this.picList[0].data.price;
+            }
+            this.rechargeAttention = res.data.recharge_attention || [];
+          })
+          .catch(res => {
+            this.$dialog.toast({
+              mes: res
+            });
+          });
+      },
+      onLoadFun: function() {
+        this.isShowAuth = false;
+        this.getUserInfo();
+        this.getRecharge();
+      },
+      // 授权关闭
+      authColse: function(e) {
+        this.isShowAuth = e
+      },
+      navRecharges: function(index) {
+        this.active = index;
+      },
+      /**
+       * 获取用户信息
+       */
+      getUserInfo: function() {
+        let that = this;
+        spreadInfo().then(res => {
+          that.$set(that, 'userInfo', res.data);
+        })
+      },
+      payClose: function() {
+        this.pay_close = false;
+      },
+      payCheck: function(type) {
+        this.createOrder(type);
+      },
+
+      /*
+       * 用户购买
+       */
+      submitSub: function(e) {
+        let that = this
+        let value = this.total;
+        // 转入余额
+        if (that.active) {
+          if (parseFloat(value) < 0 || parseFloat(value) == NaN || value == undefined || value == "") {
+            return that.$util.Tips({
+              title: '请输入金额'
+            });
+          }
+          uni.showModal({
+            title: '转入余额',
+            content: '转入余额后无法再次转出,确认是否转入余额',
+            success(res) {
+              if (res.confirm) {
+                rechargeBrokerage({
+                  brokerage: parseFloat(value),
+                }).then(res => {
+                  // that.$set(that, 'userInfo.now_money', that.$util.$h.Add(value, that.userInfo.now_money))
+                  uni.showToast({
+                    icon: 'success',
+                    title: '转入成功'
+                  })
+                  // return that.$util.Tips({
+                  // 	title: '转入成功',
+                  // 	icon: 'success'
+                  // }, {
+                  // 	tab: 5,
+                  // 	url: '/pages/users/user_money/index'
+                  // });
+                }).catch(err => {
+                  return that.$util.Tips({
+                    title: err
+                  })
+                });
+              } else if (res.cancel) {
+                return that.$util.Tips({
+                  title: '已取消'
+                });
+              }
+            },
+          })
+        } else {
+          if (this.rechar_id == 0) {
+            if (parseFloat(that.total) === 0) {
+              return that.$util.Tips({
+                title: '购买金额金额不能为0!'
+              });
+            }
+            if (!that.total) {
+              return that.$util.Tips({
+                title: '请填写购买金额!'
+              });
+            }
+            if (!Number(that.total)) {
+              return that.$util.Tips({
+                title: '请填写正确的金额!'
+              });
+            }
+          }
+          this.pay_close = true
+        }
+      },
+      createOrder(type) {
+        let that = this;
+        let query = {
+          price: that.rechar_id == 0 ? that.total : that.numberPic,
+          recharge_id: that.rechar_id,
+          type: type,
+          // #ifdef H5
+          return_url: location.port ? location.protocol + '//' + location.hostname + ':' + location.port +
+            '/pages/users/user_money/money' : location.protocol + '//' + location.hostname +
+            '/pages/users/user_money/money'
+          // #endif
+        };
+        // #ifdef MP
+        // openPaySubscribe().then(() => {
+        rechargeWechat(query).then(res => {
+          that.callPay(res);
+        }).catch(err => {
+          uni.showToast({
+            title: err,
+            icon: 'none'
+          });
+        });
+        // });
+        // #endif
+        // #ifndef MP
+        rechargeWechat(query).then(res => {
+          console.log('res', res);
+          that.callPay(res);
+        }).catch(err => {
+          console.log('err', err);
+          uni.showToast({
+            title: err,
+            icon: 'none'
+          });
+        });
+        // #endif
+      },
+      // 调用支付
+      callPay(res) {
+        let that = this,
+          status = res.data.type,
+          orderId = res.data.recharge_id,
+          callback_key = res.data.pay_key,
+          jsConfig = res.data.config,
+          goPages = '/pages/users/user_money/money';
+        switch (status) {
+          case 'ORDER_EXIST':
+          case 'EXTEND_ORDER':
+          case 'PAY_ERROR':
+          case 'error':
+            uni.hideLoading();
+            Toast(res.message)
+            // return that.$util.Tips({
+            // 	title: res.message
+            // }, {
+            // 	tab: 5,
+            // 	url: goPages
+            // });
+            break;
+          case 'success':
+            uni.hideLoading();
+            uni.showToast({
+              icon: 'success',
+              title: res.message
+            })
+            // if (that.seckillId)
+            // return that.$util.Tips({
+            // 	title: res.message,
+            // 	icon: 'success'
+            // }, {
+            // 	tab: 4,
+            // 	url: goPages
+            // });
+            // return that.$util.Tips({
+            // 	title: res.message,
+            // 	icon: 'success'
+            // }, {
+            // 	tab: 5,
+            // 	url: goPages
+            // });
+            break;
+          case 'alipay':
+          case "alipayQr":
+            uni.hideLoading();
+            that.$emit('onChangeFun', {
+              action: 'payClose'
+            });
+            uni.navigateTo({
+              url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' + jsConfig + '&type=10'
+            })
+            return;
+            break;
+            // #ifndef MP
+          case "wechat":
+          case "weixin":
+          case "weixinApp":
+            jsConfig.timeStamp = jsConfig.timestamp;
+            // #ifndef APP-PLUS
+            that.$wechat.pay(jsConfig).then(res => {
+              uni.showToast({
+                icon: 'success',
+                title: res.message
+              })
+              // return that.$util.Tips({
+              // 	title: res.message,
+              // 	icon: 'success'
+              // }, {
+              // 	tab: 4,
+              // 	url: goPages
+              // });
+            }).catch(res => {
+              uni.showToast({
+                icon: 'success',
+                title: '取消支付'
+              })
+              // if (res.errMsg == 'chooseWXPay:cancel') return that.$util.Tips({
+              // 	title: '取消支付'
+              // }, {
+              // 	tab: 5,
+              // 	url: goPages
+              // });
+            })
+            // #endif
+            // #ifdef APP-PLUS
+            let mp_pay_name = ''
+            if (uni.requestOrderPayment) {
+              mp_pay_name = 'requestOrderPayment'
+            } else {
+              mp_pay_name = 'requestPayment'
+            }
+            uni[mp_pay_name]({
+              provider: 'wxpay',
+              orderInfo: jsConfig,
+              success: (e) => {
+                this.getUserInfo()
+                uni.showToast({
+                  icon: 'success',
+                  title: '支付成功'
+                })
+                // let url = '/pages/users/user_money/money';
+                // return that.$util.Tips({
+                // 	title: '支付成功',
+                // 	icon: 'success'
+                // }, {
+                // 	tab: 4,
+                // 	url: url
+                // });
+              },
+              fail: (e) => {
+                console.log(e);
+                uni.showModal({
+                  content: "支付失败",
+                  showCancel: false,
+                  success: function(res) {
+
+                  }
+                })
+              },
+              complete: () => {
+                uni.hideLoading();
+              },
+            });
+            // #endif
+            break;
+            // #endif
+            // #ifdef MP
+          case "routine":
+            jsConfig.timeStamp = jsConfig.timestamp;
+            let mp_pay_name = ''
+            if (uni.requestOrderPayment) {
+              mp_pay_name = 'requestOrderPayment'
+            } else {
+              mp_pay_name = 'requestPayment'
+            }
+            uni[mp_pay_name]({
+              ...jsConfig,
+              success: function(res) {
+                uni.hideLoading();
+                that.getUserInfo();
+                that.getRecharge();
+                // console.log('12323424')
+                uni.showToast({
+                  icon: 'success',
+                  title: '支付成功'
+                })
+                // return that.$util.Tips({
+                // 	title: '支付成功',
+                // 	icon: 'success'
+                // }, {
+                // 	tab: 5,
+                // 	url: goPages
+                // });
+              },
+              fail: function(e) {
+                uni.hideLoading();
+                Toast('取消支付')
+                // return that.$util.Tips({
+                // 	title: '取消支付'
+                // }, {
+                // 	tab: 5,
+                // 	url: goPages
+                // });
+              },
+            })
+            break;
+            // #endif
+          case "balance":
+            uni.hideLoading();
+            //余额不足
+            Toast(res.msg)
+            // return that.$util.Tips({
+            // 	title: res.msg
+            // }, {
+            // 	tab: 5,
+            // 	url: goPages
+            // });
+            break;
+            // #ifdef H5
+          case 'h5':
+            let host = window.location.protocol + "//" + window.location.host;
+            let url = `${host}/pages/users/user_money/money`
+            let eUrl = encodeURIComponent(url)
+            let jsurl = jsConfig.mweb_url || jsConfig.h5_url
+            let locations = `${jsurl}&redirect_url=${eUrl}`
+            setTimeout(() => {
+              location.href = locations;
+            }, 100);
+            break;
+            // #endif
+            // #ifdef APP-PLUS
+          case 'alipayApp':
+            uni.requestPayment({
+              provider: 'alipay',
+              orderInfo: jsConfig,
+              success: (e) => {
+                this.getUserInfo()
+                uni.showToast({
+                  icon: 'success',
+                  title: '支付成功'
+                })
+                // return that.$util.Tips({
+                // 	title: '支付成功',
+                // 	icon: 'success'
+                // }, {
+                // 	tab: 5,
+                // 	url: goPages
+                // });
+              },
+              fail: (e) => {
+                uni.showModal({
+                  content: "支付失败",
+                  showCancel: false,
+                  success: function(res) {
+                    uni.redirectTo({
+                      url: goPages
+                    })
+                  }
+                })
+              },
+              complete: () => {
+                uni.hideLoading();
+              },
+            });
+            break;
+            // #endif
+        }
+      },
+      onChangeFun: function(e) {
+        let opt = e;
+        let action = opt.action || null;
+        let value = opt.value != undefined ? opt.value : null;
+        action && this[action] && this[action](value);
+      },
+    },
+    onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #fff;
+  }
+  .bg {
+    position: relative;
+    padding-bottom: 300rpx;
+    
+    .bg_box{
+      height: 486rpx;
+      position: relative;
+      overflow: hidden;
+      .bg_img {
+        width: 750rpx;
+        height: 652rpx;
+        position: absolute;
+        top: 0;
+        left: 0;
+      }
+      .bg_border{
+        position: absolute;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 30rpx;
+        border-radius: 60rpx 60rpx 0 0;
+        background-color: #fff;
+      }
+    }
+
+    .bg_back {
+      height: 34rpx;
+      width: 20rpx;
+      position: absolute;
+      top: calc(var(--status-bar-height) + 30rpx);
+      left: 30rpx;
+    }
+
+      .body_card {
+        color: #333;
+    
+        .card1 {
+          background-color: #fff;
+    
+          .change_list {
+            width: 700rpx;
+            margin: 0 auto;
+            display: flex;
+            justify-content: space-between;
+            flex-wrap: wrap;
+    
+            .change_item {
+              width: 335rpx;
+              height: 172rpx;
+              text-align: center;
+              // background-color: #f7f7f7;
+              border-radius: 20rpx 20rpx 20rpx 20rpx;
+              font-size: 40rpx;
+              position: relative;
+              margin-bottom: 30rpx;
+              
+              .item_pic{
+                position: absolute;
+                left: 0;
+                top: 0;
+                width: 100%;
+                height: 100%;
+              }
+              
+              .item_content{
+                padding: 26rpx;
+                position: absolute;
+                left: 0;
+                top: 0;
+                width: 100%;
+                height: 172rpx;
+                display: flex;
+                flex-direction: column;
+                justify-content: space-between;
+                
+                .top_left{
+                  font-size: 58rpx;
+                  color: #ffc53d;
+                  display: flex;
+                  align-content: center;
+                  .tips{
+                    font-size: 24rpx;
+                    border: 5rpx solid #ffc53d;
+                    margin-left: 20rpx;
+                    padding: 5rpx 15rpx;
+                    border-radius: 60rpx;
+                    color: #7C5906;
+                  }
+                  .c_content{
+                    padding-top: 10rpx;
+                  }
+                  .c_icon {
+                    padding-top: 15rpx;
+                    font-size: 36rpx;
+                  }
+                }
+                .top_right{
+                  display: flex;
+                  align-items: center;
+                  color: #FF3A32;
+                  text{
+                    font-size: 28rpx;
+                  }
+                  view{
+                    height: 60rpx;
+                    width: 40rpx;
+                    text-align: center;
+                    line-height: 60rpx;
+                  }
+                }
+                
+              }
+    
+            }
+    
+            .change_item_active {
+              background: rgba(#FF8056, 0.2);
+              border: 5rpx solid #FF8056;
+              color: #FF8056;
+            }
+          }
+    
+        }
+    
+      }
+
+    .a_tips{
+      color: #FF8056;
+      padding: 0 30rpx;
+      line-height: 40rpx;
+    }
+
+  }
+
+  .m_body {
+
+    .footer {
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      height: 120rpx;
+      width: 100vw;
+      background-color: #fff;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      padding: 0 20rpx;
+
+      .f_tip {
+        display: flex;
+        align-items: flex-end;
+        font-style: 26rpx;
+
+        .price {
+          color: #FF8056;
+
+          text {
+            font-size: 44rpx;
+            margin-left: 20rpx;
+            margin-right: 5rpx;
+          }
+        }
+
+      }
+
+      .primary_btn {
+        background-color: #fa8147;
+        height: 80rpx;
+        border-radius: 80rpx;
+        width: 180rpx;
+        color: #fff;
+        line-height: 80rpx;
+        text-align: center;
+      }
+    }
+  }
+  .ref_ref{
+    width: 630rpx;
+    height: 200rpx;
+    background-color: #fff;
+    border-radius: 20rpx;
+    padding: 20rpx 10rpx;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    align-items: center;
+    .ref_top{
+      color: #ffc53d;
+    }
+    .ref_center{
+      font-size: 24rpx;
+      border: 5rpx solid #ffc53d;
+      margin-left: 20rpx;
+      padding: 5rpx 15rpx;
+      border-radius: 60rpx;
+      color: #7C5906;
+    }
+    .ref_bottom{
+      font-size: 28rpx;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      color: #FF3A32;
+      .bottom_item{
+        width: 280rpx;
+        display: flex;
+        align-items: center;
+        image{
+          width: 32rpx;
+          height: 40rpx;
+        }
+        .text{
+          padding-left: 15rpx;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/pages/newActivity/invitation/invitation.vue b/pages/newActivity/invitation/invitation.vue
new file mode 100644
index 0000000..a920aa8
--- /dev/null
+++ b/pages/newActivity/invitation/invitation.vue
@@ -0,0 +1,384 @@
+<template>
+  <view>
+    <view class="bg">
+      <image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/invitation.webp"></image>
+      <image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="bg_body">
+        <view class="b_qr">
+          <view class="qr_body">
+            <view class="qr_code">
+              <image :src="qr_img"></image>
+            </view>
+            <view class="qr_text">扫一扫,补贴正在路上</view>
+            <view class="qr_tips">温馨提示:邀请新用户才有机会获得补贴哦</view>
+          </view>
+        </view>
+        <view class="b_user">
+          <view class="users">
+            <image v-for="(item, index) in info.user_info" :key="item.uid" class="avatar" :src="item.avatar||'/static/images/f.png'"></image>
+            <block v-if="info.user_info.length<4">
+              <view v-for="item in 4-info.user_info.length" :key="item+'n'" class="avatar_no">
+                <u-icon name="plus" color="#fff" size="40rpx"></u-icon>
+              </view>
+            </block>
+          </view>
+          <view class="u_tips">邀请新用户消费达目标金额,有机会领取补贴哦~</view>
+          <view class="u_btn">
+            <image v-if="status==0" class="btn_image" @click="open" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/ibtn1.webp"></image>
+            <image v-if="status==1" class="btn_image" @click="open" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/ibtn2.webp"></image>
+            <image v-if="status==2" class="btn_image" @click="opened" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/ibtn3.webp"></image>
+          </view>
+          <uni-popup ref="redPacket">
+            <view class="red_packet">
+              <block v-if="status==0">
+                <view class="packet_img">
+                  <image class="img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/red_packet1.webp"></image>
+                  <view class="p_text">
+                    <view class="big">抱歉!</view>
+                    <view class="smoll">有好友消费未达目标金额</view>
+                    <view class="smoll">无法领补贴哦~</view>
+                  </view>
+                </view>
+                <image @click="close()" class="close_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png"></image>
+              </block>
+              <block v-if="status==1">
+                <view class="packet_img" @click="openRedPacket()">
+                  <image class="img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/red_packet2.webp"></image>
+                  <view class="p_text">
+                    <view class="big">恭喜!</view>
+                    <view class="smoll">成功获得实物通用补贴</view>
+                    <view class="smoll">赶快打开吧~</view>
+                  </view>
+                </view>
+                <image @click="close()" class="close_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png"></image>
+              </block>
+              <block v-if="status==2">
+                <view class="packet_img">
+                  <image class="img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/red_packet3.webp"></image>
+                  <view class="p_text" style="bottom: 60rpx;">
+                    <view class="smoll">恭喜你!成功获得</view>
+                    <view class="smoll red_count"><text class="count">{{red_packet.amount}}</text>元</view>
+                    <view class="big2">购买指定商品可直接抵扣使用</view>
+                    <view class="smoll">{{red_packet.end_time}}过期</view>
+                    <image @click="close()" class="btn_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/put.webp"></image>
+                  </view>
+                </view>
+                <image @click="close()" class="close_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png"></image>
+              </block>
+            </view>
+          </uni-popup>
+        </view>
+        <view class="b_in_list">
+          <image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/irecoed.webp"></image>
+          <view class="b_head">
+            <view style="width: 120rpx;"></view>
+            <view class="head_title" style="width: 200rpx;">名称</view>
+            <view class="head_title" style="width: 130rpx;">ID</view>
+            <view class="head_title" style="width: 120rpx;">目标金额</view>
+            <view class="head_title" style="width: 120rpx;">状态</view>
+          </view>
+          <view class="b_content">
+            <view class="content_list" v-for="(item, index) in info.user_info" :key="item.uid">
+              <image class="avatar" :src="item.avatar||'/static/images/f.png'"></image>
+              <view class="content_item" style="width: 180rpx;margin: 0 10rpx;">{{item.nickname}}</view>
+              <view class="content_item" style="width: 130rpx;">{{item.uid}}</view>
+              <view class="content_item" style="width: 120rpx;">{{item.target_amount}}<text class="mall">元</text></view>
+              <view class="content_item" style="width: 120rpx;">
+                <text v-if="item.is_finish" style="color: #18CE61;">已完成</text>
+                <text v-else style="color: #FA5A29;">未完成</text>
+              </view>
+            </view>
+            <!-- <view class="mall none">暂无记录</view> -->
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { storeActivityStatus, storeActivityReceive, storeActivityQrcode } from "@/api/activity.js"
+import { Toast } from "../../../libs/uniApi";
+import { getUserInfo } from '@/api/user.js';
+export default {
+  data() {
+    return {
+      info: {
+        user_info: []
+      },
+      red_packet: {
+        amount: '0.00',
+        end_time: ''
+      },
+      status: 0, //0不可开, 1可开, 2已开
+      qr_img: ''
+    }
+  },
+  onLoad() {},
+  onShow() {
+    this.storeActivityQrcode();
+    this.loadInfo();
+  },
+  methods: {
+    back(){
+      uni.navigateBack()
+    },
+    loadInfo(){
+      storeActivityStatus().then(res=>{
+        this.info = res.data;
+        if(res.data.allow_receive) this.status = 1;
+      })
+    },
+    opened(){
+      Toast('已经领取过啦!');
+    },
+    open(){
+      this.$refs.redPacket.open();
+    },
+    close(){
+      this.$refs.redPacket.close();
+    },
+    storeActivityQrcode(){
+      storeActivityQrcode().then(res=>{
+        this.qr_img = res.data.url;
+      })
+    },
+    // 打开补贴
+    async openRedPacket(){
+      this.$refs.redPacket.close();
+      try{
+        let {data} = await storeActivityReceive();
+        this.$nextTick(()=>{
+          this.red_packet = data;
+          this.$u.sleep(800).then(()=>{
+            this.status = 2;
+            this.$u.sleep(100).then(()=>{
+              this.open();
+            })
+          })
+        })
+      }catch(e){
+        Toast(e)
+      }
+    }
+  },
+  onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+page{
+  background-color: #ff864d;
+}
+.bg{
+  position: relative;
+  height: auto;
+  .bg_img{
+    width: 750rpx;
+    position: absolute;
+    top: 0;
+    left: 0;
+  }
+  .bg_back{
+    height: 34rpx;
+    width: 20rpx;
+    position: absolute;
+    top: calc(var(--status-bar-height) + 30rpx);
+    left: 30rpx;
+  }
+  .bg_body{
+    position: absolute;
+    top: 414rpx;
+    left: 0;
+    .b_qr{
+      width: 710rpx;
+      height: 750rpx;
+      margin: 0 20rpx;
+      // background: linear-gradient(to top, #FFE3AE 0%, #FFF6EB 100%);
+      background: #FFF6EB;
+      border-radius: 50rpx;
+      padding: 20rpx;
+      .qr_body{
+        width: 100%;
+        height: 100%;
+        border: 5rpx solid #ffd588;
+        border-radius: 50rpx;
+        text-align: center;
+        display: flex;
+        justify-content: space-evenly;
+        flex-direction: column;
+        .qr_code{
+          width: 510rpx;
+          height: 510rpx;
+          // background-color: #f8962e;
+          margin: 0 auto;
+          image{
+            width: 100%;
+            height: 100%;
+          }
+        }
+        .qr_text{
+          font-size: 36rpx;
+          color: #C44100;
+          font-weight: 500;
+        }
+        .qr_tips{
+          font-size: 26rpx;
+          color: #C44100;
+        }
+      }
+    }
+    .b_user{
+      margin-top: 30rpx;
+      .users{
+        display: flex;
+        justify-content: center;
+        .avatar{
+          height: 100rpx;
+          width: 100rpx;
+          border-radius: 50%;
+          margin: 15rpx;
+        }
+        .avatar_no{
+          height: 100rpx;
+          width: 100rpx;
+          font-weight: 200;
+          border-radius: 50%;
+          border: 2rpx dashed #fff;
+          margin: 15rpx;
+          background-color: rgba(#fff, 0.3);
+          display: flex;
+          justify-content: center;
+          align-items: center;
+        }
+      }
+      .u_tips{
+        color: #FFE5B3;
+        font-size: 26rpx;
+        text-align: center;
+      }
+      .u_btn{
+        margin-top: 30rpx;
+        margin-bottom: 20rpx;
+        display: flex;
+        justify-content: center;
+        .btn_image{
+          width: 403rpx;
+          height: 113rpx;
+        }
+      }
+      .red_packet{
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        .packet_img{
+          width: 750rpx;
+          position: relative;
+          .img{
+            width: 100%;
+          }
+          .p_text{
+            position: absolute;
+            bottom: 120rpx;
+            width: 100%;
+            text-align: center;
+            color: #fff;
+            .big{
+              font-size: 38rpx;
+              font-weight: 500;
+              margin-bottom: 30rpx;
+            }
+            .smoll{
+              font-size: 28rpx;
+              margin-bottom: 20rpx;
+            }
+            .big2{
+              font-size: 32rpx;
+              font-weight: 500;
+              margin-bottom: 30rpx;
+            }
+            .btn_img{
+              width: 310rpx;
+            }
+            .red_count{
+              margin-top: 80rpx;
+              margin-bottom: 40rpx;
+              .count{
+                font-size: 80rpx;
+              }
+            }
+          }
+        }
+        .close_img{
+          width: 60rpx;
+          height: 60rpx;
+        }
+      }
+    }
+    .b_in_list{
+      width: 710rpx;
+      margin: 0 20rpx;
+      height: auto;
+      background-color: #fff;
+      
+      border-radius: 50rpx;
+      padding: 20rpx;
+      margin-bottom: 30rpx;
+      display: flex;
+      flex-direction: column;
+      align-content: center;
+      .body_head_img{
+        width: 253rpx;
+        margin: 0 auto;
+      }
+      .b_head{
+        background-color: #fff2ed;
+        border-radius: 20rpx;
+        color: #854116;
+        display: flex;
+        margin-top: 28rpx;
+        text-align: center;
+        .head_title{
+          width: 150rpx;
+          padding: 20rpx 0;
+          font-size: 28rpx;
+        }
+      }
+      .b_content{
+        .mall{
+          font-size: 26rpx;
+        }
+        .content_list{
+          background-color: #FFF6E9;
+          border-radius: 20rpx;
+          color: #C44100;
+          padding-top: 20rpx;
+          margin-top: 20rpx;
+          font-size: 28rpx;
+          display: flex;
+          align-items: center;
+          padding-bottom: 20rpx;
+          text-align: center;
+          .content_item{
+            overflow: hidden;
+          }
+          .avatar{
+            width: 100rpx;
+            height: 100rpx;
+            border-radius: 50%;
+            margin-left: 16rpx;
+          }
+        }
+        .none{
+          text-align: center;
+          padding: 20rpx;
+        }
+      }
+    }
+  }
+  
+}
+
+</style>
diff --git a/pages/newActivity/subsidy/subsidy.vue b/pages/newActivity/subsidy/subsidy.vue
new file mode 100644
index 0000000..8eea504
--- /dev/null
+++ b/pages/newActivity/subsidy/subsidy.vue
@@ -0,0 +1,182 @@
+<template>
+  <view>
+    <view style="height: var(--status-bar-height);background-color: #e54841;"></view>
+    <view class="bg">
+      <image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/subsidy.webp"></image>
+      <image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="bg_title">补贴记录</view>
+      <view class="b_title">
+        <view>总计获得</view> <view class="count">{{total_amount}}</view> <view>元补贴补贴</view>
+      </view>
+      <view class="b_body">
+        <image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/srecord.webp"></image>
+        <view class="b_head">
+          <view class="head_title">消费金额</view>
+          <view class="head_title">补贴金额</view>
+          <view class="head_title2">补贴获得时间</view>
+        </view>
+        <view class="b_content">
+          <view class="content_list" v-for="(item, index) in list" :key="index">
+            <view class="content_item">{{item.order_amount}}<text class="mall">元</text></view>
+            <view class="content_item">{{item.coupon_price}}<text class="mall">元</text></view>
+            <view class="content_item2"><text class="mall">{{item.create_time}}</text></view>
+          </view>
+          <view class="mall none" style="padding-top: 0;" v-if="list.length==0" @click="navTo">{{'暂无记录, 去消费领补贴 >>'}}</view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { storeActivityRecord } from "@/api/activity.js"
+import { Toast } from "../../../libs/uniApi";
+import { getUserInfo } from '@/api/user.js';
+export default {
+  data() {
+    return {
+      total_amount: '0.00',
+      list: []
+    }
+  },
+  onLoad() {},
+  onShow() {
+    this.storeActivityRecord();
+  },
+  methods: {
+    back(){
+      uni.navigateBack()
+    },
+    storeActivityRecord(){
+      storeActivityRecord().then(res=>{
+        this.list = res.data.record;
+        this.total_amount = res.data.total_amount || "0.00"
+      })
+    },
+    navTo(){
+      uni.switchTab({
+        url:'/pages/index/index'
+      })
+    }
+  },
+  onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+page{
+  background-color: #ffe3bd;
+}
+.bg{
+  position: relative;
+  height: auto;
+  .bg_img{
+    width: 750rpx;
+    position: absolute;
+    top: 0;
+    left: 0;
+  }
+  .bg_back{
+    height: 34rpx;
+    width: 20rpx;
+    position: absolute;
+    top: 30rpx;
+    left: 30rpx;
+  }
+  .bg_title{
+    font-size: 32rpx;
+    color: #fff;
+    font-weight: 500;
+    position: absolute;
+    top: 30rpx;
+    left: 50%;
+    transform: translate(-50%);
+  }
+  .b_title{
+    position: absolute;
+    width: 100%;
+    height: 70rpx;
+    top: 225rpx;
+    left: 0;
+    text-align: center;
+    font-size: 36rpx;
+    color: #F1503F;
+    display: flex;
+    justify-content: center;
+    align-items: flex-end;
+    .count{
+      // height: 100%;
+      font-size: 66rpx;
+      font-weight: bold;
+      margin: 10rpx 20rpx;
+    }
+  }
+  .b_body{
+    position: absolute;
+    width: 710rpx;
+    margin-left: 21rpx;
+    margin-right: 19rpx;
+    height: auto;
+    background-color: #fff;
+    top: 534rpx;
+    left: 0;
+    border-radius: 50rpx;
+    padding: 28rpx;
+    margin-bottom: 30rpx;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    .body_head_img{
+      width: 253rpx;
+      margin: 0 auto;
+    }
+    .b_head{
+      background-color: #FFF2E0;
+      border-radius: 20rpx;
+      color: #C44100;
+      display: flex;
+      margin-top: 28rpx;
+      font-size: 28rpx;
+      padding: 20rpx 0;
+      .head_title{
+        padding-left: 20rpx;
+        width: 190rpx;
+      }
+      .head_title2{
+        padding-left: 20rpx;
+        width: 280rpx;
+      }
+    }
+    .b_content{
+      background-color: #fff2ed;
+      border-radius: 20rpx;
+      color: #FF5A3A;
+      padding-top: 20rpx;
+      margin-top: 28rpx;
+      font-size: 32rpx;
+      .mall{
+        font-size: 26rpx;
+      }
+      .content_list{
+        display: flex;
+        padding-bottom: 20rpx;
+        .content_item{
+          padding-left: 20rpx;
+          width: 190rpx;
+        }
+        .content_item2{
+          padding-left: 20rpx;
+          width: 280rpx;
+        }
+      }
+      .none{
+        text-align: center;
+        padding: 20rpx;
+      }
+    }
+  }
+}
+
+</style>
diff --git a/pages/newActivity/subsidy/subsidy2.vue b/pages/newActivity/subsidy/subsidy2.vue
new file mode 100644
index 0000000..33f9ada
--- /dev/null
+++ b/pages/newActivity/subsidy/subsidy2.vue
@@ -0,0 +1,183 @@
+<template>
+  <view>
+    <view class="bg">
+      <image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/subsidy.webp"></image>
+      <image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="bg_title">无门槛实物通用补贴</view>
+      <view class="b_title">
+        <view>总计剩余</view> <view class="count">{{total_amount}}</view> <view>元通用补贴</view>
+      </view>
+      <view class="b_body">
+        <image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/srecord.webp"></image>
+        <view class="b_head">
+          <view class="head_title">消费金额</view>
+          <view class="head_title">补贴金额</view>
+          <view class="head_title2">补贴获得时间</view>
+        </view>
+        <view class="b_content">
+          <view class="content_list" v-for="(item, index) in list" :key="index">
+            <view class="content_item">{{item.order_amount}}<text class="mall">元</text></view>
+            <view class="content_item">{{item.coupon_price}}<text class="mall">元</text></view>
+            <view class="content_item2"><text class="mall">{{item.create_time}}</text></view>
+          </view>
+          <view class="mall none" style="padding-top: 0;" v-if="list.length==0" @click="navTo">{{'暂无记录, 去消费领补贴 >>'}}</view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { storeActivityRecord } from "@/api/activity.js"
+import { Toast } from "../../../libs/uniApi";
+import { getUserInfo } from '@/api/user.js';
+export default {
+  data() {
+    return {
+      total_amount: '0.00',
+      list: []
+    }
+  },
+  onLoad() {},
+  onShow() {
+    this.storeActivityRecord();
+  },
+  methods: {
+    back(){
+      uni.navigateBack()
+    },
+    storeActivityRecord(){
+      storeActivityRecord({
+        type: 1
+      }).then(res=>{
+        this.list = res.data.record;
+        this.total_amount = res.data.total_amount || "0.00"
+      })
+    },
+    navTo(){
+      uni.switchTab({
+        url:'/pages/index/index'
+      })
+    }
+  },
+  onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+page{
+  background-color: #ffe3bd;
+}
+.bg{
+  position: relative;
+  height: auto;
+  .bg_img{
+    width: 750rpx;
+    position: absolute;
+    top: 0;
+    left: 0;
+  }
+  .bg_back{
+    height: 34rpx;
+    width: 20rpx;
+    position: absolute;
+    top: calc(var(--status-bar-height) + 30rpx);
+    left: 30rpx;
+  }
+  .bg_title{
+    font-size: 32rpx;
+    color: #fff;
+    font-weight: 500;
+    position: absolute;
+    top: calc(var(--status-bar-height) + 30rpx);
+    left: 50%;
+    transform: translate(-50%);
+  }
+  .b_title{
+    position: absolute;
+    width: 100%;
+    height: 70rpx;
+    top: 225rpx;
+    left: 0;
+    text-align: center;
+    font-size: 36rpx;
+    color: #F1503F;
+    display: flex;
+    justify-content: center;
+    align-items: flex-end;
+    .count{
+      // height: 100%;
+      font-size: 66rpx;
+      font-weight: bold;
+      margin: 10rpx 20rpx;
+    }
+  }
+  .b_body{
+    position: absolute;
+    width: 710rpx;
+    margin-left: 21rpx;
+    margin-right: 19rpx;
+    height: auto;
+    background-color: #fff;
+    top: 534rpx;
+    left: 0;
+    border-radius: 50rpx;
+    padding: 28rpx;
+    margin-bottom: 30rpx;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    .body_head_img{
+      width: 253rpx;
+      margin: 0 auto;
+    }
+    .b_head{
+      background-color: #FFF2E0;
+      border-radius: 20rpx;
+      color: #C44100;
+      display: flex;
+      margin-top: 28rpx;
+      font-size: 28rpx;
+      padding: 20rpx 0;
+      .head_title{
+        padding-left: 20rpx;
+        width: 190rpx;
+      }
+      .head_title2{
+        padding-left: 20rpx;
+        width: 280rpx;
+      }
+    }
+    .b_content{
+      background-color: #fff2ed;
+      border-radius: 20rpx;
+      color: #FF5A3A;
+      padding-top: 20rpx;
+      margin-top: 28rpx;
+      font-size: 32rpx;
+      .mall{
+        font-size: 26rpx;
+      }
+      .content_list{
+        display: flex;
+        padding-bottom: 20rpx;
+        .content_item{
+          padding-left: 20rpx;
+          width: 190rpx;
+        }
+        .content_item2{
+          padding-left: 20rpx;
+          width: 280rpx;
+        }
+      }
+      .none{
+        text-align: center;
+        padding: 20rpx;
+      }
+    }
+  }
+}
+
+</style>
diff --git a/pages/newActivity/subsidy/subsidy3.vue b/pages/newActivity/subsidy/subsidy3.vue
new file mode 100644
index 0000000..766cd60
--- /dev/null
+++ b/pages/newActivity/subsidy/subsidy3.vue
@@ -0,0 +1,183 @@
+<template>
+  <view>
+    <view class="bg">
+      <image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/subsidy.webp"></image>
+      <image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="bg_title">现金抵扣补贴</view>
+      <view class="b_title">
+        <view>总计剩余</view> <view class="count">{{total_amount}}</view> <view>元抵扣补贴</view>
+      </view>
+      <view class="b_body">
+        <image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/srecord.webp"></image>
+        <view class="b_head">
+          <view class="head_title">消费金额</view>
+          <view class="head_title">补贴金额</view>
+          <view class="head_title2">补贴获得时间</view>
+        </view>
+        <view class="b_content">
+          <view class="content_list" v-for="(item, index) in list" :key="index">
+            <view class="content_item">{{item.order_amount}}<text class="mall">元</text></view>
+            <view class="content_item">{{item.coupon_price}}<text class="mall">元</text></view>
+            <view class="content_item2"><text class="mall">{{item.create_time}}</text></view>
+          </view>
+          <view class="mall none" style="padding-top: 0;" v-if="list.length==0" @click="navTo">{{'暂无记录, 去消费领补贴 >>'}}</view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { storeActivityRecord } from "@/api/activity.js"
+import { Toast } from "../../../libs/uniApi";
+import { getUserInfo } from '@/api/user.js';
+export default {
+  data() {
+    return {
+      total_amount: '0.00',
+      list: []
+    }
+  },
+  onLoad() {},
+  onShow() {
+    this.storeActivityRecord();
+  },
+  methods: {
+    back(){
+      uni.navigateBack()
+    },
+    storeActivityRecord(){
+      storeActivityRecord({
+        type: 2
+      }).then(res=>{
+        this.list = res.data.record;
+        this.total_amount = res.data.total_amount || "0.00"
+      })
+    },
+    navTo(){
+      uni.switchTab({
+        url:'/pages/index/index'
+      })
+    }
+  },
+  onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+page{
+  background-color: #ffe3bd;
+}
+.bg{
+  position: relative;
+  height: auto;
+  .bg_img{
+    width: 750rpx;
+    position: absolute;
+    top: 0;
+    left: 0;
+  }
+  .bg_back{
+    height: 34rpx;
+    width: 20rpx;
+    position: absolute;
+    top: calc(var(--status-bar-height) + 30rpx);
+    left: 30rpx;
+  }
+  .bg_title{
+    font-size: 32rpx;
+    color: #fff;
+    font-weight: 500;
+    position: absolute;
+    top: calc(var(--status-bar-height) + 30rpx);
+    left: 50%;
+    transform: translate(-50%);
+  }
+  .b_title{
+    position: absolute;
+    width: 100%;
+    height: 70rpx;
+    top: 225rpx;
+    left: 0;
+    text-align: center;
+    font-size: 36rpx;
+    color: #F1503F;
+    display: flex;
+    justify-content: center;
+    align-items: flex-end;
+    .count{
+      // height: 100%;
+      font-size: 66rpx;
+      font-weight: bold;
+      margin: 10rpx 20rpx;
+    }
+  }
+  .b_body{
+    position: absolute;
+    width: 710rpx;
+    margin-left: 21rpx;
+    margin-right: 19rpx;
+    height: auto;
+    background-color: #fff;
+    top: 534rpx;
+    left: 0;
+    border-radius: 50rpx;
+    padding: 28rpx;
+    margin-bottom: 30rpx;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    .body_head_img{
+      width: 253rpx;
+      margin: 0 auto;
+    }
+    .b_head{
+      background-color: #FFF2E0;
+      border-radius: 20rpx;
+      color: #C44100;
+      display: flex;
+      margin-top: 28rpx;
+      font-size: 28rpx;
+      padding: 20rpx 0;
+      .head_title{
+        padding-left: 20rpx;
+        width: 190rpx;
+      }
+      .head_title2{
+        padding-left: 20rpx;
+        width: 280rpx;
+      }
+    }
+    .b_content{
+      background-color: #fff2ed;
+      border-radius: 20rpx;
+      color: #FF5A3A;
+      padding-top: 20rpx;
+      margin-top: 28rpx;
+      font-size: 32rpx;
+      .mall{
+        font-size: 26rpx;
+      }
+      .content_list{
+        display: flex;
+        padding-bottom: 20rpx;
+        .content_item{
+          padding-left: 20rpx;
+          width: 190rpx;
+        }
+        .content_item2{
+          padding-left: 20rpx;
+          width: 280rpx;
+        }
+      }
+      .none{
+        text-align: center;
+        padding: 20rpx;
+      }
+    }
+  }
+}
+
+</style>
diff --git a/pages/newActivity/towPrice/towPrice.vue b/pages/newActivity/towPrice/towPrice.vue
new file mode 100644
index 0000000..f596f04
--- /dev/null
+++ b/pages/newActivity/towPrice/towPrice.vue
@@ -0,0 +1,333 @@
+<template>
+  <view>
+    <view class="bg">
+      <image class="bg_img" mode="widthFix"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/tow_price_bg.webp"></image>
+      <image @click="back" class="bg_back"
+        src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="b_body">
+        <view class="b_content">
+          <view style="padding-bottom: 16rpx;">
+            <picker :range="addressList" range-key="street_name" @change="changeAddress">
+              <block v-if="address.street_id">
+                当前活动区域为 <text style="color: #f84221;margin-left: 5rpx;">[ {{address.townName}} ] , 点击切换</text>
+              </block>
+              <block v-else>
+                <text style="color: #f84221;margin-left: 5rpx;">当前区域 [ {{address.townName}} ] 没有活动 , 点击切换</text>
+              </block>
+            </picker>
+          </view>
+          <block v-if="goodsList.length>0">
+            <view v-if="item.product" v-for="(item, index) in goodsList" class="short_item" @click="clickProduct(item)">
+              <image class="image" :src="item.product.image"></image>
+              <view class="short_item_right">
+                <view class="r_name">
+                  <text v-if="item.mer_labels_name" class="mer-labels">{{item.mer_labels_name}}</text>{{item.product.store_name}}
+                </view>
+                <view style="display: flex;justify-content: flex-start;margin-top: 5rpx;">
+                  <view class="r_street" v-if="item.merchant">{{item.merchant.street_name}}</view>
+                  <view class="r_type" v-if="item.product.store_info||getSkuName(item)||item.unit_name">
+                    <view v-if="getSkuName(item)">{{getSkuName(item)}}</view>
+                    <view v-else-if="item.unit_name">{{item.unit_name}}</view>
+                  </view>
+                </view>
+                <view class="r_btn" v-if="item.product && item.product.price">
+                  <view style="color: #7f7f7f;">¥<text style="font-size: 33rpx;">{{ item.product.price.split('.')[0] }}.</text>{{item.product.price.split('.')[1]}} 限时特惠</view>
+                  <view class="qiang" :class="{'no_qiang': !can_buy}">¥{{item.limited_price}} 抢</view>
+                  <!-- <image src="@/static/images/icon/plus.png" style="width: 40rpx;height: 40rpx;border-radius: 40rpx;"></image> -->
+                </view>
+              </view>
+            </view>
+          </block>
+          <block v-else>
+            <image style="width: 100%;" mode="widthFix" src="/static/img/no_short.f2ffcd1c.png"></image>
+            <view style="text-align: center;color: #999;">此区域没有找到活动商品,切换其他地方试试呢</view>
+          </block>
+        </view>
+      </view>
+    </view>
+    <shortPopupActive ref="shortPopupRef" @addCart="loadCart" :source="105" isBuy></shortPopupActive>
+    <u-modal :show="show" :closeOnClickOverlay="true" :title="`[${activity.title}]`"
+      content="选择活动后只有完成活动任务后才可参加另一个活动, 确定要参与这个活动吗" cancelText="我再想想" confirmText="参加活动" confirmColor="#e54841"
+      @cancel="show = false" @confirm="joinA()" showCancelButton></u-modal>
+    <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"
+      :isGoIndex="false"></authorize>
+  </view>
+</template>
+
+<script>
+  import { getArticleList } from "@/api/api.js"
+  import { Toast } from "../../../libs/uniApi";
+  import authorize from "@/components/Authorize.vue";
+  import { getUserInfo } from '@/api/user.js';
+  import shortPopupActive from "@/components/shortPopupActive.vue"
+  import { storeActivityProduct, storeActivityDistrict } from "@/api/activity.js"
+  import {
+    getCartCounts,
+    getCartList,
+  } from '@/api/order.js';
+  export default {
+    components: {
+      authorize,
+      shortPopupActive
+    },
+    data() {
+      return {
+        info: {},
+        userInfo: {},
+        Alist: [],
+        activity: {
+          title: ''
+        },
+        address: {
+          townName: '',
+          street_id: ''
+        },
+        show: false,
+        isAuto: false, //没有授权的不会自动授权
+        isShowAuth: false, //是否隐藏授权
+        addressList: [], 
+        goodsList: [],
+        goodsNum: 0,
+        can_buy: 0, // 是否可以购买, 0不可以, 1可以
+      }
+    },
+    onLoad(options) {
+      this.address = {
+        street_id: options.street_id,
+        townName: options.townName
+      }
+    },
+    onShow() {
+      this.getUserInfo();
+      this.loadList();
+      this.cartFn();
+      this.loadAddressList();
+    },
+    methods: {
+      changeAddress(e){
+        this.address = {
+          street_id: this.addressList[e.detail.value].street_code,
+          townName: this.addressList[e.detail.value].street_name
+        }
+        this.loadList();
+      },
+      back() {
+        uni.navigateBack()
+      },
+      getUserInfo() {
+        getUserInfo().then(res => {
+          this.userInfo = res.data;
+        }).catch(err => {
+          console.log(err);
+        })
+      },
+      loadList(){
+        let location = '';
+        if(this.$store.state.storage.location.lat) location = this.$store.state.storage.location.lat + ',' + this.$store.state.storage.location.long;
+        storeActivityProduct({
+          street_code: this.address.street_id,
+          activity_id: 2, //默认传2
+          location: location,
+          source: 105
+        }).then(res => {
+          this.can_buy = res.data.can_buy;
+          this.goodsList = res.data.list;
+        }).catch(e=>{
+          Toast(e.msg||e.message||e)
+        })
+      },
+      loadAddressList(){
+        storeActivityDistrict().then(res=>{
+          this.addressList = res.data;
+          if(!this.addressList.find(item=>item.street_code==this.address.street_id)){
+            this.address.street_id = ''
+          }
+        })
+      },
+      // 获取规格名称
+      getSkuName(item){
+        return Object.keys(item.sku).join('/')||null;
+      },
+      // 点击商品
+      clickProduct(data){
+        if(!this.address.townName) return Toast('请先选择活动区域')
+        if(!this.can_buy){
+          return Toast('活动限购一件, 您已经买过了哦~')
+        }
+        this.$refs.shortPopupRef.setDatas(data, this.goodsNum);
+        this.$refs.shortPopupRef.open();
+      },
+      // 刷新购物车
+      loadCart(){
+        this.cartFn();
+      },
+      // 购物车信息
+      cartFn() {
+        getCartCounts({
+          source: 105,
+          // product_type: 98
+        }).then(res => {
+          this.goodsNum = res.data[0].count
+        })
+      },
+      // 授权回调
+      onLoadFun(data) {
+        this.getUserInfo();
+        this.isShowAuth = false;
+      },
+      // 打开授权
+      openAuto() {
+        // console.log('hajhcdsohjcosvjco')
+        this.isAuto = true;
+        this.isShowAuth = true
+      },
+      // 授权关闭
+      authColse: function(e) {
+        this.isShowAuth = e
+      },
+    },
+    onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #fff5dd;
+  }
+
+  .bg {
+    position: relative;
+    padding-bottom: 30rpx;
+
+    .bg_img {
+      width: 750rpx;
+      height: 652rpx;
+      position: absolute;
+      top: 0;
+      left: 0;
+    }
+
+    .bg_back {
+      height: 34rpx;
+      width: 20rpx;
+      position: absolute;
+      top: calc(var(--status-bar-height) + 30rpx);
+      left: 30rpx;
+    }
+
+    .b_body {
+      width: 710rpx;
+      margin-left: 21rpx;
+      margin-right: 19rpx;
+      height: auto;
+      background-color: #fff;
+      border-radius: 0 0 60rpx 60rpx;
+      padding: 28rpx;
+      padding-top: 680rpx;
+      margin-bottom: 30rpx;
+
+      .b_content {
+        width: 100%;
+        // height: 800rpx;
+        // background-color: #eee;
+        .short_item {
+          // padding: 20rpx;
+          padding-bottom: 30rpx;
+          display: flex;
+          justify-content: space-between;
+        
+          .image {
+            height: 200rpx;
+            width: 200rpx;
+            border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
+            margin-right: 20rpx;
+            flex-shrink: 0;
+          }
+        
+          .short_item_right {
+            width: 430rpx;
+            display: flex;
+            flex-direction: column;
+            justify-content: space-between;
+        
+            .r_name {
+              width: 100%;
+              height: 80rpx;
+              font-size: 28rpx;
+              line-height: 40rpx;
+              text-overflow: ellipsis;
+              display: -webkit-box; /* 使用弹性盒子布局 */
+              -webkit-box-orient: vertical; /* 设置为垂直方向布局 */
+              overflow: hidden; /* 隐藏超出部分 */
+              -webkit-line-clamp: 2; /* 限制显示两行文本 */
+              .mer-labels{
+                background-color: #f84221;
+                color: #fff;
+                font-size: 18rpx;
+                padding: 4rpx 8rpx;
+                border-radius: 5rpx;
+                margin-right: 8rpx;
+              }
+            }
+        
+            .r_type {
+              font-size: 22.78rpx;
+              color: #737373;
+              flex: 1;
+              overflow: hidden;
+              display: flex;
+        
+              view {
+                height: 39rpx;
+                line-height: 39rpx;
+                background: #FEF5F3;
+                padding: 0 16rpx;
+                border-radius: 39rpx;
+                text-overflow: ellipsis;
+              }
+            }
+        
+            .r_btn {
+              display: flex;
+              justify-content: space-between;
+              font-size: 22.78rpx;
+              color: #F84221;
+              align-items: center;
+              background-color: rgba(#F84221, 0.1);
+              padding-left: 15rpx;
+              border-radius: 0 60rpx 60rpx 0;
+              .qiang{
+                width: 160rpx;
+                height: 60rpx;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                background-color: #F84221;
+                color: #fff;
+                border-radius: 60rpx;
+                font-weight: bold;
+                font-size: 28rpx;
+              }
+              .no_qiang{
+                background-color: #7f7f7f;
+              }
+            }
+            .r_street{
+              font-size: 24rpx;
+              height: 39rpx;
+              line-height: 39rpx;
+              color: #7f7f7f;
+              padding-right: 10rpx;
+            }
+          }
+        }
+      }
+
+    }
+
+    
+  }
+</style>
\ No newline at end of file
diff --git a/pages/redpacket/redpack_type.vue b/pages/redpacket/redpack_type.vue
new file mode 100644
index 0000000..e101723
--- /dev/null
+++ b/pages/redpacket/redpack_type.vue
@@ -0,0 +1,220 @@
+<template>
+  <view class="red_body">
+    <view class="bg">
+      <image mode="widthFix" src="/static/active/redpack_type_img.webp"></image>
+      <view class="border"></view>
+    </view>
+    <view  class="bg_back">
+      <image @click="back" class="bc_image" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
+      <view class="title">补贴余额</view>
+    </view>
+    <view class="r_list" v-for="(item, index) in list" :key="index">
+      <view class="r_item" @click="navgo(item)">
+        <image class="r_bg" src="/static/active/red_packet.webp"></image>
+        <view class="r_body">
+          <view class="r_count">
+            <view class="rc_count">
+              <text class="rc_icon">¥</text>{{item.total_amount}}
+            </view>
+          </view>
+          <view class="r_content">
+            <view class="r_name">{{item.type_cn}}</view>
+          </view>
+          <view class="r_btn">
+            查看
+          </view>
+        </view>
+      </view>
+    </view>
+    <view style="width: 100%;height: 260rpx;"></view>
+    <!-- <view class="activity">
+      <image mode="widthFix" @click="navTo()" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/activity1.webp"></image>
+    </view> -->
+  </view>
+</template>
+
+<script>
+  import { storeActivityTotal } from "@/api/activity.js"
+  export default {
+    data() {
+      return {
+        list: []
+      }
+    },
+    onLoad() {},
+    onShow() {
+      this.storeActivityTotal();
+    },
+    methods: {
+      storeActivityTotal(){
+        storeActivityTotal().then(res=>{
+          this.list = res.data;
+        })
+      },
+      back(){
+        uni.navigateBack();
+      },
+      navgo(item){
+        if(item.type==1) uni.navigateTo({
+          url: '/pages/newActivity/subsidy/subsidy2'
+        })
+        else if(item.type==2) uni.navigateTo({
+          url: '/pages/newActivity/subsidy/subsidy3'
+        })
+      },
+      navTo(){
+        let address = this.$store.state.storage.address;
+        let location = this.$store.state.storage.location;
+        if(address.street_id){
+          uni.navigateTo({
+            url: `/pages/nongKe/cloud_entrepot/indexh?street_id=${address.street_id}&townName=${address.townName}&source=103&location=${location.lat},${location.long}`
+          })
+        }else uni.navigateTo({
+            url: `/pages/nongKe/cloud_entrepot/indexh`
+          })
+      }
+    },
+    onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+  .red_body{
+    position: relative;
+    background: linear-gradient(to top, rgb(255,231,185), rgb(255,249,231) 480rpx);
+    min-height: calc(100vh);
+    .bg{
+      width: 750rpx;
+      height: 480rpx;
+      overflow: hidden;
+      position: relative;
+      image{
+        width: 100%;
+        height: 100%;
+      }
+      .border{
+        position: absolute;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 30rpx;
+        border-radius: 30rpx 30rpx 0 0;
+        background-color: rgb(255,249,231);
+      }
+    }
+    .bg_back{
+      position: absolute;
+      top: var(--status-bar-height);
+      left: 0;
+      width: 100%;
+      padding: 30rpx;
+      color: #fff;
+      display: flex;
+      text-align: center;
+      .bc_image{
+        height: 34rpx;
+        width: 20rpx;
+      }
+      .title{
+        position: absolute;
+        top: 30rpx;
+        left: 50%;
+        transform: translate(-50%);
+      }
+    }
+  }
+  .r_list {
+    padding: 0 20rpx 20rpx 20rpx;
+
+    .r_item {
+      height: 156rpx;
+      width: 710rpx;
+      position: relative;
+
+      .r_bg {
+        width: 100%;
+        height: 100%;
+      }
+
+      .r_body {
+        position: absolute;
+        top: 0;
+        left: 0;
+        bottom: 0;
+        right: 0;
+        display: flex;
+        align-items: center;
+
+        .r_count {
+          flex: 2;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          color: #A46F32;
+          font-size: 44rpx;
+          font-weight: bold;
+
+          .rc_count {
+            display: flex;
+            align-items: flex-end;
+          }
+
+          .rc_icon {
+            font-size: 28rpx;
+            font-weight: 500;
+            margin-bottom: 8rpx;
+          }
+        }
+
+        .r_content {
+          flex: 4;
+          color: #FFF3CC;
+          font-size: 24rpx;
+          padding: 18rpx 10rpx 18rpx 40rpx;
+          display: flex;
+          flex-direction: column;
+          justify-content: center;
+
+          .r_name {
+            font-size: 32rpx;
+            font-weight: 500;
+            margin-bottom: 10rpx;
+          }
+
+          view {
+            width: 100%;
+            overflow: hidden;
+            /* 隐藏超出宽度的文本 */
+            white-space: nowrap;
+            /* 不换行 */
+            text-overflow: ellipsis;
+            /* 文本末尾显示省略号 */
+          }
+        }
+
+        .r_btn {
+          flex: 1;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          color: #FFF3CC;
+          height: 59rpx;
+          border-radius: 28rpx 28rpx 28rpx 28rpx;
+          opacity: 1;
+          border: 1rpx solid #FFF3CC;
+          margin-right: 20rpx;
+        }
+      }
+    }
+  }
+  .activity{
+    position: fixed;
+    bottom: 100rpx;
+    padding: 20rpx;
+    image{
+      width: 710rpx;
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/pages/redpacket/redpacket.vue b/pages/redpacket/redpacket.vue
new file mode 100644
index 0000000..c5f26e7
--- /dev/null
+++ b/pages/redpacket/redpacket.vue
@@ -0,0 +1,313 @@
+<template>
+  <view class="">
+    <!-- <block v-for="(item, index) in info">
+      <block v-if="item.type==1">
+        <view class="type_name">无门槛实物通用补贴<text class="n_count">(2张)</text></view>
+        <view class="r_list" v-for="(e, i) in item.list">
+          <view class="r_item" @click="change(index, i)">
+            <image class="r_bg" src="/static/active/red_packet.webp"></image>
+            <view class="r_body">
+              <view class="r_count">
+                <view class="rc_count">
+                  <text class="rc_icon">¥</text>240
+                </view>
+              </view>
+              <view class="r_content">
+                <view class="r_name">现金抵扣补贴</view>
+                <view>仅限平台指定商家商品可使用</view>
+                <view>有效期至 2026.01.15 24:00:00</view>
+              </view>
+              <view class="r_icon">
+                <u-icon v-if="changeRed.type == index && changeRed.id == i" name="checkmark-circle-fill" color="#FFF3CC" size="56rpx"></u-icon>
+                <u-icon v-else name="checkmark-circle" color="#FFF3CC" size="56rpx"></u-icon>
+              </view>
+            </view>
+          </view>
+        </view>
+      </block>
+      <block v-if="item.type==2">
+        <view class="type_name">不可使用补贴<text class="n_count">(2张)</text></view>
+        <view class="none_list" v-for="(e, i) in item.list">
+          <view class="r_body">
+            <view class="r_count">
+              <view class="rc_count">
+                <text class="rc_icon">¥</text>200
+              </view>
+            </view>
+            <view class="r_content">
+              <view class="r_name">现金抵扣补贴</view>
+              <view>仅限平台指定商家商品可使用</view>
+              <view>有效期至 2026.01.15 24:00:00</view>
+            </view>
+          </view>
+          <u-line dashed color="#999999"></u-line>
+          <view class="n_tips">本单不可用原因:未在平台指定店铺使用</view>
+        </view>
+      </block>
+    </block> -->
+    
+    <view style="height: 30rpx;"></view>
+    <view class="r_list" v-for="(item, i) in list" :key="i">
+      <view class="r_item" @click="change(item)">
+        <image class="r_bg" src="/static/active/red_packet.webp"></image>
+        <view class="r_body">
+          <view class="r_count">
+            <view class="rc_count">
+              <text class="rc_icon">¥</text>{{item.balance}}
+            </view>
+          </view>
+          <view class="r_content">
+            <view class="r_name">{{item.coupon_title}}</view>
+            <view>{{item.describe}}</view>
+            <view>有效期至 {{item.end_time}}</view>
+          </view>
+          <view class="r_icon">
+            <u-icon v-if="changeRed&&changeRed.coupon_user_id==item.coupon_user_id" name="checkmark-circle-fill" color="#FFF3CC" size="56rpx"></u-icon>
+            <!-- <u-icon v-else name="checkmark-circle" color="#FFF3CC" size="56rpx"></u-icon> -->
+            <view v-else style="height: 50rpx;width: 50rpx;border-radius: 50%;border: 5rpx solid #FFF3CC;"></view>
+          </view>
+        </view>
+      </view>
+    </view>
+    
+    <view class="footer">
+      <view>
+        <text>已选 {{ changeRed?1:0 }} 张</text>
+        <view v-if="changeRed&&changeRed.coupon_title.includes('抵扣补贴')" style="font-size: 24rpx;margin-left: 10rpx;color: #ed4c3a;">(使用补贴后此订单将不参与任何补贴活动)</view>
+        <view v-if="changeRed&&changeRed.coupon_title.includes('通用补贴')" style="font-size: 24rpx;margin-left: 10rpx;color: #ed4c3a;">(使用补贴后此订单将不参与用户消费补贴活动)</view>
+        <!-- , 可减 <text class="red_i">¥</text> <text class="red_c">0</text> -->
+      </view>
+      <view class="btn" @click="comfirm">确定</view>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        info: [
+          {
+            type: 1, // 是否可以使用
+            name: '无门槛实物通用补贴',
+            list: [1, 2]
+          },
+          {
+            type: 1, // 是否可以使用
+            name: '现金抵扣补贴',
+            list: [1,2,3]
+          },
+          {
+            type: 2, // 是否可以使用, 2不可以使用
+            name: '不可使用补贴',
+            list: [1]
+          }
+        ],
+        list: [],
+        changeRed: null,
+      }
+    },
+    onLoad(option) {
+      const eventChannel = this.getOpenerEventChannel();
+      // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
+      eventChannel.on('changeRedPacketInfo', (data) => {
+        console.log(data);
+        this.list = data;
+      })
+    },
+    onShow() {},
+    methods: {
+      change(e, i) {
+        console.log(e, i);
+        if(this.changeRed&&this.changeRed.coupon_user_id==e.coupon_user_id)this.changeRed = null;
+        else this.changeRed = e;
+      },
+      comfirm(){
+        uni.$emit('changeRedPacket', this.changeRed?.coupon_user_id||'');
+        uni.navigateBack()
+      }
+    },
+    onPullDownRefresh() {
+      uni.stopPullDownRefresh()
+    }
+  }
+</script>
+
+<style lang="scss">
+  page{
+    background-color: #fff;
+  }
+  .type_name{
+    padding: 20rpx;
+    font-size: 28rpx;
+    .n_count{
+      color: #7A7A7A;
+      font-size: 24rpx;
+      margin-left: 10rpx;
+    }
+  }
+  .r_list {
+    padding: 0 20rpx 20rpx 20rpx;
+
+    .r_item {
+      height: 156rpx;
+      width: 710rpx;
+      position: relative;
+
+      .r_bg {
+        width: 100%;
+        height: 100%;
+      }
+
+      .r_body {
+        position: absolute;
+        top: 0;
+        left: 0;
+        bottom: 0;
+        right: 0;
+        display: flex;
+
+        .r_count {
+          flex: 2;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          color: #A46F32;
+          font-size: 44rpx;
+          font-weight: bold;
+
+          .rc_count {
+            display: flex;
+            align-items: flex-end;
+          }
+
+          .rc_icon {
+            font-size: 28rpx;
+            font-weight: 500;
+            margin-bottom: 8rpx;
+          }
+        }
+
+        .r_content {
+          flex: 4;
+          color: #FFF3CC;
+          font-size: 24rpx;
+          padding: 18rpx 10rpx 18rpx 40rpx;
+          display: flex;
+          flex-direction: column;
+          justify-content: space-between;
+
+          .r_name {
+            font-size: 32rpx;
+            font-weight: 500;
+            margin-bottom: 10rpx;
+          }
+          view{
+            width: 100%;
+            overflow: hidden; /* 隐藏超出宽度的文本 */
+            white-space: nowrap; /* 不换行 */
+            text-overflow: ellipsis; /* 文本末尾显示省略号 */
+          }
+        }
+
+        .r_icon {
+          flex: 1;
+          display: flex;
+          align-items: center;
+        }
+      }
+    }
+  }
+  .none_list{
+    margin: 0 20rpx 20rpx 20rpx;
+    background-color: #E2E2E2;
+    border-radius: 20rpx;
+    
+    .r_body {
+      height: 156rpx;
+      width: 710rpx;
+      display: flex;
+    
+      .r_count {
+        flex: 2;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        color: #333;
+        font-size: 44rpx;
+        font-weight: bold;
+    
+        .rc_count {
+          display: flex;
+          align-items: flex-end;
+        }
+    
+        .rc_icon {
+          font-size: 28rpx;
+          font-weight: 500;
+          margin-bottom: 8rpx;
+        }
+      }
+    
+      .r_content {
+        flex: 5;
+        color: #333;
+        font-size: 24rpx;
+        padding: 18rpx 10rpx 18rpx 40rpx;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
+    
+        .r_name {
+          font-size: 32rpx;
+          font-weight: 500;
+          margin-bottom: 10rpx;
+        }
+        view{
+          width: 100%;
+          overflow: hidden; /* 隐藏超出宽度的文本 */
+          white-space: nowrap; /* 不换行 */
+          text-overflow: ellipsis; /* 文本末尾显示省略号 */
+        }
+      }
+    
+    }
+    
+    .n_tips{
+      padding: 10rpx 30rpx 20rpx 30rpx;
+      color: #333;
+      font-size: 24rpx;
+    }
+  }
+  .footer{
+    height: 130rpx;
+    padding: 30rpx;
+    width: 100%;
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    background-color: #F6F6F6;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    font-size: 28rpx;
+    .red_i{
+      color: #FF421D;
+      margin-left: 20rpx;
+    }
+    .red_c{
+      color: #FF421D;
+      font-size: 44rpx;
+    }
+    .btn{
+      width: 128rpx;
+      height: 68rpx;
+      background-color: #EC693F;
+      border-radius: 34rpx;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      color: #fff;
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/pages/store/settled/unit.vue b/pages/store/settled/unit.vue
new file mode 100644
index 0000000..fa4249f
--- /dev/null
+++ b/pages/store/settled/unit.vue
@@ -0,0 +1,1661 @@
+<template>
+	<view class="page">
+		<!-- #ifdef MP || APP-PLUS -->
+
+		<view class="conten-top" :style="'height:'+statusBarHeight+'px'">
+			<view class="" style="position: absolute;left: 30rpx;bottom: 15rpx;" @click="logout"><i
+					class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"></i></view>
+			<view class=""
+				style="position: absolute;bottom: 15rpx;width: 500rpx; left:50%;transform: translate(-50%);text-align: center;">
+				种养殖户入驻
+			</view>
+		</view>
+		<view :style="'height:'+statusBarHeight+'px'"></view>
+		<!-- #endif -->
+
+		<view v-if="!successful" :style="viewColor">
+			<form report-submit='true'>
+				<view class='merchantsSettled'>
+					<view class="merchantBgCount">
+						<image mode="widthFix" class="merchantBg"
+							src="https://lihai001.oss-cn-chengdu.aliyuncs.com/def/50c52202402231430498637.png" alt="">
+					</view>
+					<view class="application-record" @click="jumpToList" v-if="!mer_i_id">
+						申请记录
+						<text class="iconfont icon-xiangyou"></text>
+					</view>
+					<view class='list'>
+						<!-- <view class="item">
+							<view class="acea-row row-middle">
+								<text class="item-name">商户名称</text>
+								<input type="text" maxlength="30" placeholder="请输入商户名称"
+									v-model="merchantData.enterprise_name" @input="validateBtn"
+									placeholder-class='placeholder' />
+							</view>
+						</view> -->
+						<view class="item">
+							<view class="acea-row row-middle">
+								<text class="item-name">姓名</text>
+								<input type="text" maxlength="30" placeholder="请输入姓名" v-model="merchantData.user_name"
+									@input="validateBtn" placeholder-class='placeholder' />
+							</view>
+						</view>
+
+
+						<view class="item">
+							<view class="acea-row row-middle">
+								<text class="item-name">联系电话</text>
+								<input type="text" placeholder="请输入手机号" v-model="merchantData.phone"
+									@input="validateBtn" placeholder-class='placeholder' />
+							</view>
+						</view>
+						<view class="item rel">
+							<view class="acea-row row-middle">
+								<text class="item-name">验证码</text>
+								<input type="text" placeholder="填写验证码" v-model="merchantData.yanzhengma"
+									@input="validateBtn" class="codeIput" placeholder-class='placeholder' />
+								<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''"
+									@click="handleVerify">
+									{{ text }}
+								</button>
+							</view>
+						</view>
+						<view class="item" v-if="isShowCode">
+							<view class="acea-row row-middle">
+								<text class="item-name">验证码</text>
+								<input type="text" placeholder="请输入验证码" class="codeIput" v-model="codeVal"
+									@input="validateBtn" placeholder-class='placeholder' />
+								<view class="imageCode" @click="again">
+									<image :src="codeUrl" />
+								</view>
+							</view>
+						</view>
+						<!-- <view class="item">
+							<view class="uni-list">
+								<view class="uni-list-cell">
+									<view class="uni-list-cell-db acea-row row-middle">
+										<text class="item-name">商户分类</text>
+                    <picker @change="bindPickerChange" @columnchange="columnchange" mode="selector" :value="index" :range="array" range-key="category_name">
+                    	<input placeholder="请选择商户分类" type="text" readonly disabled
+                    		v-model="mer_classification">
+                    	<view class='iconfont icon-jiantou'></view>
+                    </picker>
+									</view>
+								</view>
+							</view>
+						</view> -->
+						<view class="item">
+							<view class="uni-list">
+								<view class="uni-list-cell">
+									<view class="uni-list-cell-db acea-row row-middle">
+										<text class="item-name businessBox">所在地</text>
+										<picker mode=multiSelector @change="bindPickerChange2" :value="index2"
+											:range="business" range-key="name" @columnchange="pickerColumnchange">
+											<input class="businessBox" placeholder="请选择商圈" type="text" readonly disabled
+												v-model="business_name">
+											<view class='iconfont icon-jiantou'></view>
+										</picker>
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="item">
+							<view class="uni-list">
+								<view class="uni-list-cell">
+									<view class="uni-list-cell-db acea-row row-middle">
+										<text class="item-name businessBox">详细地址</text>
+										<input type="text" maxlength="30" placeholder="请输入详细地址"
+											v-model="merchantData.address" @input="validateBtn"
+											placeholder-class='placeholder' />
+
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="item no-border">
+							<view class='acea-row row-middle'>
+								<text class="item-title" style="margin-right: 20rpx;">请上传营业执照</text>
+								<text class="item-desc">(图片格式支持JPG、PNG、JPEG)</text>
+								<view class="upload">
+									<view v-if="business_license" class='pictrue' @click='uploadpicText'>
+										<image :src='business_license'></image>
+									</view>
+									<view v-else class='pictrue acea-row row-center-wrapper row-column'
+										@click='uploadpicText'>
+										<text class='iconfont icon-icon25201'></text>
+										<view>上传图片</view>
+									</view>
+								</view>
+							</view>
+						</view>
+						<!-- <view class="item no-border">
+							<checkbox-group @change='ChangeIsAgree'>
+								<checkbox class="checkbox" :checked="isAgree ? true : false" />已阅读并同意
+							</checkbox-group>
+							<button class="settleAgree" @click="getConfig">《入驻协议》</button>
+						</view> -->
+						<view class="item no-border">
+							<checkbox-group @change='ChangeIsAgree'>
+								<checkbox class="checkbox" :checked="isAgree ? true : false" />已阅读并同意
+							</checkbox-group>
+							<button class="settleAgree" @click="getConfig(0)">《入驻协议》 </button>
+							<button class="settleAgree" @click="getConfig(1)">《商户服务协议》 </button>
+
+						</view>
+						<button class='submitBtn' :class="validate === true? 'on':''" @click="formSubmit">
+							提交申请
+						</button>
+					</view>
+				</view>
+			</form>
+			<view class="settlementAgreement" v-if="showProtocol">
+				<view class="setAgCount" style="width: 656rpx;height: 800rpx;">
+					<i class="icon iconfont icon-cha" @click="showProtocol = false"></i>
+					<div class="title" v-if='titFlag'>{{isType ? '店铺类型说明' : '商户入驻协议'}}</div>
+					<div class="title" v-else></div>
+					<view class="content">
+						<jyf-parser :html="protocol" ref="article" :tag-style="tagStyle"></jyf-parser>
+						<!-- <view v-html="protocol"></view> -->
+					</view>
+				</view>
+			</view>
+			<view class="settlementAgreement" v-if="isshow">
+				<view class="setAgCount" style="width: 100%;height: 100%;padding-top: 180rpx;">
+					<!-- <i class="icon iconfont icon-cha" @click="recuo"></i> -->
+					<view class="" style="width: 60rpx;height: 60rpx; position: absolute;left: 30rpx; top:90rpx"
+						@click="recuo">
+						<i class="iconfont icon-xiangzuo" style="width: 60rpx;height: 60rpx;font-size: 40rpx;"></i>
+						<!-- <image src="@/static/images/close.png" mode="aspectFit" style="width: 60rpx;height: 60rpx;"></image> -->
+					</view>
+
+					<div class="title">{{detail.title}}</div>
+					<view style="margin: 20rpx 0;">甲方公司:{{company?company:"暂无公司信息"}}</view>
+					<view style="margin: 20rpx 0;">机构代码:{{organization_code?organization_code:"暂无公司信息"}}</view>
+
+					<view class="contenta" v-if="detail.mer_services_agree">
+						<jyf-parser :html="detail.mer_services_agree" ref="article" :tag-style="tagStyle"></jyf-parser>
+
+					</view>
+					<view class="contenta" v-else>
+						<jyf-parser :html="detail.mer_supply_agree" ref="article" :tag-style="tagStyle"></jyf-parser>
+
+					</view>
+
+					<view class="setAgCountbtn">
+						<view class="border"></view>
+						<!-- <button class="setAgCountbtna" @click="refuse">
+							拒绝
+						</button> -->
+						<button :class="num>0?'setAgCountbtnb':'setAgCountbtnc'" class="btn" :disabled="num!=0"
+							@click="agree">
+							<text v-if="num>0">请仔细阅读协议 {{num}}秒后可提交</text>
+							<text v-else>同意本协议</text>
+						</button>
+					</view>
+				</view>
+			</view>
+			<view class='loadingicon acea-row row-center-wrapper' v-if="loading">
+				<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>
+			</view>
+			<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse">
+			</authorize>
+			<Verify @success="success" :captchaType="'blockPuzzle'" :imgSize="{ width: '330px', height: '155px' }"
+				ref="verify">
+			</Verify>
+		</view>
+		<view class="settledSuccessMain " v-else :style="viewColor">
+			<view class="settledSuccessful">
+				<image class="image" src="../static/images/settledSuccessful.svg" alt="">
+					<view class="title">恭喜,您的资料提交成功!</view>
+					<view class="info">预计15个工作日内审核完毕,平台客服会及时与您联系!</view>
+					<view class="goHome" hover-class="none" @click="goHome">
+						返回首页
+					</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	// +----------------------------------------------------------------------
+	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+	// +----------------------------------------------------------------------
+	// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
+	// +----------------------------------------------------------------------
+	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+	// +----------------------------------------------------------------------
+	// | Author: CRMEB Team <admin@crmeb.com>
+	// +----------------------------------------------------------------------
+	import {
+		personalStore,
+		verify,
+		merClassifly,
+		getCategoryList,
+		getGoodsDetails,
+		updateGoodsRecord,
+		getStoreTypeApi,
+		agreeiness,
+		merchantLicenseIdentify
+	} from '@/api/store.js';
+	import {
+		getCaptcha,
+		getAgreementApi,
+		merstreet
+	} from "@/api/user";
+	import {
+		getStreet,
+		getArea,
+		getVillage
+	} from "@/api/article.js"
+	import {
+		mapGetters
+	} from "vuex";
+	import {
+		configMap
+	} from "@/utils";
+	import {
+		intention,
+	} from "@/api/product"
+	import parser from "@/components/jyf-parser/jyf-parser";
+	import authorize from '@/components/Authorize';
+	import Verify from '@/components/verify/verify.vue';
+	import {
+		HTTP_REQUEST_URL
+	} from '@/config/app';
+	import {
+		Toast
+	} from '../../../libs/uniApi';
+	import {
+		mer_services_agree
+	} from "@/api/activity.js"
+	const app = getApp();
+	export default {
+		components: {
+			"jyf-parser": parser,
+			authorize,
+			Verify
+		},
+		data() {
+			return {
+				titFlag: true,
+				company: '',
+				organization_code: '',
+				domain: HTTP_REQUEST_URL,
+				cartId: '', //购物车id
+				pinkId: 0, //拼团id
+				couponId: 0, //优惠券id
+				isAuto: false, //没有授权的不会自动授权
+				isShowAuth: false, //是否隐藏授权
+				text: "获取验证码",
+				codeUrl: "",
+				disabled: false,
+				isAgree: false,
+				showProtocol: false,
+				isShowCode: false,
+				loading: false,
+				isshow: false,
+				merchantData: {
+					enterprise_name: "",
+					user_name: "",
+					phone: "",
+					classification: '',
+					social_credit_code: '',
+					company_name: '',
+					address: '',
+					invitation_code: '',
+				},
+				business_license: '', //营业执照
+				validate: false,
+				successful: false,
+				keyCode: "",
+				codeVal: "",
+				protocol: this.sys_intention_agree,
+				timer: "",
+				index: 0,
+				index1: 0,
+				index2: [0, 0, 0],
+				mer_classification: "",
+				nature_business: 0,
+				array: [{
+					category_name: '',
+					merchant_category_id: ''
+				}],
+				companyTypeList: ['对公户', '个体户'],
+				bindPickerChangeidx: [],
+				storeTypeArr: [{
+					type_name: '',
+					mer_type_id: ''
+				}],
+				StreetTyoeArr: [{
+					area_id: '',
+					street_id: '',
+					village_id: ''
+				}],
+				mer_storeType: '',
+				area_id: '',
+				street_id: '',
+				village_id: '',
+				isnm: false,
+				isnum: 0,
+				code1: '',
+				code2: '',
+				business_name: '',
+				business: [],
+				pics: [],
+				tagStyle: {
+					img: 'width:100%;display:block;'
+				},
+				mer_i_id: null, // 商户申请id
+				isType: false,
+				num: 10,
+				detail: {},
+				statusBarHeight: 0,
+				where: {
+					type: 1,
+					page: 1,
+					limit: 10
+				},
+				codenote: []
+			};
+		},
+		beforeDestroy() {
+			clearTimeout(this.timer)
+		},
+		computed: configMap({
+			sys_intention_agree: ''
+		}, mapGetters(['isLogin', 'viewColor', 'keyColor'])),
+		onLoad(options) {
+
+			if (this.isLogin) {
+				this.getClassfication();
+				this.getStoreType();
+			} else {
+				this.isAuto = true;
+				this.isShowAuth = true
+			}
+			if (options.mer_i_id) {
+				this.mer_i_id = options.mer_i_id
+				uni.showLoading({
+					title: '获取数据中',
+				});
+				this.$nextTick(function() {
+					this.getGoodsDetails(options.mer_i_id)
+				})
+			} else this.getArea()
+			this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 45;
+		},
+		onShow() {
+
+		},
+		onReady() {},
+		methods: {
+			//获取交易信息
+			codelist() {
+				intention(this.where).then(res => {
+					this.codenote = res.data.list
+				})
+			},
+			//退出
+			logout() {
+				uni.switchTab({
+					url: '/pages/user/index'
+				})
+			},
+			//关闭弹窗
+			recuo() {
+				if (this.num > 0) {
+					this.num = 10
+					this.isshow = false
+				} else {
+					this.num = 10
+					this.isshow = false
+				}
+			},
+			//拒绝
+			refuse() {
+
+
+				uni.switchTab({
+					url: '/pages/user/index'
+				})
+			},
+			countDown() {
+				let {
+					num
+				} = this;
+				// if (num === 3) this.nums = true;
+				num = num > 0 ? num - 1 : "0";
+				setTimeout(() => {
+
+					this.num = num;
+					if (num == '0') {
+						// this.launchApp()
+						return
+					}
+					if (this.isshow == false && this.num > 0) {
+						this.num = 10
+						return
+					}
+					this.countDown();
+				}, 1000);
+
+
+			},
+
+			//获取商户入驻申请协议
+			shoplist(val) {
+
+				agreeiness({
+					type: val
+				}).then(res => {
+					this.detail = res.data
+				})
+			},
+
+
+			//是否是农贸市场
+			// change(e) {
+			// 	this.isnum = (e === true ? 1 : 0)
+			// },
+			// 获取村
+			getVillage(e) {
+				const self = this;
+				getVillage({
+					street_code: e
+				}).then(res => {
+					self.$set(self.business, 2, res.data);
+					if (self.mer_i_id && !this.business_name) {
+						let area = self.business[0].find(item => item.code == self.area_id)?.name;
+						let street = self.business[1].find(item => item.code == self.street_id)?.name;
+						let village = self.business[2].find(item => item.id == self.village_id)?.name;
+						this.business_name = `${area} ${street} ${village}`;
+						this.getArea();
+					}
+				})
+			},
+			//获取镇
+			getStreet(e, street) {
+				const self = this;
+				getStreet({
+					area_code: e
+				}).then(res => {
+					self.$set(self.business, 1, res.data)
+					self.getVillage(street ? street : self.business[1][0].code)
+				})
+			},
+			//获取区
+			getArea(code = null, street = null) {
+				getArea({
+					city_code: 510500
+				}).then(res => {
+					this.business[0] = res.data;
+					this.code1 = code ? code : this.business[0][0].code;
+					this.getStreet(this.code1, street)
+				})
+			},
+			//商圈数据变化
+			pickerColumnchange(e) {
+				if (e.detail.column === 0) {
+					this.getStreet(this.business[0][e.detail.value].code)
+					this.index2[0] = e.detail.value
+					this.index2[1] = 0
+					this.index2[2] = 0
+				} else if (e.detail.column === 1) {
+					this.getVillage(this.business[1][e.detail.value].code)
+					this.index2[1] = e.detail.value
+					this.index2[2] = 0
+				} else if (e.detail.column === 1) {
+					this.index2[2] = e.detail.value
+				}
+			},
+			getConfig(type) {
+				this.isType = false;
+				this.showProtocol = true;
+
+				if (type == 0) {
+					this.titFlag = true
+					this.protocol = this.sys_intention_agree.replace(/\*\*甲方公司\*\*/g, this.company);
+				} else {
+					this.titFlag = false
+					mer_services_agree().then(res => {
+						this.protocol = res.data.mer_services_agree.replace(/\*\*甲方公司\*\*/g, this.company);
+					})
+				}
+				// 获取配置
+				// this.protocol = this.sys_intention_agree
+			},
+			/*获取发票说明*/
+			getAgreement() {
+				let that = this
+				that.showProtocol = true;
+				that.titFlag = true
+				that.isType = true
+				getAgreementApi('sys_merchant_type').then(res => {
+					that.protocol = res.data.sys_merchant_type
+
+
+				})
+			},
+			// 获取历史提交数据详情
+			getGoodsDetails(id) {
+				getGoodsDetails(id).then(res => {
+					let arr = Object.keys(this.merchantData)
+					let resData = res.data
+					arr.map(item => {
+						this.merchantData.enterprise_name = resData.mer_name
+						this.merchantData.user_name = resData.name
+						this.merchantData.phone = resData.phone
+						this.merchantData.social_credit_code = resData.social_credit_code
+						this.merchantData.company_name = resData.company_name
+						this.merchantData.address = resData.address
+						this.merchantData.invitation_code = resData.invitation_code
+						this.merchantData.classification = resData.merchant_category_id
+						this.merchantData.mer_type = resData.mer_type_id
+						this.area_id = resData.area_id
+						this.street_id = resData.street_id
+						this.mer_storeType = resData.mer_storeType
+						this.village_id = resData.village_id
+					})
+					this.business_license = resData.images[0];
+					resData.images.shift();
+					this.pics = resData.images;
+					this.mer_classification = this.getCategoryName(resData.merchant_category_id, this.array)
+					this.mer_storeType = this.getStoreTypeName(resData.mer_type_id, this.storeTypeArr)
+					this.business_name = '';
+					this.getArea(this.area_id, this.street_id);
+					if (resData.mer_type_id != 12) {
+						this.shoplist('mer_services_agree')
+					} else {
+						this.shoplist('mer_supply_agree')
+					}
+					uni.hideLoading();
+				})
+			},
+			//获取商户分类名称
+			getCategoryName(id, arr) {
+				for (let i = 0; i < arr.length; i++) {
+					if (arr[i].merchant_category_id === id) {
+						return arr[i]['category_name']
+					}
+				}
+			},
+			//获取店铺类型名称
+			getStoreTypeName(id, arr) {
+				for (let i = 0; i < arr.length; i++) {
+					if (arr[i].mer_type_id === id) {
+						return arr[i]['type_name']
+					}
+				}
+			},
+			// 选择公司性质
+			natureBusinessChange(e) {
+				this.nature_business = this.companyTypeList[e.detail.value] == '个体户' ? 2 : 1;
+			},
+			bindPickerChange: function(e) {
+				// console.log(e.detail);
+				// this.index = e.target.value[1];
+				let idx = e.target.value;
+				// let idx = e.target.value[1];
+				this.merchantData.classification = this.array[idx]['merchant_category_id']
+				this.mer_classification = this.array[idx]['category_name']
+				// this.merchantData.classification = this.bindPickerChangeidx[idx]['store_category_id']
+				// this.mer_classification = this.bindPickerChangeidx[idx]['cate_name']
+				this.validateBtn()
+			},
+			columnchange(e) {
+				// console.log(e.detail);
+				if (e.detail.column == 0) {
+					this.bindPickerChangeidx = this.array[e.detail.value].children;
+				}
+			},
+			bindPickerChange1: function(e) {
+
+				this.index1 = e.target.value
+				let idx = e.target.value
+				this.merchantData.mer_type = this.storeTypeArr[idx]['mer_type_id']
+				this.mer_storeType = this.storeTypeArr[idx]['type_name']
+				// console.log(this.merchantData.mer_type)
+				if (this.storeTypeArr[idx]['type_code'] == 'TypeStore' && this.merchantData.mer_type) {
+					this.shoplist('mer_services_agree')
+				} else {
+					this.shoplist('mer_supply_agree')
+				}
+				this.validateBtn()
+			},
+
+			bindPickerChange2: function(e) {
+				// console.log(e.detail.value)
+				this.index2 = e.detail.value
+				this.business_name =
+					`${this.business[0][this.index2[0]].name} ${this.business[1][this.index2[1]].name} ${this.business[2][this.index2[2]].name}`
+				this.area_id = this.business[0][this.index2[0]].code
+				this.street_id = this.business[1][this.index2[1]].code
+				this.village_id = this.business[2][this.index2[2]].id
+				// return; // 种养殖户入驻也不需要
+				if (this.merchantData.mer_type == 12) return; //市级供应链不需要查询镇农科公司
+				merstreet({
+          area_code: this.area_id
+				}).then((res) => {
+					if (res.code == 0) {
+						this.company = ''
+						this.organization_code = ''
+						// this.$util.Tips({
+						// 	title: res.msg
+						// });
+						return false;
+					} else {
+						this.company = res.data.title
+						this.organization_code = res.data.organization_code
+					}
+				}).catch(res => {
+					console.log(res)
+				})
+			},
+			// 获取商户分类
+			getClassfication: function() {
+				merClassifly()
+					.then(res => {
+						this.array = res.data
+					})
+					.catch(res => {
+						this.$util.Tips({
+							title: res
+						});
+					});
+				// getCategoryList()
+				// 	.then(res => {
+				//     // console.log(res);
+				//     res.data.list.forEach(item=>{
+				//       item.category_name = item.cate_name;
+				//       item.merchant_category_id = item.store_category_id;
+				//     })
+				// 		this.array = res.data.list;
+				//     this.bindPickerChangeidx = this.array[0].children;
+				// 	})
+				// 	.catch(res => {
+				// 		this.$util.Tips({
+				// 			title: res
+				// 		});
+				// 	});
+			},
+			// 获取店铺类型
+			getStoreType: function() {
+				getStoreTypeApi()
+					.then(res => {
+
+						this.storeTypeArr = res.data
+					})
+					.catch(res => {
+						this.$util.Tips({
+							title: res
+						});
+					});
+			},
+			// 图片预览
+			// 获得相册 idx
+			getPhotoClickIdx(e) {
+				let _this = this;
+				let idx = e.currentTarget.dataset.index;
+				_this.imgPreview(_this.pics, idx);
+			},
+			// 图片预览
+			imgPreview: function(list, idx) {
+				// list:图片 url 数组
+				if (list && list.length > 0) {
+					uni.previewImage({
+						current: list[idx], //  传 Number H5端出现不兼容
+						urls: list
+					});
+				}
+			},
+			// 授权回调
+			onLoadFun: function() {
+				this.isShowAuth = false;
+			},
+			// 授权关闭
+			authColse: function(e) {
+				this.isShowAuth = e
+			},
+			toggleTab(str) {
+				this.$refs[str].show();
+			},
+			// 首页
+			goHome() {
+				uni.switchTab({
+					url: '/pages/index/index'
+				});
+			},
+			again() {
+				this.getcaptcha()
+			},
+			/**
+			 * 上传文件
+			 *
+			 */
+			uploadpic: function() {
+				let that = this;
+				that.$util.uploadImageOne('upload/image', function(res) {
+					that.pics.push(res.data.path);
+					that.$set(that, 'pics', that.pics);
+				});
+			},
+			/**
+			 * 上传图片识别文字
+			 *
+			 */
+			uploadpicText: function() {
+				let that = this;
+				that.$util.uploadImageOne('upload/image', function(res) {
+					that.business_license = res.data.path;
+					//   uni.showLoading({
+					//     title: '识别中'
+					//   })
+					// merchantLicenseIdentify({
+					//     image: res.data.path
+					//   }).then(res=>{
+					//     that.merchantData.address = res.data.address;
+					//     that.merchantData.user_name = res.data.legal_person;
+					//     that.merchantData.social_credit_code = res.data.register_number;
+					//     that.merchantData.company_name = res.data.name;
+					//     // that.$set('merchantData', that.merchantData);
+					//     uni.hideLoading();
+					//   }).catch((e)=>{
+					//     uni.hideLoading();
+					//     Toast(e)
+					//   })
+				});
+			},
+			/**
+			 * 删除图片
+			 *
+			 */
+			DelPic: function(index) {
+				let that = this,
+					pic = this.pics[index];
+				that.pics.splice(index, 1);
+				that.$set(that, 'pics', that.pics);
+			},
+			getCode() {
+				let that = this
+				getCodeApi()
+					.then(res => {
+						that.keyCode = res.data.key;
+					})
+					.catch(res => {
+						that.$util.Tips({
+							title: res
+						});
+					});
+			},
+			async code(data) {
+				let that = this;
+				if (!that.merchantData.phone) return that.$util.Tips({
+					title: '请填写手机号码'
+				});
+				if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.merchantData.phone)) return that.$util.Tips({
+					title: '请输入正确的手机号码'
+				});
+				await verify({
+						phone: that.merchantData.phone,
+						// key: that.codeKey,
+						// code: that.codeVal,
+						type: 'intention',
+						captchaType: 'blockPuzzle',
+						captchaVerification: data.captchaVerification
+					})
+					.then(res => {
+						that.$util.Tips({
+							title: res.msg
+						});
+						that.sendCode();
+					})
+					.catch(res => {
+						that.$util.Tips({
+							title: res
+						});
+						if (res.status == 402) {
+							// that.getcaptcha();
+						}
+					});
+			},
+			getcaptcha() {
+				let that = this
+				getCaptcha().then(data => {
+					that.codeUrl = data.data.captcha; //图片路径
+					that.codeVal = data.data.code; //图片验证码
+					that.codeKey = data.data.key //图片验证码key
+				})
+				that.isShowCode = true;
+			},
+			sendCode() {
+				if (this.disabled) return;
+				this.disabled = true;
+				let n = 60;
+				this.text = "剩余 " + n + "s";
+				const run = setInterval(() => {
+					n = n - 1;
+					if (n < 0) {
+						clearInterval(run);
+					}
+					this.text = "剩余 " + n + "s";
+					if (this.text < "剩余 " + 0 + "s") {
+						this.disabled = false;
+						this.text = "重新获取";
+					}
+				}, 1000);
+			},
+			onConfirm(val) {
+				this.region = val.checkArr[0] + '-' + val.checkArr[1] + '-' + val.checkArr[2];
+			},
+			ChangeIsAgree: function(e) {
+				this.isAgree = !this.isAgree;
+				this.validateBtn();
+			},
+			//所属公司
+
+
+			//协议弹窗
+			showxy() {
+				this.isshow = true
+			},
+			//提交
+			agree() {
+				let that = this;
+				let requestData = {
+					phone: that.merchantData.phone,
+					// mer_name: that.merchantData.enterprise_name,
+					mer_name: that.merchantData.user_name + '的个人店铺',
+					name: that.merchantData.user_name,
+					code: that.merchantData.yanzhengma,
+					// company_name: that.merchantData.company_name,
+					address: that.merchantData.address,
+					// invitation_code: that.merchantData.invitation_code,
+					// social_credit_code: that.merchantData.social_credit_code,
+					// merchant_category_id: that.merchantData.classification,
+					// merchant_category_name: that.mer_classification,
+					// is_company: that.nature_business==1?1:0, // 是否是公司, 1是公司, 0是个体
+					// mer_type_id: that.merchantData.mer_type,
+					// mer_storeType: this.mer_storeType,
+					area_id: this.area_id,
+					street_id: this.street_id,
+					village_id: this.village_id,
+					// is_nmsc: this.isnum,
+					images: [this.business_license, ...that.pics]
+				}
+				that.validate = false;
+				if (that.mer_i_id) {
+					updateGoodsRecord(that.mer_i_id, requestData).then(res => {
+						if (res.status == 200) {
+							title: '提交成功',
+							that.loading = true;
+							that.timer = setTimeout(() => {
+								that.successful = true;
+								that.validate = true;
+							}, 1000)
+						}
+					}).catch(res => {
+						this.isshow = false
+						that.validate = true;
+						that.$util.Tips({
+							title: res
+						});
+					})
+				} else {
+					personalStore(requestData).then(data => {
+						if (data.status == 200) {
+							title: '提交成功',
+							that.loading = true;
+							this.timer = setTimeout(() => {
+								that.successful = true;
+								that.validate = true;
+							}, 1000)
+						}
+					}).catch(res => {
+						this.isshow = false
+						that.validate = true;
+						that.$util.Tips({
+							title: res
+						});
+					})
+				}
+			},
+			formSubmit() {
+				if (this.validateForm() && this.validate) {
+					return this.agree();
+					if (this.merchantData.mer_type == '12') return this.agree();
+					if (this.codenote.length == 0) {
+						this.isshow = true
+						this.countDown()
+					} else {
+						if (this.codenote[0].status == 0) {
+							uni.showModal({
+								title: '申请正在审核中,请勿重复提交'
+							})
+						} else {
+							this.isshow = true
+							this.countDown()
+						}
+					}
+				}
+
+			},
+			validateBtn: function() {
+				let that = this,
+					value = that.merchantData;
+				if (value.user_name && value.phone && /^1(3|4|5|7|8|9|6)\d{9}$/i.test(
+						value
+						.phone) &&
+					value.yanzhengma) {
+					if (!that.isShowCode) {
+						that.validate = true;
+					} else {
+						if (that.codeVal) {
+							that.validate = true;
+						} else {
+							that.validate = false;
+						}
+					}
+				} else {
+					that.validate = false;
+				}
+			},
+			validateForm: function() {
+				let that = this,
+					value = that.merchantData;
+				// if (!value.enterprise_name) return that.$util.Tips({
+				// 	title: '请输入商户名称'
+				// });
+				// if (!value.social_credit_code) return that.$util.Tips({
+				// 	title: '请输入统一社会信用代码'
+				// });
+				// if (!value.company_name) return that.$util.Tips({
+				// 	title: '请输入公司名称'
+				// });
+				if (!value.user_name) return that.$util.Tips({
+					title: '请输入姓名'
+				});
+				if (!value.phone) return that.$util.Tips({
+					title: '请输入手机号'
+				});
+				if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(value.phone)) return that.$util.Tips({
+					title: '请输入正确的手机号码'
+				});
+				if (!value.yanzhengma) return that.$util.Tips({
+					title: '请填写验证码'
+				});
+				// if (!this.mer_classification) return that.$util.Tips({
+				// 	title: '请选择商户分类'
+				// });
+				// if (!this.nature_business) return that.$util.Tips({
+				// 	title: '请选择公司性质'
+				// })
+				// if (!this.mer_storeType) return that.$util.Tips({
+				// 	title: '请选择店铺类型'
+				// })
+				if (!this.business_name) return that.$util.Tips({
+					title: '请选择店铺所在地'
+				})
+				if (!value.address) return that.$util.Tips({
+					title: '请输入详细地址'
+				});
+				if (!that.isAgree) return that.$util.Tips({
+					title: '请勾选并同意入驻协议'
+				});
+				// if (that.isShowCode && !that.codeVal) return that.$util.Tips({
+				// 	title: '请填写图片验证码'
+				// });
+				if (!that.business_license) return that.$util.Tips({
+					title: '请上传营业执照'
+				});
+				// if (that.pics.length == 0) return that.$util.Tips({
+				// 	title: '请上传一张或者多张图片'
+				// });
+
+
+				that.validate = true;
+				return true;
+			},
+			jumpToList() {
+				uni.navigateTo({
+					url: "/pages/store/applicationRecord/unit"
+				})
+			},
+			success(data) {
+				this.$refs.verify.hide();
+				this.code(data);
+			},
+			handleVerify() {
+				if (!this.merchantData.phone) return this.$util.Tips({
+					title: '请输入手机号'
+				});
+
+				if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(this.merchantData.phone)) return this.$util.Tips({
+					title: '请输入正确的手机号码'
+				});
+				if (!this.isAgree) return this.$util.Tips({
+					title: '请勾选并同意入驻协议'
+				});
+				this.$refs.verify.show();
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	/deep/checkbox .uni-checkbox-input.uni-checkbox-input-checked,
+	/deep/checkbox .wx-checkbox-input.wx-checkbox-input-checked {
+		border: 1px solid var(--view-theme) !important;
+		background-color: var(--view-theme) !important;
+		color: #fff !important;
+	}
+
+
+	.conten-top {
+		width: 100%;
+		text-align: center;
+		background-color: #fff;
+		position: absolute;
+		top: 0;
+		position: fixed;
+		z-index: 10;
+	}
+
+	.uni-input-placeholder {
+		color: #B2B2B2;
+	}
+
+	.item-name {
+		width: 190rpx;
+	}
+
+	.uni-list-cell {
+		position: relative;
+
+		.iconfont {
+			font-size: 14px;
+			color: #7a7a7a;
+			position: absolute;
+			right: 15px;
+			top: 7rpx;
+		}
+
+		.icon-guanbi2 {
+			right: 35px;
+		}
+	}
+
+	.merchantBgCount {
+		line-height: 0;
+	}
+
+	.merchantsSettled {
+		background-image: linear-gradient(#ff5a32 644rpx, var(--view-bntColor22) 100%);
+		min-height: 1800rpx;
+		position: relative;
+	}
+
+	.merchantsSettled .merchantBg {
+		width: 750rpx;
+		width: 100%;
+	}
+
+	.merchantsSettled .list {
+		background-color: #fff;
+		border-radius: 12px;
+		padding: 22px 0;
+		margin: 0 15px;
+		position: absolute;
+		top: 300rpx;
+		width: calc(100% - 30px);
+
+	}
+
+	.application-record {
+		position: absolute;
+		display: flex;
+		align-items: center;
+		top: 240rpx;
+		right: 0;
+		color: #fff;
+		font-size: 22rpx;
+		background-color: rgba(0, 0, 0, 0.3);
+		padding: 8rpx 18rpx;
+		border-radius: 20px 0px 0px 20px;
+	}
+
+	.merchantsSettled .list .item {
+		padding: 50rpx 0 20rpx;
+		border-bottom: 1px solid #eee;
+		position: relative;
+		margin: 0 20px;
+
+		&.no-border {
+			border-bottom: none;
+			padding-left: 0;
+			padding-right: 0;
+		}
+
+		.item-title {
+			color: #666666;
+			font-size: 28rpx;
+			display: block;
+		}
+
+		.item-desc {
+			color: #B2B2B2;
+			font-size: 22rpx;
+			display: block;
+			margin-top: 9rpx;
+			line-height: 36rpx;
+		}
+	}
+
+	.acea-row,
+	.upload {
+		display: -webkit-box;
+		display: -moz-box;
+		display: -webkit-flex;
+		display: -ms-flexbox;
+		display: flex;
+		-webkit-box-lines: multiple;
+		-moz-box-lines: multiple;
+		-o-box-lines: multiple;
+		-webkit-flex-wrap: wrap;
+		-ms-flex-wrap: wrap;
+		flex-wrap: wrap;
+	}
+
+	.upload {
+		margin-top: 20rpx;
+	}
+
+	.acea-row.row-middle {
+		-webkit-box-align: center;
+		-moz-box-align: center;
+		-o-box-align: center;
+		-ms-flex-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding-left: 2px;
+	}
+
+	.acea-row.row-column {
+		-webkit-box-orient: vertical;
+		-moz-box-orient: vertical;
+		-o-box-orient: vertical;
+		-webkit-flex-direction: column;
+		-ms-flex-direction: column;
+		flex-direction: column;
+	}
+
+	.acea-row.row-center-wrapper {
+		-webkit-box-align: center;
+		-moz-box-align: center;
+		-o-box-align: center;
+		-ms-flex-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		-webkit-box-pack: center;
+		-moz-box-pack: center;
+		-o-box-pack: center;
+		-ms-flex-pack: center;
+		-webkit-justify-content: center;
+		justify-content: center;
+	}
+
+	.merchantsSettled .list .item .pictrue {
+		width: 130rpx;
+		height: 130rpx;
+		margin: 24rpx 22rpx 0 0;
+		position: relative;
+		font-size: 11px;
+		color: #bbb;
+
+		&:nth-child(4n) {
+			margin-right: 0;
+		}
+
+		&:nth-last-child(1) {
+			border: 0.5px solid #ddd;
+			box-sizing: border-box;
+		}
+
+		uni-image,
+		image {
+			width: 100%;
+			height: 100%;
+			border-radius: 1px;
+
+			img {
+				-webkit-touch-callout: none;
+				-webkit-user-select: none;
+				-moz-user-select: none;
+				display: block;
+				position: absolute;
+				top: 0;
+				left: 0;
+				opacity: 0;
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.icon-guanbi1 {
+			font-size: 33rpx;
+			position: absolute;
+			top: -10px;
+			right: -10px;
+		}
+	}
+
+	.uni-list-cell-db {
+		position: relative;
+	}
+
+	.wenhao {
+		width: 34rpx;
+		height: 34rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 28rpx;
+		border-radius: 50%;
+		background: #E3E3E3;
+		color: #ffffff !important;
+		margin-left: 4rpx;
+		position: absolute;
+		left: 122rpx;
+	}
+
+	.merchantsSettled .list .item .imageCode {
+		position: absolute;
+		top: 7px;
+		right: 0;
+	}
+
+	.merchantsSettled .list .item .icon {
+		font-size: 40rpx;
+		color: #b4b1b4;
+	}
+
+	.merchantsSettled .list .item input {
+		width: 400rpx;
+		font-size: 30rpx;
+	}
+
+	.merchantsSettled .list .item .placeholder {
+		color: #b2b2b2;
+	}
+
+	.merchantsSettled .default {
+		padding: 0 30rpx;
+		height: 90rpx;
+		background-color: #fff;
+		margin-top: 23rpx;
+	}
+
+	.merchantsSettled .default checkbox {
+		margin-right: 15rpx;
+	}
+
+	.merchantsSettled .acea-row uni-image {
+		width: 20px;
+		height: 20px;
+		display: block;
+	}
+
+	.merchantsSettled .list .item .codeIput {
+		width: 125px;
+	}
+
+	.uni-input-input {
+		display: block;
+		height: 100%;
+		background: none;
+		color: inherit;
+		opacity: 1;
+		-webkit-text-fill-color: currentcolor;
+		font: inherit;
+		line-height: inherit;
+		letter-spacing: inherit;
+		text-align: inherit;
+		text-indent: inherit;
+		text-transform: inherit;
+		text-shadow: inherit;
+	}
+
+	.merchantsSettled .list .item .code {
+		position: absolute;
+		width: 93px;
+		line-height: 27px;
+		border: 1px solid var(--view-theme);
+		border-radius: 15px;
+		color: var(--view-theme);
+		text-align: center;
+		bottom: 8px;
+		right: 0;
+		font-size: 12px;
+	}
+
+	.merchantsSettled .list .item .code.on {
+		background-color: #bbb;
+		color: #fff;
+		border-color: #bbb;
+	}
+
+	.merchantsSettled .submitBtn {
+		width: 588rpx;
+		margin: 0 auto;
+		height: 86rpx;
+		border-radius: 25px;
+		text-align: center;
+		line-height: 86rpx;
+		font-size: 15px;
+		color: #fff;
+		background: #E3E3E3;
+		margin-top: 25px;
+		pointer-events: none;
+	}
+
+	.merchantsSettled .submitBtn.on {
+		background: var(--view-theme);
+		pointer-events: all;
+	}
+
+	uni-checkbox-group,
+	.settleAgree {
+		display: inline-block;
+		font-size: 24rpx;
+	}
+
+	uni-checkbox-group {
+		color: #b2b2b2;
+	}
+
+	.settleAgree {
+		color: var(--view-theme);
+		position: relative;
+		top: 2px;
+		left: 8px;
+	}
+
+	.merchantsSettled uni-checkbox .uni-checkbox-wrapper {
+		width: 30rpx;
+		height: 30rpx;
+		border: 2rpx solid #C3C3C3;
+		border-radius: 15px;
+	}
+
+	.settlementAgreement {
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		background: rgba(0, 0, 0, .5);
+		z-index: 10;
+	}
+
+	.settlementAgreement .setAgCount {
+		background: #fff;
+		width: 694rpx;
+		// height: 458px;
+		position: absolute;
+		top: 50%;
+		left: 50%;
+
+		padding: 28rpx;
+		-webkit-transform: translate(-50%, -50%);
+		-moz-transform: translate(-50%, -50%);
+		transform: translate(-50%, -50%);
+		overflow: hidden;
+
+		.content {
+			height: 740rpx;
+			overflow-y: scroll;
+
+			/deep/ p {
+				font-size: 13px;
+				line-height: 22px;
+			}
+
+			/deep/ img {
+				max-width: 100%;
+			}
+		}
+	}
+
+	.settlementAgreement .setAgCount .icon {
+		font-size: 42rpx;
+		color: #b4b1b4;
+		position: absolute;
+		top: 15rpx;
+		right: 15rpx;
+	}
+
+	.settlementAgreement .setAgCount .title {
+		color: #333;
+		font-size: 32rpx;
+		text-align: center;
+		font-weight: bold;
+	}
+
+	.settlementAgreement .setAgCount .content {
+
+		color: #333;
+		font-size: 26rpx;
+		line-height: 22px;
+		text-align: justify;
+		text-justify: distribute-all-lines;
+
+		overflow-y: scroll;
+	}
+
+
+	.settlementAgreement .setAgCount .contenta {
+
+		color: #333;
+		font-size: 26rpx;
+		line-height: 22px;
+		text-align: justify;
+		text-justify: distribute-all-lines;
+		height: 75%;
+		overflow-y: scroll;
+
+
+	}
+
+	.setAgCountbtn {
+		display: flex;
+		justify-content: space-around;
+		position: relative;
+
+		.setAgCountbtna {
+			margin-top: 40rpx;
+			// width: 200rpx;
+			height: 74rpx;
+			text-align: center;
+			line-height: 74rpx;
+			border-radius: 46rpx 46rpx;
+			opacity: 1;
+			border: 2rpx solid #B3B3B3;
+			font-size: 25rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #737373;
+
+		}
+
+		.setAgCountbtnb {
+			margin-top: 40rpx;
+			padding-left: 20rpx;
+			padding-right: 20rpx;
+			height: 74rpx;
+			text-align: center;
+			line-height: 74rpx;
+			background: #cecece;
+			border-radius: 46rpx 46rpx;
+			opacity: 1;
+
+			font-size: 25rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+
+		}
+
+		.setAgCountbtnc {
+			margin-top: 40rpx;
+			// width: 200rpx;
+			height: 74rpx;
+			text-align: center;
+			line-height: 74rpx;
+			background: linear-gradient(270deg, #FF6D20 0%, #F84221 100%);
+			border-radius: 46rpx 46rpx;
+			opacity: 1;
+			font-size: 25rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+
+		}
+
+		.border {
+			position: absolute;
+			top: 0;
+			left: -28rpx;
+			width: 100vw;
+			height: 100%;
+			border-radius: 40rpx 40rpx 0 0;
+			box-shadow: 0px -5px 5px -2px rgba(0, 0, 0, 0.2);
+			/* 在上边框添加阴影 */
+		}
+
+		.btn {
+			width: 694rpx;
+			font-weight: bold;
+			font-size: 34rpx;
+		}
+	}
+
+	.settledSuccessMain {
+		height: 100vh;
+		display: flex;
+		flex-direction: column;
+		background: #fff;
+	}
+
+	.settledSuccessful {
+		flex: 1;
+		width: 100%;
+		padding: 0 56px;
+		height: auto;
+		background: #fff;
+		text-align: center;
+	}
+
+	.settledSuccessful .image {
+		width: 189px;
+		height: 157px;
+		margin-top: 66px;
+	}
+
+	.settledSuccessful .title {
+		color: #333333;
+		font-size: 16px;
+		font-weight: bold;
+		margin-top: 35px;
+	}
+
+	.settledSuccessful .info {
+		color: #A0A0A0;
+		font-size: 13px;
+		margin-top: 12px;
+	}
+
+	.settledSuccessful .goHome {
+		margin: 60px auto 0;
+		line-height: 43px;
+		color: #282828;
+		font-size: 15px;
+		border: 1px solid #B4B4B4;
+		border-radius: 60px;
+	}
+
+	/deep/ uni-checkbox .uni-checkbox-input {
+		width: 15px;
+		height: 15px;
+		position: relative;
+	}
+
+	/deep/ uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked:before {
+		font-size: 14px;
+	}
+
+	.loadingicon {
+		height: 100vh;
+		overflow: hidden;
+		position: absolute;
+		top: 0;
+		left: 0;
+	}
+
+	.icon-xiangyou {
+		font-size: 22rpx;
+	}
+
+	// #ifdef MP
+	checkbox-group {
+		display: inline-block;
+	}
+
+	// #endif
+	.setAgCount {
+		/deep/ table {
+			border: 1px solid #DDD;
+			border-bottom: none;
+			border-right: none;
+		}
+
+		/deep/ td,
+		th {
+			padding: 5rpx 10rpx;
+			border-bottom: 1px solid #DDD;
+			border-right: 1px solid #DDD;
+		}
+	}
+
+	.merchantsSettled .list .items {
+		padding: 50rpx 0 20rpx;
+		border-bottom: 1px solid #eee;
+		position: relative;
+		margin: 0 20px;
+
+		.uni-list-area {
+			height: 50px;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+
+			.uni-list-stree {
+				width: 30%;
+				margin-left: 10px;
+
+				.mer-area {
+					width: 100%;
+					border: 1px solid #C3C3C3;
+
+					picker {
+						display: flex;
+					}
+
+					input {
+						width: 100%;
+						font-size: 30rpx;
+
+					}
+				}
+			}
+		}
+
+	}
+</style>
\ No newline at end of file
diff --git a/pages/users/invite_code/index.vue b/pages/users/invite_code/index.vue
new file mode 100644
index 0000000..737d0d8
--- /dev/null
+++ b/pages/users/invite_code/index.vue
@@ -0,0 +1,292 @@
+<template>
+	<view class="invite">
+		<view class="placeholder"></view>
+
+		<view class="qrcode">
+			<view class="title">
+				shop_{{uid}}
+			</view>
+			<view class="qrcode-img">
+				<image :src="qrcodeUrl"></image>
+			</view>
+			<view class="save" @longpress="handleSavePic">
+				<image
+					src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_active_mer/new_active_mer_qrcode_save.webp">
+				</image>
+				<text>长按保存二维码</text>
+			</view>
+		</view>
+
+		<view class="con">
+			<image class="record"
+				src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_active_mer/new_active_mer_qrcode_record.webp">
+			</image>
+
+			<view class="table" v-if="list.length > 0">
+				<view class="table-title">
+					<view class="table-title-cell">用户名称</view>
+					<view class="table-title-cell">用户ID</view>
+					<view class="table-title-cell">采购金额</view>
+					<view class="table-title-cell">销售金额</view>
+				</view>
+				<block v-for="(item,index) in list" :key="index">
+					<view class="table-con">
+						<view class="table-con-cell">{{item.real_name}}</view>
+						<view class="table-con-cell">{{item.uid}}</view>
+						<view class="table-con-cell red">¥{{item.buy_amount}}</view>
+						<view class="table-con-cell green">¥{{item.sale_amount}}</view>
+					</view>
+				</block>
+			</view>
+
+			<view v-if="list.length == 0">
+				<emptyPage title="暂无邀请好友记录哦~"></emptyPage>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	import emptyPage from '@/components/emptyPage.vue';
+	import {
+		qrcode,
+		merchantRecord
+	} from "@/api/activity.js";
+
+	export default {
+		components: {
+			emptyPage
+		},
+		data() {
+			return {
+				qrcodeUrl: "",
+				list: [],
+				page: 1,
+				limit: 10,
+				loadend: false,
+				loading: false,
+				loadTitle: '加载更多',
+				isAuto: false, //没有授权的不会自动授权
+				isShowAuth: false, //是否隐藏授权
+				uid:''
+			}
+		},
+		onLoad() {
+			this.getQrcode();
+			this.getList();
+			this.getUserInfo()
+		},
+		/**
+		 * 页面上拉触底事件的处理函数
+		 */
+		onReachBottom: function() {
+			this.getList();
+		},
+		
+		methods: {
+			// 获取二维码
+			getQrcode() {
+				qrcode().then(res => {
+					this.qrcodeUrl = res.data.url;
+				})
+			},
+			// 获取好友列表
+			getList() {
+				let that = this;
+				if (that.loading) return;
+				if (that.loadend) return;
+				that.loading = true;
+				that.loadTitle = '';
+				merchantRecord({
+					page: that.page,
+					limit: that.limit
+				}).then(res => {
+					let list = res.data.list,
+						loadend = list.length < that.limit;
+					that.list = that.$util.SplitArray(list, that.list);
+					that.$set(that, 'list', that.list);
+					that.page = that.page + 1;
+					that.loading = false;
+					that.loadend = loadend;
+					that.loadTitle = loadend ? '哼~😕我也是有底线的~' : "加载更多";
+				}, function(res) {
+					this.loading = false;
+					that.loadTitle = '加载更多';
+				})
+			},
+			
+			getUserInfo() {
+				let userInfo = this.$Cache.get("USER_INFO");
+				if(userInfo){
+					userInfo = JSON.parse(userInfo);
+					this.uid = userInfo.uid;
+				}
+			},
+			
+			handleSavePic() {
+				// 获取要保存的图片路径或URL
+				let imageUrl = this.qrcodeUrl; // 这里使用了网络上的图片作为示例
+
+				// #ifdef H5
+				var a = document.createElement("a");
+				a.download = imageUrl;
+				a.href = imageUrl;
+				document.body.appendChild(a);
+				a.click();
+				a.remove();
+				// #endif
+
+				// #ifndef H5
+				let that =this;
+				uni.downloadFile({
+					url: imageUrl,
+					success(res) {
+						if (res.statusCode === 200) {
+							let tempFilePath = res.tempFilePath; // 临时文件路径
+							uni.saveImageToPhotosAlbum({
+								filePath: tempFilePath,
+								success() {
+									return that.$util.Tips({
+										title: '图片已保存至相册!'
+									});
+								},
+								fail(err) {
+									console.error('保存失败', err);
+								}
+							});
+						} else {
+							console.error('下载失败', res.statusCode);
+						}
+					},
+					fail(err) {
+						console.error('下载失败', err);
+					}
+				});
+				// #endif
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background-color: #F5F5F5;
+	}
+
+	.invite {
+		.placeholder {
+			height: 544rpx;
+		}
+
+		.qrcode {
+			position: fixed;
+			top: 30rpx;
+			left: 50%;
+			transform: translateX(-50%);
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			width: 690rpx;
+			height: 666rpx;
+			background-image: url(https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_active_mer/new_active_mer_qrcode_bg.webp);
+			background-size: 100%;
+			background-repeat: no-repeat;
+			padding-top: 54rpx;
+			box-sizing: border-box;
+
+			.title {
+				font-size: 24rpx;
+				font-family: PingFang SC, PingFang SC;
+				font-weight: 400;
+				color: #7A7A7A;
+				margin-bottom: 16rpx;
+			}
+
+			.qrcode-img {
+				margin-bottom: 96rpx;
+
+				image {
+					width: 396rpx;
+					height: 396rpx;
+				}
+			}
+
+			.save {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+
+				image {
+					width: 36rpx;
+					height: 36rpx;
+					margin-right: 10rpx;
+				}
+
+				text {
+					font-size: 28rpx;
+					font-family: PingFang SC, PingFang SC;
+					font-weight: 400;
+					color: #FFFFFF;
+				}
+			}
+		}
+
+		.con {
+			height: calc(100vh - 544rpx);
+			background-color: #FFF3EF;
+			padding: 192rpx 30rpx 0;
+
+			image {
+				width: 100%;
+				height: 45rpx;
+				margin-bottom: 40rpx;
+			}
+
+			.table {
+				.table-title {
+					display: flex;
+					margin-bottom: 24rpx;
+
+					.table-title-cell {
+						width: 25%;
+						font-size: 26rpx;
+						font-family: PingFang SC, PingFang SC;
+						font-weight: 400;
+						color: #2E2E2E;
+						text-align: center;
+					}
+				}
+
+				.table-con {
+					display: flex;
+					width: 100%;
+					height: 68rpx;
+					line-height: 68rpx;
+					text-align: center;
+					background: #FFFFFF;
+					border-radius: 12rpx;
+					margin-bottom: 12rpx;
+
+					.table-con-cell {
+						width: 25%;
+						height: 68rpx;
+						font-size: 24rpx;
+						font-family: PingFang SC, PingFang SC;
+						font-weight: 400;
+						color: #2E2E2E;
+						white-space:nowrap;
+						overflow:hidden;
+						text-overflow:ellipsis;
+					}
+
+					.red {
+						color: #F13B3B;
+					}
+
+					.green {
+						color: #20A162;
+					}
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/pages/users/user_info/index.vue b/pages/users/user_info/index.vue
index d31de38..6b7fbfe 100644
--- a/pages/users/user_info/index.vue
+++ b/pages/users/user_info/index.vue
@@ -235,7 +235,7 @@
 			},
 			// #ifdef APP-PLUS
 			appVersionConfig() {
-				var that = this;
+				let that = this;
 				console.log('app:'+plus.runtime.appid)
 				plus.runtime.getProperty(plus.runtime.appid, (info) => {
 					this.version = info.version;
diff --git a/utils/uniMP.js b/utils/uniMP.js
new file mode 100644
index 0000000..8ebfd45
--- /dev/null
+++ b/utils/uniMP.js
@@ -0,0 +1,366 @@
+import {
+	getGXconfig,
+	miniapp
+} from "@/api/uniMP.js";
+import {
+	ENV
+} from '@/config/app';
+const mp = uni.requireNativePlugin('uniMP');
+import store from "@/store/modules/app.js"
+
+let appid = ''; // 应用id
+let wgtFile = ''; // 应用文件地址
+let timer = null; // 加载计时器
+
+// 比较版本号大小
+function compareVersions(version1, version2) {
+	const arr1 = version1.split('.').map(Number);
+	const arr2 = version2.split('.').map(Number);
+	for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) {
+		const num1 = i < arr1.length ? arr1[i] : 0;
+		const num2 = i < arr2.length ? arr2[i] : 0;
+		if (num1 > num2) {
+			return 1;
+		} else if (num1 < num2) {
+			return -1;
+		}
+	}
+	return 0;
+}
+
+// 加载供销小程序
+const loadMP = async (id) => {
+	appid = id;
+	let info = await getGXconfig();
+	console.log('最新版本', info.data);
+	// return ;
+	uni.$emit('showLoading', true, '初始化中');
+	mp.getUniMPVersion(id, (ret) => {
+		console.log('当前版本', ret);
+		let flag;
+		if (ENV == 'prod') {
+			flag = false
+		} else {
+			flag = true
+		}
+		if (0 != ret.code || compareVersions(info.data.version, ret.versionInfo.name) == 1 || flag ==
+			true) {
+			let count = 0;
+			timer = setInterval(() => {
+				if (count < 100 && count > 0) uni.$emit('showLoading', true, `初始化中... ${count}%`)
+				else uni.$emit('showLoading', true, `初始化中... 99%`)
+			}, 200)
+			let downloadTask = uni.downloadFile({
+				url: info.data.version_info?.dow_url,
+				success(res) {
+					wgtFile = res.tempFilePath;
+					console.log('初始化完成', wgtFile);
+					setTimeout(()=>{
+					  installMP();
+					  clearInterval(timer);
+					  timer = null;
+					}, 700)
+				},
+				fail(res) {
+					clearInterval(timer);
+					timer = null;
+					uni.hideLoading();
+				}
+			});
+			downloadTask.onProgressUpdate((res) => {
+				// console.log('初始化进度' + res.progress);
+				if (res.progress > count) count += 10;
+				if (count >= 90) {
+					clearInterval(timer);
+					timer = null;
+				}
+			});
+		} else {
+			open()
+		}
+	});
+};
+
+//加载商城小程序
+const loadMPx = async (id) => {
+	
+	appid = id;
+	let info = await miniapp();
+	console.log('最新版本', info.data);
+	console.log(mp, uni);
+	// return ;
+	uni.$emit('showLoading', true, `初始化中...`)
+	mp.getUniMPVersion(id, (ret) => {
+		console.log('当前版本', ret);
+		let flag;
+		if (ENV == 'prod') {
+			flag = false
+		} else {
+			flag = true
+		}
+		if (0 != ret.code || compareVersions(info.data.appInfo.version, ret.versionInfo.name) == 1 ||
+			flag ==
+			true) {
+			let count = 0;
+			timer = setInterval(() => {
+				if (count < 100 && count > 0) uni.$emit('showLoading', true, `初始化中... ${count}%`)
+				else uni.$emit('showLoading', true, `初始化中... 99%`)
+			}, 200)
+
+			let downloadTask = uni.downloadFile({
+				url: info.data.appInfo.dow_url,
+				success(res) {
+					wgtFile = res.tempFilePath;
+					console.log('初始化完成', wgtFile);
+					setTimeout(()=>{
+					  installMP();
+					  clearInterval(timer);
+					  timer = null;
+					}, 700)
+				},
+				fail(res) {
+					clearInterval(timer);
+					timer = null;
+					uni.hideLoading();
+				}
+			});
+			downloadTask.onProgressUpdate((res) => {
+				// console.log('初始化进度' + res.progress);
+				if (res.progress > count) count += 10;
+				if (count >= 90) {
+					clearInterval(timer);
+					timer = null;
+				}
+			});
+		} else {
+			open()
+		}
+	});
+};
+
+// 按信息接口加载小程序
+const loadMPurl = async (e) => {
+	appid = e.id;
+  let FURL = e.url;
+	uni.$emit('showLoading', true, `初始化中...`)
+  uni.request({
+    url: FURL,
+    method: 'GET',
+    success: (fileInfo) => {
+      mp.getUniMPVersion(appid, (ret) => {
+      	console.log('当前版本', ret);
+      	let flag;
+      	if (ENV == 'prod') {
+      		flag = false
+      	} else {
+      		flag = true
+      	}
+      	if (0 != ret.code || compareVersions(fileInfo.data?.data?.version, ret.versionInfo.name) == 1 || flag ==
+      		true) {
+      		let count = 0;
+      		timer = setInterval(() => {
+      			if (count < 100 && count > 0) uni.$emit('showLoading', true, `初始化中... ${count}%`)
+      			else uni.$emit('showLoading', true, `初始化中... 99%`)
+      		}, 200)
+      		let downloadTask = uni.downloadFile({
+      			url: fileInfo.data?.data?.down_url,
+      			success(res) {
+      				wgtFile = res.tempFilePath;
+      				console.log('初始化完成', wgtFile);
+              setTimeout(()=>{
+                installMP();
+                clearInterval(timer);
+                timer = null;
+              }, 700)
+      			},
+      		  fail(res) {
+      		    clearInterval(timer);
+      		    timer = null;
+      		    uni.hideLoading();
+      		  }
+      		});
+      		downloadTask.onProgressUpdate((res) => {
+      			// console.log('初始化进度' + res.progress);
+      			if (res.progress > count) count += 10;
+      			if (count >= 90) {
+      				clearInterval(timer);
+      				timer = null;
+      			}
+      		});
+      	} else {
+      		open()
+      	}
+      });
+      
+    },
+    fail:(err)=> {
+      console.log('错误:', err);
+    }
+  })
+	
+};
+
+// 商城配置的小程序
+const loadAppletMP = async (data) => {
+	appid = data.app_id;
+	// return ;
+	uni.$emit('showLoading', true, '初始化中');
+	mp.getUniMPVersion(appid, (ret) => {
+		let flag;
+		if (ENV == 'prod') {
+			flag = false
+		} else {
+			flag = true
+		}
+		if (0 != ret.code || compareVersions(data.version, ret.versionInfo.name) == 1 || flag ==
+			true) {
+			let count = 0;
+			timer = setInterval(() => {
+				if (count < 100 && count > 0) uni.$emit('showLoading', true, `初始化中... ${count}%`)
+				else uni.$emit('showLoading', true, `初始化中... 99%`)
+			}, 200)
+			let downloadTask = uni.downloadFile({
+				url: data.url,
+				success(res) {
+					wgtFile = res.tempFilePath;
+					console.log('初始化完成', wgtFile);
+					setTimeout(()=>{
+					  installMP();
+					  clearInterval(timer);
+					  timer = null;
+					}, 700)
+				},
+				fail(res) {
+					clearInterval(timer);
+					timer = null;
+					uni.hideLoading();
+				}
+			});
+			downloadTask.onProgressUpdate((res) => {
+				// console.log('初始化进度' + res.progress);
+				if (res.progress > count) count += 10;
+				if (count >= 90) {
+					clearInterval(timer);
+					timer = null;
+				}
+			});
+		} else {
+			open()
+		}
+	});
+};
+
+// 按远程文件地址加载小程序
+const loadMPdns = async (e) => {
+	appid = e.id;
+  let FURL = e.url;
+	uni.$emit('showLoading', true, `初始化中...`)
+  let count = 0;
+  timer = setInterval(() => {
+  	if (count < 100 && count > 0) uni.$emit('showLoading', true, `初始化中... ${count}%`)
+  	else uni.$emit('showLoading', true, `初始化中... 99%`)
+  }, 200)
+  let downloadTask = uni.downloadFile({
+  	url: FURL,
+  	success(res) {
+  		wgtFile = res.tempFilePath;
+  		console.log('初始化完成', wgtFile);
+  		setTimeout(()=>{
+  		  installMP();
+        clearInterval(timer);
+        timer = null;
+  		}, 700)
+  	},
+    fail(res) {
+      clearInterval(timer);
+      timer = null;
+      uni.hideLoading();
+    }
+  });
+  downloadTask.onProgressUpdate((res) => {
+  	// console.log('初始化进度' + res.progress);
+  	if (res.progress > count) count += 10;
+  	if (count >= 90) {
+  		clearInterval(timer);
+  		timer = null;
+  	}
+  });
+	
+};
+
+// 小程序版本信息
+const getVersion = (id) => {
+	appid = id;
+	return new Promise((resolve, reject) => {
+		mp.getUniMPVersion(appid, (ret) => {
+			console.log('供销', ret);
+		});
+	})
+}
+// 初始化小程序
+const installMP = () => {
+	mp.getUniMPVersion(appid, (ret) => {
+		doInstallMP();
+		console.log('getUniMPVersion: ' + JSON.stringify(ret));
+	});
+};
+const doInstallMP = () => {
+	mp.installUniMP({
+		appid: appid,
+		wgtFile: wgtFile
+	}, (r) => {
+		if (0 == r.code) {
+			open();
+		} else {
+			uni.hideLoading();
+			clearInterval(timer);
+			timer = null;
+			uni.showModal({
+				title: '初始化失败',
+				content: JSON.stringify(r),
+				showCancel: false
+			});
+		}
+		console.log('初始化: ' + JSON.stringify(r));
+	});
+};
+
+const open = (id = null) => {
+  uni.$emit('showLoading', false);
+	let token = uni.getStorageSync('LOGIN_STATUS_TOKEN');
+	if (!token) return uni.showToast({
+		icon: 'none',
+		title: '请先登录'
+	})
+	let avatar = store?.state?.userInfo?.avatar;
+	mp.openUniMP({
+		appid: id || appid,
+		extraData: {
+			uniMP: true,
+			token: token,
+			avatar: avatar,
+		}
+	}, (ret) => {
+		uni.hideLoading();
+		if (0 != ret.code) {
+			uni.showModal({
+				title: '启动失败',
+				content: JSON.stringify(ret),
+				showCancel: false
+			});
+		}
+		console.log('openUniMP: ' + JSON.stringify(ret));
+	});
+}
+
+export default {
+	loadMP,
+	loadMPurl,
+	loadMPx,
+  loadMPdns,
+	installMP,
+  loadAppletMP,
+	doInstallMP,
+	getVersion,
+	open
+}
\ No newline at end of file
diff --git a/utils/uniMPevent.js b/utils/uniMPevent.js
new file mode 100644
index 0000000..f051aec
--- /dev/null
+++ b/utils/uniMPevent.js
@@ -0,0 +1,74 @@
+const mp = uni.requireNativePlugin('uniMP');
+import {
+  uniMPgetLocation,
+  test
+} from "@/utils/uniMPfunction.js"
+
+export const initEvent = () => {
+  mp.onUniMPEventReceive(async (ret) => {
+    console.log('小程序事件: ', ret);
+    if (ret.event == 'closeApp') {
+      mp.closeUniMP(ret.fromAppid, (ret) => {
+        console.log('closeUniMP: ' + JSON.stringify(ret));
+      });
+    }
+    if (ret.event == 'getLocation') {
+      try {
+        console.log('获取定位');
+        let res = await uniMPgetLocation();
+        console.log(res);
+		// plus.geolocation.getCurrentPosition(function(position) {
+		//   console.log('经度:' + position.coords.longitude);
+		//   console.log('纬度:' + position.coords.latitude);
+		//   // that.markers[1].latitude = position.coords.longitude;
+		//   // that.markers[1].longitude = position.coords.longitude;
+		//   mp.sendUniMPEvent(
+		//     ret.fromAppid,
+		//     'getLocation', {...position.coords},
+		//     (ret) => {
+		//       console.log('Host sendEvent: ' + JSON.stringify(ret));
+		//     });
+		// }, function(error) {
+		//   console.error('获取位置失败:', error.message);
+		// }, {provider:'gps'});
+        mp.sendUniMPEvent(
+          ret.fromAppid,
+          'getLocation', {...res},
+          (ret) => {
+            console.log('Host sendEvent: ' + JSON.stringify(ret));
+          });
+      } catch (e) {
+        console.log(e);
+      }
+    }
+    if (ret.event == 'test') {
+      console.log('测试');
+      mp.sendUniMPEvent(
+        ret.fromAppid,
+        'test', { 'key': 'value', 'name': 'data' },
+        (ret) => {
+          console.log('Host sendEvent: ' + JSON.stringify(ret));
+        });
+    }
+  if (ret.event == 'log') {
+     // console.log('2222222')
+	 
+  	console.log('收到小程序事件: ' + JSON.stringify(ret));
+  }
+  
+  //直播小程序跳转商城购买商品
+  if (ret.event == 'live_shop') {
+     console.log(JSON.stringify(ret))
+	 let arr1=ret.data
+  	 mp.closeUniMP(ret.fromAppid, (ret) => {
+  	   // console.log('closeUniMP: ' + JSON.stringify(ret));
+	   setTimeout(()=>{
+		   uni.navigateTo({
+		   	url:'/pages/goods_details/index?id='+arr1.app_goods_id
+		   },1000)
+	   })
+  	 });
+  	// console.log('收到小程序事件: ' + JSON.stringify(ret));
+  }
+  });
+}
\ No newline at end of file
diff --git a/utils/uniMPfunction.js b/utils/uniMPfunction.js
new file mode 100644
index 0000000..dcdc715
--- /dev/null
+++ b/utils/uniMPfunction.js
@@ -0,0 +1,21 @@
+export const test = () => {
+  return '测试'
+}
+
+export const uniMPgetLocation = () => {
+  return new Promise((resolve, reject) => {
+    uni.getLocation({
+      type: 'wgs84',
+      geocode: true,
+      isHighAccuracy: true,
+      // altitude: true,
+      // accuracy: 'best',
+      success: (res) => {
+        resolve(res)
+      },
+      fail(e) {
+        resolve(e)
+      }
+    });
+  })
+}
\ No newline at end of file