Просмотр исходного кода

【前端模版】更新v4.4.4模版文件

evoxwht 3 лет назад
Родитель
Сommit
d3c3b379d1
27 измененных файлов с 3044 добавлено и 3062 удалено
  1. 3 3
      template/admin/.env.dev
  2. 1 1
      template/admin/package.json
  3. 1 1
      template/admin/src/pages/marketing/storeBargain/create.vue
  4. 1 1
      template/admin/src/pages/marketing/storeCombination/create.vue
  5. 1 1
      template/admin/src/pages/marketing/storeIntegral/create.vue
  6. 1 1
      template/admin/src/pages/marketing/storeSeckill/create.vue
  7. 1 1
      template/admin/src/pages/product/productAdd/index.vue
  8. 51 58
      template/admin/src/pages/setting/notification/index.vue
  9. 144 217
      template/admin/src/pages/setting/notification/notificationEdit.vue
  10. 2 6
      template/admin/src/pages/system/configTab/list.vue
  11. 74 74
      template/uni-app/App.vue
  12. 1 1
      template/uni-app/androidPrivacy.json
  13. 188 182
      template/uni-app/components/d_goodList/index.vue
  14. 230 198
      template/uni-app/components/goodClass/index.vue
  15. 23 21
      template/uni-app/libs/login.js
  16. 10 1
      template/uni-app/manifest.json
  17. 7 1
      template/uni-app/pages.json
  18. 106 107
      template/uni-app/pages/goods_cate/goods_cate.vue
  19. 1037 1036
      template/uni-app/pages/goods_cate/goods_cate2.vue
  20. 1091 1088
      template/uni-app/pages/goods_cate/goods_cate3.vue
  21. 55 54
      template/uni-app/pages/user/index.vue
  22. 2 1
      template/uni-app/pages/users/order_confirm/index.vue
  23. 4 1
      template/uni-app/pages/users/order_details/index.vue
  24. 3 0
      template/uni-app/pages/users/order_list/index.vue
  25. 1 1
      template/uni-app/pages/users/user_info/index.vue
  26. 4 4
      template/uni-app/pages/users/user_spread_user/index.vue
  27. 2 2
      template/uni-app/store/modules/app.js

+ 3 - 3
template/admin/.env.dev

@@ -4,11 +4,11 @@ VUE_APP_ENV='dev'
 # 页面 title
 VUE_APP_TITLE=CRMEB
 # socket 客服连接地址
-VUE_APP_WS_KEFU_URL="ws://v4.crmeb.net/msg"
+VUE_APP_WS_KEFU_URL=""
 # socket 系统连接地址
-VUE_APP_WS_ADMIN_URL="ws://v4.crmeb.net/notice"
+VUE_APP_WS_ADMIN_URL=""
 
 
 
 # 接口请求地址
-VUE_APP_API_URL='http://v4.crmeb.net/adminapi'
+VUE_APP_API_URL=''

+ 1 - 1
template/admin/package.json

@@ -117,4 +117,4 @@
       "git add"
     ]
   }
-}
+}

+ 1 - 1
template/admin/src/pages/marketing/storeBargain/create.vue

@@ -1034,7 +1034,7 @@ export default {
     // 选择商品
     changeGoods() {
       this.modals = true;
-      this.$refs.goodslist.formValidate.is_virtual = 0;
+      this.$refs.goodslist.formValidate.is_presale = 0;
       this.$refs.goodslist.getList();
       this.$refs.goodslist.goodsCategory();
     },

+ 1 - 1
template/admin/src/pages/marketing/storeCombination/create.vue

@@ -985,7 +985,7 @@ export default {
     // 选择商品
     changeGoods() {
       this.modals = true;
-      this.$refs.goodslist.formValidate.is_virtual = 0;
+      this.$refs.goodslist.formValidate.is_presale = 0;
       this.$refs.goodslist.getList();
       this.$refs.goodslist.goodsCategory();
     },

+ 1 - 1
template/admin/src/pages/marketing/storeIntegral/create.vue

@@ -745,7 +745,7 @@ export default {
     // 选择商品
     changeGoods() {
       this.modals = true;
-      this.$refs.goodslist.formValidate.is_virtual = 0;
+      this.$refs.goodslist.formValidate.is_presale = 0;
       this.$refs.goodslist.getList();
       this.$refs.goodslist.goodsCategory();
     }, // 移动

+ 1 - 1
template/admin/src/pages/marketing/storeSeckill/create.vue

@@ -935,7 +935,7 @@ export default {
     // 选择商品
     changeGoods() {
       this.modals = true;
-      this.$refs.goodslist.formValidate.is_virtual = 0;
+      this.$refs.goodslist.formValidate.is_presale = 0;
       this.$refs.goodslist.getList();
       this.$refs.goodslist.goodsCategory();
     }, // 移动

+ 1 - 1
template/admin/src/pages/product/productAdd/index.vue

@@ -1439,7 +1439,7 @@
           <Col span="24">
             <div class="line"></div>
           </Col>
-          <Col span="24" v-if="formValidate.virtual_type == 0">
+          <Col span="24" v-if="formValidate.virtual_type == 0 || formValidate.virtual_type == 3">
             <FormItem label="预售商品:">
               <i-switch v-model="formValidate.presale" size="large">
                 <span slot="open">开启</span>

+ 51 - 58
template/admin/src/pages/setting/notification/index.vue

@@ -2,56 +2,7 @@
   <div class="message">
     <div class="i-layout-page-header">
         <span class="ivu-page-header-title">{{ $route.meta.title }}</span>
-        <div class="ivu-mt">
-          <Alert v-if="industry" type="info" banner closable>
-            <template slot="desc" >
-              <div>
-                <p>
-                  1、请在微信后台设置模版消息主营行业:{{
-                    industry.primary_industry.first_class
-                        ? industry.primary_industry.first_class + "||"
-                        : industry.primary_industry
-                  }}
-                  {{
-                    industry.primary_industry.second_class
-                        ? industry.primary_industry.second_class
-                        : ""
-                  }}
-                  ||  副营行业:{{
-                    industry.secondary_industry.first_class
-                        ? industry.secondary_industry.first_class + "||"
-                        : industry.secondary_industry
-                  }}
-                  {{
-                    industry.secondary_industry.second_class
-                        ? industry.secondary_industry.second_class
-                        : ""
-                  }}
-                </p>
-                <p>2、点击同步按钮会自动在微信后台添加模版消息</p>
-              </div>
-            </template>
-          </Alert>
-          <Row type="flex" class="mb20">
-            <Col v-bind="grid">
-              <Button
-                  v-auth="['app-wechat-template-sync']"
-                  icon="md-list"
-                  type="success"
-                  @click="routineTemplate"
-                  style="margin-left: 20px"
-              >同步小程序订阅消息</Button
-              >
-              <Button
-                  v-auth="['app-wechat-template-sync']"
-                  icon="md-list"
-                  type="success"
-                  @click="wechatTemplate"
-                  style="margin-left: 20px"
-              >同步微信模版消息</Button
-              >
-            </Col>
-          </Row>
+        <div>
           <Tabs v-model="currentTab" @on-click="changeTab">
             <TabPane
               :label="item.label"
@@ -62,11 +13,56 @@
           </Tabs>
         </div>
       </div>
-      <div class="ivu-row">
-
+      <div class="table-box">
         <Card :bordered="false" dis-hover class="ivu-mt">
-
-
+          <Row type="flex" class="mb20" v-if="currentTab == 1">
+            <Col v-bind="grid">
+              <Button
+                v-auth="['app-wechat-template-sync']"
+                icon="md-list"
+                type="success"
+                @click="routineTemplate"
+                style="margin-left: 20px"
+                >同步小程序订阅消息</Button
+              >
+              <Button
+                v-auth="['app-wechat-template-sync']"
+                icon="md-list"
+                type="success"
+                @click="wechatTemplate"
+                style="margin-left: 20px"
+                >同步微信模版消息</Button
+              >
+            </Col>
+          </Row>
+          <Alert v-if="industry && currentTab == 1">
+            <template slot="desc">
+              <div>
+                主营行业:{{
+                  industry.primary_industry.first_class
+                    ? industry.primary_industry.first_class + "||"
+                    : industry.primary_industry
+                }}
+                {{
+                  industry.primary_industry.second_class
+                    ? industry.primary_industry.second_class
+                    : ""
+                }}
+              </div>
+              <div>
+                副营行业:{{
+                  industry.secondary_industry.first_class
+                    ? industry.secondary_industry.first_class + "||"
+                    : industry.secondary_industry
+                }}
+                {{
+                  industry.secondary_industry.second_class
+                    ? industry.secondary_industry.second_class
+                    : ""
+                }}
+              </div>
+            </template>
+          </Alert>
           <Table
             :columns="currentTab == 1 ?columns : columns2"
             :data="levelLists"
@@ -96,7 +92,7 @@
               ]"
               :slot="item"
             >
-              <div v-if="item === 'is_ent_wechat' && currentTab == 1">--</div>
+              <div v-if="item === 'is_ent_wechat' && currentTab == 1">--</div>  
               <i-switch
                 v-model="row[item]"
                 :value="row[item]"
@@ -348,7 +344,4 @@ export default {
 .table {
   padding: 0 18px;
 }
-.ivu-alert-with-desc {
-  padding: 5px 16px;
-}
 </style>

+ 144 - 217
template/admin/src/pages/setting/notification/notificationEdit.vue

@@ -1,228 +1,150 @@
 <template>
   <div class="edit">
-    <div class="i-layout-page-header">
+    <!-- <div class="i-layout-page-header">
       <router-link :to="{ path: '/admin/setting/notification/index' }"
-      ><Button icon="ios-arrow-back" size="small" type="text"
-      >返回</Button
-      ></router-link
+        ><Button icon="ios-arrow-back" size="small" class="mr20"
+          >返回</Button
+        ></router-link
       >
-      <Divider type="vertical" />
       <span class="ivu-page-header-title">{{ $route.meta.title }}</span>
+    </div> -->
+    <div class="i-layout-page-header header_top">
+      <div class="i-layout-page-header fl_header">
+        <router-link :to="{ path: '/admin/setting/notification/index' }"><Button icon="ios-arrow-back" size="small"
+            type="text">返回</Button></router-link>
+        <Divider type="vertical" />
+        <span class="ivu-page-header-title mr20" style="padding: 0" v-text="$route.meta.title"></span>
+      </div>
     </div>
     <div class="tabs">
       <Row :gutter="32">
         <Col span="32" class="demo-tabs-style1" style="padding: 16px">
-          <Tabs @on-click="changeTabs">
-            <TabPane
-              v-for="(item, index) in tabsList"
-              :key="index"
-              :name="item.slot"
-              :label="item.title"
-            >
-              <Form
-                class="form-sty"
-                ref="formData"
-                :model="formData"
-                :rules="ruleValidate"
-                :label-width="80"
-              >
-                <div v-if="item.slot === 'is_system' && !loading">
-                  <FormItem label="通知标题">
-                    <Input
-                      v-model="formData.system_title"
-                      placeholder="请输入通知标题"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="通知内容">
-                    <div class="content">
-                      <Input
-                        v-model="formData.system_text"
-                        type="textarea"
-                        :autosize="{ minRows: 5, maxRows: 8 }"
-                        placeholder="请输入通知内容"
-                        style="width: 500px"
-                      ></Input>
-                      <div class="trip">
-                        <div>
-                          请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
-                          可以使用如下变量:
-                        </div>
-                        <div
-                          v-for="(item, index) in formData.variable.split(',')"
-                          :key="index"
-                        >
-                          {{ item }}
-                        </div>
+        <Tabs @on-click="changeTabs">
+          <TabPane v-for="(item, index) in tabsList" :key="index" :name="item.slot" :label="item.title">
+            <Form class="form-sty" ref="formData" :model="formData" :rules="ruleValidate" :label-width="80">
+              <div v-if="item.slot === 'is_system' && !loading">
+                <FormItem label="通知标题">
+                  <Input v-model="formData.system_title" placeholder="请输入通知标题" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="通知内容">
+                  <div class="content">
+                    <Input v-model="formData.system_text" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
+                      placeholder="请输入通知内容" style="width: 500px"></Input>
+                    <div class="trip">
+                      <div>
+                        请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
+                        可以使用如下变量:
+                      </div>
+                      <div v-for="(item, index) in formData.variable.split(',')" :key="index">
+                        {{ item }}
                       </div>
                     </div>
-                  </FormItem>
-                  <FormItem label="状态" prop="is_system">
-                    <RadioGroup v-model="formData.is_system">
-                      <Radio :label="1">开启</Radio>
-                      <Radio :label="2">关闭</Radio>
-                    </RadioGroup>
-                  </FormItem>
-                </div>
-                <div v-if="item.slot === 'is_sms' && !loading">
-                  <FormItem label="短信模版ID">
-                    <Input
-                      v-model="formData.sms_id"
-                      placeholder="短信模版ID"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="通知内容">
-                    <div class="content">
-                      <Input
-                        v-model="formData.content"
-                        type="textarea"
-                        disabled
-                        :autosize="{ minRows: 5, maxRows: 8 }"
-                        placeholder="请输入通知内容"
-                        style="width: 500px"
-                      ></Input>
-                    </div>
-                  </FormItem>
-                  <FormItem label="状态" prop="is_sms">
-                    <RadioGroup v-model="formData.is_sms">
-                      <Radio :label="1">开启</Radio>
-                      <Radio :label="2">关闭</Radio>
-                    </RadioGroup>
-                  </FormItem>
-                </div>
-                <div v-else-if="item.slot === 'is_wechat' && !loading">
-                  <FormItem label="ID">
-                    <Input
-                      v-model="formData.templage_message_id"
-                      disabled
-                      placeholder="请输入通模板编号"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="模板编号">
-                    <Input
-                      v-model="formData.tempkey"
-                      disabled
-                      placeholder="请输入通模板编号"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="模板">
-                    <Input
-                      disabled
-                      v-model="formData.content"
-                      type="textarea"
-                      :autosize="{ minRows: 5, maxRows: 8 }"
-                      placeholder="请输入模板"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="模板ID">
-                    <Input
-                      v-model="formData.tempid"
-                      placeholder="请输入模板ID"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="状态" prop="is_wechat">
-                    <RadioGroup v-model="formData.is_wechat">
-                      <Radio :label="1">开启</Radio>
-                      <Radio :label="2">关闭</Radio>
-                    </RadioGroup>
-                  </FormItem>
-                </div>
-                <div v-else-if="item.slot === 'is_routine' && !loading">
-                  <FormItem label="ID">
-                    <Input
-                      v-model="formData.templage_message_id"
-                      disabled
-                      placeholder="请输入通模板编号"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="模板编号">
-                    <Input
-                      v-model="formData.tempkey"
-                      disabled
-                      placeholder="请输入通模板编号"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="模板">
-                    <Input
-                      disabled
-                      v-model="formData.content"
-                      type="textarea"
-                      :autosize="{ minRows: 5, maxRows: 8 }"
-                      placeholder="请输入模板"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="模板ID">
-                    <Input
-                      v-model="formData.tempid"
-                      placeholder="请输入模板ID"
-                      style="width: 500px"
-                    ></Input>
-                  </FormItem>
-                  <FormItem label="状态" prop="is_routine">
-                    <RadioGroup v-model="formData.is_routine">
-                      <Radio :label="1">开启</Radio>
-                      <Radio :label="2">关闭</Radio>
-                    </RadioGroup>
-                  </FormItem>
-                </div>
+                  </div>
+                </FormItem>
+                <FormItem label="状态" prop="is_system">
+                  <RadioGroup v-model="formData.is_system">
+                    <Radio :label="1">开启</Radio>
+                    <Radio :label="2">关闭</Radio>
+                  </RadioGroup>
+                </FormItem>
+              </div>
+              <div v-if="item.slot === 'is_sms' && !loading">
+                <FormItem label="短信模版ID">
+                  <Input v-model="formData.sms_id" placeholder="短信模版ID" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="通知内容">
+                  <div class="content">
+                    <Input v-model="formData.content" type="textarea" disabled :autosize="{ minRows: 5, maxRows: 8 }"
+                      placeholder="请输入通知内容" style="width: 500px"></Input>
+                  </div>
+                </FormItem>
+                <FormItem label="状态" prop="is_sms">
+                  <RadioGroup v-model="formData.is_sms">
+                    <Radio :label="1">开启</Radio>
+                    <Radio :label="2">关闭</Radio>
+                  </RadioGroup>
+                </FormItem>
+              </div>
+              <div v-else-if="item.slot === 'is_wechat' && !loading">
+                <FormItem label="ID">
+                  <Input v-model="formData.templage_message_id" disabled placeholder="请输入通模板编号"
+                    style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="模板编号">
+                  <Input v-model="formData.tempkey" disabled placeholder="请输入通模板编号" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="模板">
+                  <Input disabled v-model="formData.content" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
+                    placeholder="请输入模板" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="模板ID">
+                  <Input v-model="formData.tempid" placeholder="请输入模板ID" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="状态" prop="is_wechat">
+                  <RadioGroup v-model="formData.is_wechat">
+                    <Radio :label="1">开启</Radio>
+                    <Radio :label="2">关闭</Radio>
+                  </RadioGroup>
+                </FormItem>
+              </div>
+              <div v-else-if="item.slot === 'is_routine' && !loading">
+                <FormItem label="ID">
+                  <Input v-model="formData.templage_message_id" disabled placeholder="请输入通模板编号"
+                    style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="模板编号">
+                  <Input v-model="formData.tempkey" disabled placeholder="请输入通模板编号" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="模板">
+                  <Input disabled v-model="formData.content" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
+                    placeholder="请输入模板" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="模板ID">
+                  <Input v-model="formData.tempid" placeholder="请输入模板ID" style="width: 500px"></Input>
+                </FormItem>
+                <FormItem label="状态" prop="is_routine">
+                  <RadioGroup v-model="formData.is_routine">
+                    <Radio :label="1">开启</Radio>
+                    <Radio :label="2">关闭</Radio>
+                  </RadioGroup>
+                </FormItem>
+              </div>
 
-                <div v-else-if="item.slot === 'is_ent_wechat' && !loading">
-                  <FormItem label="通知内容">
-                    <div class="content">
-                      <Input
-                        v-model="formData.ent_wechat_text"
-                        type="textarea"
-                        :autosize="{ minRows: 5, maxRows: 8 }"
-                        placeholder="请输入通知内容"
-                        style="width: 500px"
-                      ></Input>
-                      <div class="trip">
-                        <div>
-                          请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
-                          可以使用如下变量:
-                        </div>
-                        <div
-                          v-for="(item, index) in formData.variable.split(',')"
-                          :key="index"
-                        >
-                          {{ item }}
-                        </div>
+              <div v-else-if="item.slot === 'is_ent_wechat' && !loading">
+                <FormItem label="通知内容">
+                  <div class="content">
+                    <Input v-model="formData.ent_wechat_text" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
+                      placeholder="请输入通知内容" style="width: 500px"></Input>
+                    <div class="trip">
+                      <div>
+                        请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
+                        可以使用如下变量:
+                      </div>
+                      <div v-for="(item, index) in formData.variable.split(',')" :key="index">
+                        {{ item }}
                       </div>
                     </div>
-                  </FormItem>
-                  <FormItem label="机器人链接">
-                    <div class="content">
-                      <Input
-                        v-model="formData.url"
-                        placeholder="请输入机器人链接"
-                        style="width: 500px"
-                      ></Input>
-                      <div class="trip">企业微信群机器人链接</div>
-                    </div>
-                  </FormItem>
-                  <FormItem label="状态" prop="is_ent_wechat">
-                    <RadioGroup v-model="formData.is_ent_wechat">
-                      <Radio :label="1">开启</Radio>
-                      <Radio :label="2">关闭</Radio>
-                    </RadioGroup>
-                  </FormItem>
-                </div>
-                <FormItem>
-                  <Button type="primary" @click="handleSubmit('formData')"
-                    >提交</Button
-                  >
+                  </div>
+                </FormItem>
+                <FormItem label="机器人链接">
+                  <div class="content">
+                    <Input v-model="formData.url" placeholder="请输入机器人链接" style="width: 500px"></Input>
+                    <div class="trip">企业微信群机器人链接</div>
+                  </div>
                 </FormItem>
-              </Form>
-            </TabPane>
-          </Tabs>
+                <FormItem label="状态" prop="is_ent_wechat">
+                  <RadioGroup v-model="formData.is_ent_wechat">
+                    <Radio :label="1">开启</Radio>
+                    <Radio :label="2">关闭</Radio>
+                  </RadioGroup>
+                </FormItem>
+              </div>
+              <FormItem>
+                <Button type="primary" @click="handleSubmit('formData')">提交</Button>
+              </FormItem>
+            </Form>
+          </TabPane>
+        </Tabs>
         </Col>
       </Row>
     </div>
@@ -334,30 +256,33 @@ export default {
 </script>
 
 <style scoped>
-.edit {
+.edit {}
+.header_top{
+  margin-bottom: 10px;
 }
-.demo-tabs-style1 > .ivu-tabs-card > .ivu-tabs-content {
+.demo-tabs-style1>.ivu-tabs-card>.ivu-tabs-content {
   height: 120px;
   margin-top: -16px;
 }
 
-.demo-tabs-style1 > .ivu-tabs-card > .ivu-tabs-content > .ivu-tabs-tabpane {
+.demo-tabs-style1>.ivu-tabs-card>.ivu-tabs-content>.ivu-tabs-tabpane {
   background: #fff;
   padding: 16px;
 }
 
-.demo-tabs-style1 > .ivu-tabs.ivu-tabs-card > .ivu-tabs-bar .ivu-tabs-tab {
+.demo-tabs-style1>.ivu-tabs.ivu-tabs-card>.ivu-tabs-bar .ivu-tabs-tab {
   border-color: transparent;
 }
 
-.demo-tabs-style1 > .ivu-tabs-card > .ivu-tabs-bar .ivu-tabs-tab-active {
+.demo-tabs-style1>.ivu-tabs-card>.ivu-tabs-bar .ivu-tabs-tab-active {
   border-color: #fff;
 }
+
 .tabs {
   padding: 0 30px;
   background-color: #fff;
-  margin-top: 20px;
 }
+
 .trip {
   color: rgb(146, 139, 139);
   background-color: #f2f2f2;
@@ -365,10 +290,12 @@ export default {
   border-radius: 4px;
   padding: 15px;
 }
+
 .content {
   display: flex;
 }
+
 .form-sty {
   margin-top: 20px;
 }
-</style>
+</style>  

+ 2 - 6
template/admin/src/pages/system/configTab/list.vue

@@ -1,13 +1,9 @@
 <template>
   <div>
     <div class="i-layout-page-header">
-        <router-link :to="{ path: '/admin/system/config/system_config_tab/index' }"
-        ><Button icon="ios-arrow-back" size="small" type="text"
-        >返回</Button
-        ></router-link
-        >
-        <Divider type="vertical" />
+      <div class="i-layout-page-header">
         <span class="ivu-page-header-title">{{ $route.meta.title }}</span>
+      </div>
     </div>
     <Card :bordered="false" dis-hover class="ivu-mt">
       <Row type="flex">

+ 74 - 74
template/uni-app/App.vue

@@ -218,85 +218,85 @@
 			}
 
 			//公众号静默授权
-			if (window.location.pathname !== '/' && option.query.scope === 'snsapi_base') {
-				let snsapiBase = 'snsapi_base';
-				let urlData = location.pathname + location.search;
-				// if (!that.$store.getters.isLogin && uni.getStorageSync('authIng')) {
-				// 	uni.setStorageSync('authIng', false)
-				// }
-				if (!that.$store.getters.isLogin && Auth.isWeixin()) {
-					let code,
-						state,
-						scope = ''
+			// if (window.location.pathname !== '/' && option.query.scope === 'snsapi_base') {
+			// 	let snsapiBase = 'snsapi_base';
+			// 	let urlData = location.pathname + location.search;
+			// 	// if (!that.$store.getters.isLogin && uni.getStorageSync('authIng')) {
+			// 	// 	uni.setStorageSync('authIng', false)
+			// 	// }
+			// 	if (!that.$store.getters.isLogin && Auth.isWeixin()) {
+			// 		let code,
+			// 			state,
+			// 			scope = ''
 
-					if (option.query.code instanceof Array) {
-						code = option.query.code[option.query.code.length - 1]
-					} else {
-						code = option.query.code
-					}
+			// 		if (option.query.code instanceof Array) {
+			// 			code = option.query.code[option.query.code.length - 1]
+			// 		} else {
+			// 			code = option.query.code
+			// 		}
 
 
-					if (code && code != uni.getStorageSync('snsapiCode') && location.pathname.indexOf(
-							'/pages/users/wechat_login/index') === -1) {
-						// 存储静默授权code
-						uni.setStorageSync('snsapiCode', code);
-						let spread = that.globalData.spid ? that.globalData.spid : '';
-						uni.setStorageSync('authIng', true)
-						silenceAuth({
-								code: code,
-								spread: that.$Cache.get('spread'),
-								spid: that.globalData.code
-							})
-							.then(res => {
-								uni.setStorageSync('authIng', false)
-								uni.setStorageSync('snRouter', decodeURIComponent(decodeURIComponent(option.query
-									.back_url)));
-								if (res.data.key !== undefined && res.data.key) {
-									this.$Cache.set('snsapiKey', res.data.key);
-								} else {
+			// 		if (code && code != uni.getStorageSync('snsapiCode') && location.pathname.indexOf(
+			// 				'/pages/users/wechat_login/index') === -1) {
+			// 			// 存储静默授权code
+			// 			uni.setStorageSync('snsapiCode', code);
+			// 			let spread = that.globalData.spid ? that.globalData.spid : '';
+			// 			uni.setStorageSync('authIng', true)
+			// 			silenceAuth({
+			// 					code: code,
+			// 					spread: that.$Cache.get('spread'),
+			// 					spid: that.globalData.code
+			// 				})
+			// 				.then(res => {
+			// 					uni.setStorageSync('authIng', false)
+			// 					uni.setStorageSync('snRouter', decodeURIComponent(decodeURIComponent(option.query
+			// 						.back_url)));
+			// 					if (res.data.key !== undefined && res.data.key) {
+			// 						this.$Cache.set('snsapiKey', res.data.key);
+			// 					} else {
 
-									let time = res.data.expires_time - this.$Cache.time();
-									this.$store.commit('LOGIN', {
-										token: res.data.token,
-										time: time
-									});
-									this.$Cache.set('WX_AUTH', code);
-									this.$store.commit('SETUID', res.data.userInfo.uid);
-									this.$store.commit('UPDATE_USERINFO', res.data.userInfo);
+			// 						let time = res.data.expires_time - this.$Cache.time();
+			// 						this.$store.commit('LOGIN', {
+			// 							token: res.data.token,
+			// 							time: time
+			// 						});
+			// 						this.$Cache.set('WX_AUTH', code);
+			// 						this.$store.commit('SETUID', res.data.userInfo.uid);
+			// 						this.$store.commit('UPDATE_USERINFO', res.data.userInfo);
 
-									if (option.query.back_url) {
-										location.replace(decodeURIComponent(decodeURIComponent(option.query
-											.back_url)));
-									}
-								}
-							})
-							.catch(error => {
-								uni.setStorageSync('authIng', false)
-								let url = ''
-								if (option.query.back_url instanceof Array) {
-									url = option.query.back_url[option.query.back_url.length - 1]
-								} else {
-									url = option.query.back_url
-								}
-								if (!that.$Cache.has('snsapiKey')) {
-									if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
-										Auth.oAuth(snsapiBase, url);
-									}
-								}
-							});
-					} else {
-						if (!this.$Cache.has('snsapiKey')) {
-							if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
-								Auth.oAuth(snsapiBase, urlData);
-							}
-						}
-					}
-				} else {
-					if (option.query.back_url) {
-						location.replace(uni.getStorageSync('snRouter'));
-					}
-				}
-			}
+			// 						if (option.query.back_url) {
+			// 							location.replace(decodeURIComponent(decodeURIComponent(option.query
+			// 								.back_url)));
+			// 						}
+			// 					}
+			// 				})
+			// 				.catch(error => {
+			// 					uni.setStorageSync('authIng', false)
+			// 					let url = ''
+			// 					if (option.query.back_url instanceof Array) {
+			// 						url = option.query.back_url[option.query.back_url.length - 1]
+			// 					} else {
+			// 						url = option.query.back_url
+			// 					}
+			// 					if (!that.$Cache.has('snsapiKey')) {
+			// 						if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
+			// 							Auth.oAuth(snsapiBase, url);
+			// 						}
+			// 					}
+			// 				});
+			// 		} else {
+			// 			if (!this.$Cache.has('snsapiKey')) {
+			// 				if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
+			// 					Auth.oAuth(snsapiBase, urlData);
+			// 				}
+			// 			}
+			// 		}
+			// 	} else {
+			// 		if (option.query.back_url) {
+			// 			location.replace(uni.getStorageSync('snRouter'));
+			// 		}
+			// 	}
+			// }
 			// #endif
 			// #ifdef MP
 			// 小程序静默授权

+ 1 - 1
template/uni-app/androidPrivacy.json

@@ -3,7 +3,7 @@
     "prompt" : "template",
     "title" : "用户协议与隐私政策",
     "message" : "\t请务必审慎阅读、充分理解“用户协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>
- 你可以阅读 <a href=\"/pages/columnGoods/static/yhxy.html\">《用户协议》</a>与 <a href=\"/pages/columnGoods/static/yszc.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
+ 你可以阅读 <a href=\"pages/columnGoods/static/yhxy.html\">《用户协议》</a>与 <a href=\"pages/columnGoods/static/yszc.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
     "buttonAccept" : "同意并接受",
     "buttonRefuse" : "暂不同意",
     "second" : {

+ 188 - 182
template/uni-app/components/d_goodList/index.vue

@@ -1,183 +1,189 @@
-<template>
-	<view class="goodsList">
-		<view class="item" v-for="(item,index) in tempArr" :key='index' @click="goDetail(item)">
-			<view class="pictrue">
-				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
-				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
-				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
-				<image :src="item.recommend_image" mode="" v-if="item.recommend_image"></image>
-				<image :src="item.image" mode="" v-else></image>
-			</view>
-			<view class="text line2">{{item.store_name}}</view>
-			<view class="bottom acea-row row-between-wrapper">
-				<view class="sales acea-row row-middle">
-					<view class="money font-color"><text>¥</text>{{item.price}}</view>
-					<view>已售 {{item.sales}}</view>
-				</view>
-				<view v-if="item.stock>0">
-					<view class="bnt"
-						v-if="(item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3') || item.is_virtual) || !item.cart_button">
-						立即购买</view>
-					<view v-else>
-						<!-- 多规格 -->
-						<view class="bnt" @click.stop="goCartDuo(item)" v-if="item.spec_type">
-							加入购物车
-							<view class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</view>
-						</view>
-						<!-- 单规格 -->
-						<view class="bnt" v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)">
-							加入购物车</view>
-						<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
-							<view class="pictrue iconfont icon-jianhao" @click.stop="CartNumDes(index,item)"></view>
-							<view class="num">{{item.cart_num}}</view>
-							<view class="pictrue iconfont icon-jiahao" @click.stop="CartNumAdd(index,item)"></view>
-						</view>
-					</view>
-				</view>
-				<view class="bnt end" v-else>已售罄</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'd_goodList',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			tempArr: {
-				type: Array,
-				default: []
-			},
-			isLogin: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {};
-		},
-		created() {},
-		mounted() {},
-		methods: {
-			goDetail(item) {
-				this.$emit('detail', item);
-			},
-			goCartDuo(item) {
-				this.$emit('gocartduo', item);
-			},
-			goCartDan(item, index) {
-				this.$emit('gocartdan', item, index);
-			},
-			CartNumDes(index, item) {
-				this.$emit('ChangeCartNumDan', false, index, item);
-			},
-			CartNumAdd(index, item) {
-				this.$emit('ChangeCartNumDan', true, index, item);
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.goodsList {
-		padding: 0 30rpx;
-
-		.item {
-			width: 100%;
-			box-sizing: border-box;
-			margin-bottom: 63rpx;
-
-			.pictrue {
-				width: 100%;
-				height: 290rpx;
-				border-radius: 16rpx;
-				position: relative;
-
-				image {
-					width: 100%;
-					height: 100%;
-					border-radius: 10rpx;
-				}
-			}
-
-			.text {
-				font-size: 30rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #282828;
-				margin: 20rpx 0;
-			}
-
-			.bottom {
-				.sales {
-					font-size: 22rpx;
-					color: #8E8E8E;
-
-					.money {
-						font-size: 42rpx;
-						font-weight: bold;
-						margin-right: 18rpx;
-
-						text {
-							font-size: 28rpx;
-						}
-					}
-				}
-
-				.cart {
-					height: 56rpx;
-
-					.pictrue {
-						color: var(--view-theme);
-						font-size: 46rpx;
-						width: 50rpx;
-						height: 50rpx;
-						text-align: center;
-						line-height: 50rpx;
-					}
-
-					.num {
-						font-size: 30rpx;
-						color: #282828;
-						font-weight: bold;
-						width: 80rpx;
-						text-align: center;
-					}
-				}
-
-				.bnt {
-					padding: 0 30rpx;
-					height: 56rpx;
-					line-height: 56rpx;
-					background: var(--view-theme);
-					border-radius: 42rpx;
-					font-size: 26rpx;
-					color: #fff;
-					position: relative;
-
-					&.end {
-						background: rgba(203, 203, 203, 1);
-					}
-
-					.num {
-						background-color: var(--view-priceColor);
-						min-width: 12rpx;
-						color: #fff;
-						border-radius: 15px;
-						position: absolute;
-						right: -14rpx;
-						top: -15rpx;
-						font-size: 22rpx;
-						padding: 0 10rpx;
-						height: 34rpx;
-						line-height: 34rpx;
-					}
-				}
-			}
-		}
-	}
+<template>
+	<view class="goodsList">
+		<view class="item" v-for="(item,index) in tempArr" :key='index' @click="goDetail(item)">
+			<view class="pictrue">
+				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
+				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
+				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
+				<image :src="item.recommend_image" mode="" v-if="item.recommend_image"></image>
+				<image :src="item.image" mode="" v-else></image>
+			</view>
+			<view class="text line2">{{item.store_name}}</view>
+			<view class="bottom acea-row row-between-wrapper">
+				<view class="sales acea-row row-middle">
+					<view class="money font-color"><text>¥</text>{{item.price}}</view>
+					<view>已售 {{item.sales}}</view>
+				</view>
+				<view v-if="item.stock>0">
+					<view class="bnt"
+						v-if="(item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3') || item.is_virtual) || !item.cart_button">
+						立即购买</view>
+					<view v-else>
+						<!-- 多规格 -->
+						<view class="bnt" @click.stop="goCartDuo(item)" v-if="item.spec_type">
+							加入购物车
+							<view class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</view>
+						</view>
+						<!-- 单规格 -->
+						<view class="bnt" v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)">
+							加入购物车</view>
+						<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
+							<view class="pictrue iconfont icon-jianhao" @click.stop="CartNumDes(index,item)"></view>
+							<view class="num">{{item.cart_num}}</view>
+							<view class="pictrue iconfont icon-jiahao" @click.stop="CartNumAdd(index,item)"></view>
+						</view>
+					</view>
+				</view>
+				<view class="bnt end" v-else>已售罄</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'd_goodList',
+		props: {
+			dataConfig: {
+				type: Object,
+				default: () => {}
+			},
+			tempArr: {
+				type: Array,
+				default: []
+			},
+			isLogin: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				addIng: false
+			};
+		},
+		created() {},
+		mounted() {},
+		methods: {
+			goDetail(item) {
+				this.$emit('detail', item);
+			},
+			goCartDuo(item) {
+				this.$emit('gocartduo', item);
+			},
+			goCartDan(item, index) {
+				this.$emit('gocartdan', item, index);
+			},
+			CartNumDes(index, item) {
+				if (this.addIng) return
+				this.addIng = true
+				this.$emit('ChangeCartNumDan', false, index, item);
+			},
+			CartNumAdd(index, item) {
+				if (this.addIng) return
+				this.addIng = true
+				this.$emit('ChangeCartNumDan', true, index, item);
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.goodsList {
+		padding: 0 30rpx;
+
+		.item {
+			width: 100%;
+			box-sizing: border-box;
+			margin-bottom: 63rpx;
+
+			.pictrue {
+				width: 100%;
+				height: 290rpx;
+				border-radius: 16rpx;
+				position: relative;
+
+				image {
+					width: 100%;
+					height: 100%;
+					border-radius: 10rpx;
+				}
+			}
+
+			.text {
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #282828;
+				margin: 20rpx 0;
+			}
+
+			.bottom {
+				.sales {
+					font-size: 22rpx;
+					color: #8E8E8E;
+
+					.money {
+						font-size: 42rpx;
+						font-weight: bold;
+						margin-right: 18rpx;
+
+						text {
+							font-size: 28rpx;
+						}
+					}
+				}
+
+				.cart {
+					height: 56rpx;
+
+					.pictrue {
+						color: var(--view-theme);
+						font-size: 46rpx;
+						width: 50rpx;
+						height: 50rpx;
+						text-align: center;
+						line-height: 50rpx;
+					}
+
+					.num {
+						font-size: 30rpx;
+						color: #282828;
+						font-weight: bold;
+						width: 80rpx;
+						text-align: center;
+					}
+				}
+
+				.bnt {
+					padding: 0 30rpx;
+					height: 56rpx;
+					line-height: 56rpx;
+					background: var(--view-theme);
+					border-radius: 42rpx;
+					font-size: 26rpx;
+					color: #fff;
+					position: relative;
+
+					&.end {
+						background: rgba(203, 203, 203, 1);
+					}
+
+					.num {
+						background-color: var(--view-priceColor);
+						min-width: 12rpx;
+						color: #fff;
+						border-radius: 15px;
+						position: absolute;
+						right: -14rpx;
+						top: -15rpx;
+						font-size: 22rpx;
+						padding: 0 10rpx;
+						height: 34rpx;
+						line-height: 34rpx;
+					}
+				}
+			}
+		}
+	}
 </style>

+ 230 - 198
template/uni-app/components/goodClass/index.vue

@@ -1,199 +1,231 @@
-<template>
-	<view class="goodsList">
-		<view class="item acea-row row-between-wrapper" v-for="(item,index) in tempArr" :key='index' @click="goDetail(item)">
-			<view class="pictrue">
-				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
-				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
-				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
-				<image :src="item.image" mode=""></image>
-			</view>
-			<view class="pictxt">
-				<view class="text line2">{{item.store_name}}</view>
-				<view class="bottom acea-row row-between-wrapper">
-					<view class="money font-color">
-						<text class="sign">¥</text>{{item.price}}
-						<!-- <span class="vip" v-if="item.vip_price">
-							<image src="../../static/images/vip01.png"></image>
-							¥{{item.vip_price}}
-						</span>
-						<text class="y_money" v-else>¥{{item.ot_price}}</text> -->
-					</view>
-					<view v-if="item.stock>0">
-					    <view class="iconfont icon-gouwuche6 acea-row row-center-wrapper" v-if="item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3')"></view>
-						<view v-else>
-							<!-- 多规格 -->
-							<view class="bnt acea-row row-center-wrapper" @click.stop="goCartDuo(item)" v-if="item.spec_type">
-								选规格
-								<text class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</text>
-							</view>
-							<!-- 单规格 -->
-							<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper" v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)"></view>
-							<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
-								<view class="pictrue iconfont icon-jianhao acea-row row-center-wrapper" @click.stop="CartNumDes(index,item)"></view>
-								<view class="num">{{item.cart_num}}</view>
-								<view class="pictrue iconfont icon-jiahao acea-row row-center-wrapper" @click.stop="CartNumAdd(index,item)"></view>
-							</view>
-						</view>
-					</view>
-					<view class="bnt acea-row row-center-wrapper end" v-else>已售罄</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'd_goodList',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			tempArr:{
-				type: Array,
-				default:[]
-			},
-			isLogin:{
-				type: Boolean,
-				default:false
-			}
-		},
-		data() {
-			return {
-			};
-		},
-		created() {},
-		mounted() {},
-		methods: {
-			goDetail(item){
-				this.$emit('detail',item);
-			},
-			goCartDuo(item){
-				this.$emit('gocartduo',item);
-			},
-			goCartDan(item,index){
-				this.$emit('gocartdan',item,index);
-			},
-			CartNumDes(index,item){
-				this.$emit('ChangeCartNumDan', false,index,item);
-			},
-			CartNumAdd(index,item){
-				this.$emit('ChangeCartNumDan', true,index,item);
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.goodsList{
-		padding: 0 30rpx;
-		.item{
-			width: 100%;
-			box-sizing: border-box;
-			margin-bottom: 63rpx;
-			.pictrue{
-				width: 140rpx;
-				height: 140rpx;
-				border-radius: 10rpx;
-				position: relative;
-				border-radius: 22rpx;
-				image{
-					width: 100%;
-					height: 100%;
-					border-radius: 22rpx;
-				}
-			}
-			.pictxt{
-				width: 372rpx;
-				.text{
-					font-size:26rpx;
-					font-family:PingFang SC;
-					font-weight:500;
-					color: #333333;
-				}
-				.bottom{
-					margin-top: 22rpx;
-					.money{
-						font-size: 34rpx;
-						font-weight: 800;
-						.sign{
-							font-size: 24rpx;
-						}
-						.y_money{
-							font-size: 20rpx;
-							color: #999999;
-							margin-left: 14rpx;
-							font-weight: normal;
-							text-decoration: line-through;
-						}
-						.vip{
-							font-size: 22rpx;
-							color: #333333;
-							font-weight: normal;
-							margin-left: 14rpx;
-							image{
-								width: 38rpx;
-								height: 18rpx;
-								margin-right: 6rpx;
-							}
-						}
-					}
-					.cart{
-						height: 46rpx;
-						.pictrue{
-							color: var(--view-theme);
-							font-size:46rpx;
-							width: 46rpx;
-							height: 46rpx;
-							text-align: center;
-							line-height: 46rpx;
-							&.icon-jiahao{
-								 color: var(--view-theme);
-							}
-						}
-						.num{
-							font-size: 30rpx;
-							color: #333333;
-							font-weight: bold;
-							width: 60rpx;
-							text-align: center;
-						}
-					}
-					.icon-gouwuche6{
-						width: 46rpx;
-						height: 46rpx;
-						background-color: var(--view-theme);
-						border-radius: 50%;
-						color: #fff;
-						font-size: 30rpx;
-					}
-					.bnt{
-						padding: 0 20rpx;
-						height: 45rpx;
-						background:var(--view-theme);
-						border-radius:23rpx;
-						font-size: 22rpx;
-						color: #fff;
-						position: relative;
-						&.end{
-							background:#cccccc;
-						}
-						.num{
-							min-width: 14rpx;
-							background-color: #fff;
-							color: var(--view-theme);
-							border-radius: 15px;
-							position: absolute;
-							right: -13rpx;
-							top: -11rpx;
-							font-size: 16rpx;
-							padding: 0 10rpx;
-							border: 1px solid var(--view-theme);
-						}
-					}
-				}
-			}
-		}
-	}
+<template>
+	<view class="goodsList">
+		<view class="item acea-row row-between-wrapper" v-for="(item,index) in tempArr" :key='index'
+			@click="goDetail(item)">
+			<view class="pictrue">
+				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
+				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
+				<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
+				<image :src="item.image" mode=""></image>
+			</view>
+			<view class="pictxt">
+				<view class="text line2">{{item.store_name}}</view>
+				<view class="bottom acea-row row-between-wrapper">
+					<view class="money font-color">
+						<text class="sign">¥</text>{{item.price}}
+						<!-- <span class="vip" v-if="item.vip_price">
+							<image src="../../static/images/vip01.png"></image>
+							¥{{item.vip_price}}
+						</span>
+						<text class="y_money" v-else>¥{{item.ot_price}}</text> -->
+					</view>
+					<view v-if="item.stock>0">
+						<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper"
+							v-if="item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3')">
+						</view>
+						<view v-else>
+							<!-- 多规格 -->
+							<view class="bnt acea-row row-center-wrapper" @click.stop="goCartDuo(item)"
+								v-if="item.spec_type">
+								选规格
+								<text class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</text>
+							</view>
+							<!-- 单规格 -->
+							<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper"
+								v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)"></view>
+							<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
+								<view class="pictrue iconfont icon-jianhao acea-row row-center-wrapper"
+									@click.stop="CartNumDes(index,item)"></view>
+								<view class="num">{{item.cart_num}}</view>
+								<view class="pictrue iconfont icon-jiahao acea-row row-center-wrapper"
+									@click.stop="CartNumAdd(index,item)"></view>
+							</view>
+						</view>
+					</view>
+					<view class="bnt acea-row row-center-wrapper end" v-else>已售罄</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'd_goodList',
+		props: {
+			dataConfig: {
+				type: Object,
+				default: () => {}
+			},
+			tempArr: {
+				type: Array,
+				default: []
+			},
+			isLogin: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				addIng: false
+			};
+		},
+		created() {},
+		mounted() {},
+		methods: {
+			goDetail(item) {
+				this.$emit('detail', item);
+			},
+			goCartDuo(item) {
+				this.$emit('gocartduo', item);
+			},
+			goCartDan(item, index) {
+				this.$emit('gocartdan', item, index);
+			},
+			CartNumDes(index, item) {
+				if (this.addIng) return
+				this.addIng = true
+				this.$emit('ChangeCartNumDan', false, index, item);
+			},
+			CartNumAdd(index, item) {
+				console.log('2')
+				if (this.addIng) return
+				this.addIng = true
+				this.$emit('ChangeCartNumDan', true, index, item);
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.goodsList {
+		padding: 0 30rpx;
+
+		.item {
+			width: 100%;
+			box-sizing: border-box;
+			margin-bottom: 63rpx;
+
+			.pictrue {
+				width: 140rpx;
+				height: 140rpx;
+				border-radius: 10rpx;
+				position: relative;
+				border-radius: 22rpx;
+
+				image {
+					width: 100%;
+					height: 100%;
+					border-radius: 22rpx;
+				}
+			}
+
+			.pictxt {
+				width: 372rpx;
+
+				.text {
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				.bottom {
+					margin-top: 22rpx;
+
+					.money {
+						font-size: 34rpx;
+						font-weight: 800;
+
+						.sign {
+							font-size: 24rpx;
+						}
+
+						.y_money {
+							font-size: 20rpx;
+							color: #999999;
+							margin-left: 14rpx;
+							font-weight: normal;
+							text-decoration: line-through;
+						}
+
+						.vip {
+							font-size: 22rpx;
+							color: #333333;
+							font-weight: normal;
+							margin-left: 14rpx;
+
+							image {
+								width: 38rpx;
+								height: 18rpx;
+								margin-right: 6rpx;
+							}
+						}
+					}
+
+					.cart {
+						height: 46rpx;
+
+						.pictrue {
+							color: var(--view-theme);
+							font-size: 46rpx;
+							width: 46rpx;
+							height: 46rpx;
+							text-align: center;
+							line-height: 46rpx;
+
+							&.icon-jiahao {
+								color: var(--view-theme);
+							}
+						}
+
+						.num {
+							font-size: 30rpx;
+							color: #333333;
+							font-weight: bold;
+							width: 60rpx;
+							text-align: center;
+						}
+					}
+
+					.icon-gouwuche6 {
+						width: 46rpx;
+						height: 46rpx;
+						background-color: var(--view-theme);
+						border-radius: 50%;
+						color: #fff;
+						font-size: 30rpx;
+					}
+
+					.bnt {
+						padding: 0 20rpx;
+						height: 45rpx;
+						background: var(--view-theme);
+						border-radius: 23rpx;
+						font-size: 22rpx;
+						color: #fff;
+						position: relative;
+
+						&.end {
+							background: #cccccc;
+						}
+
+						.num {
+							min-width: 14rpx;
+							background-color: #fff;
+							color: var(--view-theme);
+							border-radius: 15px;
+							position: absolute;
+							right: -13rpx;
+							top: -11rpx;
+							font-size: 16rpx;
+							padding: 0 10rpx;
+							border: 1px solid var(--view-theme);
+						}
+					}
+				}
+			}
+		}
+	}
 </style>

+ 23 - 21
template/uni-app/libs/login.js

@@ -75,14 +75,16 @@ function _toLogin(push, pathLogin) {
 		} else {
 			urlData += '?go_longin=1';
 		}
-		if (!Cache.has('snsapiKey')) {
-			auth.oAuth('snsapi_base', urlData);
-		} else {
-			uni.navigateTo({
-				url: '/pages/users/wechat_login/index',
-			});
-		}
-
+		// if (!Cache.has('snsapiKey')) {
+		// 	auth.oAuth('snsapi_base', urlData);
+		// } else {
+		// 	uni.navigateTo({
+		// 		url: '/pages/users/wechat_login/index',
+		// 	});
+		// }
+		uni.navigateTo({
+			url: '/pages/users/wechat_login/index',
+		});
 
 	} else {
 		uni.navigateTo({
@@ -92,19 +94,19 @@ function _toLogin(push, pathLogin) {
 	// #endif
 
 	// #ifdef MP 
-	// uni.navigateTo({
-	// 	url: '/pages/users/wechat_login/index'
-	// })
-	Routine.getCode()
-		.then(code => {
-			console.log(code)
-			Routine.silenceAuth(code).then(res => {
-				console.log(res)
-			})
-		})
-		.catch(err => {
-			uni.hideLoading();
-		});
+	uni.navigateTo({
+		url: '/pages/users/wechat_login/index'
+	})
+	// Routine.getCode()
+	// 	.then(code => {
+	// 		console.log(code)
+	// 		Routine.silenceAuth(code).then(res => {
+	// 			console.log(res)
+	// 		})
+	// 	})
+	// 	.catch(err => {
+	// 		uni.hideLoading();
+	// 	});
 	// #endif
 
 	// #ifdef APP-PLUS

+ 10 - 1
template/uni-app/manifest.json

@@ -50,7 +50,14 @@
                     "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                 ],
-                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
+                "permissionExternalStorage" : {
+                    "request" : "none",
+                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+                },
+                "permissionPhoneState" : {
+                    "request" : "none" //拨打电话权限关闭
+                }
             },
             /* ios打包配置 */
             "ios" : {
@@ -216,3 +223,5 @@
     },
     "_spaceID" : "679f0930-8f60-425c-9033-8c135f397ea5"
 }
+/* ios打包配置 */
+

+ 7 - 1
template/uni-app/pages.json

@@ -961,7 +961,13 @@
 						// #endif
 					}
 				}
-			]
+			],
+			"plugins": {
+				"live-player-plugin": {
+					"version": "1.3.2",
+					"provider": "wx2b03c6e691cd7370"
+				}
+			}
 		},
 		{
 			"root": "pages/goods_details",

+ 106 - 107
template/uni-app/pages/goods_cate/goods_cate.vue

@@ -1,108 +1,107 @@
-<template>
-	<view :style="colorStyle">
-		<goodsCate1 v-show="category==1" ref="classOne"></goodsCate1>
-		<goodsCate2 v-show="category==2" ref="classTwo" @jumpIndex="jumpIndex"></goodsCate2>
-		<goodsCate3 v-show="category==3" ref="classThree" @jumpIndex="jumpIndex"></goodsCate3>
-		<!-- <tabBar v-show="category == 1" :pagePath="'/pages/goods_cate/goods_cate'"></tabBar> -->
-	</view>
-</template>
-
-<script>
-	import colors from "@/mixins/color";
-	import goodsCate1 from './goods_cate1';
-	import goodsCate2 from './goods_cate2';
-	import goodsCate3 from './goods_cate3';
-	import {
-		colorChange
-	} from '@/api/api.js';
-	import {
-		mapGetters
-	} from 'vuex';
-	import tabBar from "@/pages/index/visualization/components/tabBar.vue"
-	export default {
-		computed: mapGetters(['isLogin', 'uid']),
-		components: {
-			goodsCate1,
-			goodsCate2,
-			goodsCate3,
-			tabBar
-		},
-		mixins: [colors],
-		data() {
-			return {
-				category: '',
-				is_diy: uni.getStorageSync('is_diy'),
-				status: 0,
-			}
-		},
-		onLoad() {
-			this.classStyle();
-		},
-		onReady() {
-
-		},
-		onShow() {
-			if (this.status == 2 || this.status == 3) {
-				uni.hideTabBar()
-			} else if (this.status == 1) {
-				if (!this.is_diy) {
-					uni.hideTabBar()
-				} else {
-					this.$refs.classOne.getNav();
-				}
-			}
-		},
-		methods: {
-			jumpIndex() {
-				if (this.is_diy) {
-					if (!uni.getStorageSync('FOOTER_BAR')) {
-						uni.showTabBar()
-					}
-				}
-			},
-			classStyle() {
-				colorChange('category').then(res => {
-					let status = res.data.status;
-					this.status = res.data.status
-					this.category = status
-					if (status == 2) {
-						if (this.isLogin) {
-							this.$refs.classTwo.getCartNum();
-							this.$refs.classTwo.getCartList(1);
-						}
-						this.$refs.classTwo.getAllCategory()
-					}
-					if (status == 3) {
-						if (this.isLogin) {
-							this.$refs.classThree.getCartNum();
-							this.$refs.classThree.getCartList(1);
-						}
-						this.$refs.classThree.getAllCategory()
-					}
-					if (status == 2 || status == 3) {
-						uni.hideTabBar()
-					} else {
-						if (!this.is_diy) {
-							uni.hideTabBar()
-						} else {
-							this.$refs.classOne.getNav();
-						}
-					}
-				})
-			}
-		},
-		onReachBottom: function() {
-			if (this.category == 2) {
-				this.$refs.classTwo.productslist();
-			}
-			if (this.category == 3) {
-				this.$refs.classThree.productslist();
-			}
-		}
-	}
-</script>
-<style scoped lang="scss">
-	/deep/.mask {
-		z-index: 99;
-	}
+<template>
+	<view :style="colorStyle">
+		<goodsCate1 v-show="category==1" ref="classOne"></goodsCate1>
+		<goodsCate2 v-show="category==2" ref="classTwo" @jumpIndex="jumpIndex"></goodsCate2>
+		<goodsCate3 v-show="category==3" ref="classThree" @jumpIndex="jumpIndex"></goodsCate3>
+	</view>
+</template>
+
+<script>
+	import colors from "@/mixins/color";
+	import goodsCate1 from './goods_cate1';
+	import goodsCate2 from './goods_cate2';
+	import goodsCate3 from './goods_cate3';
+	import {
+		colorChange
+	} from '@/api/api.js';
+	import {
+		mapGetters
+	} from 'vuex';
+	import tabBar from "@/pages/index/visualization/components/tabBar.vue"
+	export default {
+		computed: mapGetters(['isLogin', 'uid']),
+		components: {
+			goodsCate1,
+			goodsCate2,
+			goodsCate3,
+			tabBar
+		},
+		mixins: [colors],
+		data() {
+			return {
+				category: '',
+				is_diy: uni.getStorageSync('is_diy'),
+				status: 0,
+			}
+		},
+		onLoad() {
+			this.classStyle();
+		},
+		onReady() {
+
+		},
+		onShow() {
+			if (this.status == 2 || this.status == 3) {
+				uni.hideTabBar();
+			} else if (this.status == 1) {
+				if (!this.is_diy) {
+					uni.hideTabBar();
+				} else {
+					this.$refs.classOne.getNav();
+				}
+			}
+		},
+		methods: {
+			jumpIndex() {
+				if (this.is_diy) {
+					if (!uni.getStorageSync('FOOTER_BAR')) {
+						uni.showTabBar()
+					}
+				}
+			},
+			classStyle() {
+				colorChange('category').then(res => {
+					let status = res.data.status;
+					this.status = res.data.status
+					this.category = status
+					if (status == 2) {
+						if (this.isLogin) {
+							this.$refs.classTwo.getCartNum();
+							this.$refs.classTwo.getCartList(1);
+						}
+						this.$refs.classTwo.getAllCategory()
+					}
+					if (status == 3) {
+						if (this.isLogin) {
+							this.$refs.classThree.getCartNum();
+							this.$refs.classThree.getCartList(1);
+						}
+						this.$refs.classThree.getAllCategory()
+					}
+					if (status == 2 || status == 3) {
+						uni.hideTabBar()
+					} else {
+						if (!this.is_diy) {
+							uni.hideTabBar()
+						} else {
+							this.$refs.classOne.getNav();
+						}
+					}
+				})
+			}
+		},
+		onReachBottom: function() {
+			if (this.category == 2) {
+				this.$refs.classTwo.productslist();
+			}
+			if (this.category == 3) {
+				this.$refs.classThree.productslist();
+			}
+		}
+	}
+</script>
+<style scoped lang="scss">
+	/deep/.mask {
+		z-index: 99;
+	}
 </style>

Разница между файлами не показана из-за своего большого размера
+ 1037 - 1036
template/uni-app/pages/goods_cate/goods_cate2.vue


Разница между файлами не показана из-за своего большого размера
+ 1091 - 1088
template/uni-app/pages/goods_cate/goods_cate3.vue


+ 55 - 54
template/uni-app/pages/user/index.vue

@@ -424,19 +424,18 @@
 					}
 				})
 			}
-
 			// #ifdef MP
 			// 小程序静默授权
 			if (!this.$store.getters.isLogin) {
-				Routine.getCode()
-					.then(code => {
-						Routine.silenceAuth(code).then(res => {
-							this.onLoadFun();
-						})
-					})
-					.catch(res => {
-						uni.hideLoading();
-					});
+				// Routine.getCode()
+				// 	.then(code => {
+				// 		Routine.silenceAuth(code).then(res => {
+				// 			this.onLoadFun();
+				// 		})
+				// 	})
+				// 	.catch(res => {
+				// 		uni.hideLoading();
+				// 	});
 			}
 			// #endif
 
@@ -569,50 +568,52 @@
 			},
 			//小程序授权api替换 getUserInfo
 			getUserProfile() {
-				uni.showLoading({
-					title: '获取中'
-				});
-				let self = this;
-				Routine.getUserProfile()
-					.then(res => {
-						Routine.getCode()
-							.then(code => {
-								let userInfo = res.userInfo;
-								userInfo.code = code;
-								userInfo.spread_spid = app.globalData.spid; //获取推广人ID
-								userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
-								Routine.authUserInfo(userInfo)
-									.then(res => {
-										if (res.data.key !== undefined && res.data.key) {
-											uni.hideLoading();
-											self.authKey = res.data.key;
-											self.isPhoneBox = true;
-										} else {
-											uni.hideLoading();
-											let time = res.data.expires_time - self.$Cache.time();
-											self.$store.commit('LOGIN', {
-												token: res.data.token,
-												time: time
-											});
-											this.getUserInfo()
-										}
-									})
-									.catch(res => {
-										uni.hideLoading();
-										uni.showToast({
-											title: res.msg,
-											icon: 'none',
-											duration: 2000
-										});
-									});
-							})
-							.catch(res => {
-								uni.hideLoading();
-							});
-					})
-					.catch(res => {
-						uni.hideLoading();
-					});
+				console.log('去登录')
+				toLogin();
+				// uni.showLoading({
+				// 	title: '获取中'
+				// });
+				// let self = this;
+				// Routine.getUserProfile()
+				// 	.then(res => {
+				// 		Routine.getCode()
+				// 			.then(code => {
+				// 				let userInfo = res.userInfo;
+				// 				userInfo.code = code;
+				// 				userInfo.spread_spid = app.globalData.spid; //获取推广人ID
+				// 				userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
+				// 				Routine.authUserInfo(userInfo)
+				// 					.then(res => {
+				// 						if (res.data.key !== undefined && res.data.key) {
+				// 							uni.hideLoading();
+				// 							self.authKey = res.data.key;
+				// 							self.isPhoneBox = true;
+				// 						} else {
+				// 							uni.hideLoading();
+				// 							let time = res.data.expires_time - self.$Cache.time();
+				// 							self.$store.commit('LOGIN', {
+				// 								token: res.data.token,
+				// 								time: time
+				// 							});
+				// 							this.getUserInfo()
+				// 						}
+				// 					})
+				// 					.catch(res => {
+				// 						uni.hideLoading();
+				// 						uni.showToast({
+				// 							title: res.msg,
+				// 							icon: 'none',
+				// 							duration: 2000
+				// 						});
+				// 					});
+				// 			})
+				// 			.catch(res => {
+				// 				uni.hideLoading();
+				// 			});
+				// 	})
+				// 	.catch(res => {
+				// 		uni.hideLoading();
+				// 	});
 			},
 			/**
 			 * 

+ 2 - 1
template/uni-app/pages/users/order_confirm/index.vue

@@ -820,7 +820,8 @@
 					} else {
 						that.cartArr[3].payStatus = 1
 					}
-
+					//好友代付是否开启
+					that.cartArr[4].payStatus = res.data.friend_pay_status || 0;
 					// that.$set(that, 'cartArr', that.cartArr);
 					that.$set(that, 'ChangePrice', that.totalPrice);
 					that.getBargainId();

+ 4 - 1
template/uni-app/pages/users/order_details/index.vue

@@ -221,7 +221,7 @@
 				</view>
 			</view>
 			<!-- 退款订单详情 -->
-			<view class='wrapper' v-if="isGoodsReturn">
+			<view class='wrapper' v-if="isGoodsReturn && orderInfo.cartInfo[0].productInfo.virtual_type != 3">
 				<view class='item acea-row row-between'>
 					<view>收货人:</view>
 					<view class='conter'>{{orderInfo.real_name}}</view>
@@ -956,6 +956,9 @@
 						if (item.value == 'yue') {
 							item.payStatus = res.data.yue_pay_status == 1 ? true : false;
 						}
+						if (item.value == 'friend') {
+							item.payStatus = res.data.friend_pay_status == 1 ? true : false;
+						}
 					});
 					that.getOrderStatus();
 				}).catch(err => {

+ 3 - 0
template/uni-app/pages/users/order_list/index.vue

@@ -285,6 +285,9 @@
 						}
 						if (item.value == 'yue') {
 							item.payStatus = res.data.yue_pay_status == 1 ? true : false;
+						}
+						if (item.value == 'friend') {
+							item.payStatus = res.data.friend_pay_status == 1 ? true : false;
 						}
 					});
 					//#ifdef MP

+ 1 - 1
template/uni-app/pages/users/user_info/index.vue

@@ -125,7 +125,7 @@
 				</view>
 
 				<button class='modifyBnt bg-color' formType="submit">保存修改</button>
-				<!-- #ifdef H5 || APP-PLUS -->
+				<!-- #ifdef H5 || APP-PLUS || MP -->
 				<view class="logOut cartcolor acea-row row-center-wrapper" @click="outLogin">退出登录</view>
 				<!-- #endif -->
 				<!-- #ifdef APP-PLUS -->

+ 4 - 4
template/uni-app/pages/users/user_spread_user/index.vue

@@ -27,7 +27,7 @@
 					</view>
 				</view>
 				<!-- <view class="apply"
-					v-if="(userInfo.is_division && userInfo.division_invite && userInfo.division_status) || (!userInfo.is_division && !userInfo.is_agent) && userInfo.id">
+					v-if="userInfo.division_open && ((userInfo.is_division && userInfo.division_invite && userInfo.division_status) || (!userInfo.is_division && !userInfo.is_agent))">
 					<view v-if="userInfo.is_division">邀请码:{{userInfo.division_invite}}</view>
 					<view v-if="!userInfo.is_division && !userInfo.is_agent">
 						<navigator url='/pages/annex/settled/index' hover-class="none">
@@ -59,12 +59,12 @@
 					<view>佣金明细</view>
 				</navigator>
 
-				<navigator  v-if="!userInfo.is_agent && !userInfo.is_division" url='/pages/users/promoter-order/index' hover-class="none"
+				<navigator  v-if="(userInfo.division_open && !userInfo.is_agent && !userInfo.is_division) || !userInfo.division_open" url='/pages/users/promoter-order/index' hover-class="none"
 					class='item acea-row row-center-wrapper row-column'>
 					<text class='iconfont icon-dingdan'></text>
 					<view>推广人订单</view>
 				</navigator>
-				<navigator v-if="userInfo.is_agent || userInfo.is_division" url='/pages/users/promoter-order/index?type=1' hover-class="none"
+				<navigator v-if="userInfo.division_open && (userInfo.is_agent || userInfo.is_division)" url='/pages/users/promoter-order/index?type=1' hover-class="none"
 					class='item acea-row row-center-wrapper row-column'>
 					<text class='iconfont icon-dingdan'></text>
 					<view>{{userInfo.is_division?'事业部':'代理商'}}推广订单</view>
@@ -79,7 +79,7 @@
 					<text class='iconfont icon-paihang'></text>
 					<view>佣金排行</view>
 				</navigator>
-				<navigator v-if="userInfo.is_agent" url='/pages/users/staff_list/index' hover-class="none"
+				<navigator v-if="userInfo.division_open && userInfo.is_agent" url='/pages/users/staff_list/index' hover-class="none"
 					class='item acea-row row-center-wrapper row-column'>
 					<text class='iconfont icon-tuandui'></text>
 					<view>员工列表</view>

+ 2 - 2
template/uni-app/store/modules/app.js

@@ -46,8 +46,8 @@ const mutations = {
 		state.token = token;
 	},
 	LOGOUT(state) {
-		state.token = undefined;
-		state.uid = undefined
+		state.token = false;
+		state.uid = 0
 		Cache.clear(LOGIN_STATUS);
 		Cache.clear(UID);
 	},