Browse Source

番茄用户端修改,h5部分兼容

yh
杨豪 3 years ago
parent
commit
21b73e2ea2
  1. 4
      common/config.js
  2. 9
      components/mask/shopList.vue
  3. 3
      main.js
  4. 17
      manifest.json
  5. 27
      mixins/SendVerifyCode.js
  6. 21
      node_modules/vue-jsonp/LICENSE
  7. 153
      node_modules/vue-jsonp/README.md
  8. 73
      node_modules/vue-jsonp/dist/index.d.ts
  9. 8
      node_modules/vue-jsonp/dist/index.esm.js
  10. 8
      node_modules/vue-jsonp/dist/index.js
  11. 20
      node_modules/vue-jsonp/dist/utils/index.d.ts
  12. 80
      node_modules/vue-jsonp/package.json
  13. 10
      package-lock.json
  14. 23
      pages.json
  15. 1186
      pages/index/index.vue
  16. 65
      pages/index/selectCampus.vue
  17. 19
      pages/index/tasksdetails.vue
  18. 12
      pages/my/index.vue
  19. 60
      pages/my/myVIP.vue
  20. 25
      pages/order/index.vue
  21. 168
      pages/public/login.vue
  22. 3
      pages/public/webview.vue
  23. 2
      pages/task/search.vue
  24. 15
      pagesB/pages/member/chongzhi.vue
  25. BIN
      static/img/code-icon.png
  26. BIN
      static/img/home/guanggao.png
  27. BIN
      static/img/home/guanggao2.png
  28. BIN
      static/img/phone-icon.png

4
common/config.js

@ -1,6 +1,6 @@
// const ROOTPATH1 = "http://192.168.0.111:8891/sqx_fast";
const ROOTPATH1 = "https://waimai.admin.service.cyjyyjy.com/sqx_fast";
const ROOTPATH1 = "http://192.168.0.111:8891/sqx_fast";
// const ROOTPATH1 = "https://fanqie.app.cyjyyjy.com/sqx_fast";
const ROOTPATH = "https://bwc.xianmxkj.com/sqx_fast";
module.exports = {
APIHOST: ROOTPATH,

9
components/mask/shopList.vue

@ -19,8 +19,8 @@
</view>
</view>
<view class="item-r">
<image src="@/static/img/home/mt.png" v-if="item.classify == 1"></image>
<image src="@/static/img/home/elm.png" v-if="item.classify == 2"></image>
<image src="@/static/img/home/mt.png" v-if="item.classify == 2"></image>
<image src="@/static/img/home/elm.png" v-if="item.classify == 1"></image>
</view>
</view>
</view>
@ -103,10 +103,8 @@
}
}
.tag{
width: 164rpx;
width: 200rpx;
height: 36rpx;
text-align: center;
line-height: 36rpx;
font-size: 20rpx;
background: #F8E3DF;
border: 2rpx solid #FF6A6A;
@ -114,6 +112,7 @@
color: #FF4848;
display: flex;
align-items: center;
justify-content: center;
.jifen{
width: 22rpx;
height: 20rpx;

3
main.js

@ -22,6 +22,9 @@ Vue.component('tui-no-data', tuinoData);
// import uView from 'uview-ui';
// Vue.use(uView)
import {VueJsonp} from 'vue-jsonp'
Vue.use(VueJsonp)
import 'js_sdk/ican-H5Api/ican-H5Api'
import share from './common/share.js'

17
manifest.json

@ -167,7 +167,20 @@
"enable" : false
},
"h5" : {
"title" : "省钱兄霸王餐",
"domain" : "https://bwc.xianmxkj.com"
"title" : "番茄饭团用户端",
"domain" : "https://fanqie.h5.cyjyyjy.com",
"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "J5FBZ-XCUKI-UFEG2-5KOJJ-XD4L3-KNFNG"
}
}
},
"router" : {
"base" : "/waimai_h5/"
},
"devServer" : {
"https" : true
}
}
}

27
mixins/SendVerifyCode.js

@ -0,0 +1,27 @@
export default {
data() {
return {
disabled: false,
text: "获取验证码"
};
},
methods: {
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);
}
}
};

21
node_modules/vue-jsonp/LICENSE generated vendored

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 LancerComet
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

153
node_modules/vue-jsonp/README.md generated vendored

@ -0,0 +1,153 @@
# Vue-jsonp
[![VueJsonp](https://github.com/LancerComet/vue-jsonp/workflows/Test/badge.svg)](https://github.com/LancerComet/vue-jsonp/actions)
A tiny library for handling JSONP request.
## Quick Start
As Vue plugin:
```ts
import { VueJsonp } from 'vue-jsonp'
// Vue Plugin.
Vue.use(VueJsonp)
// Now you can use this.$jsonp in Vue components.
const vm = new Vue()
vm.$jsonp('/some-jsonp-url', {
myCustomUrlParam: 'veryNice'
})
```
Use function directly:
```ts
import { jsonp } from 'vue-jsonp'
jsonp('/some-jsonp-url', {
myCustomUrlParam: 'veryNice'
})
```
## Send data and set query & function name
### Send data
```ts
// The request url will be "/some-jsonp-url?name=LancerComet&age=100&callback=jsonp_{RANDOM_STR}".
jsonp('/some-jsonp-url', {
name: 'LancerComet',
age: 100
})
```
### Custom query & function name
The url uniform is `/url?{callbackQuery}={callbackName}&...`, the default is `/url?callback=jsonp_{RANDOM_STRING}&...`.
And you can change it like this:
```ts
// The request url will be "/some-jsonp-url?name=LancerComet&age=100&cb=jsonp_func".
jsonp('/some-jsonp-url', {
callbackQuery: 'cb',
callbackName: 'jsonp_func',
name: 'LancerComet',
age: 100
})
```
## Module exports
- `VueJsonp: PluginObject<never>`
- `jsonp<T>: (url: string, param?: IJsonpParam, timeout?: number) => Promise<T>`
## API
### IJsonpParam
IJsonpParam is the type of param for jsonp function.
```ts
/**
* JSONP parameter declaration.
*/
interface IJsonpParam {
/**
* Callback query name.
* This param is used to define the query name of the callback function.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default callback
*/
callbackQuery?: string
/**
* Callback function name.
* This param is used to define the jsonp function name.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default jsonp_ + randomStr()
*/
callbackName?: string
/**
* Custom data.
*/
[key: string]: any
}
```
## Example
```ts
import Vue from 'vue'
import { VueJsonp } from 'vue-jsonp'
Vue.use(VueJsonp)
const vm = new Vue()
const { code, data, message } = await vm.$jsonp<{
code: number,
message: string,
data: {
id: number,
nickname: string
}
}>('/my-awesome-url', {
name: 'MyName', age: 20
})
assert(code === 0)
assert(message === 'ok')
assert(data.id === 1)
assert(data.nickname === 'John Smith')
```
```ts
import { jsonp } from 'vue-jsonp'
const result = await jsonp<string>('/my-awesome-url')
assert(result === 'such a jsonp')
```
## License
MIT

73
node_modules/vue-jsonp/dist/index.d.ts generated vendored

@ -0,0 +1,73 @@
/**
* Vue Jsonp.
* # Carry Your World #
*
* @author: LancerComet
* @license: MIT
*/
import { PluginObject } from 'vue/types/plugin';
declare module 'vue/types/vue' {
interface Vue {
$jsonp: typeof jsonp;
}
}
/**
* Vue JSONP.
*/
declare const VueJsonp: PluginObject<never>;
/**
* JSONP function.
*
* @param { string } url Target URL address.
* @param { IJsonpParam } param Querying params object.
* @param { number } timeout Timeout setting (ms).
*
* @example
* jsonp('/url', {
* callbackQuery: ''
* callbackName: '',
* name: 'LancerComet',
* age: 26
* }, 1000)
*/
declare function jsonp<T = any>(url: string, param?: IJsonpParam, timeout?: number): Promise<T>;
export { VueJsonp, jsonp };
/**
* JSONP parameter declaration.
*/
interface IJsonpParam {
/**
* Callback query name.
* This param is used to define the query name of the callback function.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default callback
*/
callbackQuery?: string;
/**
* Callback function name.
* This param is used to define the jsonp function name.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default jsonp_ + randomStr()
*/
callbackName?: string;
/**
* Custom data.
*/
[key: string]: any;
}

8
node_modules/vue-jsonp/dist/index.esm.js generated vendored

@ -0,0 +1,8 @@
function e(t,n){t=t.replace(/=/g,"");var o=[];switch(n.constructor){case String:case Number:case Boolean:o.push(encodeURIComponent(t)+"="+encodeURIComponent(n));break;case Array:n.forEach((function(n){o=o.concat(e(t+"[]=",n))}));break;case Object:Object.keys(n).forEach((function(r){var a=n[r];o=o.concat(e(t+"["+r+"]",a))}))}return o}function t(e){var n=[];return e.forEach((function(e){"string"==typeof e?n.push(e):n=n.concat(t(e))})),n}
/**
* Vue Jsonp.
* # Carry Your World #
*
* @author: LancerComet
* @license: MIT
*/var n={install:function(e){e.prototype.$jsonp=o}};function o(n,o,r){if(void 0===o&&(o={}),"string"!=typeof n)throw new Error('[Vue-jsonp] Type of param "url" is not string.');if("object"!=typeof o||!o)throw new Error("[Vue-jsonp] Invalid params, should be an object.");return r="number"==typeof r?r:5e3,new Promise((function(a,c){var u="string"==typeof o.callbackQuery?o.callbackQuery:"callback",i="string"==typeof o.callbackName?o.callbackName:"jsonp_"+(Math.floor(1e5*Math.random())*Date.now()).toString(16);o[u]=i,delete o.callbackQuery,delete o.callbackName;var s=[];Object.keys(o).forEach((function(t){s=s.concat(e(t,o[t]))}));var l=t(s).join("&"),f=function(){p(),clearTimeout(m),c({status:400,statusText:"Bad Request"})},p=function(){b.removeEventListener("error",f)},d=function(){document.body.removeChild(b),delete window[i]},m=null;r>-1&&(m=setTimeout((function(){p(),d(),c({statusText:"Request Timeout",status:408})}),r)),window[i]=function(e){clearTimeout(m),p(),d(),a(e)};var b=document.createElement("script");b.addEventListener("error",f),b.src=n+(/\?/.test(n)?"&":"?")+l,document.body.appendChild(b)}))}export{n as VueJsonp,o as jsonp};

8
node_modules/vue-jsonp/dist/index.js generated vendored

@ -0,0 +1,8 @@
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueJsonp={})}(this,(function(e){"use strict";function t(e,o){e=e.replace(/=/g,"");var n=[];switch(o.constructor){case String:case Number:case Boolean:n.push(encodeURIComponent(e)+"="+encodeURIComponent(o));break;case Array:o.forEach((function(o){n=n.concat(t(e+"[]=",o))}));break;case Object:Object.keys(o).forEach((function(r){var c=o[r];n=n.concat(t(e+"["+r+"]",c))}))}return n}function o(e){var t=[];return e.forEach((function(e){"string"==typeof e?t.push(e):t=t.concat(o(e))})),t}
/**
* Vue Jsonp.
* # Carry Your World #
*
* @author: LancerComet
* @license: MIT
*/var n={install:function(e){e.prototype.$jsonp=r}};function r(e,n,r){if(void 0===n&&(n={}),"string"!=typeof e)throw new Error('[Vue-jsonp] Type of param "url" is not string.');if("object"!=typeof n||!n)throw new Error("[Vue-jsonp] Invalid params, should be an object.");return r="number"==typeof r?r:5e3,new Promise((function(c,a){var i="string"==typeof n.callbackQuery?n.callbackQuery:"callback",s="string"==typeof n.callbackName?n.callbackName:"jsonp_"+(Math.floor(1e5*Math.random())*Date.now()).toString(16);n[i]=s,delete n.callbackQuery,delete n.callbackName;var u=[];Object.keys(n).forEach((function(e){u=u.concat(t(e,n[e]))}));var f=o(u).join("&"),l=function(){p(),clearTimeout(b),a({status:400,statusText:"Bad Request"})},p=function(){m.removeEventListener("error",l)},d=function(){document.body.removeChild(m),delete window[s]},b=null;r>-1&&(b=setTimeout((function(){p(),d(),a({statusText:"Request Timeout",status:408})}),r)),window[s]=function(e){clearTimeout(b),p(),d(),c(e)};var m=document.createElement("script");m.addEventListener("error",l),m.src=e+(/\?/.test(e)?"&":"?")+f,document.body.appendChild(m)}))}e.VueJsonp=n,e.jsonp=r,Object.defineProperty(e,"__esModule",{value:!0})}));

20
node_modules/vue-jsonp/dist/utils/index.d.ts generated vendored

@ -0,0 +1,20 @@
/**
* Generate random string.
*
* @return { string }
*/
declare function randomStr(): string;
/**
* Format params into querying string.
*
* @return {string[]}
*/
declare function formatParams(queryKey: string, value: any): string[];
/**
* Flat querys.
*
* @param {string[] | (string[])[]} array
* @returns
*/
declare function flatten(array: string[] | (string[])[]): string[];
export { formatParams, flatten, randomStr };

80
node_modules/vue-jsonp/package.json generated vendored

@ -0,0 +1,80 @@
{
"_from": "vue-jsonp",
"_id": "vue-jsonp@2.0.0",
"_inBundle": false,
"_integrity": "sha1-O/rFa7cpQaJRHBHhoSO4dvA0J/c=",
"_location": "/vue-jsonp",
"_phantomChildren": {},
"_requested": {
"type": "tag",
"registry": true,
"raw": "vue-jsonp",
"name": "vue-jsonp",
"escapedName": "vue-jsonp",
"rawSpec": "",
"saveSpec": null,
"fetchSpec": "latest"
},
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.nlark.com/vue-jsonp/download/vue-jsonp-2.0.0.tgz",
"_shasum": "3bfac56bb72941a2511c11e1a123b876f03427f7",
"_spec": "vue-jsonp",
"_where": "F:\\sqx-bawangcan用户端小程序\\sqx-bawangcan",
"author": {
"name": "LancerComet",
"email": "chw644@hotmail.com"
},
"bugs": {
"url": "https://github.com/LancerComet/vue-jsonp/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "A tiny library for handling JSONP request.",
"devDependencies": {
"@types/expect-puppeteer": "^4.4.3",
"@types/jest": "^26.0.14",
"@types/jest-environment-puppeteer": "^4.4.0",
"@types/puppeteer": "^3.0.2",
"jest": "^26.4.2",
"jest-puppeteer": "^4.4.0",
"puppeteer": "^5.3.1",
"rollup": "^2.28.2",
"rollup-plugin-cleanup": "^3.2.1",
"rollup-plugin-delete": "^2.0.0",
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-typescript2": "^0.27.3",
"ts-jest": "^26.4.1",
"tslint": "^6.1.3",
"typescript": "^4.0.3",
"vue": "^2.6.12"
},
"files": [
"dist/",
"index.d.ts",
"README.md"
],
"homepage": "https://github.com/LancerComet/vue-jsonp#readme",
"keywords": [
"Vue",
"JSONP"
],
"license": "MIT",
"main": "./dist/index.js",
"module": "./dist/index.esm.js",
"name": "vue-jsonp",
"repository": {
"type": "git",
"url": "git+https://github.com/LancerComet/vue-jsonp.git"
},
"scripts": {
"build": "rollup -c",
"prepublish": "npm run test",
"pretest": "npm run build",
"preversion": "npm run test",
"test": "jest"
},
"version": "2.0.0"
}

10
package-lock.json generated

@ -1,3 +1,11 @@
{
"lockfileVersion": 1
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"vue-jsonp": {
"version": "2.0.0",
"resolved": "https://registry.nlark.com/vue-jsonp/download/vue-jsonp-2.0.0.tgz",
"integrity": "sha1-O/rFa7cpQaJRHBHhoSO4dvA0J/c="
}
}
}

23
pages.json

@ -96,6 +96,19 @@
}
}
},
{
"path": "pages/task/tasklist",
"style": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "搜索",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "none",
"scrollIndicator": "none",
"titleNView": true
}
}
},
// my-my
{
@ -441,5 +454,15 @@
},
"Window":{
"navigationStyle":"custom"
},
"condition" : { //
"current": 0, //(list )
"list": [
{
"name": "", //
"path": "", //
"query": "" //onLoad
}
]
}
}

1186
pages/index/index.vue

File diff suppressed because it is too large Load Diff

65
pages/index/selectCampus.vue

@ -18,9 +18,9 @@
<view class="positionT">{{weizhi.names}}</view>
<view class="positionJ">{{weizhi.dizhi}}</view>
</view>
<veiw class="current-right" @tap="dingwei">
<view class="current-right" @tap="dingwei">
<image class="dw" mode="widthFix" src="../../static/img/home/dw.png"></image><span>重新定位</span>
</veiw>
</view>
</view>
</view>
</view>
@ -30,7 +30,9 @@
import ZhToPinYin from '@/js_sdk/tui-zh-pinyin/tui-zh-pinyin.js';
var QQMapWX = require('@/js_sdk/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.js');
var qqmapsdk;
// #ifdef MP-WEIXIN
var citySelector = requirePlugin('citySelector');
// #endif
export default {
data() {
return {
@ -44,7 +46,7 @@
names: "",
dizhi: ""
},
city: '西安'
city: ''
}
},
onLoad: function(options) {
@ -61,6 +63,7 @@
}
},
onShow() {
// #ifdef MP-WEIXIN
const item = citySelector.getCity();
if(item){
citySelector.clearCity();
@ -69,7 +72,7 @@
this.$queue.setData('city', item.name);
this.$queue.setData('localCampus', item.name);
}
// #endif
var city = this.$queue.getData("city")
if (city != '') {
this.city = city
@ -77,8 +80,8 @@
},
methods: {
gocity() {
const key = 'J5FBZ-XCUKI-UFEG2-5KOJJ-XD4L3-KNFNG'; // 使key
const referer = '省钱兄霸王餐'; // app
const key = 'YXDBZ-P5LWW-375RH-OCVNQ-B2HY7-U6FBG'; // 使key
const referer = '番茄饭团霸王餐'; // app
const hotCitys = ''; //
wx.navigateTo({
url: `plugin://citySelector/index?key=${key}&referer=${referer}&hotCitys=${hotCitys}`,
@ -122,7 +125,11 @@
},
dingwei() {
const that = this;
const lat = this.$queue.getData('latitude');
const lon = this.$queue.getData('longitude');
uni.chooseLocation({
latitude: lat,
longitude: lon,
success: function(res) {
console.log(res)
console.log('位置名称:' + res.name);
@ -130,7 +137,12 @@
console.log('纬度:' + res.latitude);
console.log('经度:' + res.longitude);
if (res.name && res.address) {
// #ifdef H5
that.loAcquire(res.longitude,res.latitude)
// #endif
// #ifdef MP-WEIXIN
that.initLocation(res.latitude, res.longitude);
// #endif
that.latitude = res.latitude;
that.longitude = res.longitude;
that.weizhi.names = res.name;
@ -140,7 +152,24 @@
}
}
});
}
},
loAcquire(longitude,latitude){
let that = this;
uni.showLoading({
title: '加载中',
mask:true
});
let str = `output=jsonp&key=J5FBZ-XCUKI-UFEG2-5KOJJ-XD4L3-KNFNG&location=${latitude},${longitude}`
this.$jsonp('https://apis.map.qq.com/ws/geocoder/v1/?'+str,{}).then(res=>{
uni.hideLoading();
if(res.status == 0){
console.log(res)
let s = res.result.ad_info.city.substring(0, res.result.ad_info.city.length - 1);
that.city = s;
console.log(that.city)
}
})
},
}
}
</script>
@ -158,15 +187,13 @@
.search-bar {
display: flex;
align-items: center;
position: relative;
padding: 27rpx 30rpx 35rpx;
background-color: #fff;
}
.search-bar-form {
flex: 1;
position: relative;
display: flex;
align-items: center;
}
.search-bar-box {
@ -175,8 +202,12 @@
position: relative;
padding-left: 20rpx;
padding-right: 20rpx;
width: 538rpx;
height: 64rpx;
z-index: 1;
border-radius: 32rpx;
background: #f2f5f7;
margin-left: 20rpx;
}
.search-bar-input {
@ -323,23 +354,11 @@
color: #999;
}
.navLeft {
align-items: center;
width: 20%;
position: absolute;
top: 20upx;
text-align: center;
}
.localName {
float: left;
}
.search-bar-box {
margin-left: 20%;
border-radius: 32rpx;
background: #f2f5f7;
}
.bns {
position: fixed;

19
pages/index/tasksdetails.vue

@ -61,7 +61,7 @@
<view class="top">
<view class="top-left">
<image src="../../static/img/home/huangguan.png"></image>
<text>番茄会员满18元返18</text>
<text>番茄会员满{{info.memberPrice}}元返{{info.memberMoney}}</text>
</view>
<view class="button" @tap="goPageLogin('/pages/my/myVIP')">开通会员</view>
</view>
@ -69,9 +69,9 @@
<view class="bottomcontent" style="display: flex;align-items: center;">
<view class="circle"><image src="https://download.cyjyyjy.com/fq-logo.jpg"></image></view>
<view class="jieshao">
<view style="font-size: 14px;font-family: PingFang SC;font-weight: 500;color: #000000;">
<view style="font-size: 28rpx;font-weight: 500;color: #000000;">
进入番茄饭团福利群</view>
<view style="font-size: 11px;font-family: PingFang SC;font-weight: 500;color: #000000;">
<view style="font-size: 24rpx;font-weight: 500;color: #000000;">
添加客服微信进入番茄饭团福利群</view>
</view>
<view class="add">添加</view>
@ -90,7 +90,10 @@
<view class="payinfo" @click="btns">
<view>立即抢单</view>
</view>
<view class="payinfo" style="border-radius: 0px 16px 16px 0px;">
<!-- <view class="payinfo" @click="btns">
<view>立即抢单</view>
</view> -->
<view class="payinfo" @click="copyStoreName" style="border-radius: 0px 32rpx 32rpx 0px;">
<view>复制店名</view>
</view>
</view>
@ -681,6 +684,14 @@
this.goLogin();
}
},
copyStoreName(){
uni.setClipboardData({
data: this.info.goodsTitle,
success: function () {
console.log('success');
}
});
},
}
}
</script>

12
pages/my/index.vue

@ -252,7 +252,11 @@
sumMoney: 0, //
arr: [],
showModal: true,
jifenJson: {}
jifenJson: {
totalMoney: 0,
convertibleMoney: 0,
exchangedMoney: 0,
}
}
},
@ -778,7 +782,7 @@
display: flex;
align-items: center;
// height: 45upx;
font-size: 20rpx;
font-size: 22rpx;
font-weight: 500;
color: #0C0C0C;
}
@ -1047,8 +1051,8 @@
}
.tui-icon-box image {
width: 48rpx;
height: 48rpx;
width: 72rpx;
height: 72rpx;
}
.tui-order-list {

60
pages/my/myVIP.vue

@ -13,7 +13,7 @@
<view class="renew-btn" @click="btns()">立即续费</view>
</view>
</view>
<view class="plusVip" v-if="userInfo.member == 0">
<view class="plusVip" v-if="userInfo.member != 1">
<view style="display: flex;align-items: center;flex: 1;">
<view style="margin-left: 44px;font-size: 16px;
font-family: PingFang SC;font-weight: 500;color: #FFFFFF;">Plus会员卡</view>
@ -28,15 +28,28 @@ color: #FFFFFF;">元</view>
<view style="display: flex;justify-content: center;margin-top: 10px;">
<image src="../../static/img/my/tequan.png" style="width: 25.09px;height: 15.94px;"></image>
</view>
<view style="display: flex;justify-content: center;">
<view>
<view class="title-box">
<view class="title">会员特权</view>
</view>
</view>
<view style="margin-top: 10px;margin: 0 10px;">
<view class="special-box">
<view class="special-item">
<view class="t-word">最高优惠</view>
<view class="desc">可享受美食优惠 会员专属价格</view>
</view>
<view class="special-item">
<view class="t-word">最高优惠</view>
<view class="desc">可享受美食优惠 会员专属价格</view>
</view>
<view class="special-item">
<view class="t-word">最高优惠</view>
<view class="desc">可享受美食优惠 会员专属价格</view>
</view>
<view class="special-item">
<view class="t-word">最高优惠</view>
<view class="desc">可享受美食优惠 会员专属价格</view>
</view>
</view>
</view>
</view>
@ -119,6 +132,7 @@ color: #FFFFFF;">元</view>
});
},
btns() {
var that = this;
let token = this.$queue.getData('token');
if (token) {
let userId = this.$queue.getData('userId');
@ -144,7 +158,7 @@ color: #FFFFFF;">元</view>
},
fail: function(err) {
uni.hideLoading();
this.$queue.showToast('支付失败');
that.$queue.showToast('支付失败');
}
});
})
@ -278,7 +292,8 @@ color: #FFFFFF;">元</view>
}
.title-box{
width: 100%;
display: flex;
justify-content: center;
.title{
width: 262rpx;
height: 22rpx;
@ -291,5 +306,34 @@ color: #FFFFFF;">元</view>
font-size: 28rpx;
}
}
.special-box{
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 80rpx;
.special-item{
width: 240rpx;
height: 240rpx;
border: 2rpx solid #E8CD9C;
border-radius: 50%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0 20rpx;
margin-bottom: 60rpx;
.t-word{
font-size: 28rpx;
color: #C7904E;
margin-bottom: 24rpx;
}
.desc{
color: #CCCCCC;
font-size: 24rpx;
text-align: center;
}
}
}
</style>

25
pages/order/index.vue

@ -28,9 +28,9 @@
<image class="infoImg" :src="item.titleImg" mode="aspectFill"></image>
<view class="info-box">
<view class="shop-name"> {{item.goodsTitle}}</view>
<view style="display: flex;">
<view class="order-btn" type="default">会员满20返18</view>
<view class="order-btn" type="default">非会员满20返18</view>
<view class="tag">
<image class="jifen" src="../../static/img/home/jifen.png"></image>
<text>返还{{item.memberMoney*100}}积分</text>
</view>
</view>
</view>
@ -441,6 +441,7 @@
padding: 16rpx;
display: flex;
justify-content: space-between;
// position: relative;
border-top: 2rpx solid #d9d9d9;
border-bottom: 2rpx solid #d9d9d9;
@ -458,6 +459,24 @@
text-overflow:ellipsis;
white-space:nowrap;
}
.tag{
width: 200rpx;
height: 36rpx;
font-size: 20rpx;
background: #F8E3DF;
border: 2rpx solid #FF6A6A;
border-radius: 4rpx;
color: #FF4848;
display: flex;
align-items: center;
justify-content: center;
margin-top: 12rpx;
.jifen{
width: 22rpx;
height: 20rpx;
margin: 0 8rpx;
}
}
}
.info-right {

168
pages/public/login.vue

@ -5,13 +5,14 @@
<view class="mp_wxBox">
<view>
<view class="headers">
<image src="../../static/img/home/shangjia.png" style=" border-radius: 50%;"></image>
<image src="https://download.cyjyyjy.com/fq-logo.jpg" style=" border-radius: 50%;"></image>
</view>
<view class="content">
<view style="font-size: 16px;font-family: PingFang SC;font-weight: 500;color: #000000;" class="title">番茄饭团</view>
<view style="margin-top: 21rpx;font-size: 12px;font-family: PingFang SC;font-weight: 500;
color: #000000;">为了提供优质服务需要您授权基本信息</view>
<view style="font-size: 16px;font-family: PingFang SC;font-weight: 500;color: #000000;"
class="title">番茄饭团</view>
<view
style="margin-top: 21rpx;font-size: 12px;font-family: PingFang SC;font-weight: 500;color: #000000;">
为了提供优质服务需要您授权基本信息</view>
</view>
<button v-show="weixinPhone" style="background: #FD441D;background-color: #FD441D;color: #FFFFFF;"
class="bottom" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
@ -33,19 +34,50 @@ color: #000000;">为了提供优质服务,需要您授权基本信息</view>
</text>
<!-- 协议地址 -->
<navigator url="/pages/member/mimi" open-type="navigate" style="color: #FF3232;">隐私政策</navigator>
<navigator url="/pages/member/xieyi" open-type="navigate" style="color: #FF3232;">用户服务协议</navigator>
<navigator url="/pages/member/xieyi" open-type="navigate" style="color: #FF3232;">用户服务协议
</navigator>
</view>
</view>
</view>
<!-- #endif -->
<!-- #ifdef H5 -->
<view class="register">
<view class="headers">
<image src="https://download.cyjyyjy.com/fq-logo.jpg"></image>
</view>
<view class="list">
<view class="item">
<image src="../../static/img/phone-icon.png"></image>
<input type="text" maxlength="11" placeholder="输入手机号码" v-model="mobilePhone" />
</view>
<view class="item">
<image src="../../static/img/code-icon.png" mode=""></image>
<input type="text" maxlength="6" placeholder="填写验证码" class="codeIput" v-model="code" />
<view class="code-btn" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="sendClick">{{ text }}</view>
</view>
</view>
<view class="logon" @click="toLogin">立即登录</view>
</view>
<!-- 底部信息 -->
<view class="footer">
<text @tap="isShowAgree" class="cuIcon" :class="showAgree?'cuIcon-radiobox':'cuIcon-round'">我已阅读并同意
</text>
<!-- 协议地址 -->
<navigator url="/pages/member/mimi" open-type="navigate" style="color: #FF3232;">隐私政策</navigator>
<navigator url="/pages/member/xieyi" open-type="navigate" style="color: #FF3232;">用户服务协议</navigator>
</view>
</view>
<!-- #endif -->
</view>
</template>
<script>
import sendVerifyCode from "@/mixins/SendVerifyCode";
export default {
mixins: [sendVerifyCode],
data() {
return {
mobile: '',
code: '',
sessionkey: '',
flag: '1',
showAgree: false, //
@ -53,11 +85,45 @@ color: #000000;">为了提供优质服务,需要您授权基本信息</view>
sending: false,
sendDataList: {},
phone: '',
sendTime: '获取验证码',
count: 60
text: '获取验证码',
count: 60,
mobilePhone: '',
code: '',
disabled: false
};
},
methods: {
//h5
sendClick(){
if(this.mobilePhone == ''){
return uni.showToast({
title: '请输入手机号码',
icon: 'none'
})
} else{
this.sendCode()
this.$queue.showLoading('正在发送验证码...');
this.$Request.getT('/appLogin/sendMsg/' + this.mobilePhone + '/bind').then(res => {
if (res.code === 0) {
this.sending = true;
this.$queue.showToast('验证码发送成功请注意查收');
uni.hideLoading();
} else {
uni.hideLoading();
uni.showModal({
showCancel: false,
title: '短信发送失败',
content: res.msg,
});
}
});
}
},
//h5
loginMobile(){
},
//
getPhoneNumber: function(e) {
console.log(e);
@ -139,8 +205,7 @@ color: #000000;">为了提供优质服务,需要您授权基本信息</view>
uni.hideLoading();
that.$queue.setData('token', res.token);
that.$queue.setData('userId', res.user.userId);
that.$queue.setData("avatar", res.user.imageUrl ? res.user.imageUrl :
'/static/img/logo.png');
that.$queue.setData("avatar", res.user.imageUrl ? res.user.imageUrl : '/static/img/logo.png');
that.$queue.setData("nickName", res.user.nickName ? res.user.nickName : res.user.phone);
that.$queue.setData("mobile", res.user.phone);
that.$queue.setData("invitationCode", res.user.invitationCode);
@ -230,22 +295,27 @@ color: #000000;">为了提供优质服务,需要您授权基本信息</view>
this.$queue.loginClear();
let openid = this.$queue.getData('openid');
const {
mobile,
code
mobilePhone,
code,
showAgree
} = this;
if (!mobile) {
if (!mobilePhone) {
this.$queue.showToast('请输入手机号');
} else if (mobile.length != 11) {
this.$queue.showToast('请输入手机号');
} else if (!code) {
}else if (!code) {
this.$queue.showToast('请输入密码');
} else if (showAgree == false) {
uni.showToast({
icon: 'none',
position: 'bottom',
title: '请先同意《协议》'
});
return false;
} else {
this.$queue.showLoading('正在登录中...');
this.$Request
.postJson('/appLogin/login', {
password: code,
mobile: mobile,
openid: openid
.postJson('/appLogin/loginByPhone', {
code: code,
mobile: mobilePhone
})
.then(res => {
if (res.code === 0) {
@ -318,13 +388,63 @@ color: #000000;">为了提供优质服务,需要您授权基本信息</view>
};
</script>
<style lang="scss">
.register{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
.list{
width: 560rpx;
.item{
padding: 18rpx 0;
display: flex;
border-bottom: 2rpx solid #DCDCDC;
image{
width: 40rpx;
height: 40rpx;
margin-right: 20rpx;
}
input{
width: 300rpx;
}
.code-btn{
min-width: 158rpx;
height: 48rpx;
border: 2rpx solid #FF2C2C;
border-radius: 32rpx;
text-align: center;
line-height: 48rpx;
color: #FF2A2A;
font-size: 24rpx;
&.on{
background: #F5F5F5;
color: #999;
border-color: #F5F5F5;
}
}
}
}
.logon{
width: 560rpx;
height: 80rpx;
background: linear-gradient(141deg, #FF4848 0%, #FF2929 100%);
border-radius: 40rpx;
color: #fff;
font-size: 30rpx;
text-align: center;
line-height: 80rpx;
margin-top: 120rpx;
}
}
.headers {
margin-top: 32rpx;
margin-top: 60rpx;
}
.headers image {
width: 64px;
height: 64px;
width: 208rpx;
height: 208rpx;
border-radius: 12rpx;
}
.footer {

3
pages/public/webview.vue

@ -14,7 +14,7 @@
},
data() {
return {
url: 'https://bwc.xianmxkj.com',
url: '',
webviewStyles: {
progress: {
color: '#FF3333'
@ -23,6 +23,7 @@
};
},
onLoad(e) {
console.log(e)
if (e.title) {
uni.setNavigationBarTitle({
title: e.title

2
pages/task/search.vue

@ -72,7 +72,6 @@
title: '搜索框输入为空'
});
} else {
let keywords = this.$queue.get(this.localKeyword);
if (JSON.stringify(keywords).indexOf(this.searchValue) === -1) {
this.$queue.insert({
@ -86,6 +85,7 @@
let token = this.$queue.getData('token');
let userId = this.$queue.getData('userId');
console.log(token)
if (token) {
uni.navigateTo({
url: '/pages/task/tasklist?searchValue=' + this.searchValue +

15
pagesB/pages/member/chongzhi.vue

@ -42,10 +42,10 @@
<image src="https://download.cyjyyjy.com/zhifubao.png"></image>
<view class="name">支付宝</view>
</view>
<view class="item_view" @tap="typeSelect(2)" :class="type == 2 ? 'item_view_sel' : 'item_view'">
<!-- <view class="item_view" @tap="typeSelect(2)" :class="type == 2 ? 'item_view_sel' : 'item_view'">
<image src="@/static/img/share/icon_weixin.png"></image>
<view class="name">微信</view>
</view>
</view> -->
</view>
</view>
@ -178,7 +178,7 @@
//
if(this.showModal) {
this.openMsg()
// this.openMsg()
}
}
},
@ -190,7 +190,7 @@
withSubscriptions: true, //false
success(ret) {
// console.log(ret,'------------------')
console.log(Object.keys(ret.subscriptionsSetting.itemSettings).length)
// console.log(Object.keys(ret.subscriptionsSetting.itemSettings).length)
// if (JSON.stringify(ret.subscriptionsSetting.itemSettings).indexOf('accept')!=-1) {
if (ret.subscriptionsSetting.itemSettings) {
uni.setStorageSync('sendjifenMsg', true)
@ -325,8 +325,9 @@
}
},
duihuanjilu() {
console.log('111')
uni.navigateTo({
url: '/pages/member/jifen'
url: '/pagesB/pages/member/jifen'
});
},
goBack() {
@ -348,12 +349,12 @@
//
bangding() {
uni.navigateTo({
url: '/pages/member/zhifubao'
url: '/pagesB/pages/member/zhifubao'
});
},
goDetail() {
uni.navigateTo({
url: '/pages/member/cashList'
url: '/pagesB/pages/member/cashList'
});
}
}

BIN
static/img/code-icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

BIN
static/img/home/guanggao.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
static/img/home/guanggao2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 28 KiB

BIN
static/img/phone-icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Loading…
Cancel
Save