c&&ng&&(a.moveTo(e.x,e.y),i=1),0g&&e.xg&&(a.moveTo(e.x,e.y),i=1),0g&&e.xg&&(a.moveTo(e.x,e.y),t=1),0g&&e.xg&&(a.moveTo(e.x,e.y),t=1),0g&&e.xt._scrollDistance_&&o.fillRect(0,0,l,d),!0==t.enableScroll&&o.fillRect(r,0,t.width,d),o.closePath(),o.stroke();var h=[];for(let l=0;l<=t.yAxis.splitNumber;l++)h.push(t.area[0]+n*l);let x=t.area[3],c=t.width-t.area[1];for(let n,l=0;le/f?o.setStrokeStyle(hexToRgb(t[0].color,1)):o.setStrokeStyle(hexToRgb(t[0].color,.3)),o.setLineWidth(3*a.pixelRatio),o.moveTo(g,0),o.lineTo(y,0),o.stroke(),o.rotate(p*n);o.restore(),t=getArcbarDataPoints(t,r,l),o.setLineWidth(r.width),o.setStrokeStyle(t[0].color),o.setLineCap("round"),o.beginPath(),o.arc(s.x,s.y,h,r.startAngle*n,t[0]._proportion_*n,!1),o.stroke();let m=d-2.5*r.width;o.save(),o.translate(s.x,s.y),o.rotate((t[0]._proportion_-1)*n),o.beginPath(),o.setLineWidth(r.width/3);let S=o.createLinearGradient(0,.6*-m,0,.6*m);S.addColorStop("0",hexToRgb("#FFFFFF",0)),S.addColorStop("0.5",hexToRgb(t[0].color,1)),S.addColorStop("1.0",hexToRgb("#FFFFFF",0)),o.setStrokeStyle(S),o.arc(0,0,m,.85*n,1.15*n,!1),o.stroke(),o.beginPath(),o.setLineWidth(1),o.setStrokeStyle(t[0].color),o.setFillStyle(t[0].color),o.moveTo(-m-r.width/3/2,-4),o.lineTo(-m-r.width/3/2-4,0),o.lineTo(-m-r.width/3/2,4),o.lineTo(-m-r.width/3/2,-4),o.stroke(),o.fill(),o.restore()}else{o.setLineWidth(r.width),o.setLineCap("butt");for(let t,a=0;at[l].area[2]||e[1]>t[l].area[3]||e[2]e[0]||0>e[1]||e[2]>a||e[3]>o){n=!0;break}else n=!1;return n}function getBoundingBox(e){var t,a={};a.xMin=180,a.xMax=0,a.yMin=90,a.yMax=0;for(var o,n=0;nh.x?a.xMax:h.x,a.yMin=a.yMinh.y?a.yMax:h.y}}}return a}function coordinateToPoint(e,t,i,a,o,n){return{x:(t-i.xMin)*a+o,y:(i.yMax-e)*a+n}}function pointToCoordinate(e,t,i,a,o,n){return{x:(t-o)/a+i.xMin,y:i.yMax-(e-n)/a}}function isRayIntersectsSegment(e,t,i){if(t[1]==i[1])return!1;if(t[1]>e[1]&&i[1]>e[1])return!1;if(t[1]e[1])return!1;if(i[1]==e[1]&&t[1]>e[1])return!1;if(t[0](e/=.5)?.5*t(e,3):.5*(t(e-2,3)+2)},linear:function(e){return e}};function Animation(e){this.isStop=!1,e.duration="undefined"==typeof e.duration?1e3:e.duration,e.timing=e.timing||"linear";var t=function(){return"undefined"==typeof setTimeout?"undefined"==typeof requestAnimationFrame?function(e){e(null)}:requestAnimationFrame:function(e,t){setTimeout(function(){var t=+new Date;e(t)},t)}}(),i=null,a=function(o){if(null===o||!0===this.isStop)return e.onProcess&&e.onProcess(1),void(e.onAnimationFinish&&e.onAnimationFinish());if(null===i&&(i=o),o-io;o++)t.area[o]=t.padding[o];var d=calLegendData(s,t,a,t.chartData),h=d.area.wholeHeight,x=d.area.wholeWidth;switch(t.legend.position){case"top":t.area[0]+=h;break;case"bottom":t.area[2]+=h;break;case"left":t.area[3]+=x;break;case"right":t.area[1]+=x;}let c={},p=0;if("line"===t.type||"column"===t.type||"area"===t.type||"mix"===t.type||"candle"===t.type){if(c=calYAxisData(n,t,a),p=c.yAxisWidth,t.yAxis.showTitle){let e=0;for(let o=0;ot;t++)e.padding[t]*=e.pixelRatio;t.yAxisWidth=config.yAxisWidth*e.pixelRatio,t.xAxisHeight=config.xAxisHeight*e.pixelRatio,e.enableScroll&&e.xAxis.scrollShow&&(t.xAxisHeight+=6*e.pixelRatio),t.xAxisLineHeight=config.xAxisLineHeight*e.pixelRatio,t.fontSize=e.fontSize,t.titleFontSize=config.titleFontSize*e.pixelRatio,t.subtitleFontSize=config.subtitleFontSize*e.pixelRatio,t.toolTipPadding=config.toolTipPadding*e.pixelRatio,t.toolTipLineHeight=config.toolTipLineHeight*e.pixelRatio,t.columePadding=config.columePadding*e.pixelRatio,e.$this=e.$this?e.$this:this,this.context=uni.createCanvasContext(e.canvasId,e.$this),e.chartData={},this.event=new Event,this.scrollOption={currentOffset:0,startTouchX:0,distance:0,lastMoveTime:0},this.opts=e,this.config=t,drawCharts.call(this,e.type,e,t,this.context)};Charts.prototype.updateData=function(){let e=0
+ {{ text }}
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-countdown/readme.md b/mallplusui-uniapp-app2/components/uni-countdown/readme.md
new file mode 100644
index 0000000..b879097
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-countdown/readme.md
@@ -0,0 +1,73 @@
+### CountDown 倒计时
+
+倒计时组件,组件名:``uni-countdown``,代码块: uCountDown。
+
+**使用方式:**
+
+在 ``script`` 中引用组件
+
+```javascript
+import uniCountdown from "@/components/uni-countdown/uni-countdown.vue"
+export default {
+ components: {uniCountdown}
+}
+```
+
+一般用法
+
+```html
+
+
+```
+
+不显示天数
+
+```html
+
+
+```
+
+修改颜色
+
+```html
+
+
+```
+
+实际效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
+
+**uniCountDown 属性说明:**
+
+|属性名|类型|默认值 |说明|
+|---|----|---|---|
+|background-color|String|#FFFFFF|背景色|
+|border-color|String|#000000|边框颜色|
+|color |String |#000000|文字颜色|
+|splitor-color|String|#000000|割符号颜色|
+|day|Number|0|天数|
+|hour|Number|0|小时|
+|minute|Number|0|分钟|
+|second|Number|0|秒|
+|show-day|Boolean|true|是否显示天数|
+|show-colon|Boolean|true|是否以冒号为分隔符|
+
+**uniCountDown 事件说明:**
+
+|事件称名|说明|返回参数|
+|---|----|---|
+|timeup|倒计时时间到触发事件|-|
diff --git a/mallplusui-uniapp-app2/components/uni-countdown/uni-countdown.vue b/mallplusui-uniapp-app2/components/uni-countdown/uni-countdown.vue
new file mode 100644
index 0000000..d2ce202
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-countdown/uni-countdown.vue
@@ -0,0 +1,156 @@
+
+
+ {{d}}
+ 天
+ {{h}}
+ {{showColon ? ':' : '时'}}
+ {{i}}
+ {{showColon ? ':' : '分'}}
+ {{s}}
+ 秒
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-grid-item/uni-grid-item.vue b/mallplusui-uniapp-app2/components/uni-grid-item/uni-grid-item.vue
new file mode 100644
index 0000000..a705055
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-grid-item/uni-grid-item.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-grid/uni-grid.vue b/mallplusui-uniapp-app2/components/uni-grid/uni-grid.vue
new file mode 100644
index 0000000..7f7fa55
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-grid/uni-grid.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-icon/readme.md b/mallplusui-uniapp-app2/components/uni-icon/readme.md
new file mode 100644
index 0000000..2ae276a
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-icon/readme.md
@@ -0,0 +1,127 @@
+### Icon 图标
+
+用于展示 icon,组件名:``uni-icon``,代码块: uIcon。
+
+**使用方式:**
+
+在 ``script`` 中引用组件
+
+```javascript
+import uniIcon from "@/components/uni-icon/uni-icon.vue"
+export default {
+ components: {uniIcon}
+}
+```
+
+在 ``template`` 中使用组件
+
+```html
+
+```
+
+实际效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
+
+**Icon 属性说明:**
+
+|属性名 |类型|默认值 |说明|
+|---|----|---|---|
+|type |String |-|图标图案,参考下表|
+|color |String |-|图标颜色 |
+|size |Number |24|图标大小|
+|@click |EventHandle|-|点击 Icon 触发事件|
+
+**type 类型:**
+
+
+
+
+ - contact
+ - person
+ - personadd
+ - contact-filled
+ - person-filled
+ - personadd-filled
+ - phone
+ - email
+ - chatbubble
+ - chatboxes
+ - phone-filled
+ - email-filled
+ - chatbubble-filled
+ - chatboxes-filled
+ - weibo
+ - weixin
+ - pengyouquan
+ - chat
+ - qq
+ - videocam
+ - camera
+ - mic
+ - location
+ - mic-filled
+ - location-filled
+ - micoff
+ - image
+ - map
+ - compose
+ - trash
+ - upload
+ - download
+ - close
+ - redo
+ - undo
+ - refresh
+ - star
+ - plus
+ - minus
+ - circle
+ - clear
+ - refresh-filled
+ - star-filled
+ - plus-filled
+ - minus-filled
+ - circle-filled
+ - checkbox-filled
+ - closeempty
+ - refreshempty
+ - reload
+ - starhalf
+ - spinner
+ - spinner-cycle
+ - search
+ - plusempty
+ - forward
+ - back
+ - checkmarkempty
+ - home
+ - navigate
+ - gear
+ - paperplane
+ - info
+ - help
+ - locked
+ - more
+ - flag
+ - home-filled
+ - gear-filled
+ - info-filled
+ - help-filled
+ - more-filled
+ - settings
+ - list
+ - bars
+ - loop
+ - paperclip
+ - eye
+ - arrowup
+ - arrowdown
+ - arrowleft
+ - arrowright
+ - arrowthinup
+ - arrowthindown
+ - arrowthinleft
+ - arrowthinright
+ - pulldown
+ - scan
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-icon/uni-icon.vue b/mallplusui-uniapp-app2/components/uni-icon/uni-icon.vue
new file mode 100644
index 0000000..53883c4
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-icon/uni-icon.vue
@@ -0,0 +1,421 @@
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-load-more/uni-load-more.vue b/mallplusui-uniapp-app2/components/uni-load-more/uni-load-more.vue
new file mode 100644
index 0000000..6c43365
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-load-more/uni-load-more.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/components/uni-number-box.vue b/mallplusui-uniapp-app2/components/uni-number-box.vue
new file mode 100644
index 0000000..8f626ac
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-number-box.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-rate/readme.md b/mallplusui-uniapp-app2/components/uni-rate/readme.md
new file mode 100644
index 0000000..e0138b3
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-rate/readme.md
@@ -0,0 +1,59 @@
+### Rate 评分
+
+评分组件,组件名:``uni-rate``,代码块: uRate。
+
+**使用方式:**
+
+在 ``script`` 中引用组件
+
+```javascript
+import uniRate from "@/components/uni-rate/uni-rate.vue"
+export default {
+ components: {uniRate}
+}
+```
+
+基本用法
+
+```html
+
+```
+
+自定义星星大小
+
+```html
+
+```
+
+设置评分数
+
+```html
+
+```
+
+不可点击状态
+
+```html
+
+```
+
+实际效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
+
+**属性说明:**
+
+|属性名|类型|默认值 |说明|
+|---|----|---|---|
+|value|Number|0|当前评分|
+|max|Number|5|最大的评分|
+|size|Number|24|星星的大小|
+|margin|Number|0|星星的间距|
+|color|String|#ececec|星星的颜色|
+|active-color|String|#ffca3e|选中状态的星星的颜色|
+|is-fill|Boolean|true|星星的类型,是否为实心类型|
+|disabled|Boolean|false|是否为不可点击状态|
+
+**事件说明:**
+
+|事件称名|说明|返回参数|
+|---|----|---|
+|change|Rate 的 value 改变时触发事件,返回参数为Rate的value|{value:Number}|
diff --git a/mallplusui-uniapp-app2/components/uni-rate/uni-rate.vue b/mallplusui-uniapp-app2/components/uni-rate/uni-rate.vue
new file mode 100644
index 0000000..5a12b63
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-rate/uni-rate.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-section/uni-section.vue b/mallplusui-uniapp-app2/components/uni-section/uni-section.vue
new file mode 100644
index 0000000..7591bd1
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-section/uni-section.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+ {{ title }}
+ {{ subTitle }}
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/uni-tag/uni-tag.vue b/mallplusui-uniapp-app2/components/uni-tag/uni-tag.vue
new file mode 100644
index 0000000..a9e7087
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/uni-tag/uni-tag.vue
@@ -0,0 +1,230 @@
+
+
+ {{ text }}
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/upload-images.vue b/mallplusui-uniapp-app2/components/upload-images.vue
new file mode 100644
index 0000000..71bb4a3
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/upload-images.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+
+ {{item.progress}}%
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/xiujun-evaluate/Readme.md b/mallplusui-uniapp-app2/components/xiujun-evaluate/Readme.md
new file mode 100644
index 0000000..cb5f559
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/xiujun-evaluate/Readme.md
@@ -0,0 +1,40 @@
+### 评价 列表
+
+评价列表组件,组件名:``uni-evaluate``,可预览图片
+
+**使用方式:**
+
+下载组件,在 ``script`` 中引用组件
+
+```javascript
+import uniEvaluate from '../../components/xiujun-evaluate/uni-evaluate.vue';
+export default {
+ components: {uniEvaluate}
+}
+```
+
+用法
+
+```html
+
+```
+
+**组件属性说明:**
+
+|属性名|类型|默认值 |说明|
+|---|----|---|---|
+|listData|Array|-|评价列表数据|
+|rate|Number|-|总评分|
+|isShowTotal|Boolean|true|是否显示总评价数量|
+|isShowIcon|Boolean|true|是否显示评价头图标|
+
+**listData属性说明:**
+
+|属性名|类型|默认值|说明|
+|---|----|---|---|
+|header_img|String|-|用户头像|
+|user_name|String| - |用户名|
+|rate|Number|-|评分|
+|create_time|String|-|发表评论时间|
+|content|String|-|评价内容文本|
+|imgs|Array|-|评价内容图片格式['图片地址1','图片地址2']|
diff --git a/mallplusui-uniapp-app2/components/xiujun-evaluate/iconfont.css b/mallplusui-uniapp-app2/components/xiujun-evaluate/iconfont.css
new file mode 100644
index 0000000..c373fd4
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/xiujun-evaluate/iconfont.css
@@ -0,0 +1,26 @@
+@font-face {
+ font-family: 'iconfont'; /* project id 1237225 */
+ src: url('https://at.alicdn.com/t/font_1237225_y90nldmnpij.eot');
+ src: url('https://at.alicdn.com/t/font_1237225_y90nldmnpij.eot?#iefix') format('embedded-opentype'),
+ url('https://at.alicdn.com/t/font_1237225_y90nldmnpij.woff2') format('woff2'),
+ url('https://at.alicdn.com/t/font_1237225_y90nldmnpij.woff') format('woff'),
+ url('https://at.alicdn.com/t/font_1237225_y90nldmnpij.ttf') format('truetype'),
+ url('https://at.alicdn.com/t/font_1237225_y90nldmnpij.svg#iconfont') format('svg');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-pingjia-copy:before {
+ content: "\e640";
+}
+
+.icon-xingxing:before {
+ content: "\e870";
+}
+
diff --git a/mallplusui-uniapp-app2/components/xiujun-evaluate/list.js b/mallplusui-uniapp-app2/components/xiujun-evaluate/list.js
new file mode 100644
index 0000000..584e604
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/xiujun-evaluate/list.js
@@ -0,0 +1,62 @@
+//测试数据
+const listData = [{
+ header_img: "http://cs.zhangkaixing.com/face/face_2.jpg",
+ user_name: "测试1",
+ rate:5,
+ create_time: "2019-04-12",
+ content: "好评",
+ imgs:[
+ '/com/face/face.jpg',
+ 'http://cs.zhangkaixing.com/face/p10.jpg',
+ 'http://cs.zhangkaixing.com/face/face_14.jpg',
+ 'http://cs.zhangkaixing.com/face/face.jpg',
+ 'http://cs.zhangkaixing.com/face/p10.jpg',
+ ]
+},
+{
+ content: "中评",
+ create_time: "2019-04-12",
+ header_img: "http://cs.zhangkaixing.com/face/face_12.jpg",
+ user_name: "测试2",
+ rate:4,
+ // imgs:[]
+},
+{
+ content: "",
+ create_time: "2019-04-12",
+ header_img: "http://cs.zhangkaixing.com/face/face_15.jpg",
+ user_name: "测试3",
+ rate:2,
+ // imgs:[]
+},{
+ content: "好评",
+ create_time: "2019-04-12",
+ header_img: "http://cs.zhangkaixing.com/face/face_2.jpg",
+ user_name: "测试1",
+ rate:5,
+ imgs:[
+ 'http://cs.zhangkaixing.com/face/face.jpg',
+ 'http://cs.zhangkaixing.com/face/p10.jpg',
+ 'http://cs.zhangkaixing.com/face/face_14.jpg',
+ 'http://cs.zhangkaixing.com/face/face.jpg',
+ 'http://cs.zhangkaixing.com/face/p10.jpg',
+ ]
+},
+{
+ content: "中评",
+ create_time: "2019-04-12",
+ header_img: "http://cs.zhangkaixing.com/face/face_12.jpg",
+ user_name: "测试2",
+ rate:3.5,
+ // imgs:[]
+},
+{
+ content: "",
+ create_time: "2019-04-12",
+ header_img: "http://cs.zhangkaixing.com/face/face_15.jpg",
+ user_name: "测试3",
+ rate:2.3,
+ // imgs:[]
+}]
+
+export default listData
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/components/xiujun-evaluate/uni-evaluate.vue b/mallplusui-uniapp-app2/components/xiujun-evaluate/uni-evaluate.vue
new file mode 100644
index 0000000..fe778e3
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/xiujun-evaluate/uni-evaluate.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.user_name }}
+ {{ item.create_time }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.content || '用户暂未评价' }}
+
+
+
+
+
+
+
+
+
+
+ 暂无评论
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/zhouWei-navBar/index.vue b/mallplusui-uniapp-app2/components/zhouWei-navBar/index.vue
new file mode 100644
index 0000000..c5a2638
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/zhouWei-navBar/index.vue
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/components/zhouWei-navBar/zhouWei-navBar.md b/mallplusui-uniapp-app2/components/zhouWei-navBar/zhouWei-navBar.md
new file mode 100644
index 0000000..68f5886
--- /dev/null
+++ b/mallplusui-uniapp-app2/components/zhouWei-navBar/zhouWei-navBar.md
@@ -0,0 +1,132 @@
+# zhouWei-navBar 适用于 uni-app 项目的头部导航组件
+
+导航栏组件,主要用于头部导航,组件名:zhouWei-navBar
+
+本组件目前兼容微信小程序、H5、5+APP。其他平台没试过
+
+本组件支持模式:
+1. 普通固定顶部导航
+2. 透明导航
+3. 透明固定顶部导航
+4. 不固定普通导航
+5. 颜色渐变导航
+
+本组件内置特殊功能:
+1. fontColor字体颜色为白色的时候手机状态栏会自动显示白色,否则显示灰色
+2. 页面为第一个页面时左上角自动显示返回主页的图标(具体看组件:zhouWei-navBar/index.vue =>页面script)
+
+### 本组件全局配置(位置:zhouWei-navBar/index.vue =>页面script)
+1. 主页页面的页面路径
+2. 首页页面路径
+
+```
+// 主页页面的页面路径
+// 关联功能:打开的页面只有一个的时候右上角自动显示返回首页按钮,下面这个数组是排除显示返回首页的页面。
+// 主页使用场景:小程序分享出去的页面,用户点击开是分享页面,很多情况下是没有返回首页按钮的
+const mainPagePath = ["pages/navList"];
+//返回首页的地址
+const homePath = "/pages/navList";
+```
+
+### 在main.js引入组件,并注册全局组件
+```
+import zhouWeiNavBar from "@/components/zhouWei-navBar";
+Vue.component("nav-bar", zhouWeiNavBar);
+```
+
+### 或者在页面script中引入组件,并注册组件
+```
+import navBar from "@/components/zhouWei-navBar";
+export default {
+ components: {navBar}
+}
+```
+
+### 案例一
+默认特性:左上角有返回箭头,nav-bar导航固定在顶部、标题居中
+```
+我的
+```
+
+### 案例二
+特性:无返回箭头、字体色为白色、标题左对齐、nav-bar导航透明并不固定在顶部、右边插槽有按钮
+```
+
+ 设置
+
+```
+
+### 案例三:颜色渐变导航
+特性:颜色渐变导航
+```
+
+```
+
+### 案例四:颜色渐变导航
+特性:颜色渐变导航
+```
+
+
+bgColorList:[
+ {color:"#f37402",scale:"0%"},
+ {color:"#0f0",scale:"20%"},
+ {color:"#f00",scale:"80%"},
+ {color:"#00f",scale:"100%"}
+]
+```
+
+### 案例五:滑动透明导航
+特性:有返回箭头、nav-bar导航透明并固定在顶部、透明状态字体为白色、页面想下滑动nav-bar导航条逐渐变白色、右边插槽有按钮
+```
+
+ 预览 //透明状态下的按钮
+ 预览 //不状态下的按钮
+
+```
+
+### 案例六:搜索框|地区选择
+特性:无返回箭头、nav-bar导航固定在顶部、地区选择、搜索框
+```
+
+ 深圳市
+
+
+ 搜索目的地/职位等
+
+
+```
+
+### 属性
+| 名称 | 类型 | 默认值 | 描述 |
+| ----------------------------|--------------- | ------------- | ---------------------------------------------------|
+| backState | String | 1000 | 返回上一页面按钮,1000 显示返回按钮,2000 不显示返回按钮,3000自定义返回按钮方法,点击返回箭头后会发送一个backClick事件|
+| home | Boolean | true | 返回首页按钮(首页地址在源文件里配置) |
+| bgColor | String|Array | #FFF | 导航背景颜色,值为数组的时候显示渐变颜色(只支持2个颜色渐变),bgColor="themeBgColor"的时候会调用全局class="themeBgColor"的样式|
+| bgColorAngle | String|Number | 90 | 导航背景颜色渐变角度(bgColor为数组生效) |
+| fontColor | String | #000 | 导航字体颜色,(当颜色为白色的时候导航状态栏和图片为白色的)|
+| titleCenter | Boolean | true | 标题title居中 |
+| title | String | -- | 标题title值 |
+| transparentFixedFontColor | String | #000 | 导航type类型为transparentFixed时透明状态下的字体颜色 |
+| type | String | fixed | 导航类型,可选:1.fixed固定导航 2.ordinary不固定导航 3.transparent透明不固定导航 4.transparentFixed透明固定导航|
+
+### bgColor数组值为JSON的参数
+| 名称 | 类型 | 默认值 | 描述 |
+| ----------------------------|--------------- | ------------- | ---------------------------------------------------|
+| color | String | -- | 渐变颜色值 |
+| scale | String | -- | 渐变比例(百分比%) |
+
+### 插槽
+| 名称 | 描述 |
+| ----------------------|-------------------------------------------------------------------|
+| left | 左插槽 |
+| default | 中间标题插槽(type类型为transparentFixed时插槽只会穿透到实色背景下) |
+| right | 右插槽 |
+| transparentFixed | 导航type类型为transparentFixed时透明状态下中间插槽 |
+| transparentFixedRight | 导航type类型为transparentFixed时透明状态下右插槽 |
+| transparentFixedRight | 导航type类型为transparentFixed时透明状态下右插槽 |
+
+### 事件(type类型为transparentFixed时可用)
+| 名称 | 参数 | 描述 |
+| -----------------|------------------| --------------------------|
+| scroll | 滚动条到顶部距离 | 代替页面的onPageScroll函数 |
+| backClick | 返回上一页按钮方法 | backState=3000时生效 |
diff --git a/mallplusui-uniapp-app2/config/api.js b/mallplusui-uniapp-app2/config/api.js
new file mode 100644
index 0000000..04081d4
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/api.js
@@ -0,0 +1,408 @@
+import {
+ apiBaseUrl
+} from './config.js';
+import mallplusCopyright from '@/components/mall-copyright/mallplusCopyright.vue';
+import Api from '@/common/api';
+import * as common from './common.js' //引入common
+import * as db from './db.js' //引入common
+// 需要登陆的,都写到这里,否则就是不需要登陆的接口
+const methodsToken = [
+ 'user.info',
+ 'user.editinfo',
+ 'user.changeavatar',
+ 'user.logout',
+ 'user.addgoodsbrowsing',
+ 'user.delgoodsbrowsing',
+ 'user.goodsbrowsing',
+ 'user.goodscollection',
+ 'user.goodscollectionlist',
+ 'user.vuesaveusership',
+ 'user.saveusership',
+ 'user.getshipdetail',
+ 'user.setdefship',
+ 'user.editship',
+ 'user.removeship',
+ 'user.getusership',
+ 'user.pay',
+ 'user.orderevaluate',
+ 'user.getuserdefaultship',
+ 'user.issign',
+ 'user.sign',
+ 'user.mypoint',
+ 'user.userpointlog',
+ 'user.getbankcardlist',
+ 'user.getdefaultbankcard',
+ 'user.addbankcard',
+ 'user.removebankcard',
+ 'user.setdefaultbankcard',
+ 'user.getbankcardinfo',
+ 'user.editpwd',
+ 'user.forgotpwd',
+ 'user.recommend',
+ 'user.balancelist',
+ 'user.sharecode',
+ 'user.cash',
+ 'user.cashlist',
+ 'user.myinvite',
+ 'user.activationinvite',
+ 'coupon.getcoupon',
+ 'coupon.usercoupon',
+ 'cart.add',
+ 'cart.del',
+ 'cart.getlist',
+ 'cart.setnums',
+ 'cart.getnumber',
+ 'order.cancel',
+ 'order.del',
+ 'order.details',
+ 'order.confirm',
+ 'order.getlist',
+ 'order.create',
+ 'order.getship',
+ 'order.getorderlist',
+ 'order.getorderstatusnum',
+ 'order.aftersaleslist',
+ 'order.aftersalesinfo',
+ 'order.aftersalesstatus',
+ 'order.addaftersales',
+ 'order.sendreship',
+ 'order.iscomment',
+ 'payments.getinfo',
+ 'user.getuserpoint',
+ 'coupon.getcouponkey',
+ 'store.isclerk',
+ 'store.storeladinglist',
+ 'store.ladinginfo',
+ 'store.lading',
+ 'store.ladingdel',
+ 'distribution_center-api-info',
+ 'distribution_center-api-applydistribution',
+ 'distribution_center-api-setstore',
+ 'distribution_center-api-myorder',
+ 'pintuan.pintuanteam',
+ 'lottery-api-getLotteryConfig',
+ 'lottery-api-lottery',
+ 'lottery-api-lotteryLog'
+];
+
+const post = (method, data, callback) => {
+ uni.showLoading({
+ title: '加载中'
+ });
+
+ // 判断token是否存在
+ if (methodsToken.indexOf(method) >= 0) {
+ // 获取用户token
+ let userToken = db.get("userToken");
+ if (!userToken) {
+ common.jumpToLogin();
+ return false;
+ } else {
+ data.token = userToken;
+ }
+ }
+
+ data.method = method;
+
+ uni.request({
+ url: apiBaseUrl + 'api.html',
+ data: data,
+ header: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ // 'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头信息
+ },
+ method: 'POST',
+ success: (response) => {
+ uni.hideLoading();
+ const result = response.data
+ if (!result.status) {
+ // 登录信息过期或者未登录
+ if (result.data === 14007 || result.data === 14006) {
+ db.del("userToken");
+ uni.showToast({
+ title: result.msg,
+ icon: 'none',
+ duration: 1000,
+ complete: function() {
+ setTimeout(function() {
+ uni.hideToast();
+ // #ifdef H5 || APP-PLUS
+ uni.navigateTo({
+ url: '/pages/login/login/index1'
+ })
+ // #endif
+ // #ifdef MP-WEIXIN || MP-ALIPAY
+ uni.navigateTo({
+ url: '/pages/login/choose/index',
+ animationType: 'pop-in',
+ animationDuration: 200
+ });
+ // #endif
+ }, 1000)
+ }
+ });
+ }
+ }
+ callback(result);
+ },
+ complete: () => {
+ uni.hideLoading();
+ },
+ fail: (error) => {
+ uni.hideLoading();
+ if (error && error.response) {
+ showError(error.response);
+ }
+ },
+ });
+
+}
+
+//插件post
+const pluginsPost = (method, data, callback) => {
+ uni.showLoading({
+ title: '加载中'
+ });
+
+ // 判断token是否存在
+ if (methodsToken.indexOf(method) >= 0) {
+ // 获取用户token
+ let userToken = db.get("userToken");
+ if (!userToken) {
+ common.jumpToLogin();
+ return false;
+ } else {
+ data.token = userToken;
+ }
+ }
+ uni.request({
+ url: apiBaseUrl + 'plugins/' + method + '.html',
+ data: data,
+ header: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ // 'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头信息
+ },
+ method: 'POST',
+ success: (response) => {
+ uni.hideLoading();
+ const result = response.data
+ if (!result.status) {
+ // 登录信息过期或者未登录
+ if (result.data === 14007 || result.data === 14006) {
+ db.del("userToken");
+ uni.showToast({
+ title: result.msg,
+ icon: 'none',
+ duration: 1000,
+ complete: function() {
+ setTimeout(function() {
+ uni.hideToast();
+ // #ifdef H5 || APP-PLUS
+ uni.navigateTo({
+ url: '/pages/login/login/index1'
+ })
+ // #endif
+ // #ifdef MP-WEIXIN || MP-ALIPAY
+ uni.navigateTo({
+ url: '/pages/login/choose/index',
+ animationType: 'pop-in',
+ animationDuration: 200
+ });
+ // #endif
+ }, 1000);
+ }
+ });
+ }
+ }
+ callback(result);
+ },
+ fail: (error) => {
+ uni.hideLoading();
+ if (error && error.response) {
+ showError(error.response);
+ }
+ },
+ complete: () => {
+ setTimeout(function() {
+ uni.hideLoading();
+ }, 250);
+ }
+ });
+
+}
+
+const get = (url, callback) => {
+ uni.showLoading({
+ title: '加载中'
+ });
+ uni.request({
+ url: url,
+ header: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头信息
+ },
+ method: 'GET',
+ success: (response) => {
+ uni.hideLoading();
+ callback(response.data);
+ },
+ fail: (error) => {
+ uni.hideLoading();
+ if (error && error.response) {
+ showError(error.response);
+ }
+ },
+ complete: () => {
+ setTimeout(function() {
+ uni.hideLoading();
+ }, 250);
+ }
+ });
+}
+
+const showError = error => {
+ let errorMsg = ''
+ switch (error.status) {
+ case 400:
+ errorMsg = '请求参数错误'
+ break
+ case 401:
+ errorMsg = '未授权,请登录'
+ break
+ case 403:
+ errorMsg = '跨域拒绝访问'
+ break
+ case 404:
+ errorMsg = `请求地址出错: ${error.config.url}`
+ break
+ case 408:
+ errorMsg = '请求超时'
+ break
+ case 500:
+ errorMsg = '服务器内部错误'
+ break
+ case 501:
+ errorMsg = '服务未实现'
+ break
+ case 502:
+ errorMsg = '网关错误'
+ break
+ case 503:
+ errorMsg = '服务不可用'
+ break
+ case 504:
+ errorMsg = '网关超时'
+ break
+ case 505:
+ errorMsg = 'HTTP版本不受支持'
+ break
+ default:
+ errorMsg = error.msg
+ break
+ }
+
+ uni.showToast({
+ title: errorMsg,
+ icon: 'none',
+ duration: 1000,
+ complete: function() {
+ setTimeout(function() {
+ uni.hideToast();
+ }, 1000);
+ }
+ });
+}
+
+// 文件上传
+export const uploadFiles = (callback) => {
+ uni.chooseImage({
+ success: (chooseImageRes) => {
+ uni.showLoading({
+ title: '上传中...'
+ });
+ const tempFilePaths = chooseImageRes.tempFilePaths;
+ const uploadTask = uni.uploadFile({
+ url: Api.BASEURI +'upload', //仅为示例,非真实的接口地址
+ filePath: tempFilePaths[0],
+ fileType: 'image',
+ name: 'file',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'multipart/form-data',
+ },
+ formData: {
+ 'method': 'images.upload',
+ 'upfile': tempFilePaths[0]
+ },
+ success: (uploadFileRes) => {
+ callback(JSON.parse(uploadFileRes.data));
+ },
+ fail: (error) => {
+ if (error && error.response) {
+ showError(error.response);
+ }
+ },
+ complete: () => {
+ setTimeout(function() {
+ uni.hideLoading();
+ }, 250);
+ }
+ });
+ // uploadTask.onProgressUpdate((res) => {
+ // console.log('上传进度' + res.progress);
+ // console.log('已经上传的数据长度' + res.totalBytesSent);
+ // console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
+ //
+ // // 测试条件,取消上传任务。
+ // if (res.progress > 50) {
+ // uploadTask.abort();
+ // }
+ // });
+ }
+ });
+}
+
+// 上传图片
+export const uploadImage = (num, callback) => {
+ uni.chooseImage({
+ count: num,
+ success: (res) => {
+ uni.showLoading({
+ title: '上传中...'
+ });
+ let tempFilePaths = res.tempFilePaths
+ for (var i = 0; i < tempFilePaths.length; i++) {
+ uni.uploadFile({
+ url: apiBaseUrl + 'api.html',
+ filePath: tempFilePaths[i],
+ fileType: 'image',
+ name: 'file',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'multipart/form-data',
+ },
+ formData: {
+ 'method': 'images.upload',
+ 'upfile': tempFilePaths[i]
+ },
+ success: (uploadFileRes) => {
+ callback(JSON.parse(uploadFileRes.data));
+ },
+ fail: (error) => {
+ if (error && error.response) {
+ showError(error.response);
+ }
+ },
+ complete: () => {
+ setTimeout(function() {
+ uni.hideLoading();
+ }, 250);
+ },
+ });
+ }
+ }
+ });
+}
+
diff --git a/mallplusui-uniapp-app2/config/baseUrl.js b/mallplusui-uniapp-app2/config/baseUrl.js
new file mode 100644
index 0000000..45a2dda
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/baseUrl.js
@@ -0,0 +1,51 @@
+let baseUrl = "";
+let socketUrl = "";
+if (process.env.NODE_ENV === 'development') {
+ // 开发环境
+ // baseUrl = "http://localhost:7001/";
+ // socketUrl = "ws://localhost:8001/";
+ // baseUrl = "http://26077a35f5.wicp.vip:43609/";
+ baseUrl = "http://www.yyundong.com:8083/";
+ socketUrl = "ws://8192.168.43.195:8083/";
+} else if (process.env.NODE_ENV === 'production') {
+ // 生产环境
+ baseUrl = "http://www.yyundong.com:8083/";
+ // baseUrl = "http://192.168.43.195:8083/";
+ socketUrl = "ws://192.168.43.195:8083/";
+}
+const courtConfig = {
+ //微信公众号APPID
+ publicAppId: "",
+ //请求接口
+ baseUrl: baseUrl,
+ //webSocket地址
+ socketUrl: socketUrl,
+ //平台名称
+ platformName: "uniApp-案例",
+ //项目logo
+ logoUrl: "https://qn.kemean.cn/upload/201906/19/3f3b4751f3ed4a97be804450c3ec4c79",
+ //页面分享配置
+ share: {
+ title: 'uniApp-案例',
+ // #ifdef MP-WEIXIN
+ path: '/pages/home/home', //小程序分享路径
+ // #endif
+ // #ifdef H5 || APP-PLUS
+ //公众号||APP分享
+ desc: "uniApp-案例", // 分享描述
+ link: "https://www.kemean.com/sameCity/18031201/index.html", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
+ imgUrl: "http://qn.kemean.cn/upload/201901/28/23bedfc34597482292ecd6dc107f6342", // 分享图标
+ // #endif
+ }
+};
+//手机号验证正则表达式
+const phoneRegular = /^1\d{10}$/;
+//邮箱验证正则表达式
+const mailRegular = /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
+//密码验证正则表达式
+const passwordRegular = /^[a-zA-Z0-9]{4,10}$/;
+export default Object.assign({
+ phoneRegular,
+ mailRegular,
+ passwordRegular
+}, courtConfig);
diff --git a/mallplusui-uniapp-app2/config/common.js b/mallplusui-uniapp-app2/config/common.js
new file mode 100644
index 0000000..751fe66
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/common.js
@@ -0,0 +1,485 @@
+import * as db from './db.js' //引入common
+import store from './../store'
+//把obj对象里的值覆盖到newobj里面
+function deepCopy(newobj, obj) {
+ if (typeof obj != 'object') {
+ return obj
+ }
+ for (var attr in obj) {
+ var a = {}
+ if (newobj[attr]) {
+ a = newobj[attr]
+ }
+ newobj[attr] = deepCopy(a, obj[attr])
+ }
+ return newobj
+}
+
+//跳转到登陆页面
+function jumpToLogin(method) {
+ var now_time = Date.parse(new Date())
+ var value = db.get('jump_to_login')
+ if (!value) {
+ value = 0
+ }
+ if (now_time - value > 3000) {
+ //db.set('jump_to_login',now_time); //暂时屏蔽登录时间查询
+ // 将当前页面route存vuex中 登录注册后跳转
+ let pages = getCurrentPages()
+ let page = pages[pages.length - 1]
+ // 获取页面参数信息
+ let pagePath = ''
+ // #ifdef H5 || MP-WEIXIN || APP-PLUS || APP-PLUS-NVUE
+ if (page.route.indexOf('pages/goods/index/index') !== -1) {
+ //商品详情页
+ if(page.goodsId) {
+ pagePath = '/' + page.route + '?id=' + page.goodsId;
+ }else{
+ pagePath = '/pages/index/index';
+ }
+ }
+ if (page.route.indexOf('pages/goods/index/group') !== -1) {
+ //团购秒杀详情页
+ if(page.goodsId && page.groupId) {
+ pagePath = '/' + page.route + '?id=' + page.goodsId + '&group_id' + page.groupId;
+ }else{
+ pagePath = '/pages/index/index';
+ }
+ }
+ // #endif
+
+ // #ifdef MP-ALIPAY
+ if (page.__proto__.route.indexOf('pages/goods/index/index') !== -1)
+ {
+ //商品详情页
+ if(page.rootVM.goodsId) {
+ pagePath = '/' + page.__proto__.route + '?id=' + page.rootVM.goodsId;
+ }else{
+ pagePath = '/pages/index/index';
+ }
+ }
+ if (page.__proto__.route.indexOf('pages/goods/index/group') !== -1) {
+ //团购秒杀详情页
+ if(page.rootVM.goodsId && page.rootVM.groupId) {
+ pagePath = '/' + page.__proto__.route + '?id=' + page.rootVM.goodsId + '&group_id' + page.rootVM.groupId;
+ }else{
+ pagePath = '/pages/index/index';
+ }
+ }
+ // #endif
+ if(pagePath){
+ store.commit({
+ type: 'redirect',
+ page: pagePath
+ })
+ }
+ uni.showToast({
+ title: '请先登录!',
+ icon: 'none',
+ duration: 1000,
+ success: function(res) {
+ // #ifdef H5 || APP-PLUS
+ setTimeout(() => {
+ uni.hideToast();
+ uni.navigateTo({
+ url: '/pages/public/index1'
+ })
+ }, 1000)
+ // #endif
+ // #ifdef MP-WEIXIN || MP-ALIPAY
+ setTimeout(() => {
+ uni.hideToast();
+ uni.navigateTo({
+ url: '/pages/public/choose/index',
+ animationType: 'pop-in',
+ animationDuration: 200
+ })
+ }, 500)
+ // #endif
+ }
+ })
+ }
+}
+
+//当出错的时候,显示错误信息,并且跳转 弃用
+/* function errorToBack(msg = '出错了,请重试',delta=1){
+ uni.showToast({
+ title: msg,
+ icon: 'none',
+ duration: 2000,
+ });
+ if(delta > 0){
+ setTimeout(function () {
+ uni.navigateBack({
+ delta: delta
+ })
+ }, 1000);
+ }
+} */
+//操作成功后,的提示信息
+function successToShow(msg = '保存成功', callback = function() {}) {
+ uni.showToast({
+ title: msg,
+ icon: 'success',
+ duration: 1000
+ })
+ setTimeout(function() {
+ callback()
+ }, 500)
+}
+
+//操作失败的提示信息
+function errorToShow(msg = '操作失败', callback = function() {}) {
+ uni.showToast({
+ title: msg,
+ icon: 'none',
+ duration: 1500
+ })
+ setTimeout(function() {
+ callback()
+ }, 1500)
+}
+
+//加载显示
+function loadToShow(msg = '加载中') {
+ uni.showToast({
+ title: msg,
+ icon: 'loading'
+ })
+}
+
+//加载隐藏
+function loadToHide() {
+ uni.hideToast()
+}
+
+// 提示框
+function modelShow(
+ title = '提示',
+ content = '确认执行此操作吗?',
+ callback = () => {},
+ showCancel = true,
+ cancelText = '取消',
+ confirmText = '确定'
+) {
+ uni.showModal({
+ title: title,
+ content: content,
+ showCancel: showCancel,
+ cancelText: cancelText,
+ confirmText: confirmText,
+ cancelText: cancelText,
+ success: function(res) {
+ if (res.confirm) {
+ // 用户点击确定操作
+ setTimeout(() => {
+ callback()
+ }, 500)
+ } else if (res.cancel) {
+ // 用户取消操作
+ }
+ }
+ })
+}
+
+//时间戳转时间格式
+function timeToDate(date, flag = false) {
+ var date = new Date(date * 1000) //如果date为13位不需要乘1000
+ var Y = date.getFullYear() + '-'
+ var M =
+ (date.getMonth() + 1 < 10
+ ? '0' + (date.getMonth() + 1)
+ : date.getMonth() + 1) + '-'
+ var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
+ var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
+ var m =
+ (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
+ var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
+ if(flag)
+ {
+ return Y + M + D
+ }
+ else
+ {
+ return Y + M + D + h + m + s
+ }
+}
+
+function time2date(micro_second) {
+ var time = {}
+ // 总秒数
+ var second = Math.floor(micro_second)
+ // 天数
+ time.day = PrefixInteger(Math.floor(second / 3600 / 24), 2)
+ // 小时
+ time.hour = PrefixInteger(Math.floor((second / 3600) % 24), 2)
+ // 分钟
+ time.minute = PrefixInteger(Math.floor((second / 60) % 60), 2)
+ // 秒
+ time.second = PrefixInteger(Math.floor(second % 60), 2)
+
+ var newtime = ''
+ if (time.day > 0) {
+ newtime =
+ time.day +
+ '天' +
+ time.hour +
+ '小时' +
+ time.minute +
+ '分' +
+ time.second +
+ '秒'
+ } else {
+ if (time.hour != 0) {
+ newtime = time.hour + '小时' + time.minute + '分' + time.second + '秒'
+ } else {
+ newtime = time.minute + '分' + time.second + '秒'
+ }
+ }
+ return newtime
+}
+
+function timeToDateObj(micro_second) {
+ var time = {}
+ // 总秒数
+ var second = Math.floor(micro_second)
+ // 天数
+ time.day = Math.floor(second / 3600 / 24)
+ // 小时
+ time.hour = Math.floor((second / 3600) % 24)
+ // 分钟
+ time.minute = Math.floor((second / 60) % 60)
+ // 秒
+ time.second = Math.floor(second % 60)
+
+ return time
+
+}
+
+//货币格式化
+function formatMoney(number, places, symbol, thousand, decimal) {
+ number = number || 0
+ places = !isNaN((places = Math.abs(places))) ? places : 2
+ symbol = symbol !== undefined ? symbol : '¥'
+ thousand = thousand || ','
+ decimal = decimal || '.'
+ var negative = number < 0 ? '-' : '',
+ i = parseInt((number = Math.abs(+number || 0).toFixed(places)), 10) + '',
+ j = (j = i.length) > 3 ? j % 3 : 0
+ return (
+ symbol +
+ negative +
+ (j ? i.substr(0, j) + thousand : '') +
+ i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand) +
+ (places
+ ? decimal +
+ Math.abs(number - i)
+ .toFixed(places)
+ .slice(2)
+ : '')
+ )
+}
+function throttle(fn, context, delay) {
+ clearTimeout(fn.timeoutId)
+ fn.timeoutId = setTimeout(function() {
+ fn.call(context)
+ }, delay)
+}
+
+// 时间格式化输出,如11:03 25:19 每1s都会调用一次
+function dateformat(micro_second) {
+ var time = {}
+ // 总秒数
+ var second = Math.floor(micro_second / 1000) // 天数
+ time.day = PrefixInteger(Math.floor(second / 3600 / 24), 2) // 小时
+ time.hour = PrefixInteger(Math.floor((second / 3600) % 24), 2) // 分钟
+ time.minute = PrefixInteger(Math.floor((second / 60) % 60), 2) // 秒
+ time.second = PrefixInteger(Math.floor(second % 60), 2)
+ return time
+}
+
+//不足位数前面补0
+function PrefixInteger(num, length) {
+ return (Array(length).join('0') + num).slice(-length)
+}
+
+//验证是否是手机号
+function isPhoneNumber(str) {
+ var myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
+ if (!myreg.test(str)) {
+ return false
+ } else {
+ return true
+ }
+}
+
+/**
+ *
+ * 对象参数转为url参数
+ *
+ */
+function builderUrlParams(url, data) {
+ if (typeof url == 'undefined' || url == null || url == '') {
+ return ''
+ }
+ if (typeof data == 'undefined' || data == null || typeof data != 'object') {
+ return ''
+ }
+ url += url.indexOf('?') != -1 ? '' : '?'
+ for (var k in data) {
+ url += (url.indexOf('=') != -1 ? '&' : '') + k + '=' + encodeURI(data[k])
+ }
+ return url
+}
+
+/**
+ * 使用循环的方式判断一个元素是否存在于一个数组中
+ * @param {Object} arr 数组
+ * @param {Object} value 元素值
+ */
+function isInArray(arr, value) {
+ for (var i = 0; i < arr.length; i++) {
+ if (value === arr[i]) {
+ return true
+ }
+ }
+ return false
+}
+/**
+ * 统一跳转
+ */
+function navigateTo(url) {
+ uni.navigateTo({
+ url: url,
+ animationType: 'pop-in',
+ animationDuration: 300
+ })
+}
+
+/**
+ * 关闭当前页面并跳转
+ */
+function redirectTo(url) {
+ uni.redirectTo({
+ url: url,
+ animationType: 'pop-in',
+ animationDuration: 300
+ })
+}
+
+/**
+ * 获取url参数
+ *
+ * @param {*} name
+ * @param {*} [url=window.location.serach]
+ * @returns
+ */
+function getQueryString(name, url) {
+ var url = url || window.location.href
+ var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
+ var r = url.substr(1).match(reg)
+ if (r != null) {
+ return r[2]
+ }
+ return null
+}
+
+/**
+ *
+ * 判断是否在微信浏览器 true是
+ */
+function isWeiXinBrowser() {
+ // #ifdef H5
+ // window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
+ let ua = window.navigator.userAgent.toLowerCase()
+ // 通过正则表达式匹配ua中是否含有MicroMessenger字符串
+ if (ua.match(/MicroMessenger/i) == 'micromessenger') {
+ return true
+ } else {
+ return false
+ }
+ // #endif
+
+ return false
+}
+
+/**
+ * 金额相加
+ * @param {Object} value1
+ * @param {Object} value2
+ */
+function moneySum(value1,value2){
+ return (parseFloat(value1)+parseFloat(value2)).toFixed(2);
+}
+/**
+ * 金额相减
+ * @param {Object} value1
+ * @param {Object} value2
+ */
+function moneySub(value1,value2){
+ let res = (parseFloat(value1)-parseFloat(value2)).toFixed(2);
+ return res>0?res:0;
+}
+
+
+/**
+ * 分享URL解压缩
+ * @param {Object} url
+ */
+function shareParameterEncode(url){
+ let urlArray = url.split('-');
+ let newUrl = 'type=' + urlArray[0] + '&invite=' + urlArray[1] + '&id=' + urlArray[2] + '&team_id=' + urlArray[3] + '&id_type=' + urlArray[4] + '&page_code=' + urlArray[5] + '&group_id=' + urlArray[6];
+ return newUrl;
+}
+
+
+/**
+ * 分享URL压缩
+ * @param {Object} url
+ */
+function shareParameterDecode(url){
+ var urlArray = url.split('&');
+ var allParameter = {
+ 'type': '',
+ 'invite': '',
+ 'id': '',
+ 'team_id': '',
+ 'id_type': '',
+ 'page_code': '',
+ 'group_id': '',
+ };
+ for(var i = 0; i < urlArray.length; i++) {
+ var parameter = urlArray[i].split('=');
+ allParameter[parameter[0]] = parameter[1];
+ }
+ var newUrl = allParameter.type + '-' + allParameter.invite + '-' + allParameter.id + '-' + allParameter.team_id + '-' + allParameter.id_type + '-' + allParameter.page_code + '-' + allParameter.group_id;
+ return newUrl;
+}
+
+export {
+ deepCopy,
+ jumpToLogin,
+ timeToDate,
+ formatMoney,
+ /* errorToBack, */
+ successToShow,
+ throttle,
+ errorToShow,
+ time2date,
+ isPhoneNumber,
+ isInArray,
+ loadToShow,
+ loadToHide,
+ navigateTo,
+ redirectTo,
+ modelShow,
+ builderUrlParams,
+ isWeiXinBrowser,
+ dateformat,
+ getQueryString,
+ timeToDateObj,
+ moneySum,
+ moneySub,
+ shareParameterEncode,
+ shareParameterDecode
+}
diff --git a/mallplusui-uniapp-app2/config/config.js b/mallplusui-uniapp-app2/config/config.js
new file mode 100644
index 0000000..91b81d5
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/config.js
@@ -0,0 +1,14 @@
+// // export const apiBaseUrl = 'http://www.b2c.com/'
+// export const apiBaseUrl = 'http://192.168.43.195:8081/'
+export const apiBaseUrl = 'http://www.yyundong.com:8081/'
+//export const apiBaseUrl = 'https://demo.jihainet.com/'
+// #ifdef H5
+export const baseUrl=process.env.NODE_ENV === 'development'?window.location.origin+'/':apiBaseUrl
+// #endif
+export const paymentType = {
+ //支付单类型
+ order: 1, //订单
+ recharge: 2, //充值
+ form_order: 5, //表单付款码
+ form_pay: 6 //表单订单
+}
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/config/db.js b/mallplusui-uniapp-app2/config/db.js
new file mode 100644
index 0000000..4a74ea7
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/db.js
@@ -0,0 +1,84 @@
+import * as common from './common.js' //引入common
+
+//取值
+function get(key,sync = true) {
+ try {
+ if(sync){
+ return uni.getStorageSync(key);
+ }else{
+ let data = '';
+ uni.getStorage({
+ key:key,
+ success: function (res) {
+ data = res.data;
+ }
+ });
+ return data;
+ }
+ } catch (e) {
+ return false;
+ }
+}
+
+//赋值
+function set(key, value, sync = true) {
+ try {
+ if (sync) {
+ return uni.setStorageSync(key, value);
+ } else {
+ uni.setStorage({
+ key: key,
+ data: value
+ });
+ }
+ } catch (e) {
+
+ }
+}
+
+//移除
+function del(key, sync = true){
+ try {
+ if (sync) {
+ return uni.removeStorageSync(key);
+ } else {
+ uni.removeStorage({
+ key: key
+ });
+ }
+ } catch (e) {
+ return false;
+ }
+}
+
+//清空
+function clear(sync = true){
+ try {
+ if (sync) {
+ return uni.clearStorageSync();
+ } else {
+ uni.clearStorage();
+ }
+ } catch (e) {
+ return false;
+ }
+}
+
+//获取用户token,如果缓存有,直接返回,如果没有,就先微信登陆,然后服务器登陆,最后返回token
+function userToken(callback) {
+ var token = get('userToken');
+ if (token){
+ callback(token);
+ }else{
+ //如果没有登陆,就去登陆
+ common.jumpToLogin();
+ }
+}
+
+export {
+ get,
+ set,
+ del,
+ clear,
+ userToken
+}
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/config/mixins.js b/mallplusui-uniapp-app2/config/mixins.js
new file mode 100644
index 0000000..4f1bca0
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/mixins.js
@@ -0,0 +1,176 @@
+export const orders = {
+ mounted() {},
+ methods: {
+ // 查看订单详情
+ orderDetail(orderId) {
+ this.$common.navigateTo(
+ '/pages/member/order/orderdetail?order_id=' + orderId
+ )
+ },
+ // 取消订单
+
+ // 去支付
+ toPay(orderId) {
+ this.$common.navigateTo(
+ '/pages/order/payment/index?order_id=' + orderId + '&type=1'
+ )
+ },
+ // 确认收货
+
+ // 去评价
+ toEvaluate(orderId) {
+ this.$common.navigateTo(
+ '/pages/member/order/evaluate?order_id=' + orderId
+ )
+ },
+ // 申请售后
+
+ // 查看物流信息
+ showExpress(code, no, address = '') {
+ let params = encodeURIComponent(
+ 'code=' + code + '&no=' + no + '&add=' + address
+ )
+
+ this.$common.navigateTo(
+ '/pages/member/order/express_delivery?params=' + params
+ )
+ }
+ }
+}
+
+/**
+ * 商品接口信息
+ *
+ */
+export const goods = {
+ mounted() {},
+ methods: {
+ // 查看商品详情
+ goodsDetail(goodsId) {
+ this.$common.navigateTo('/pages/goods/index/index?id=' + goodsId)
+ },
+ // 跳转商品列表页
+ goodsList(obj = {}) {
+ let url = '/pages/classify/index'
+ if (Object.keys(obj).length) {
+ url = this.$common.builderUrlParams(url, obj)
+ }
+ this.$common.navigateTo(url)
+ },
+ // 团购秒杀详情
+ groupDetail(id, group_id) {
+ this.$common.navigateTo(
+ '/pages/goods/index/group?id=' + id + '&group_id=' + group_id
+ )
+ },
+ //拼团详情页
+ pintuanDetail(id, team_id) {
+ if (team_id) {
+ this.$common.navigateTo(
+ '/pages/goods/index/pintuan?id=' + id + '&team_id=' + team_id
+ )
+ } else {
+ this.$common.navigateTo('/pages/goods/index/pintuan?id=' + id)
+ }
+ }
+ }
+}
+
+/**
+ *
+ * 返回操作处理
+ *
+ */
+export const goBack = {
+ onBackPress(options) {
+ if (options.from === 'navigateBack') {
+ return false
+ }
+ let loginPages = ['/pages/cart/index/index', '/pages/member/index/index']
+ let backPage = this.$store.state.redirectPage
+ if (loginPages.indexOf(backPage) > -1) {
+ this.$store.commit({
+ type: 'redirect',
+ page: ''
+ })
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ return true
+ }
+ }
+}
+
+/* Function Info
+ * Author: zhf
+ * CreateTime: 2019/7/12 下午12:10:00
+ * LastEditor: zhf
+ * ModifyTime: 2019/7/12 下午12:10:00
+ * Description: 登录成功统一跳转处理
+ */
+
+export const jumpBackPage = {
+ methods: {
+ handleBack() {
+ let redirect = this.$store.state.redirectPage
+ this.$store.commit({
+ type: 'redirect',
+ page: ''
+ })
+ let switchTabs = ['/pages/index/index', '/pages/member/index/index']
+ if (switchTabs.indexOf(redirect) > -1) {
+ uni.switchTab({
+ url: redirect
+ })
+ } else if (redirect) {
+ uni.redirectTo({
+ url: redirect
+ })
+ } else {
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ }
+ }
+ }
+}
+
+/* Function Info
+ * Author: zhf
+ * CreateTime: 2019/7/12 下午12:10:28
+ * LastEditor: zhf
+ * ModifyTime: 2019/7/12 下午12:10:28
+ * Description: 操作判断登录处理
+ */
+
+export const checkLogin = {
+ methods: {
+ checkIsLogin() {
+ uni.showToast({
+ title: '请先登录!',
+ icon: 'none',
+ duration: 800,
+ success: function(res) {
+ // #ifdef H5 || APP-PLUS
+ setTimeout(() => {
+ uni.hideToast()
+ uni.navigateTo({
+ url: '/pages/public/index1'
+ })
+ }, 800)
+ // #endif
+ // #ifdef MP-WEIXIN || MP-ALIPAY
+ setTimeout(() => {
+ uni.hideToast()
+ uni.navigateTo({
+ url: '/pages/public/choose/index',
+ animationType: 'pop-in',
+ animationDuration: 200
+ })
+ }, 500)
+ // #endif
+ }
+ })
+ }
+ }
+}
diff --git a/mallplusui-uniapp-app2/config/requestConfig.js b/mallplusui-uniapp-app2/config/requestConfig.js
new file mode 100644
index 0000000..8271668
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/requestConfig.js
@@ -0,0 +1,211 @@
+import request from "@/plugins/request";
+import store from '@/config/store';
+import base from '@/config/baseUrl';
+// #ifdef H5
+import {
+ h5Login
+} from '@/config/html5Utils';
+// #endif
+// #ifdef MP-WEIXIN
+import {
+ onLogin
+} from '@/config/login';
+// #endif
+let version_code = '';
+// #ifdef APP-PLUS
+import { getCurrentNo } from '@/plugins/APPUpdate';
+setTimeout(() => {
+ getCurrentNo(function(res){
+ console.log("版本号",res);
+ version_code = res.versionCode;
+ });
+},200);
+// #endif
+
+//可以new多个request来支持多个域名请求
+let $http = new request({
+ //接口请求地址
+ baseUrl: base.baseUrl,
+ //服务器本地上传文件地址
+ fileUrl: base.baseUrl,
+ //设置请求头(如果使用报错跨域问题,可能是content-type请求类型和后台那边设置的不一致)
+ header: {
+ 'Content-Type': 'application/json;charset=UTF-8',
+ 'project_token': base.projectToken, //项目token(可删除)
+ }
+});
+// 添加获取七牛云token的方法
+$http.getQnToken = function(callback){
+ //该地址需要开发者自行配置(每个后台的接口风格都不一样)
+ $http.get("api/common/v1/qn_upload").then(data => {
+ /*
+ *接口返回参数:
+ *visitPrefix:访问文件的域名
+ *token:七牛云上传token
+ *folderPath:上传的文件夹
+ *region: 地区 默认为:SCN
+ */
+ callback({
+ visitPrefix: data.visitPrefix,
+ token: data.token,
+ folderPath: data.folderPath
+ });
+ });
+}
+//请求开始拦截器
+$http.requestStart = function(options) {
+ console.log("请求开始", options);
+ if (options.load) {
+ //打开加载动画
+ store.commit("setLoadingShow", true);
+ }
+ // 图片上传大小限制
+ if (options.method == "FILE" && options.maxSize) {
+ // 文件最大字节: options.maxSize 可以在调用方法的时候加入参数
+ maxSize = options.maxSize;
+ for (let item of options.files) {
+ if (item.size > maxSize) {
+ setTimeout(() => {
+ uni.showToast({
+ title: "图片过大,请重新上传",
+ icon: "none"
+ });
+ }, 500);
+ return false;
+ }
+ }
+ }
+ // #ifdef APP-PLUS
+ // 添加当前版本号
+ if(version_code){
+ options.header['version_code'] = version_code;
+ }
+ // #endif
+ //请求前加入token
+ if (store.state.userInfo.token) {
+ options.header['user_token'] = store.state.userInfo.token;
+ };
+ return options;
+}
+//请求结束
+$http.requestEnd = function(options, resolve) {
+ //判断当前接口是否需要加载动画
+ if (options.load) {
+ // 关闭加载动画
+ store.commit("setLoadingShow", false);
+ }
+ if (resolve.errMsg && resolve.statusCode && resolve.statusCode > 300) {
+ setTimeout(() => {
+ uni.showToast({
+ title: "网络错误,请检查一下网络",
+ icon: "none"
+ });
+ }, 500);
+ }
+}
+let loginPopupNum = 0;
+//所有接口数据处理(此方法需要开发者根据各自的接口返回类型修改,以下只是模板)
+$http.dataFactory = function(res) {
+ console.log("接口请求数据", {
+ url: res.url,
+ resolve: res.response,
+ header: res.header,
+ data: res.data,
+ method: res.method,
+ });
+ if (res.response.statusCode && res.response.statusCode == 200) {
+ let httpData = res.response.data;
+
+ /*********以下只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/
+
+ //判断数据是否请求成功
+ if (httpData.success || httpData.code == 200) {
+ // 返回正确的结果(then接受数据)
+ res.resolve(httpData.data);
+ } else if (httpData.code == "1000" || httpData.code == "1001" || httpData.code == 1100) {
+ // 失败重发
+ // $http.request({
+ // url: res.url,
+ // data: res.data,
+ // method: res.method,
+ // header: res.header,
+ // isPrompt: res.isPrompt,//(默认 true 说明:本接口抛出的错误是否提示)
+ // load: res.load,//(默认 true 说明:本接口是否提示加载动画)
+ // isFactory: res.isFactory, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数将失去作用)
+ // }).then(data => {
+ // res.resolve(data);
+ // });
+ store.commit("emptyUserInfo");
+ // #ifdef MP-WEIXIN
+ onLogin();
+ // #endif
+ // #ifdef H5
+ h5Login("force");
+ // #endif
+ // #ifdef APP-PLUS
+ var content = '此时此刻需要您登录喔~';
+ if (httpData.code == "1000") {
+ content = '此时此刻需要您登录喔';
+ }
+ if (loginPopupNum <= 0) {
+ loginPopupNum++;
+ uni.showModal({
+ title: '温馨提示',
+ content: content,
+ confirmText: "去登录",
+ cancelText: "再逛会",
+ success: function(res) {
+ loginPopupNum--;
+ if (res.confirm) {
+ uni.navigateTo({
+ url: "/pages/user/login"
+ });
+ }
+ }
+ });
+ }
+ // #endif
+ // 返回错误的结果(catch接受数据)
+ res.reject(res.response);
+ } else if (httpData.code == "1004") {
+ if (loginPopupNum <= 0) {
+ loginPopupNum++;
+ uni.showModal({
+ title: "提示",
+ content: "您还未绑定手机号,请先绑定~",
+ confirmText: "去绑定",
+ cancelText: "再逛会",
+ success: (res) => {
+ loginPopupNum--;
+ if (res.confirm) {
+ uni.navigateTo({
+ url: '/pages/user/bindPhone'
+ });
+ }
+ }
+ });
+ }
+ // 返回错误的结果(catch接受数据)
+ res.reject(res.response);
+ } else { //其他错误提示
+ if (res.isPrompt) {
+ setTimeout(function() {
+ uni.showToast({
+ title: httpData.info || httpData.msg,
+ icon: "none",
+ duration: 3000
+ });
+ }, 500);
+ }
+ // 返回错误的结果(catch接受数据)
+ res.reject(res.response);
+ }
+
+ /*********以上只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/
+
+ } else {
+ // 返回错误的结果(catch接受数据)
+ res.reject(res.response);
+ }
+};
+export default $http;
diff --git a/mallplusui-uniapp-app2/config/store.js b/mallplusui-uniapp-app2/config/store.js
new file mode 100644
index 0000000..e549b60
--- /dev/null
+++ b/mallplusui-uniapp-app2/config/store.js
@@ -0,0 +1,124 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+Vue.use(Vuex);
+//变量
+const state = {
+ //用户数据
+ userInfo: {},
+ //webView地址
+ webViewUrl: "",
+ loadingShow: false,
+ //微信场景参数
+ chatScenesInfo: {},
+ //登录弹窗状态
+ loginPopupShow: false,
+ //当前位置
+ currentAddress: {
+ areaName: "请选择",
+ areaId: ''
+ },
+};
+//缓存浏览器的数据名称
+const cacheNameList = ["userInfo"];
+let clearTime;
+const mutations = {
+ //取出缓存数据(打开APP就取出)
+ setCacheData(state) {
+ for (let name of cacheNameList) {
+ // #ifndef H5
+ let data = uni.getStorageSync(name);
+ // #endif
+ // #ifdef H5
+ let data = sessionStorage.getItem(name) || localStorage.getItem(name);
+ // #endif
+ if (data) {
+ // #ifdef H5
+ try {
+ data = JSON.parse(data);
+ } catch (e) {
+ }
+ // #endif
+ state[name] = data;
+ }
+ }
+ },
+ //储存用户信息
+ setUserInfo(state, data) {
+ if (data) {
+ state.userInfo = Object.assign(state.userInfo,data);
+ // #ifdef H5
+ window.sessionStorage.setItem('userInfo', JSON.stringify(state.userInfo));
+ // #endif
+ // #ifndef H5
+ uni.setStorageSync('userInfo', state.userInfo);
+ // #endif
+ }
+ },
+ // 退出APP
+ emptyUserInfo(state) {
+ state.userInfo = {};
+ // #ifdef H5
+ window.sessionStorage.removeItem("userInfo");
+ // #endif
+ // #ifndef H5
+ uni.removeStorageSync("userInfo");
+ // #endif
+ },
+ //WebView地址
+ setWebViewUrl(state, data) {
+ if (data) {
+ state.webViewUrl = data;
+ // #ifdef H5
+ window.sessionStorage.setItem('webViewUrl', data);
+ // #endif
+ }
+ },
+ //数据加载状态
+ setLoadingShow(state, data) {
+ if(state.loadingShow){
+ clearTime && clearTimeout(clearTime);
+ clearTime = setTimeout(function(){
+ state.loadingShow = data;
+ },300);
+ } else {
+ state.loadingShow = data;
+ }
+ },
+ //微信场景参数
+ setChatScenesInfo(state, data) {
+ if (data) {
+ state.chatScenesInfo = data;
+ }
+ },
+ //登录弹窗状态
+ setLoginPopupShow(state, data) {
+ state.loginPopupShow = data;
+ },
+ //当前地址
+ setCurrentAddress(state, data) {
+ if (data) {
+ state.currentAddress = Object.assign(state.currentAddress, data);
+ let addressInfo = {
+ "provinceId": state.currentAddress.provinceId,
+ "provinceName": state.currentAddress.provinceName,
+ "cityId": state.currentAddress.cityId,
+ "cityName": state.currentAddress.cityName,
+ "areaId": state.currentAddress.areaId,
+ "areaName": state.currentAddress.areaName,
+ };
+ // #ifdef H5
+ window.sessionStorage.setItem('currentAddress', JSON.stringify(addressInfo));
+ // #endif
+ // #ifndef H5
+ uni.setStorageSync('currentAddress', addressInfo);
+ // #endif
+ }
+ }
+};
+//异步处理
+const actions = {};
+export default new Vuex.Store({
+ state,
+ mutations,
+ actions
+});
diff --git a/mallplusui-uniapp-app2/main.js b/mallplusui-uniapp-app2/main.js
new file mode 100644
index 0000000..d85e0d5
--- /dev/null
+++ b/mallplusui-uniapp-app2/main.js
@@ -0,0 +1,62 @@
+import Vue from 'vue'
+import store from './store'
+import App from './App'
+import * as otherApi from './config/api.js'
+
+
+import * as Common from './config/common.js'
+import * as Db from './config/db.js'
+import * as Config from './config/config.js'
+import Json from './Json' //测试用数据
+/**
+ * 因工具函数属于公司资产, 所以直接在Vue实例挂载几个常用的函数
+ * 所有测试用数据均存放于根目录json.js
+ *
+ * css部分使用了App.vue下的全局样式和iconfont图标,有需要图标库的可以留言。
+ * 示例使用了uni.scss下的变量, 除变量外已尽量移除特有语法,可直接替换为其他预处理器使用
+ */
+const msg = (title, duration=1500, mask=false, icon='none')=>{
+ //统一提示方便全局修改
+ if(Boolean(title) === false){
+ return;
+ }
+ uni.showToast({
+ title,
+ duration,
+ mask,
+ icon
+ });
+}
+const json = type=>{
+ //模拟异步请求数据
+ return new Promise(resolve=>{
+ setTimeout(()=>{
+ resolve(Json[type]);
+ }, 500)
+ })
+}
+
+const prePage = ()=>{
+ let pages = getCurrentPages();
+ let prePage = pages[pages.length - 2];
+ // #ifdef H5
+ return prePage;
+ // #endif
+
+ return prePage.$vm;
+}
+Vue.prototype.$otherApi = otherApi;
+Vue.prototype.$common = Common;
+Vue.prototype.$db = Db;
+Vue.prototype.$config = Config;
+Vue.config.productionTip = false
+Vue.prototype.$fire = new Vue();
+Vue.prototype.$store = store;
+Vue.prototype.$api = {msg, json, prePage};
+
+App.mpType = 'app'
+
+const app = new Vue({
+ ...App
+})
+app.$mount()
diff --git a/mallplusui-uniapp-app2/mallplus.keystore b/mallplusui-uniapp-app2/mallplus.keystore
new file mode 100644
index 0000000..70098af
Binary files /dev/null and b/mallplusui-uniapp-app2/mallplus.keystore differ
diff --git a/mallplusui-uniapp-app2/manifest.json b/mallplusui-uniapp-app2/manifest.json
new file mode 100644
index 0000000..7a98152
--- /dev/null
+++ b/mallplusui-uniapp-app2/manifest.json
@@ -0,0 +1,172 @@
+{
+ "name" : "汇融云链2",
+ "appid" : "__UNI__557CCCF",
+ "description" : "",
+ "versionName" : "4.0.0.0",
+ "versionCode" : 4000,
+ "transformPx" : false,
+ "app-plus" : {
+ "usingComponents" : true,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : false,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ "modules" : {
+ "OAuth" : {},
+ "Payment" : {},
+ "Share" : {},
+ "Contacts" : {},
+ "iBeacon" : {},
+ "Maps" : {}
+ },
+ "distribute" : {
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "ios" : {
+ "dSYMs" : false
+ },
+ "sdkConfigs" : {
+ "oauth" : {
+ "weixin" : {
+ "appid" : "wx04b09a8148e4875c",
+ "appsecret" : "3526ec2107c123f59b5c1cb7ff23a252",
+ "UniversalLinks" : ""
+ },
+ "qq" : {
+ "appid" : "101390373"
+ }
+ },
+ "payment" : {
+ "weixin" : {
+ "appid" : "wx04b09a8148e4875c",
+ "UniversalLinks" : "",
+ "__platform__" : [ "android" ]
+ },
+ "alipay" : {}
+ },
+ "push" : {},
+ "maps" : {
+ "amap" : {
+ "appkey_ios" : "8f3a475e0c7c2136efe071f94efb1cae",
+ "appkey_android" : "6c0a5f6f649f14b4ec575612761f867c"
+ }
+ },
+ "ad" : {},
+ "share" : {
+ "weixin" : {
+ "appid" : "wx04b09a8148e4875c",
+ "UniversalLinks" : ""
+ },
+ "qq" : {
+ "appid" : "101390373"
+ }
+ }
+ },
+ "icons" : {
+ "ios" : {
+ "iphone" : {
+ "app@2x" : "unpackage/res/icons/120x120.png",
+ "app@3x" : "unpackage/res/icons/180x180.png",
+ "notification@2x" : "unpackage/res/icons/40x40.png",
+ "notification@3x" : "unpackage/res/icons/60x60.png",
+ "settings@2x" : "unpackage/res/icons/58x58.png",
+ "settings@3x" : "unpackage/res/icons/87x87.png",
+ "spotlight@2x" : "unpackage/res/icons/80x80.png",
+ "spotlight@3x" : "unpackage/res/icons/120x120.png"
+ },
+ "appstore" : "unpackage/res/icons/1024x1024.png",
+ "ipad" : {
+ "app" : "unpackage/res/icons/76x76.png",
+ "app@2x" : "unpackage/res/icons/152x152.png",
+ "notification" : "unpackage/res/icons/20x20.png",
+ "notification@2x" : "unpackage/res/icons/40x40.png",
+ "proapp@2x" : "unpackage/res/icons/167x167.png",
+ "settings" : "unpackage/res/icons/29x29.png",
+ "settings@2x" : "unpackage/res/icons/58x58.png",
+ "spotlight" : "unpackage/res/icons/40x40.png",
+ "spotlight@2x" : "unpackage/res/icons/80x80.png"
+ }
+ },
+ "android" : {
+ "hdpi" : "unpackage/res/icons/72x72.png",
+ "xhdpi" : "unpackage/res/icons/96x96.png",
+ "xxhdpi" : "unpackage/res/icons/144x144.png",
+ "xxxhdpi" : "unpackage/res/icons/192x192.png"
+ }
+ },
+ "splashscreen" : {
+ "android" : {
+ "hdpi" : "",
+ "xhdpi" : "",
+ "xxhdpi" : ""
+ }
+ }
+ }
+ },
+ "quickapp" : {},
+ "mp-weixin" : {
+ "usingComponents" : true,
+ "appid" : "wx15d4269d3210863d",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "permission" : {}
+ },
+ "h5" : {
+ "title" : "宇运动商城",
+ "domain" : "https://www.yyundong.com:8088/h5",
+ "router" : {
+ "base" : ""
+ },
+ "devServer" : {
+ "https" : false,
+ "port" : 8088
+ },
+ "sdkConfigs" : {
+ "maps" : {
+ "qqmap" : {
+ "key" : "RLHBZ-WMPRP-Q3JDS-V2IQA-JNRFH-EJBHL"
+ }
+ }
+ }
+ },
+ "mp-qq" : {
+ "appid" : "1109850600"
+ },
+ "quickapp-webview" : {
+ "icon" : "static/logo.png"
+ }
+}
diff --git a/mallplusui-uniapp-app2/node_modules/jweixin-module/README.md b/mallplusui-uniapp-app2/node_modules/jweixin-module/README.md
new file mode 100644
index 0000000..7c91d7b
--- /dev/null
+++ b/mallplusui-uniapp-app2/node_modules/jweixin-module/README.md
@@ -0,0 +1,30 @@
+# jweixin-module
+
+微信JS-SDK
+
+## 安装
+
+### NPM
+
+```shell
+npm install jweixin-module --save
+```
+
+### UMD
+
+```http
+https://unpkg.com/jweixin-module/out/index.js
+```
+
+## 使用
+
+```js
+var jweixin = require('jweixin-module')
+jweixin.ready(function(){
+ // TODO
+});
+```
+
+## 完整API
+
+>[微信JS-SDK说明文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115)
diff --git a/mallplusui-uniapp-app2/node_modules/jweixin-module/lib/index.js b/mallplusui-uniapp-app2/node_modules/jweixin-module/lib/index.js
new file mode 100644
index 0000000..1b5014b
--- /dev/null
+++ b/mallplusui-uniapp-app2/node_modules/jweixin-module/lib/index.js
@@ -0,0 +1 @@
+!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(window,function(o,e){if(!o.jWeixin){var n,c={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},a=function(){var e={};for(var n in c)e[c[n]]=n;return e}(),i=o.document,t=i.title,r=navigator.userAgent.toLowerCase(),s=navigator.platform.toLowerCase(),d=!(!s.match("mac")&&!s.match("win")),u=-1!=r.indexOf("wxdebugger"),l=-1!=r.indexOf("micromessenger"),p=-1!=r.indexOf("android"),f=-1!=r.indexOf("iphone")||-1!=r.indexOf("ipad"),m=(n=r.match(/micromessenger\/(\d+\.\d+\.\d+)/)||r.match(/micromessenger\/(\d+\.\d+)/))?n[1]:"",g={initStartTime:L(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},h={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:f?1:p?2:-1,clientVersion:m,url:encodeURIComponent(location.href)},v={},S={_completes:[]},y={state:0,data:{}};O(function(){g.initEndTime=L()});var I=!1,_=[],w={config:function(e){B("config",v=e);var t=!1!==v.check;O(function(){if(t)M(c.config,{verifyJsApiList:C(v.jsApiList),verifyOpenTagList:C(v.openTagList)},function(){S._complete=function(e){g.preVerifyEndTime=L(),y.state=1,y.data=e},S.success=function(e){h.isPreVerifyOk=0},S.fail=function(e){S._fail?S._fail(e):y.state=-1};var t=S._completes;return t.push(function(){!function(){if(!(d||u||v.debug||m<"6.0.2"||h.systemType<0)){var i=new Image;h.appId=v.appId,h.initTime=g.initEndTime-g.initStartTime,h.preVerifyTime=g.preVerifyEndTime-g.preVerifyStartTime,w.getNetworkType({isInnerInvoke:!0,success:function(e){h.networkType=e.networkType;var n="https://open.weixin.qq.com/sdk/report?v="+h.version+"&o="+h.isPreVerifyOk+"&s="+h.systemType+"&c="+h.clientVersion+"&a="+h.appId+"&n="+h.networkType+"&i="+h.initTime+"&p="+h.preVerifyTime+"&u="+h.url;i.src=n}})}}()}),S.complete=function(e){for(var n=0,i=t.length;n 0) {
+ var n = e.split("?")[0],
+ i = e.split("?")[1];
+ return n += ".html",
+ void 0 !== i ? n + "?" + i: n
+ }
+ }
+ if (!e.jWeixin) {
+ var h = {
+ config: "preVerifyJSAPI",
+ onMenuShareTimeline: "menu:share:timeline",
+ onMenuShareAppMessage: "menu:share:appmessage",
+ onMenuShareQQ: "menu:share:qq",
+ onMenuShareWeibo: "menu:share:weiboApp",
+ onMenuShareQZone: "menu:share:QZone",
+ previewImage: "imagePreview",
+ getLocation: "geoLocation",
+ openProductSpecificView: "openProductViewWithPid",
+ addCard: "batchAddCard",
+ openCard: "batchViewCard",
+ chooseWXPay: "getBrandWCPayRequest",
+ openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
+ startSearchBeacons: "startMonitoringBeacons",
+ stopSearchBeacons: "stopMonitoringBeacons",
+ onSearchBeacons: "onBeaconsInRange",
+ consumeAndShareCard: "consumedShareCard",
+ openAddress: "editAddress"
+ },
+ v = function() {
+ var e = {};
+ for (var n in h) e[h[n]] = n;
+ return e
+ } (),
+ S = e.document,
+ I = S.title,
+ y = navigator.userAgent.toLowerCase(),
+ _ = navigator.platform.toLowerCase(),
+ k = !(!_.match("mac") && !_.match("win")),
+ w = -1 != y.indexOf("wxdebugger"),
+ T = -1 != y.indexOf("micromessenger"),
+ M = -1 != y.indexOf("android"),
+ P = -1 != y.indexOf("iphone") || -1 != y.indexOf("ipad"),
+ x = function() {
+ var e = y.match(/micromessenger\/(\d+\.\d+\.\d+)/) || y.match(/micromessenger\/(\d+\.\d+)/);
+ return e ? e[1] : ""
+ } (),
+ A = {
+ initStartTime: p(),
+ initEndTime: 0,
+ preVerifyStartTime: 0,
+ preVerifyEndTime: 0
+ },
+ V = {
+ version: 1,
+ appId: "",
+ initTime: 0,
+ preVerifyTime: 0,
+ networkType: "",
+ isPreVerifyOk: 1,
+ systemType: P ? 1 : M ? 2 : -1,
+ clientVersion: x,
+ url: encodeURIComponent(location.href)
+ },
+ C = {},
+ L = {
+ _completes: []
+ },
+ B = {
+ state: 0,
+ data: {}
+ };
+ f(function() {
+ A.initEndTime = p()
+ });
+ var O = !1,
+ E = [],
+ N = {
+ config: function(e) {
+ C = e,
+ u("config", e);
+ var n = !1 !== C.check;
+ f(function() {
+ if (n) i(h.config, {
+ verifyJsApiList: d(C.jsApiList)
+ },
+ function() {
+ L._complete = function(e) {
+ A.preVerifyEndTime = p(),
+ B.state = 1,
+ B.data = e
+ },
+ L.success = function(e) {
+ V.isPreVerifyOk = 0
+ },
+ L.fail = function(e) {
+ L._fail ? L._fail(e) : B.state = -1
+ };
+ var e = L._completes;
+ return e.push(function() {
+ l()
+ }),
+ L.complete = function(n) {
+ for (var i = 0,
+ t = e.length; i < t; ++i) e[i]();
+ L._completes = []
+ },
+ L
+ } ()),
+ A.preVerifyStartTime = p();
+ else {
+ B.state = 1;
+ for (var e = L._completes,
+ t = 0,
+ o = e.length; t < o; ++t) e[t]();
+ L._completes = []
+ }
+ }),
+ m()
+ },
+ ready: function(e) {
+ 0 != B.state ? e() : (L._completes.push(e), !T && C.debug && e())
+ },
+ error: function(e) {
+ x < "6.0.2" || ( - 1 == B.state ? e(B.data) : L._fail = e)
+ },
+ checkJsApi: function(e) {
+ var n = function(e) {
+ var n = e.checkResult;
+ for (var i in n) {
+ var t = v[i];
+ t && (n[t] = n[i], delete n[i])
+ }
+ return e
+ };
+ i("checkJsApi", {
+ jsApiList: d(e.jsApiList)
+ },
+ (e._complete = function(e) {
+ if (M) {
+ var i = e.checkResult;
+ i && (e.checkResult = JSON.parse(i))
+ }
+ e = n(e)
+ },
+ e))
+ },
+ onMenuShareTimeline: function(e) {
+ t(h.onMenuShareTimeline, {
+ complete: function() {
+ i("shareTimeline", {
+ title: e.title || I,
+ desc: e.title || I,
+ img_url: e.imgUrl || "",
+ link: e.link || location.href,
+ type: e.type || "link",
+ data_url: e.dataUrl || ""
+ },
+ e)
+ }
+ },
+ e)
+ },
+ onMenuShareAppMessage: function(e) {
+ t(h.onMenuShareAppMessage, {
+ complete: function(n) {
+ "favorite" === n.scene ? i("sendAppMessage", {
+ title: e.title || I,
+ desc: e.desc || "",
+ link: e.link || location.href,
+ img_url: e.imgUrl || "",
+ type: e.type || "link",
+ data_url: e.dataUrl || ""
+ }) : i("sendAppMessage", {
+ title: e.title || I,
+ desc: e.desc || "",
+ link: e.link || location.href,
+ img_url: e.imgUrl || "",
+ type: e.type || "link",
+ data_url: e.dataUrl || ""
+ },
+ e)
+ }
+ },
+ e)
+ },
+ onMenuShareQQ: function(e) {
+ t(h.onMenuShareQQ, {
+ complete: function() {
+ i("shareQQ", {
+ title: e.title || I,
+ desc: e.desc || "",
+ img_url: e.imgUrl || "",
+ link: e.link || location.href
+ },
+ e)
+ }
+ },
+ e)
+ },
+ onMenuShareWeibo: function(e) {
+ t(h.onMenuShareWeibo, {
+ complete: function() {
+ i("shareWeiboApp", {
+ title: e.title || I,
+ desc: e.desc || "",
+ img_url: e.imgUrl || "",
+ link: e.link || location.href
+ },
+ e)
+ }
+ },
+ e)
+ },
+ onMenuShareQZone: function(e) {
+ t(h.onMenuShareQZone, {
+ complete: function() {
+ i("shareQZone", {
+ title: e.title || I,
+ desc: e.desc || "",
+ img_url: e.imgUrl || "",
+ link: e.link || location.href
+ },
+ e)
+ }
+ },
+ e)
+ },
+ updateTimelineShareData: function(e) {
+ i("updateTimelineShareData", {
+ title: e.title,
+ link: e.link,
+ imgUrl: e.imgUrl
+ },
+ e)
+ },
+ updateAppMessageShareData: function(e) {
+ i("updateAppMessageShareData", {
+ title: e.title,
+ desc: e.desc,
+ link: e.link,
+ imgUrl: e.imgUrl
+ },
+ e)
+ },
+ startRecord: function(e) {
+ i("startRecord", {},
+ e)
+ },
+ stopRecord: function(e) {
+ i("stopRecord", {},
+ e)
+ },
+ onVoiceRecordEnd: function(e) {
+ t("onVoiceRecordEnd", e)
+ },
+ playVoice: function(e) {
+ i("playVoice", {
+ localId: e.localId
+ },
+ e)
+ },
+ pauseVoice: function(e) {
+ i("pauseVoice", {
+ localId: e.localId
+ },
+ e)
+ },
+ stopVoice: function(e) {
+ i("stopVoice", {
+ localId: e.localId
+ },
+ e)
+ },
+ onVoicePlayEnd: function(e) {
+ t("onVoicePlayEnd", e)
+ },
+ uploadVoice: function(e) {
+ i("uploadVoice", {
+ localId: e.localId,
+ isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
+ },
+ e)
+ },
+ downloadVoice: function(e) {
+ i("downloadVoice", {
+ serverId: e.serverId,
+ isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
+ },
+ e)
+ },
+ translateVoice: function(e) {
+ i("translateVoice", {
+ localId: e.localId,
+ isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
+ },
+ e)
+ },
+ chooseImage: function(e) {
+ i("chooseImage", {
+ scene: "1|2",
+ count: e.count || 9,
+ sizeType: e.sizeType || ["original", "compressed"],
+ sourceType: e.sourceType || ["album", "camera"]
+ },
+ (e._complete = function(e) {
+ if (M) {
+ var n = e.localIds;
+ try {
+ n && (e.localIds = JSON.parse(n))
+ } catch(e) {}
+ }
+ },
+ e))
+ },
+ getLocation: function(e) {},
+ previewImage: function(e) {
+ i(h.previewImage, {
+ current: e.current,
+ urls: e.urls
+ },
+ e)
+ },
+ uploadImage: function(e) {
+ i("uploadImage", {
+ localId: e.localId,
+ isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
+ },
+ e)
+ },
+ downloadImage: function(e) {
+ i("downloadImage", {
+ serverId: e.serverId,
+ isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
+ },
+ e)
+ },
+ getLocalImgData: function(e) { ! 1 === O ? (O = !0, i("getLocalImgData", {
+ localId: e.localId
+ },
+ (e._complete = function(e) {
+ if (O = !1, E.length > 0) {
+ var n = E.shift();
+ wx.getLocalImgData(n)
+ }
+ },
+ e))) : E.push(e)
+ },
+ getNetworkType: function(e) {
+ var n = function(e) {
+ var n = e.errMsg;
+ e.errMsg = "getNetworkType:ok";
+ var i = e.subtype;
+ if (delete e.subtype, i) e.networkType = i;
+ else {
+ var t = n.indexOf(":"),
+ o = n.substring(t + 1);
+ switch (o) {
+ case "wifi":
+ case "edge":
+ case "wwan":
+ e.networkType = o;
+ break;
+ default:
+ e.errMsg = "getNetworkType:fail"
+ }
+ }
+ return e
+ };
+ i("getNetworkType", {},
+ (e._complete = function(e) {
+ e = n(e)
+ },
+ e))
+ },
+ openLocation: function(e) {
+ i("openLocation", {
+ latitude: e.latitude,
+ longitude: e.longitude,
+ name: e.name || "",
+ address: e.address || "",
+ scale: e.scale || 28,
+ infoUrl: e.infoUrl || ""
+ },
+ e)
+ },
+ getLocation: function(e) {
+ e = e || {},
+ i(h.getLocation, {
+ type: e.type || "wgs84"
+ },
+ (e._complete = function(e) {
+ delete e.type
+ },
+ e))
+ },
+ hideOptionMenu: function(e) {
+ i("hideOptionMenu", {},
+ e)
+ },
+ showOptionMenu: function(e) {
+ i("showOptionMenu", {},
+ e)
+ },
+ closeWindow: function(e) {
+ i("closeWindow", {},
+ e = e || {})
+ },
+ hideMenuItems: function(e) {
+ i("hideMenuItems", {
+ menuList: e.menuList
+ },
+ e)
+ },
+ showMenuItems: function(e) {
+ i("showMenuItems", {
+ menuList: e.menuList
+ },
+ e)
+ },
+ hideAllNonBaseMenuItem: function(e) {
+ i("hideAllNonBaseMenuItem", {},
+ e)
+ },
+ showAllNonBaseMenuItem: function(e) {
+ i("showAllNonBaseMenuItem", {},
+ e)
+ },
+ scanQRCode: function(e) {
+ i("scanQRCode", {
+ needResult: (e = e || {}).needResult || 0,
+ scanType: e.scanType || ["qrCode", "barCode"]
+ },
+ (e._complete = function(e) {
+ if (P) {
+ var n = e.resultStr;
+ if (n) {
+ var i = JSON.parse(n);
+ e.resultStr = i && i.scan_code && i.scan_code.scan_result
+ }
+ }
+ },
+ e))
+ },
+ openAddress: function(e) {
+ i(h.openAddress, {},
+ (e._complete = function(e) {
+ e = a(e)
+ },
+ e))
+ },
+ openProductSpecificView: function(e) {
+ i(h.openProductSpecificView, {
+ pid: e.productId,
+ view_type: e.viewType || 0,
+ ext_info: e.extInfo
+ },
+ e)
+ },
+ addCard: function(e) {
+ for (var n = e.cardList,
+ t = [], o = 0, r = n.length; o < r; ++o) {
+ var a = n[o],
+ c = {
+ card_id: a.cardId,
+ card_ext: a.cardExt
+ };
+ t.push(c)
+ }
+ i(h.addCard, {
+ card_list: t
+ },
+ (e._complete = function(e) {
+ var n = e.card_list;
+ if (n) {
+ for (var i = 0,
+ t = (n = JSON.parse(n)).length; i < t; ++i) {
+ var o = n[i];
+ o.cardId = o.card_id,
+ o.cardExt = o.card_ext,
+ o.isSuccess = !!o.is_succ,
+ delete o.card_id,
+ delete o.card_ext,
+ delete o.is_succ
+ }
+ e.cardList = n,
+ delete e.card_list
+ }
+ },
+ e))
+ },
+ chooseCard: function(e) {
+ i("chooseCard", {
+ app_id: C.appId,
+ location_id: e.shopId || "",
+ sign_type: e.signType || "SHA1",
+ card_id: e.cardId || "",
+ card_type: e.cardType || "",
+ card_sign: e.cardSign,
+ time_stamp: e.timestamp + "",
+ nonce_str: e.nonceStr
+ },
+ (e._complete = function(e) {
+ e.cardList = e.choose_card_info,
+ delete e.choose_card_info
+ },
+ e))
+ },
+ openCard: function(e) {
+ for (var n = e.cardList,
+ t = [], o = 0, r = n.length; o < r; ++o) {
+ var a = n[o],
+ c = {
+ card_id: a.cardId,
+ code: a.code
+ };
+ t.push(c)
+ }
+ i(h.openCard, {
+ card_list: t
+ },
+ e)
+ },
+ consumeAndShareCard: function(e) {
+ i(h.consumeAndShareCard, {
+ consumedCardId: e.cardId,
+ consumedCode: e.code
+ },
+ e)
+ },
+ chooseWXPay: function(e) {
+ i(h.chooseWXPay, r(e), e)
+ },
+ openEnterpriseRedPacket: function(e) {
+ i(h.openEnterpriseRedPacket, r(e), e)
+ },
+ startSearchBeacons: function(e) {
+ i(h.startSearchBeacons, {
+ ticket: e.ticket
+ },
+ e)
+ },
+ stopSearchBeacons: function(e) {
+ i(h.stopSearchBeacons, {},
+ e)
+ },
+ onSearchBeacons: function(e) {
+ t(h.onSearchBeacons, e)
+ },
+ openEnterpriseChat: function(e) {
+ i("openEnterpriseChat", {
+ useridlist: e.userIds,
+ chatname: e.groupName
+ },
+ e)
+ },
+ launchMiniProgram: function(e) {
+ i("launchMiniProgram", {
+ targetAppId: e.targetAppId,
+ path: g(e.path),
+ envVersion: e.envVersion
+ },
+ e)
+ },
+ miniProgram: {
+ navigateBack: function(e) {
+ e = e || {},
+ f(function() {
+ i("invokeMiniProgramAPI", {
+ name: "navigateBack",
+ arg: {
+ delta: e.delta || 1
+ }
+ },
+ e)
+ })
+ },
+ navigateTo: function(e) {
+ f(function() {
+ i("invokeMiniProgramAPI", {
+ name: "navigateTo",
+ arg: {
+ url: e.url
+ }
+ },
+ e)
+ })
+ },
+ redirectTo: function(e) {
+ f(function() {
+ i("invokeMiniProgramAPI", {
+ name: "redirectTo",
+ arg: {
+ url: e.url
+ }
+ },
+ e)
+ })
+ },
+ switchTab: function(e) {
+ f(function() {
+ i("invokeMiniProgramAPI", {
+ name: "switchTab",
+ arg: {
+ url: e.url
+ }
+ },
+ e)
+ })
+ },
+ reLaunch: function(e) {
+ f(function() {
+ i("invokeMiniProgramAPI", {
+ name: "reLaunch",
+ arg: {
+ url: e.url
+ }
+ },
+ e)
+ })
+ },
+ postMessage: function(e) {
+ f(function() {
+ i("invokeMiniProgramAPI", {
+ name: "postMessage",
+ arg: e.data || {}
+ },
+ e)
+ })
+ },
+ getEnv: function(n) {
+ f(function() {
+ n({
+ miniprogram: "miniprogram" === e.__wxjs_environment
+ })
+ })
+ }
+ }
+ },
+ b = 1,
+ R = {};
+ return S.addEventListener("error",
+ function(e) {
+ if (!M) {
+ var n = e.target,
+ i = n.tagName,
+ t = n.src;
+ if (("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) && -1 != t.indexOf("wxlocalresource://")) {
+ e.preventDefault(),
+ e.stopPropagation();
+ var o = n["wx-id"];
+ if (o || (o = b++, n["wx-id"] = o), R[o]) return;
+ R[o] = !0,
+ wx.ready(function() {
+ wx.getLocalImgData({
+ localId: t,
+ success: function(e) {
+ n.src = e.localData
+ }
+ })
+ })
+ }
+ }
+ },
+ !0),
+ S.addEventListener("load",
+ function(e) {
+ if (!M) {
+ var n = e.target,
+ i = n.tagName;
+ n.src;
+ if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) {
+ var t = n["wx-id"];
+ t && (R[t] = !1)
+ }
+ }
+ },
+ !0),
+ n && (e.wx = e.jWeixin = N),
+ N
+ }
+});
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/node_modules/weixin-js-sdk/index.original.js b/mallplusui-uniapp-app2/node_modules/weixin-js-sdk/index.original.js
new file mode 100644
index 0000000..9d66191
--- /dev/null
+++ b/mallplusui-uniapp-app2/node_modules/weixin-js-sdk/index.original.js
@@ -0,0 +1,2 @@
+// from http://res.wx.qq.com/open/js/jweixin-1.4.0.js
+!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(this,function(e,n){function i(n,i,t){e.WeixinJSBridge?WeixinJSBridge.invoke(n,o(i),function(e){c(n,e,t)}):u(n,t)}function t(n,i,t){e.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),c(n,e,i)}):t?u(n,t):u(n,i)}function o(e){return e=e||{},e.appId=C.appId,e.verifyAppId=C.appId,e.verifySignType="sha1",e.verifyTimestamp=C.timestamp+"",e.verifyNonceStr=C.nonceStr,e.verifySignature=C.signature,e}function r(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function a(e){return e.postalCode=e.addressPostalCode,delete e.addressPostalCode,e.provinceName=e.proviceFirstStageName,delete e.proviceFirstStageName,e.cityName=e.addressCitySecondStageName,delete e.addressCitySecondStageName,e.countryName=e.addressCountiesThirdStageName,delete e.addressCountiesThirdStageName,e.detailInfo=e.addressDetailInfo,delete e.addressDetailInfo,e}function c(e,n,i){"openEnterpriseChat"==e&&(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=s(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",C.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function s(e,n){var i=e,t=v[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}function d(e){if(e){for(var n=0,i=e.length;n0){var n=e.split("?")[0],i=e.split("?")[1];return n+=".html",void 0!==i?n+"?"+i:n}}if(!e.jWeixin){var h={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},v=function(){var e={};for(var n in h)e[h[n]]=n;return e}(),S=e.document,I=S.title,y=navigator.userAgent.toLowerCase(),_=navigator.platform.toLowerCase(),k=!(!_.match("mac")&&!_.match("win")),w=-1!=y.indexOf("wxdebugger"),T=-1!=y.indexOf("micromessenger"),M=-1!=y.indexOf("android"),P=-1!=y.indexOf("iphone")||-1!=y.indexOf("ipad"),x=function(){var e=y.match(/micromessenger\/(\d+\.\d+\.\d+)/)||y.match(/micromessenger\/(\d+\.\d+)/);return e?e[1]:""}(),A={initStartTime:p(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},V={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:P?1:M?2:-1,clientVersion:x,url:encodeURIComponent(location.href)},C={},L={_completes:[]},B={state:0,data:{}};f(function(){A.initEndTime=p()});var O=!1,E=[],N={config:function(e){C=e,u("config",e);var n=!1!==C.check;f(function(){if(n)i(h.config,{verifyJsApiList:d(C.jsApiList)},function(){L._complete=function(e){A.preVerifyEndTime=p(),B.state=1,B.data=e},L.success=function(e){V.isPreVerifyOk=0},L.fail=function(e){L._fail?L._fail(e):B.state=-1};var e=L._completes;return e.push(function(){l()}),L.complete=function(n){for(var i=0,t=e.length;i0){var n=E.shift();wx.getLocalImgData(n)}},e))):E.push(e)},getNetworkType:function(e){var n=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e};i("getNetworkType",{},(e._complete=function(e){e=n(e)},e))},openLocation:function(e){i("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){e=e||{},i(h.getLocation,{type:e.type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){i("hideOptionMenu",{},e)},showOptionMenu:function(e){i("showOptionMenu",{},e)},closeWindow:function(e){i("closeWindow",{},e=e||{})},hideMenuItems:function(e){i("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){i("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){i("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){i("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){i("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(P){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){i(h.openAddress,{},(e._complete=function(e){e=a(e)},e))},openProductSpecificView:function(e){i(h.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o
+
+
+ 购物车
+
+
+
+
+
+ 空空如也
+ 随便逛逛>
+
+
+
+ 空空如也
+ 去登陆>
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ {{ item.productAttr }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+
+
+
+
+ 清空
+
+
+ ¥{{ total }}
+
+ 已优惠
+ {{ promoteAmount }}
+ 元
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/category/areaGoods.vue b/mallplusui-uniapp-app2/pages/category/areaGoods.vue
new file mode 100644
index 0000000..ea8616e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/category/areaGoods.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+ 分类
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/category/category.vue b/mallplusui-uniapp-app2/pages/category/category.vue
new file mode 100644
index 0000000..2056265
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/category/category.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+ 分类
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+ {{ item.name }}
+
+
+
+ {{titem.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/index/index.vue b/mallplusui-uniapp-app2/pages/index/index.vue
new file mode 100644
index 0000000..7faee05
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/index/index.vue
@@ -0,0 +1,1424 @@
+
+
+
+
+ 汇融云链
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperCurrent + 1 }}
+ /
+ {{ swiperLength }}
+
+
+
+
+
+
+ 惠农套餐
+
+
+
+ 拼团特价
+
+
+
+ 税分兑换
+
+
+
+ 限时抢购
+
+
+
+ 农村社区
+
+
+
+
+
+ 分销商品
+
+
+
+ 会员商品
+
+
+
+ 区域商品
+
+
+
+ 精选标签
+
+
+
+ 卖家中心
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ ¥{{ item.flashPromotionPrice }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.goods.title }}
+
+ {{ item.groupPrice }}
+ ¥{{ item.goods.price }}
+
+
+
+ {{ item.maxPeople }}人成团
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+ 查看全部
+ More+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+ 【{{ item.storeName }}】
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/index/lease.vue b/mallplusui-uniapp-app2/pages/index/lease.vue
new file mode 100644
index 0000000..33a6994
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/index/lease.vue
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+ {{item.classify}}
+
+ {{item.browse_count}}浏览
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
+
+ {{item.classify}}
+
+ {{item.browse_count}}浏览
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+ {{item.classify}}
+
+ {{item.browse_count}}浏览
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/index/nearbyBusiness.vue b/mallplusui-uniapp-app2/pages/index/nearbyBusiness.vue
new file mode 100644
index 0000000..c6abf5f
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/index/nearbyBusiness.vue
@@ -0,0 +1,561 @@
+
+
+
+
+
+
+
+ {{ addressData.province }}-{{ addressData.city }}-{{ addressData.region }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部商家
+
+
+
+
+
+
+
+
+
+ 全部分类
+
+
+
+ 加载全部
+
+
+
+
+
+
+
+
+
+
+ 暂无商家记录
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+ 收藏 {{ item.collect }}
+
+
+
+ {{ item.addressDetail }}
+
+
+ {{ item.addressProvince }}-{{ item.addressCity }}
+
+ {{ item.distance.toFixed(4) }}
+
+
+
+
+
+
+
+
+ 请选择商家类别
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/index/secskill.vue b/mallplusui-uniapp-app2/pages/index/secskill.vue
new file mode 100644
index 0000000..33cdfdf
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/index/secskill.vue
@@ -0,0 +1,581 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperCurrent + 1 }}
+ /
+ {{ swiperLength }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item4.productName }}
+ 秒杀价 ¥{{ item4.flashPromotionPrice }}
+ 原价 ¥{{ item4.productPrice }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/index/user.vue b/mallplusui-uniapp-app2/pages/index/user.vue
new file mode 100644
index 0000000..b1709b6
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/index/user.vue
@@ -0,0 +1,770 @@
+
+
+
+
+
+
+
+
+
+ {{ userDetailInfo.nickname || userDetailInfo.username }}
+ 卖家中心
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 立即升级
+
+
+ {{ userDetailInfo.memberLevelName || '开通会员' }}
+
+ 汇融云链
+ 升级会员享受更多折扣 一测就上线
+
+
+
+
+
+
+
+
+ {{ userDetailInfo.blance || 0 }}
+ 余额
+
+
+ {{ couponList.length || 0 }}
+ 优惠券
+
+
+ {{ userDetailInfo.integration || 0 }}
+ 积分
+
+
+
+
+
+
+ 全部订单
+
+
+
+ 待付款
+
+
+
+ 待收货
+
+
+
+
+ 退款/售后
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/integral/home/home.css b/mallplusui-uniapp-app2/pages/integral/home/home.css
new file mode 100644
index 0000000..7b028b4
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/integral/home/home.css
@@ -0,0 +1,115 @@
+.top {}
+
+.top-integral {
+ font-size: 60upx;
+}
+
+.top-bot {
+ height: 100upx;
+ margin-top: 40upx;
+ background: rgba(255,255,255,0.12);
+}
+
+.top-warn{
+ width: 50upx;
+ height: 50upx;
+ position: relative;
+ left: 400upx;
+ bottom: 100upx;
+}
+
+.level{
+ border: 1px solid #FFCC00;
+ border-radius: 20upx;
+}
+
+.bill {
+ width: 33%;
+ height: 100upx;
+}
+
+.content-title{
+ width: 100%;
+ height: 100upx;
+}
+
+
+.hot-goods-content {
+ width: 100%;
+ /* padding: 0 1.5% 25upx 1.5%; */
+ padding: 0 1.5%;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ align-items: center;
+ padding-bottom: 20upx;
+ /* justify-content: center; */
+}
+
+.hot-goods-item {
+ margin: 20upx 2% 0 2%;
+ padding: 5upx 0;
+ width: 46%;
+ /* height: 430upx; */
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ background: #ffffff;
+ border-bottom-right-radius: 8upx;
+ border-bottom-left-radius: 8upx;
+ box-shadow: 0upx 0px 15upx #FFEFDB;
+}
+
+.hot-goods-item2 {
+ margin: 20upx 2% 0 2%;
+ width: 46%;
+ padding: 5upx 0;
+ /* height: 430upx; */
+ height: 500upx;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ background: #ffffff;
+ border-bottom-right-radius: 8upx;
+ border-bottom-left-radius: 8upx;
+ /* box-shadow: 0upx 0px 15upx #FFEFDB; */
+}
+
+.hot-goods-item:nth-child(2n-1) {
+ margin-right: auto;
+
+}
+
+.hot-goods-image {
+ width: 290upx;
+ height: 290upx;
+ margin-top: 3upx;
+}
+
+.hot-goods-image-more {
+ width: 150upx;
+ height: 150upx;
+}
+
+.hot-goods-name {
+ margin-top: 10upx;
+ font-size: 30upx;
+ width: 94%;
+ text-align: left;
+ /* height: 100upx; */
+}
+
+.hot-goods-more {
+ margin-top: 5upx;
+ margin-left: 10upx;
+ font-size: 30upx;
+ width: 94%;
+ text-align: center;
+}
+
+.hot-goods-price {
+ margin: 20upx 10upx 0 0;
+ font-size: 30upx;
+ width: 100%;
+ text-align: left;
+}
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/pages/integral/home/home.vue b/mallplusui-uniapp-app2/pages/integral/home/home.vue
new file mode 100644
index 0000000..3c39b18
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/integral/home/home.vue
@@ -0,0 +1,166 @@
+
+
+
+ {{integrals || 0}}
+
+
+ 兑换余额
+
+
+
+ 积分明细
+
+
+ 积分订单
+
+
+ 积分等级
+
+
+
+
+
+
+ 积分兑换商品
+
+
+
+
+
+
+
+
+ {{item.goodsName}}
+
+ {{item.totalAmount}}积分
+ {{item.levelName}}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/money/pay.vue b/mallplusui-uniapp-app2/pages/money/pay.vue
new file mode 100644
index 0000000..f0cd4a5
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/money/pay.vue
@@ -0,0 +1,229 @@
+
+
+
+ 支付金额
+ {{orderInfo.payAmount}}
+
+
+
+
+
+
+
+ 微信支付
+ 推荐使用微信支付
+
+
+
+
+
+
+ 支付宝支付
+
+
+
+
+
+
+ 预存款支付
+ 可用余额 ¥{{orderInfo.blance}}
+
+
+
+
+
+ 确认支付
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/money/paySuccess.vue b/mallplusui-uniapp-app2/pages/money/paySuccess.vue
new file mode 100644
index 0000000..d93d14e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/money/paySuccess.vue
@@ -0,0 +1,78 @@
+
+
+
+ 支付成功
+
+ {{ paymentInfo.payAmount }}
+
+
+ 查看订单
+ 返回首页
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/createOrder.vue b/mallplusui-uniapp-app2/pages/order/createOrder.vue
new file mode 100644
index 0000000..818a963
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/createOrder.vue
@@ -0,0 +1,870 @@
+
+
+
+
+
+
+
+
+ {{ addressData.name }}
+ {{ addressData.phoneNumber }}
+
+ {{ addressData.province }}-{{ addressData.city }}-{{ addressData.region }}-{{ addressData.detailAddress }}
+
+
+ 请设置收货地址
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ {{ item.productAttr }}
+
+ ¥{{ item.price }}
+ x {{ item.quantity }}
+
+
+
+
+
+ {{ item1.name }}
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+ 券
+ 优惠券
+ 选择优惠券
+
+
+
+ 商家促销
+ 满{{coupon.minPoint}}减{{coupon.amount}}
+ 暂无可用优惠
+
+
+
+
+
+ 商品金额
+ ¥{{ calcAmount.totalAmount }}
+
+
+ 活动金额
+ ¥{{ groupActivity.price }}
+
+
+ 优惠金额
+ -¥{{ calcAmount.promotionAmount }}
+
+
+ 优惠券抵扣
+ -¥{{ coupon.amount }}
+
+
+
+ 运费
+ {{calcAmount.freightAmount}}
+
+
+ 备注
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.coupon.name }}
+ 有效期至{{item.coupon.endTime | formatCreateTime}}
+
+
+ {{ item.coupon.amount }}
+ 满{{item.coupon.minPoint}}可用
+
+
+
+
+
+ 限新用户使用
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/createOrder1.vue b/mallplusui-uniapp-app2/pages/order/createOrder1.vue
new file mode 100644
index 0000000..53222e1
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/createOrder1.vue
@@ -0,0 +1,771 @@
+
+
+
+
+
+
+
+
+ {{ addressData.name }}
+ {{ addressData.phoneNumber }}
+
+ {{ addressData.detailAddress }} {{ addressData.region }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ {{ item.productAttr }}
+
+ ¥{{ item.price }}
+ x {{ item.quantity }}
+
+
+
+
+
+
+
+
+ 券
+ 优惠券
+ 选择优惠券
+
+
+
+ 商家促销
+ 满{{coupon.minPoint}}减{{coupon.amount}}
+ 暂无可用优惠
+
+
+
+
+
+ 商品金额
+ ¥{{ calcAmount.totalAmount }}
+
+
+ 活动金额
+ ¥{{ groupActivity.price }}
+
+
+ 优惠金额
+ -¥{{ calcAmount.promotionAmount }}
+
+
+ 运费
+ {{calcAmount.freightAmount}}
+
+
+ 备注
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ 有效期至{{item.coupon.endTime | formatCreateTime}}
+
+
+ {{ item.coupon.amount }}
+ 满{{item.coupon.minPoint}}可用
+
+
+
+
+
+ 限新用户使用
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/createStoreOrder.vue b/mallplusui-uniapp-app2/pages/order/createStoreOrder.vue
new file mode 100644
index 0000000..c5adb30
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/createStoreOrder.vue
@@ -0,0 +1,806 @@
+
+
+
+
+
+
+
+
+ {{ addressData.name }}
+ {{ addressData.phoneNumber }}
+
+ {{ addressData.province }}-{{ addressData.city }}-{{ addressData.region }}-{{ addressData.detailAddress }}
+
+
+ 请设置收货地址
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ {{ item.productAttr }}
+
+ ¥{{ item.price }}
+ x {{ item.quantity }}
+
+
+
+
+
+
+ 商品金额
+ ¥{{ item1.calcAmount.totalAmount }}
+
+
+
+ 优惠金额
+ -¥{{ item1.calcAmount.promotionAmount }}
+
+
+
+
+ 运费
+ {{item1.calcAmount.freightAmount}}
+
+
+ 备注
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/createStoreOrder1.vue b/mallplusui-uniapp-app2/pages/order/createStoreOrder1.vue
new file mode 100644
index 0000000..0c1c1f8
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/createStoreOrder1.vue
@@ -0,0 +1,761 @@
+
+
+
+
+
+
+
+
+ {{orderInfo.address.user_name}}
+ {{orderInfo.address.user_phone}}
+
+
+ {{ orderInfo.address.area_province_name ? orderInfo.address.area_province_name : '' }} {{ orderInfo.address.area_city_name ? orderInfo.address.area_city_name : '' }}{{ orderInfo.address.area_county_name ? orderInfo.address.area_county_name : '' }}{{ orderInfo.address.area_town_name ? orderInfo.address.area_town_name : '' }}{{ orderInfo.address.area_village_name ? orderInfo.address.area_village_name : '' }}{{ orderInfo.address.address ? orderInfo.address.address : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{goodsItem.goods_info.goods_name}}
+ {{goodsItem.sku_info.sku_name==''?'标准版':goodsItem.sku_info.sku_name}}
+
+ ¥{{goodsItem.total_price}}
+
+
+
+
+ 此区域已售罄
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 减
+
+ 商家促销
+ 暂无优惠
+
+
+
+
+
+ 商品金额
+ ¥{{orderInfo.total_money}}
+
+
+ 金币抵扣
+ -¥{{orderInfo.total_max_use_coin}}
+
+
+
+ 运费
+ {{orderInfo.shipping_money==0?'包邮':'¥'+orderInfo.shipping_money}}
+
+
+ 备注
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+ 有效期至2019-06-30
+
+
+ {{item.price}}
+ 满30可用
+
+
+
+
+
+ 限新用户使用
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/evaluate.vue b/mallplusui-uniapp-app2/pages/order/evaluate.vue
new file mode 100644
index 0000000..f352358
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/evaluate.vue
@@ -0,0 +1,291 @@
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+
+
+
+
+
+ 商品评分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传照片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/logistics.vue b/mallplusui-uniapp-app2/pages/order/logistics.vue
new file mode 100644
index 0000000..adb498e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/logistics.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
物流跟踪
+
+
+
+
+
+
-
+
+
+ {{item.AcceptStation}}
+ {{item.AcceptTime}}
+
+
-
+
+ {{item.AcceptStation}}
+ {{item.AcceptTime}}
+
+
-
+
+
+ {{item.AcceptStation}}
+ {{item.AcceptTime}}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/pages/order/order.vue b/mallplusui-uniapp-app2/pages/order/order.vue
new file mode 100644
index 0000000..99ff1e8
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/order.vue
@@ -0,0 +1,671 @@
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.createTime }}
+ {{ item.id }}--
+ {{ item.stateTip }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+ {{ item.deliveryCompany }}:{{ item.deliverySn }}
+ {{ item.deliveryCompany }}:{{ item.deliverySn }}
+
+
+
+
+ 共
+ {{ item.orderItemList.length }}
+ 件商品 实付款
+ {{ item.payAmount }}
+
+
+ 秒杀订单
+ 拼团订单
+ 团购订单
+ 砍价订单
+ 积分订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/orderDetail.vue b/mallplusui-uniapp-app2/pages/order/orderDetail.vue
new file mode 100644
index 0000000..59c9486
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/orderDetail.vue
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+ {{ orderInfo.createTime }}
+ {{ orderInfo.id }}--
+ {{ orderInfo.stateTip }}
+
+
+
+ 订单商品
+
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+
+
+
+ 订单赠品
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+
+
+
+ 共
+ {{ orderInfo.orderItemList.length }}
+ 件商品, 会员折扣
+ {{ orderInfo.vipAmount }}
+ 优惠券抵扣
+ {{ orderInfo.couponAmount }}
+
+
+ 积分抵扣
+ {{ orderInfo.integrationAmount }}
+ ,运费
+ {{ orderInfo.freightAmount }}
+
+ 活动金额
+ ¥{{ groupActivity.price }}
+
+ ,实付款
+ {{ orderInfo.payAmount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/payment/auth.vue b/mallplusui-uniapp-app2/pages/order/payment/auth.vue
new file mode 100644
index 0000000..441a558
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/payment/auth.vue
@@ -0,0 +1,159 @@
+
+
+
+
+ 信息加载中.....
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/payment/index.vue b/mallplusui-uniapp-app2/pages/order/payment/index.vue
new file mode 100644
index 0000000..d152b9a
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/payment/index.vue
@@ -0,0 +1,231 @@
+
+
+
+
+ 支付金额
+ {{orderInfo.payAmount}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/payment/index1.vue b/mallplusui-uniapp-app2/pages/order/payment/index1.vue
new file mode 100644
index 0000000..4a7b0a0
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/payment/index1.vue
@@ -0,0 +1,210 @@
+
+
+
+
+
+ 订单类型
+
+
+ 商品订单
+ 充值订单
+ 快捷下单
+ 付款码
+
+
+
+
+
+ 订单编号
+
+
+ {{ orderId }}
+
+
+
+
+ 订单金额
+
+
+ ¥{{ orderInfo.payAmount }}
+
+
+
+
+
+
+ 充值金额
+
+
+ ¥ {{ recharge }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/order/payment/result.vue b/mallplusui-uniapp-app2/pages/order/payment/result.vue
new file mode 100644
index 0000000..de47d65
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/order/payment/result.vue
@@ -0,0 +1,75 @@
+
+
+
+ 支付成功
+
+ {{ paymentInfo.payAmount }}
+
+
+ 查看订单
+ 返回首页
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/public/index.vue b/mallplusui-uniapp-app2/pages/public/index.vue
new file mode 100644
index 0000000..dd484bd
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/public/index.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+ 发送验证码
+ {{ timer }} 秒后重新获取
+
+
+
+
+
+
+
+
+
+
+
+
+ 密码登录
+
+
+ 注册
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/public/login.vue b/mallplusui-uniapp-app2/pages/public/login.vue
new file mode 100644
index 0000000..3d3fbc6
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/public/login.vue
@@ -0,0 +1,817 @@
+
+
+
+
+
+
+
+ 欢迎回来!汇融云链
+
+
+
+
+
+
+ 免密登录
+ 账号登录
+
+
+
+
+ 手机号码
+
+
+
+ 密码
+
+
+
+ 验证码
+
+
+ 获取验证码
+ {{ auth_time }}秒
+
+
+
+
+
+ 忘记密码?
+
+
+ 还没有账号?
+ 马上注册
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 免密登录
+ 账号登录
+
+
+
+
+ 手机号码
+
+
+
+ 密码
+
+
+
+ 验证码
+
+
+ 获取验证码
+ {{ auth_time }}秒
+
+
+
+
+
+
+
+ 忘记密码?
+
+
+ 还没有账号?
+ 马上注册
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/public/loginCode.vue b/mallplusui-uniapp-app2/pages/public/loginCode.vue
new file mode 100644
index 0000000..05562a8
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/public/loginCode.vue
@@ -0,0 +1,371 @@
+
+
+
+
+
+
+
+ LOGIN
+ 欢迎回来!
+
+
+ 手机号码
+
+
+
+ 验证码
+
+
+ 获取验证码
+ {{ auth_time }}秒
+
+
+
+
+ 密码登录
+
+
+ 还没有账号?
+ 马上注册
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/public/reg.vue b/mallplusui-uniapp-app2/pages/public/reg.vue
new file mode 100644
index 0000000..7eaf664
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/public/reg.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+ 注册
+ 欢迎回来!
+
+
+ 手机号码
+
+
+
+ 密码
+
+
+
+ 确认密码
+
+
+
+ 邀请码
+
+
+
+
+
+ 忘记密码?
+
+
+ 已经有账号?
+ 马上登录
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/search/search.vue b/mallplusui-uniapp-app2/pages/search/search.vue
new file mode 100644
index 0000000..1f6ef8b
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/search/search.vue
@@ -0,0 +1,378 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ keyword }}
+
+
+
+
+
+ {{ keyword }}
+
+ 当前搜热门搜索已隐藏
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/set/certification.vue b/mallplusui-uniapp-app2/pages/set/certification.vue
new file mode 100644
index 0000000..1a6450c
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/set/certification.vue
@@ -0,0 +1,707 @@
+
+
+
+
+
+
+ 身份证号码有误
+
+ {{ time }}
+
+
+ 身份证照片(正面)
+
+
+
+ 选择身份证照片
+
+
+
+
+
+
+
+ 身份证照片(背面)
+
+
+
+ 选择身份证照片
+
+
+
+
+
+
+
+
+
+
+
+ {{ Address }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pages/set/set.vue b/mallplusui-uniapp-app2/pages/set/set.vue
new file mode 100644
index 0000000..9ff541e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pages/set/set.vue
@@ -0,0 +1,149 @@
+
+
+
+ 个人资料
+
+
+
+ 收货地址
+
+
+
+ 实名认证
+
+
+
+
+ 消息推送
+
+
+
+ 清除缓存
+
+
+
+ 关于{{ sysInfo.name }}
+
+
+
+ 检查更新
+
+
+
+ 退出登录
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/after_sale/detail.vue b/mallplusui-uniapp-app2/pagesA/after_sale/detail.vue
new file mode 100644
index 0000000..87cd0ec
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/after_sale/detail.vue
@@ -0,0 +1,388 @@
+
+
+
+
+
+
+
+
+ 退款单状态
+
+
+ {{status_name}} {{refund_name}} {{reship_name}}...
+
+
+
+
+
+
+
+
+
+ 售后类型
+ {{type_name}}
+
+
+ 退款金额
+ {{refund}}元
+
+
+
+ 图片凭证
+
+
+
+
+
+
+
+
+
+
+
+ 问题描述
+
+
+
+ {{reason}}
+ 暂无描述
+
+
+
+
+
+ 退货邮寄信息
+
+
+
+
+ 收件人
+
+
+
+
+
+
+
+ 联系方式
+
+
+
+
+
+
+
+ 邮寄地址
+
+
+
+
+
+
+
+
+
+ 快递公司
+
+
+
+
+
+
+
+ 物流单号
+
+
+
+
+
+
+
+
+
+ 快递公司
+
+
+
+
+
+
+
+ 物流单号
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/after_sale/index.vue b/mallplusui-uniapp-app2/pagesA/after_sale/index.vue
new file mode 100644
index 0000000..22e31df
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/after_sale/index.vue
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/after_sale/list.vue b/mallplusui-uniapp-app2/pagesA/after_sale/list.vue
new file mode 100644
index 0000000..5e6dfa5
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/after_sale/list.vue
@@ -0,0 +1,642 @@
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.createTime }}
+ {{ item.id }}--
+ 待审核
+ 退货中
+ 已完成
+ 审核拒绝
+
+
+
+
+
+
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+
+
+
+
+ 共
+ {{ item.orderItemList.length }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/applyCommunity.vue b/mallplusui-uniapp-app2/pagesA/build/applyCommunity.vue
new file mode 100644
index 0000000..7eca917
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/applyCommunity.vue
@@ -0,0 +1,395 @@
+
+
+
+
+ 点击上传商家logo
+
+
+
+
+
+
+
+
+ 商家名称:
+
+
+
+
+
+
+
+ 商家QQ:
+
+
+
+
+
+
+
+ 商家手机号:
+
+
+
+
+
+
+
+ 商家类别:
+
+
+
+
+
+
+
+
+
+ {{pickerText}}
+
+
+
+
+
+
+
+
+ {{addressName}}
+
+
+
+
+
+
+
+
+
+ 商家介绍:
+
+
+
+
+
+
+
+
+ 点击上传营业执照:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/bindCommunity.vue b/mallplusui-uniapp-app2/pagesA/build/bindCommunity.vue
new file mode 100644
index 0000000..bc3b607
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/bindCommunity.vue
@@ -0,0 +1,397 @@
+
+
+
+
+ 点击上传商家logo
+
+
+
+
+
+
+
+
+ 商家名称:
+
+
+
+
+
+
+
+ 商家QQ:
+
+
+
+
+
+
+
+ 商家手机号:
+
+
+
+
+
+
+
+ 商家类别:
+
+
+
+
+
+
+
+
+
+ {{pickerText}}
+
+
+
+
+
+
+
+
+ {{addressName}}
+
+
+
+
+
+
+
+
+
+ 商家介绍:
+
+
+
+
+
+
+
+
+ 点击上传营业执照:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/community.vue b/mallplusui-uniapp-app2/pagesA/build/community.vue
new file mode 100644
index 0000000..9d3d019
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/community.vue
@@ -0,0 +1,1088 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperCurrent + 1 }}
+ /
+ {{ swiperLength }}
+
+
+
+
+
+
+ 社区公告
+
+
+
+ 社区团购
+
+
+
+ 社区特供
+
+
+
+
+ 农机租赁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/communityList.vue b/mallplusui-uniapp-app2/pagesA/build/communityList.vue
new file mode 100644
index 0000000..0b65e86
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/communityList.vue
@@ -0,0 +1,514 @@
+
+
+
+ 综合排序
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ 地址:{{ item.details}}
+ 电话:{{ item.phone}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/floorList.vue b/mallplusui-uniapp-app2/pagesA/build/floorList.vue
new file mode 100644
index 0000000..d4e227a
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/floorList.vue
@@ -0,0 +1,381 @@
+
+
+
+ 综合排序
+
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ 楼层{{ item.layerCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/groupList.vue b/mallplusui-uniapp-app2/pagesA/build/groupList.vue
new file mode 100644
index 0000000..4eee316
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/groupList.vue
@@ -0,0 +1,404 @@
+
+
+
+ 综合排序
+ 销量优先
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+ 已售 {{ item.sale }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/groupProduct.vue b/mallplusui-uniapp-app2/pagesA/build/groupProduct.vue
new file mode 100644
index 0000000..f18a28d
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/groupProduct.vue
@@ -0,0 +1,997 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ goods.name }}
+
+ ¥
+ {{ goods.price }}
+ ¥{{ goods.originalPrice }}
+
+
+ 销量: {{ goods.sale }}
+ 库存: {{ goods.stock }}
+ 浏览量: {{ goods.hit }}
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 购买类型
+
+ {{ sItem.name }}
+
+
+
+
+
+
+
+
+
+ 服务
+
+ {{ item1 }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.memberName }}
+ {{ item.consultContent }}
+
+ 购买类型:{{ item.attr }}
+ {{ item.consultAddtime | formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/notice.vue b/mallplusui-uniapp-app2/pagesA/build/notice.vue
new file mode 100644
index 0000000..3acc954
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/notice.vue
@@ -0,0 +1,199 @@
+
+
+
+ {{ item.createTime }}
+
+ {{ item.title }}
+
+ {{ item.content }}
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/build/repairOrder/repairOrder.vue b/mallplusui-uniapp-app2/pagesA/build/repairOrder/repairOrder.vue
new file mode 100644
index 0000000..a2c7163
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/build/repairOrder/repairOrder.vue
@@ -0,0 +1,389 @@
+
+
+
+
+
+ 发起报修
+
+
+ 报修历史
+
+
+
+
+
+
+
+
+
+
+ 房屋信息
+
+
+
+
+ 报修信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/categoryAttr.vue b/mallplusui-uniapp-app2/pagesA/product/categoryAttr.vue
new file mode 100644
index 0000000..a1cd8bd
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/categoryAttr.vue
@@ -0,0 +1,352 @@
+
+
+
+
+ 分类
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title.name || '分类' + (index + 1) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ p_item.name |formatLongText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/discountList.vue b/mallplusui-uniapp-app2/pagesA/product/discountList.vue
new file mode 100644
index 0000000..b552d5a
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/discountList.vue
@@ -0,0 +1,408 @@
+
+
+
+ 综合排序
+ 销量优先
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+ 已售 {{ item.clickCount }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/giftList.vue b/mallplusui-uniapp-app2/pagesA/product/giftList.vue
new file mode 100644
index 0000000..2c616d3
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/giftList.vue
@@ -0,0 +1,406 @@
+
+
+
+ 综合排序
+
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ item.price }}
+ 已售 6
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/giftProduct.vue b/mallplusui-uniapp-app2/pagesA/product/giftProduct.vue
new file mode 100644
index 0000000..2ce992f
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/giftProduct.vue
@@ -0,0 +1,706 @@
+
+
+
+
+
+
+
+ {{ detailData.name }}
+
+ ¥
+ {{ detailData.price }}
+
+
+ 销量: 6
+ 库存: {{ detailData.stock }}
+ 浏览量: {{ detailData.hit }}
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 服务
+
+ 7天无理由退换货 ·
+ 假一赔十 ·
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/groupActivityDetail.vue b/mallplusui-uniapp-app2/pagesA/product/groupActivityDetail.vue
new file mode 100644
index 0000000..7af0f83
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/groupActivityDetail.vue
@@ -0,0 +1,1219 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ goods.name }}
+
+ ¥
+ {{ (goods.price * goods.memberRate) / 10 }}
+ {{ goods.price }}
+ ¥{{ goods.originalPrice }}
+ ¥{{ goods.price }}
+ 佣金 ¥{{ goods.fenxiaoPrice }}
+ 会员折扣{{ goods.memberRate }}折
+
+
+ 销量: {{ goods.sale }}
+ 库存: {{ goods.stock }}
+ 浏览量: {{ goods.hit }}
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+ {{ groupActivity.name }}
+ 原售价:¥{{ groupActivity.originprice }}
+ 套装价:¥{{ groupActivity.price }}
+ 节省价:¥{{ groupActivity.originprice - groupActivity.price }}
+ 运费价:¥{{ groupActivity.transfee }}
+
+
+
+
+
+
+ 购买类型
+
+ {{ sItem.name }}
+
+
+
+
+
+
+ 服务
+
+ {{ item1 }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.memberName }}
+ {{ item.consultContent }}
+
+ 购买类型:{{ item.attr }}
+ {{ item.consultAddtime | formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+ 购物车
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+ 在{{item.endTime}}前有效。 可领{{item.perLimit}}张
+
+
+
+ {{item.amount}}
+ 满{{item.minPoint }}可减{{item.amount }}
+
+
+
+
+ {{item.categoryTitle?'限' + item.categoryTitle + '可用': '全品类可用'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/groupActivityList.vue b/mallplusui-uniapp-app2/pagesA/product/groupActivityList.vue
new file mode 100644
index 0000000..24e9680
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/groupActivityList.vue
@@ -0,0 +1,381 @@
+
+
+
+ 综合排序
+
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+ 运费 {{item.transfee}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/groupList.vue b/mallplusui-uniapp-app2/pagesA/product/groupList.vue
new file mode 100644
index 0000000..e71e738
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/groupList.vue
@@ -0,0 +1,407 @@
+
+
+
+ 综合排序
+ 销量优先
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.goods.name }}
+
+ {{ item.groupPrice }}
+ 原价 {{ item.goods.price }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/groupProduct.vue b/mallplusui-uniapp-app2/pagesA/product/groupProduct.vue
new file mode 100644
index 0000000..689f520
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/groupProduct.vue
@@ -0,0 +1,1097 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ goods.name }}
+
+ ¥
+ {{ group.groupPrice }}
+ ¥{{ goods.price }}
+
+
+ 销量: {{ goods.sale }}
+ 库存: {{ goods.stock }}
+
+ 距结束仅剩
+
+
+
+
+
+
+ 即将开团
+
+
+
+
+
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 购买类型
+
+ {{ sItem.name }}
+
+
+
+
+
+
+
+
+
+ 服务
+
+ {{ item1 }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.memberName }}
+ {{ item.consultContent }}
+
+ 购买类型:{{ item.attr }}
+ {{ item.consultAddtime | formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/list.vue b/mallplusui-uniapp-app2/pagesA/product/list.vue
new file mode 100644
index 0000000..6909105
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/list.vue
@@ -0,0 +1,528 @@
+
+
+
+ 综合排序
+ 销量优先
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+ 佣金 ¥{{ item.fenxiaoPrice }}
+
+
+ 会员价{{ item.vipPrice }}
+ 商品价 ¥{{ item.price }}
+
+
+ {{ item.price }}
+ 已售 {{ item.sale }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+ {{ item.price }}
+ 已售 {{ item.sale }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/paiMaiDetail.vue b/mallplusui-uniapp-app2/pagesA/product/paiMaiDetail.vue
new file mode 100644
index 0000000..e291d60
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/paiMaiDetail.vue
@@ -0,0 +1,726 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ detailData.name }}
+
+ ¥
+ {{ detailData.price }}
+
+
+ 出价次数: {{buyCount}}
+
+ 浏览量: {{ detailData.hit }}
+
+
+
+ 剩余:
+
+
+ 已结束
+ 即将开团
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 服务
+
+ 7天无理由退换货 ·
+ 假一赔十 ·
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/paiMaiList.vue b/mallplusui-uniapp-app2/pagesA/product/paiMaiList.vue
new file mode 100644
index 0000000..d9afddf
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/paiMaiList.vue
@@ -0,0 +1,406 @@
+
+
+
+ 综合排序
+ 销量优先
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+ 已售 {{ item.sale }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/product.vue b/mallplusui-uniapp-app2/pagesA/product/product.vue
new file mode 100644
index 0000000..5e46963
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/product.vue
@@ -0,0 +1,1283 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ goods.name }}
+
+ ¥
+ {{ (goods.price * goods.memberRate) / 10 }}
+ {{ goods.price }}
+ ¥{{ goods.originalPrice }}
+ ¥{{ goods.price }}
+ 佣金 ¥{{ goods.fenxiaoPrice }}
+ 会员折扣{{ goods.memberRate }}折
+
+
+ 销量: {{ goods.sale }}
+ 库存: {{ goods.stock }}
+ 浏览量: {{ goods.hit }}
+
+
+
+
+
+ 铺
+
+
+
+
+ 进入店铺
+
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 规格
+
+ {{ sItem.name }}
+
+
+
+
+ 优惠券
+ 领取优惠券
+
+
+
+
+ 服务
+
+ {{ item1 }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.memberName }}
+ {{ item.consultContent }}
+
+ 购买类型:{{ item.attr }}
+ {{ item.consultAddtime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+ 购物车
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ 在{{ item.endTime }}前有效。 可领{{ item.perLimit }}张
+
+
+ {{ item.amount }}
+ 满{{ item.minPoint }}可减{{ item.amount }}
+
+
+
+
+ {{ item.categoryTitle ? '限' + item.categoryTitle + '可用' : '全品类可用' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/secskillDetail.vue b/mallplusui-uniapp-app2/pagesA/product/secskillDetail.vue
new file mode 100644
index 0000000..29d7d7c
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/secskillDetail.vue
@@ -0,0 +1,1030 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ goods.name }}
+
+ ¥
+ {{ skillDetail.flashPromotionPrice }}
+ ¥{{ goods.price }}
+
+
+
+ 销量: {{ goods.sale }}
+ 库存: {{ skillDetail.flashPromotionCount }}
+ 浏览量: {{ goods.hit }}
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+
+ 优惠券
+ 领取优惠券
+
+
+
+
+
+ 服务
+
+ 7天无理由退换货 ·
+ 假一赔十 ·
+
+
+
+
+
+
+
+
+
+
+ {{ item.memberName }}
+ {{ item.consultContent }}
+
+ 购买类型:{{ item.attr }}
+ {{ item.consultAddtime | formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+ 购物车
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+ 在{{item.endTime | formatCreateTime}}前有效。 可领{{item.perLimit}}张
+
+
+
+ {{item.amount}}
+ 满{{item.minPoint }}可减{{item.amount }}
+
+
+
+
+ {{item.categoryTitle?'限' + item.categoryTitle + '可用': '全品类可用'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesA/product/tag.vue b/mallplusui-uniapp-app2/pagesA/product/tag.vue
new file mode 100644
index 0000000..7b1a853
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/tag.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/pagesA/product/tagGoodslist.vue b/mallplusui-uniapp-app2/pagesA/product/tagGoodslist.vue
new file mode 100644
index 0000000..1ef8f7e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesA/product/tagGoodslist.vue
@@ -0,0 +1,483 @@
+
+
+
+ 综合排序
+ 销量优先
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+ 佣金 ¥{{ item.fenxiaoPrice }}
+
+
+ 会员价{{ item.vipPrice }}
+ 商品价 ¥{{ item.price }}
+
+
+ {{ item.price }}
+ 已售 {{ item.sale }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+ {{ item.price }}
+ 已售 {{ item.sale }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/caldar.vue b/mallplusui-uniapp-app2/pagesC/seller/caldar.vue
new file mode 100644
index 0000000..beb9ffe
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/caldar.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/dayStatisc.vue b/mallplusui-uniapp-app2/pagesC/seller/dayStatisc.vue
new file mode 100644
index 0000000..0f83336
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/dayStatisc.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+ 订单数量
+ {{homedata.orderCount}}个
+
+
+
+
+
+
+
+
+ 会员统计
+ {{homedata.memberCount}}人
+
+
+
+
+
+
+
+
+
+
+ 商品统计
+ {{homedata.goodsCount}}个
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/evaluate.vue b/mallplusui-uniapp-app2/pagesC/seller/evaluate.vue
new file mode 100644
index 0000000..a2fa628
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/evaluate.vue
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+
+
+
+
+
+ 商品评分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传照片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/goods.vue b/mallplusui-uniapp-app2/pagesC/seller/goods.vue
new file mode 100644
index 0000000..a1cf6ac
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/goods.vue
@@ -0,0 +1,649 @@
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.createTime }}
+ {{ item.id }}
+ 删除
+
+
+
+
+ {{ item.name }}
+
+ {{ item.price }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/index.vue b/mallplusui-uniapp-app2/pagesC/seller/index.vue
new file mode 100644
index 0000000..19cb01b
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/index.vue
@@ -0,0 +1,947 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperCurrent + 1 }}
+ /
+ {{ swiperLength }}
+
+
+
+
+
+
+ 店铺
+
+
+
+ 商品
+
+
+
+ 订单
+
+
+
+ 会员
+
+
+
+ 营销
+
+
+
+
+
+
+ 今日订单
+
+
+ 今日总额
+
+
+ 昨日订单
+
+
+ 昨日总额
+
+
+ 待付款
+
+
+ 待发货
+
+
+ 申请退款
+
+
+ 已关闭
+
+
+
+
+
+
+
+
+
+
+
+ 今日新增会员
+
+
+ 昨日新增会员
+
+
+ 当月新增会员
+
+
+ 男会员
+
+
+ 女会员
+
+
+ 所有会员
+
+
+
+
+
+
+
+
+
+
+
+ 在售商品
+
+
+ 仓库中
+
+
+ 已售馨
+
+
+ 今日新增商品
+
+
+ 昨日新增商品
+
+
+ 所有商品
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/login.vue b/mallplusui-uniapp-app2/pagesC/seller/login.vue
new file mode 100644
index 0000000..66287f7
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/login.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+ LOGIN
+ 欢迎回来!
+
+
+ 手机号码
+
+
+
+ 密码
+
+
+
+
+ 忘记密码?
+
+
+ 还没有账号?
+ 马上注册
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/member.vue b/mallplusui-uniapp-app2/pagesC/seller/member.vue
new file mode 100644
index 0000000..a00ace6
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/member.vue
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+ {{ item.createTime }}
+ {{ item.id }}--
+ {{ item.username }}
+
+
+
+
+ 余额{{ item.blance }}
+ 积分{{ item.integration }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/monthStatisc.vue b/mallplusui-uniapp-app2/pagesC/seller/monthStatisc.vue
new file mode 100644
index 0000000..3873e3d
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/monthStatisc.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+ 订单数量
+ {{homedata.orderCount}}个
+
+
+
+
+
+
+
+
+ 会员统计
+ {{homedata.memberCount}}人
+
+
+
+
+
+
+
+
+
+
+ 商品统计
+ {{homedata.goodsCount}}个
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/order.vue b/mallplusui-uniapp-app2/pagesC/seller/order.vue
new file mode 100644
index 0000000..4a4e60a
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/order.vue
@@ -0,0 +1,648 @@
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.createTime }}
+ {{ item.id }}--
+ {{ item.stateTip }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+
+
+
+
+ 共
+ {{ item.orderItemList.length }}
+ 件商品 实付款
+ {{ item.payAmount }}
+
+
+ 秒杀订单
+ 拼团订单
+ 团购订单
+ 砍价订单
+ 积分订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/orderDetail.vue b/mallplusui-uniapp-app2/pagesC/seller/orderDetail.vue
new file mode 100644
index 0000000..8b11e2d
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/orderDetail.vue
@@ -0,0 +1,582 @@
+
+
+
+
+
+
+
+
+ {{ orderInfo.createTime }}
+ {{ orderInfo.id }}--
+ {{ orderInfo.stateTip }}
+
+
+
+ 订单商品
+
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+
+
+
+ 订单赠品
+
+
+
+
+ {{ goodsItem.productName }}
+ {{ goodsItem.productAttr }} x {{ goodsItem.productQuantity }}
+ {{ goodsItem.productPrice }}
+
+
+
+ 共
+ {{ orderInfo.orderItemList.length }}
+ 件商品, 优惠金额
+ {{ orderInfo.promotionAmount }}
+ ,运费
+ {{ orderInfo.freightAmount }}
+
+ 活动金额
+ ¥{{ groupActivity.price }}
+
+ ,实付款
+ {{ orderInfo.payAmount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/secskill.vue b/mallplusui-uniapp-app2/pagesC/seller/secskill.vue
new file mode 100644
index 0000000..b818de5
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/secskill.vue
@@ -0,0 +1,577 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperCurrent + 1 }}
+ /
+ {{ swiperLength }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+ 秒杀价 ¥{{ item.flashPromotionPrice }}
+ 原价 ¥{{ item.productPrice }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/stack.vue b/mallplusui-uniapp-app2/pagesC/seller/stack.vue
new file mode 100644
index 0000000..beaf6b0
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/stack.vue
@@ -0,0 +1,161 @@
+
+
+
+
+ 页面地址
+
+
+ pages/basic/column/stack
+
+
+
+ 堆叠柱状图
+
+
+
+
+
+
+
+
+
+
+
+ 标准数据格式
+
+
+
+
+ Tips:修改后点击更新图表
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/seller/store.vue b/mallplusui-uniapp-app2/pagesC/seller/store.vue
new file mode 100644
index 0000000..90f8b8e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/seller/store.vue
@@ -0,0 +1,722 @@
+
+
+
+
+
+
+
+ {{ detailData.name }}
+
+
+ 浏览量: {{ detailData.hit }}
+ 收藏量: {{ detailData.collect }}
+ 商品量: {{ detailData.goodsCount }}
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 服务
+
+ 7天无理由退换货 ·
+ 假一赔十 ·
+
+
+
+
+
+ 地址
+
+ {{detailData.addressProvince}} ·
+ {{detailData.addressCity}} ·
+ {{detailData.addressArea}} ·
+ {{detailData.addressDetail}} ·
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+ 查看全部
+ More+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/applyBusiness.vue b/mallplusui-uniapp-app2/pagesC/store/applyBusiness.vue
new file mode 100644
index 0000000..d89ce5c
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/applyBusiness.vue
@@ -0,0 +1,333 @@
+
+
+
+
+ 点击上传商家logo
+
+
+
+
+
+
+
+
+ 商家名称:
+
+
+
+
+
+
+
+ 商家QQ:
+
+
+
+
+
+
+
+ 商家手机号:
+
+
+
+
+
+
+
+ 商家类别:
+
+
+
+
+
+
+
+
+
+
+
+ {{addressName}}
+
+
+
+
+
+
+
+
+
+ 商家介绍:
+
+
+
+
+
+
+
+
+ 点击上传营业执照:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/businessDetails.vue b/mallplusui-uniapp-app2/pagesC/store/businessDetails.vue
new file mode 100644
index 0000000..aef89d6
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/businessDetails.vue
@@ -0,0 +1,1036 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{name}}
+
+
+ {{store.supportPhone}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 商品
+
+
+ 分类
+
+
+ 评价({{pingjia.length}})
+
+
+ 评价(99+)
+
+
+ 商家
+
+
+ 门店
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+ {{item.price}}
+ 已售 {{item.sale}}
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+
+ 店铺评价
+
+
+ 全部评价({{pingjia.length}})
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+ 未设置昵称
+
+ {{item.createTime |formatCreateTime}}
+
+
+
+ {{item.memo}}
+
+
+
+
+
+
+ 暂无评价
+
+
+
+
+
+
+
+
+ {{store.addressDetail}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无商家记录
+
+
+
+
+
+ {{ item.storeName }}【{{item.linkman}}】
+
+
+
+
+
+
+ {{ item.collect }}
+
+
+
+ {{ item.address }}
+
+ {{ item.mobile }}
+
+
+
+
+
+
+
+
+
+
+ 识别二维码添加店家微信
+
+ {{name}}
+ 微信号{{store.contactQq}}
+ 客服电话:{{store.supportPhone}}
+
+
+
+
+
+ 请输入评价内容
+
+
+
+ 取消
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/index.vue b/mallplusui-uniapp-app2/pagesC/store/index.vue
new file mode 100644
index 0000000..f4bb841
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/index.vue
@@ -0,0 +1,365 @@
+
+
+
+
+
+
+
+ 订阅消息,及时获取订单最新动态
+
+
+ 消息订阅
+ ×
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/list.vue b/mallplusui-uniapp-app2/pagesC/store/list.vue
new file mode 100644
index 0000000..5c090e7
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/list.vue
@@ -0,0 +1,279 @@
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/school.vue b/mallplusui-uniapp-app2/pagesC/store/school.vue
new file mode 100644
index 0000000..f88035f
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/school.vue
@@ -0,0 +1,742 @@
+
+
+
+
+
+
+
+ {{ detailData.name }}
+
+
+ 销量: 6
+ 库存: {{ detailData.stock }}
+ 浏览量: {{ detailData.hit }}
+
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+ 服务
+
+ 7天无理由退换货 ·
+ 假一赔十 ·
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/schoolList.vue b/mallplusui-uniapp-app2/pagesC/store/schoolList.vue
new file mode 100644
index 0000000..977cd64
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/schoolList.vue
@@ -0,0 +1,386 @@
+
+
+
+ 综合排序
+
+
+ 热度
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/store.vue b/mallplusui-uniapp-app2/pagesC/store/store.vue
new file mode 100644
index 0000000..074ed4b
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/store.vue
@@ -0,0 +1,1039 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperCurrent + 1 }}
+ /
+ {{ swiperLength }}
+
+
+
+
+
+
+ {{ item1.name }}
+
+
+
+
+
+ {{ item1.name }}
+
+
+
+
+
+
+ 返
+
+ 该商品分享可领49减10红包
+
+
+ 立即分享
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/storeList.vue b/mallplusui-uniapp-app2/pagesC/store/storeList.vue
new file mode 100644
index 0000000..0035613
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/storeList.vue
@@ -0,0 +1,382 @@
+
+
+
+ 综合排序
+
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ 浏览{{ item.hit }}
+ 收藏 {{item.collect}}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesC/store/storeResult.vue b/mallplusui-uniapp-app2/pagesC/store/storeResult.vue
new file mode 100644
index 0000000..3e04f12
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesC/store/storeResult.vue
@@ -0,0 +1,95 @@
+
+
+
+ {{orderInfo.name}}
+
+ 申请中----
+
+
+ 申请拒绝----
+
+
+ 用户中心
+ 返回首页
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/address/address.vue b/mallplusui-uniapp-app2/pagesU/address/address.vue
new file mode 100644
index 0000000..d70e754
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/address/address.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+ {{ item.name }}
+ {{ item.phoneNumber }}
+
+
+ 默认
+ {{ item.province }}-{{ item.city }}-{{ item.region }}-{{ item.detailAddress }}
+
+
+
+
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/address/addressManage.vue b/mallplusui-uniapp-app2/pagesU/address/addressManage.vue
new file mode 100644
index 0000000..656781e
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/address/addressManage.vue
@@ -0,0 +1,220 @@
+
+
+
+
+ 联系人
+
+
+
+ 手机号
+
+
+
+
+ 城市
+
+
+
+
+
+
+ 地图:
+
+
+
+
+
+
+
+ 详细
+
+
+
+
+ 设为默认
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/address/addressManage1.vue b/mallplusui-uniapp-app2/pagesU/address/addressManage1.vue
new file mode 100644
index 0000000..77669ff
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/address/addressManage1.vue
@@ -0,0 +1,314 @@
+
+
+
+ 收货人:
+
+
+
+ 手机号:
+
+
+
+ 地区:
+
+ {{ pickerText }}
+
+
+
+
+ 地址定位:
+
+
+
+
+
+
+
+ 详细地址:
+
+
+
+
+
+
+
+
+ 设为默认收件地址:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/marking/index.vue b/mallplusui-uniapp-app2/pagesU/marking/index.vue
new file mode 100644
index 0000000..e69de29
diff --git a/mallplusui-uniapp-app2/pagesU/notice/notice.vue b/mallplusui-uniapp-app2/pagesU/notice/notice.vue
new file mode 100644
index 0000000..febfcf1
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/notice/notice.vue
@@ -0,0 +1,202 @@
+
+
+
+ {{ item.createTime |formatCreateTime}}
+
+ {{ item.title }}
+
+ {{ item.description }}
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/notice/notice1.vue b/mallplusui-uniapp-app2/pagesU/notice/notice1.vue
new file mode 100644
index 0000000..3f87e0f
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/notice/notice1.vue
@@ -0,0 +1,151 @@
+
+
+
+ 11:30
+
+ 新品上市,全场满199减50
+
+
+
+ 虽然做了一件好事,但很有可能因此招来他人的无端猜测,例如被质疑是否藏有其他利己动机等,乃至谴责。即便如此,还是要做好事。
+
+ 查看详情
+
+
+
+
+
+ 昨天 12:30
+
+ 新品上市,全场满199减50
+
+
+ 活动结束
+
+
+ 查看详情
+
+
+
+
+
+ 2019-07-26 12:30
+
+ 新品上市,全场满199减50
+
+
+ 活动结束
+
+ 新品上市全场2折起,新品上市全场2折起,新品上市全场2折起,新品上市全场2折起,新品上市全场2折起
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/notice/subjectDetail.vue b/mallplusui-uniapp-app2/pagesU/notice/subjectDetail.vue
new file mode 100644
index 0000000..c30530b
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/notice/subjectDetail.vue
@@ -0,0 +1,655 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ detailData.title }}
+
+
+ 收藏量: {{ detailData.collectCount }}
+ 评论量: {{ detailData.commentCount }}
+ 浏览量: {{ detailData.readCount }}
+
+
+
+
+
+
+ {{ detailData.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+ 收藏
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/notice/subjectList.vue b/mallplusui-uniapp-app2/pagesU/notice/subjectList.vue
new file mode 100644
index 0000000..328a500
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/notice/subjectList.vue
@@ -0,0 +1,371 @@
+
+
+
+ {{item.name}}
+
+
+
+
+
+ {{ item.title }}
+
+ 收藏量 {{ item.collectCount }}
+ 浏览量 {{ item.readCount }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ tItem.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/README.md b/mallplusui-uniapp-app2/pagesU/user/README.md
new file mode 100644
index 0000000..9149c99
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/README.md
@@ -0,0 +1,100 @@
+## 使用说明:
+| 属性名 | 类型 | 说明 |
+| -------- | -----: | :----: |
+| date | String | 当前日期,格式支持YYYY-MM |
+| list | Array | 已经签到的时间列表,格式支持YYYY-MM-DD、MM-DD、DD |
+| signin_fun | function | 当天签到时调用,返回签到的日期信息 |
+| repair | Boolean | 是否开启补签 |
+| rule | Boolean | 补签规则开关,默认false,没有补签规则 |
+| repair_fun | function | 开启补签后,补签时调用,返回签到的日期信息 |
+| choose_date | Boolean | 是否可以选择日期 |
+| date_change | function | 当前日期改变时调用 |
+
+``` html
+
+```
+
+```javascript
+data() {
+ return {
+ // 是否可以选择日期
+ choose_date: false,
+ // 当前日期
+ date: "2019-03",
+ // 签到成功列表
+ list: ["2019-03-10", "03-15", "20"],
+ // 是否开启补签
+ repair: false,
+ // 是否开启补签规则
+ rule: false,
+ }
+},
+methods: {
+ // 签到时触发
+ signin_fun(res) {
+ console.log(res)
+ this.list.push(res.day)
+ uni.showToast({
+ title: "签到成功",
+ icon: "none"
+ })
+ },
+ // 补签成功时触发
+ repair_fun(res) {
+ console.log(res)
+ this.list.push(res.day)
+ uni.showToast({
+ title: "补签成功",
+ icon: "none"
+ })
+ },
+ // 当月份改变时触发
+ date_change(date) {
+ console.log(date);
+ // 更新当前日期
+ this.date = date;
+ // 更新签到列表
+ this.list = ["01", "02"];
+ },
+}
+```
+
+Tips:
+ * 有啥问题和建议或者错误不足之处,还望各位大神指出,急的话+QQ:806834390。
+
+
+### 历史版本
+----
+#### V1.0.0 2019/03/22
+只有最简单的签到和补签功能。
+#### V1.1.0 2019/03/23
+经大神指点,新增签到按钮和提示,新增补签规则:只能从补签的第一个日期开始补签。
+#### V1.2.0 2019/03/24
+经大神反馈,修改后的新版本已兼容微信小程序。
+#### V1.3.0 2019/03/25
+新增补签规则开关rule。
+#### V1.4.0 2019/04/02
+修复一个重大BUG(日期的计算有问题),感谢那位发现问题的大神O(≧∇≦)O
+#### V1.5.0 2019/04/06
+优化了部分代码,新增日期选择功能,现在可以查看上n月的签到信息了。
+#### V1.6.0 2019/04/10
+修复了一个BUG。
+#### V1.7.0 2019/04/11
+修复了一个样式上的问题,当窗口正好处于某些宽度时,星期天会因为宽度不够,被挤到下一行。感谢Tonybo通过QQ邮箱告诉我。
+#### V1.8.0 2019/04/11
+修复了一个渲染时判断不对的问题,啊——!还以为不会有问题了!!!咳咳,感谢那些告诉我问题的人。
+#### V1.9.0 2019/05/16
+我的错,虽然我已经不知道item.index是用来做什么用的了,删掉就行,不然小程序上会出现undefined,感谢安雨忻的反馈。
+#### V2.0.0 2019/05/27
+根据同事的反馈,所有事件都阻止了冒泡,防止触发其它的自定义事件。
+#### V2.1.0 2019/05/31
+修复了日期不能选择或出错的问题,顺便把代码重新看了一遍,感谢Await的反馈,也在这里向那些下载了插件的人说声“对不起”,是我没有做好。
diff --git a/mallplusui-uniapp-app2/pagesU/user/applyMember.vue b/mallplusui-uniapp-app2/pagesU/user/applyMember.vue
new file mode 100644
index 0000000..32af21d
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/applyMember.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+ 我的账户余额:{{money}} 元
+
+
+
+
+
+ 会员等级
+
+
+
+
+
+ {{amount.price}}元 {{amount.name}}
+
+
+
+
+
+
+
+
+ 选择支付方式
+
+
+
+
+
+
+
+
+
+ 支付宝支付
+
+
+
+
+
+
+
+
+
+
+
+ 微信支付
+
+
+
+
+
+
+
+
+
+
+ 余额支付
+
+
+
+
+
+
+
+
+
+ 立即升级
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/balance.vue b/mallplusui-uniapp-app2/pagesU/user/balance.vue
new file mode 100644
index 0000000..f33ab31
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/balance.vue
@@ -0,0 +1,102 @@
+
+
+
+
+ ¥{{totalMoney}}
+ 账户余额
+
+
+
+ 充值
+
+
+ 提现
+
+
+ 说明
+
+
+
+
+
+
+
+ 充值记录
+
+
+
+
+
+ 提现记录
+
+
+
+
+
+
+
+ 交易流水
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/collect.vue b/mallplusui-uniapp-app2/pagesU/user/collect.vue
new file mode 100644
index 0000000..af10f4b
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/collect.vue
@@ -0,0 +1,557 @@
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.addTime }}
+
+
+
+
+
+
+
+ {{ item.name }}
+ {{ item.meno3 }}
+ {{ item.meno2 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/coupon.vue b/mallplusui-uniapp-app2/pagesU/user/coupon.vue
new file mode 100644
index 0000000..12a0353
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/coupon.vue
@@ -0,0 +1,513 @@
+
+
+
+ 可用({{couponValidList.length}})已失效({{couponinvalidList.length}})
+
+
+
+
+
+
+ 没有数据~
+
+
+
+
+
+
+
+ {{row.note}}
+
+
+ 永久有效
+
+
+
+ {{row.startTime|formatCreateTime}} ~ {{row.endTime |formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{row.amount}} 元
+
+
+ 去使用
+
+
+
+
+
+
+ 没有数据~
+
+
+
+
+
+
+
+ {{row.note}}
+
+
+ 已失效
+
+
+
+ {{row.startTime |formatCreateTime}} ~ {{row.endTime |formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{row.amount}}元
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/deposit.vue b/mallplusui-uniapp-app2/pagesU/user/deposit.vue
new file mode 100644
index 0000000..1a9b5c6
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/deposit.vue
@@ -0,0 +1,869 @@
+
+
+
+
+ 我的账户
+ 交易明细
+
+
+
+
+ 我的账户余额:{{money}} 元
+
+
+
+
+
+ 充值金额
+
+
+
+
+
+ {{amount}}元
+
+
+
+
+ 自定义充值金额
+
+
+
+
+
+
+
+
+
+
+ 选择支付方式
+
+
+
+
+
+
+
+
+
+ 支付宝支付
+
+
+
+
+
+
+
+
+
+
+
+ 微信支付
+
+
+
+
+
+
+
+
+
+ 立即充值
+
+
+
+ 去提现
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/forget.vue b/mallplusui-uniapp-app2/pagesU/user/forget.vue
new file mode 100644
index 0000000..c9d8356
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/forget.vue
@@ -0,0 +1,488 @@
+
+
+
+
+
+
+
+ LOGIN
+
+ 忘记密码!
+
+
+
+ 手机号码
+
+
+
+ 密码
+
+
+
+ 密码
+
+
+
+
+ 验证码
+
+
+
+
+
+
+
+
+
+
+
+ 已有账号?
+ 返回登录
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/integral.vue b/mallplusui-uniapp-app2/pagesU/user/integral.vue
new file mode 100644
index 0000000..562d3d0
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/integral.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+ 库存积分
+
+
+
+
+ 0
+ {{integral/100}}
+ 可支配积分
+
+
+
+ 账单明细
+
+
+
+ 购买积分
+
+
+
+ 赠送积分
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/invite.vue b/mallplusui-uniapp-app2/pagesU/user/invite.vue
new file mode 100644
index 0000000..7519a6f
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/invite.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+ 我的专属邀请码
+ {{code}}
+ 快去分享您的邀请码吧,让更多的好友加入到【{{appTitle}}】,您也可以获得丰厚的奖励!
+
+
+
+ ¥{{money}}元
+ 邀请收益
+
+
+
+ {{number}}人
+ 邀请人数
+
+
+
+
+ 谁推荐你的?
+
+ 提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/inviteList.vue b/mallplusui-uniapp-app2/pagesU/user/inviteList.vue
new file mode 100644
index 0000000..bde1a2b
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/inviteList.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+ 昵称: {{ item.nickname }}
+ 手机号: {{ item.phone }}
+ 推荐时间: {{ item.createTime |formatCreateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/inviteMoney.vue b/mallplusui-uniapp-app2/pagesU/user/inviteMoney.vue
new file mode 100644
index 0000000..4e988ca
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/inviteMoney.vue
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.createTime }}
+ 订单编号:{{ item.orderId }}
+ 商品编号:{{ item.goodsId }}
+ 佣金:{{ item.money }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/myPurse.vue b/mallplusui-uniapp-app2/pagesU/user/myPurse.vue
new file mode 100644
index 0000000..845db54
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/myPurse.vue
@@ -0,0 +1,580 @@
+
+
+
+
+ {{money/100}}
+
+
+ 可提现金额
+
+
+
+ 提现明细
+
+
+
+
+
+
+ 请输入提现金额
+
+ ¥
+
+
+
+
+ 请选择提现账户
+
+
+
+
+
+
+ 支付宝账号:
+
+
+
+
+
+
+
+ 真实姓名:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 支付宝
+
+
+
+
+ 微信
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/profile.vue b/mallplusui-uniapp-app2/pagesU/user/profile.vue
new file mode 100644
index 0000000..f5665ab
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/profile.vue
@@ -0,0 +1,190 @@
+
+
+
+ 我的头像
+
+
+
+
+
+
+
+ 修改昵称:{{userInfos.nickname|| ''}}
+
+
+
+ 修改性别
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/pagesU/user/reset_password.vue b/mallplusui-uniapp-app2/pagesU/user/reset_password.vue
new file mode 100644
index 0000000..6f8cbb8
--- /dev/null
+++ b/mallplusui-uniapp-app2/pagesU/user/reset_password.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 密码长度8~24位,必须包含数字/字母/符号至少2种以上元素
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mallplusui-uniapp-app2/plugins/APPUpdate/APPUpdate.md b/mallplusui-uniapp-app2/plugins/APPUpdate/APPUpdate.md
new file mode 100644
index 0000000..b6dbc1d
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/APPUpdate/APPUpdate.md
@@ -0,0 +1,106 @@
+# APP版本更新、强制更新、漂亮的更新界面、IOS更新(跳转IOS store)、wgt更新
+
+### QQ交流群(学习干货多多) 607391225
+
+
+### 常见问题
+1.安卓apk下载完成后没有更新APP?
+
+答:问题是因为没有添加APP安装应用的权限,解决方法在`manifest.json`文件里面`APP模块权限配置`的`Android打包权限配置`勾选以下权限
+```
+
+
+```
+若还有问题请看[安装apk无法执行的解决方案](https://ask.dcloud.net.cn/article/35703 "安装apk无法执行的解决方案")
+
+2.APP更新后版本号没变,还是之前的版本号?
+
+答:可能是更新的安装包没有升级版本号,`manifest.json`文件里面基本设置`应用版本号`和`应用版本名称`需要升高
+
+3.APP更新后没有覆盖之前的APP?
+
+答:可能是更新的安装包`包名`和APP的`包名`不一样
+
+### 第一步配置APP更新接口
+在`APPUpdate.js`里面`getServerNo`函数方法配置更新接口
+```
+let httpData = {
+ version:version
+};
+if (platform == "android") {
+ httpData.type = 1101;
+} else {
+ httpData.type = 1102;
+}
+/* 接口入参说明
+ * version: 应用当前版本号(已自动获取)
+ * type:平台(1101是安卓,1102是IOS)
+ */
+$http.get("api/kemean/aid/app_version", httpData).then(res => {
+ /*接口出参说明 (res数据说明)
+ * | 参数名称 | 一定返回 | 类型 | 描述
+ * | -------------|--------- | --------- | ------------- |
+ * | versionCode | y | int | 版本号 |
+ * | versionName | y | String | 版本名称 |
+ * | versionInfo | y | String | 版本信息 \n 换行(例如:1.修改了bug1 \n 2.修改了bug2 \n 3.修改了bug3) |
+ * | forceUpdate | y | boolean | 是否强制更新 |
+ * | downloadUrl | y | String | 版本下载链接 `IOS安装包更新请放跳转store应用商店链接,安卓apk和wgt文件放文件下载链接` |
+ */
+});
+```
+
+### 第二步 使用方法
+```
+// App.vue页面
+
+// #ifdef APP-PLUS
+import APPUpdate from "@/plugins/APPUpdate";
+// #endif
+
+onLaunch: function(e) {
+ // #ifdef APP-PLUS
+ APPUpdate();
+ // #endif
+}
+```
+
+### 第三步 添加APP安装应用的权限
+在`manifest.json`文件里面`APP模块权限配置`的`Android打包权限配置`勾选以下权限
+```
+
+
+```
+
+### 修改弹窗的主题色或弹窗图标
+在`APPUpdate.js`里面上面`$mainColor`常量中定义主题颜色,`$iconUrl`常量中定义图标地址
+
+### 检查APP是否有新版本(一般在设置页面使用)
+```
+// #ifdef APP-PLUS
+import APPUpdate, { getCurrentNo } from "@/plugins/APPUpdate";
+// #endif
+export default {
+ data() {
+ return {
+ version: "" // 版本号
+ };
+ },
+ //第一次加载
+ onLoad(e) {
+ // #ifdef APP-PLUS
+ getCurrentNo(res => {
+ // 进页面获取当前APP版本号(用于页面显示)
+ this.version = res.version;
+ });
+ // #endif
+ },
+ //方法
+ methods: {
+ // 检查APP是否有新版本
+ onAPPUpdate() {
+ // true 没有新版本的时候有提示,默认:false
+ APPUpdate(true);
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/plugins/APPUpdate/index.js b/mallplusui-uniapp-app2/plugins/APPUpdate/index.js
new file mode 100644
index 0000000..b66cda6
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/APPUpdate/index.js
@@ -0,0 +1,816 @@
+// #ifdef APP-PLUS
+import $api from '@/common/api';
+import $http from '@/config/requestConfig';
+const platform = uni.getSystemInfoSync().platform;
+// 主颜色
+const $mainColor = "FF5B78";
+// 弹窗图标url
+const $iconUrl = "/static/icon/ic_ar.png";
+// 获取当前应用的版本号
+export const getCurrentNo = function(callback) {
+ // 获取本地应用资源版本号
+ plus.runtime.getProperty(plus.runtime.appid, function(inf) {
+ callback && callback({
+ versionCode: inf.version.replace(/\./g, ""),
+ version: inf.version
+ });
+ });
+}
+// 发起ajax请求获取服务端版本号
+export const getServerNo = function(version, isPrompt = false, callback) {
+ let userInfos = uni.getStorageSync('userInfos');
+ console.log(userInfos);
+ console.log(userInfos.username)
+ let userName = userInfos.username;
+ let httpData = {
+ version: version,
+ userName:userName
+ };
+ console.log(userName)
+ if (platform == "android") {
+ httpData.type = 1101;
+ } else {
+ httpData.type = 1102;
+ }
+ /* 接口入参说明
+ * version: 应用当前版本号(已自动获取)
+ * type:平台(1101是安卓,1102是IOS)
+ */
+ $http.get("api/appVersion/versioninfo", httpData, {
+ isPrompt: isPrompt
+ }).then(res => {
+ /* res的数据说明
+ * | 参数名称 | 一定返回 | 类型 | 描述
+ * | -------------|--------- | --------- | ------------- |
+ * | versionCode | y | int | 版本号 |
+ * | versionName | y | String | 版本名称 |
+ * | versionInfo | y | String | 版本信息 |
+ * | forceUpdate | y | boolean | 是否强制更新 |
+ * | downloadUrl | y | String | 版本下载链接(IOS安装包更新请放跳转store应用商店链接,安卓apk和wgt文件放文件下载链接) |
+ */
+ console.log(res)
+ console.log(JSON.parse(res));
+ console.log(JSON.stringify(JSON.parse(res)))
+ console.log(JSON.parse(res).downloadUrl)
+ if (res && JSON.parse(res).downloadUrl && version < JSON.parse(res).versionCode) {
+ callback && callback(res);
+ } else if (isPrompt) {
+ uni.showToast({
+ title: "暂无新版本",
+ icon: "none"
+ });
+ }
+ });
+}
+// 从服务器下载应用资源包
+export const getDownload = function(res) {
+ //let data = JSON.parse(res);
+ let data = res;
+ let popupData = {
+ progress: true,
+ buttonNum: 2
+ };
+ if (data.forceUpdate) {
+ popupData.buttonNum = 0;
+ }
+ let file = data.fileName
+ let dtask;
+ let lastProgressValue = 0;
+ downloadPopup(popupData, function(res) {
+ dtask = plus.downloader.createDownload(data.downloadUrl, {
+ // filename: '_doc/update/' + file + '/' + new Date().getTime() + '/'
+ filename: '_doc/update/' + new Date().getTime() + '/' + file
+ }, function(download, status) {
+ console.log("status=====:" + status)
+ if (status == 200) {
+ res.change({
+ progressValue: 100,
+ progressTip: "正在安装文件...",
+ progress: true,
+ buttonNum: 0
+ });
+ console.log(download.filename)
+ plus.runtime.install(download.filename, {
+ force: false
+ }, function() {
+ // plus.runtime.restart();//下载后重启app
+ res.change({
+ contentText: "应用资源更新完成!",
+ buttonNum: 1,
+ progress: false
+ });
+ }, function(e) {
+ res.cancel();
+ plus.nativeUI.alert("安装文件失败[" + e.code + "]:" + e.message);
+ });
+ } else {
+ res.change({
+ contentText: "文件下载失败...",
+ buttonNum: 1,
+ progress: false
+ });
+ }
+ });
+ dtask.start();
+ dtask.addEventListener("statechanged", function(task, status) {
+ switch (task.state) {
+ case 1: // 开始
+ res.change({
+ progressValue: 0,
+ progressTip: "准备下载...",
+ progress: true
+ });
+ break;
+ case 2: // 已连接到服务器
+ res.change({
+ progressValue: 0,
+ progressTip: "开始下载...",
+ progress: true
+ });
+ break;
+ case 3:
+ const progress = parseInt(task.downloadedSize / task.totalSize * 100);
+ if (progress - lastProgressValue >= 2) {
+ lastProgressValue = progress;
+ res.change({
+ progressValue: progress,
+ progressTip: "已下载" + progress + "%",
+ progress: true
+ });
+ }
+
+ break;
+ }
+ });
+ }, function() {
+ // 取消下载
+ dtask && dtask.abort();
+ uni.showToast({
+ title: "已取消下载",
+ icon: "none"
+ });
+ },
+ function() {
+ // 重启APP
+ plus.runtime.restart();
+ });
+}
+// 文字换行
+function drawtext(text, maxWidth) {
+ debugger
+ let textArr = text.split(" ");
+ let len = textArr.length;
+ // 上个节点
+ let previousNode = 0;
+ // 记录节点宽度
+ let nodeWidth = 0;
+ // 文本换行数组
+ let rowText = [];
+ // 如果是字母,侧保存长度
+ let letterWidth = 0;
+ // 汉字宽度
+ let chineseWidth = 14;
+ // otherFont宽度
+ let otherWidth = 7;
+ for (let i = 0; i < len; i++) {
+ if (/[\u4e00-\u9fa5]|[\uFE30-\uFFA0]/g.test(textArr[i])) {
+ if (letterWidth > 0) {
+ if (nodeWidth + chineseWidth + letterWidth * otherWidth > maxWidth) {
+ rowText.push({
+ type: "text",
+ content: text.substring(previousNode, i)
+ });
+ previousNode = i;
+ nodeWidth = chineseWidth;
+ letterWidth = 0;
+ } else {
+ nodeWidth += chineseWidth + letterWidth * otherWidth;
+ letterWidth = 0;
+ }
+ } else {
+ if (nodeWidth + chineseWidth > maxWidth) {
+ rowText.push({
+ type: "text",
+ content: text.substring(previousNode, i)
+ });
+ previousNode = i;
+ nodeWidth = chineseWidth;
+ } else {
+ nodeWidth += chineseWidth;
+ }
+ }
+ } else {
+ if (/\n/g.test(textArr[i])) {
+ rowText.push({
+ type: "break",
+ content: text.substring(previousNode, i)
+ });
+ previousNode = i + 1;
+ nodeWidth = 0;
+ letterWidth = 0;
+ } else if (textArr[i] == "\\" && textArr[i + 1] == "n") {
+ rowText.push({
+ type: "break",
+ content: text.substring(previousNode, i)
+ });
+ previousNode = i + 2;
+ nodeWidth = 0;
+ letterWidth = 0;
+ } else if (/[a-zA-Z0-9]/g.test(textArr[i])) {
+ letterWidth += 1;
+ if (nodeWidth + letterWidth * otherWidth > maxWidth) {
+ rowText.push({
+ type: "text",
+ content: text.substring(previousNode, i + 1 - letterWidth)
+ });
+ previousNode = i + 1 - letterWidth;
+ nodeWidth = letterWidth * otherWidth;
+ letterWidth = 0;
+ }
+ } else {
+ if (nodeWidth + otherWidth > maxWidth) {
+ rowText.push({
+ type: "text",
+ content: text.substring(previousNode, i)
+ });
+ previousNode = i;
+ nodeWidth = otherWidth;
+ } else {
+ nodeWidth += otherWidth;
+ }
+ }
+ }
+ }
+ if (previousNode < len) {
+ rowText.push({
+ type: "text",
+ // content: text.substring(previousNode, len)
+ content: text
+ });
+ }
+ return rowText;
+}
+// 是否更新弹窗
+function updatePopup(res, callback) {
+ console.log(res);
+ //let data = JSON.parse(res);
+ let data = res;
+ console.log(data.versionInfo)
+ // 弹窗遮罩层
+ let maskLayer = new plus.nativeObj.View("maskLayer", { //先创建遮罩层
+ top: '0px',
+ left: '0px',
+ height: '100%',
+ width: '100%',
+ backgroundColor: 'rgba(0,0,0,0.5)'
+ });
+
+ // 以下为计算菜单的nview绘制布局,为固定算法,使用者无关关心
+ const screenWidth = plus.screen.resolutionWidth;
+ const screenHeight = plus.screen.resolutionHeight;
+ //弹窗容器宽度
+ const popupViewWidth = screenWidth * 0.7;
+ // 弹窗容器的Padding
+ const viewContentPadding = 20;
+ // 弹窗容器的宽度
+ const viewContentWidth = parseInt(popupViewWidth - (viewContentPadding * 2));
+ // 描述的列表
+ const descriptionList = drawtext(data.versionInfo, viewContentWidth);
+ // 弹窗容器高度
+ let popupViewHeight = 80 + 20 + 20 + 90 + 10;
+ let popupViewContentList = [{
+ src: $iconUrl,
+ id: "logo",
+ tag: "img",
+ position: {
+ top: "0px",
+ left: (popupViewWidth - 124) / 2 + "px",
+ width: "124px",
+ height: "80px",
+ }
+ },
+ {
+ tag: 'font',
+ id: 'title',
+ text: "发现新版本" + data.versionName,
+ textStyles: {
+ size: '18px',
+ color: "#333",
+ weight: "bold",
+ whiteSpace: "normal"
+ },
+ position: {
+ top: '90px',
+ left: viewContentPadding + "px",
+ width: viewContentWidth + "px",
+ height: "30px",
+ }
+ }
+ ];
+ const textHeight = 18;
+ let contentTop = 130;
+ descriptionList.forEach((item, index) => {
+ if (index > 0) {
+ popupViewHeight += textHeight;
+ contentTop += textHeight;
+ }
+ popupViewContentList.push({
+ tag: 'font',
+ id: 'content' + index + 1,
+ text: item.content,
+ textStyles: {
+ size: '14px',
+ color: "#666",
+ lineSpacing: "50%",
+ align: "left"
+ },
+ position: {
+ top: contentTop + "px",
+ left: viewContentPadding + "px",
+ width: viewContentWidth + "px",
+ height: textHeight + "px",
+ }
+ });
+ if (item.type == "break") {
+ contentTop += 10;
+ popupViewHeight += 10;
+ }
+ });
+ // 弹窗内容
+ let popupView = new plus.nativeObj.View("popupView", { //创建底部图标菜单
+ tag: "rect",
+ top: (screenHeight - popupViewHeight) / 2 + "px",
+ left: '15%',
+ height: popupViewHeight + "px",
+ width: "70%"
+ });
+ // 绘制白色背景
+ popupView.drawRect({
+ color: "#FFFFFF",
+ radius: "8px"
+ }, {
+ top: "40px",
+ height: popupViewHeight - 40 + "px",
+ });
+ // 绘制底边按钮
+ popupView.drawRect({
+ radius: "3px",
+ borderColor: "#f1f1f1",
+ borderWidth: "1px",
+ }, {
+ bottom: viewContentPadding + 'px',
+ left: viewContentPadding + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px",
+ });
+ // 绘制底边按钮
+ popupView.drawRect({
+ radius: "3px",
+ color: $mainColor,
+ }, {
+ bottom: viewContentPadding + 'px',
+ left: ((viewContentWidth - viewContentPadding) / 2 + viewContentPadding * 2) + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px",
+ });
+ popupViewContentList.push({
+ tag: 'font',
+ id: 'cancelText',
+ text: "暂不升级",
+ textStyles: {
+ size: '14px',
+ color: "#666",
+ lineSpacing: "0%",
+ whiteSpace: "normal"
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: viewContentPadding + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px",
+ }
+ });
+ popupViewContentList.push({
+ tag: 'font',
+ id: 'confirmText',
+ text: "立即升级",
+ textStyles: {
+ size: '14px',
+ color: "#FFF",
+ lineSpacing: "0%",
+ whiteSpace: "normal"
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: ((viewContentWidth - viewContentPadding) / 2 + viewContentPadding * 2) + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px",
+ }
+ });
+ popupView.draw(popupViewContentList);
+ popupView.addEventListener("click", function(e) {
+ let maxTop = popupViewHeight - viewContentPadding;
+ let maxLeft = popupViewWidth - viewContentPadding;
+ let buttonWidth = (viewContentWidth - viewContentPadding) / 2;
+ if (e.clientY > maxTop - 30 && e.clientY < maxTop) {
+ // 暂不升级
+ if (e.clientX > viewContentPadding && e.clientX < maxLeft - buttonWidth - viewContentPadding) {
+ maskLayer.hide();
+ popupView.hide();
+ } else if (e.clientX > maxLeft - buttonWidth && e.clientX < maxLeft) {
+ // 立即升级
+ maskLayer.hide();
+ popupView.hide();
+ callback && callback();
+ }
+ }
+ });
+ // 点击遮罩层
+ maskLayer.addEventListener("click", function() { //处理遮罩层点击
+ maskLayer.hide();
+ popupView.hide();
+ });
+ // 显示弹窗
+ maskLayer.show();
+ popupView.show();
+}
+// 文件下载的弹窗绘图
+function downloadPopupDrawing(data) {
+ // 以下为计算菜单的nview绘制布局,为固定算法,使用者无关关心
+ const screenWidth = plus.screen.resolutionWidth;
+ const screenHeight = plus.screen.resolutionHeight;
+ //弹窗容器宽度
+ const popupViewWidth = screenWidth * 0.7;
+ // 弹窗容器的Padding
+ const viewContentPadding = 20;
+ // 弹窗容器的宽度
+ const viewContentWidth = popupViewWidth - (viewContentPadding * 2);
+ // 弹窗容器高度
+ let popupViewHeight = viewContentPadding * 3 + 60;
+ let progressTip = data.progressTip || "准备下载...";
+ let contentText = data.contentText || "正在为您更新,请耐心等待";
+ let elementList = [{
+ tag: 'rect', //背景色
+ color: '#FFFFFF',
+ rectStyles: {
+ radius: "8px"
+ }
+ },
+ {
+ tag: 'font',
+ id: 'title',
+ text: "升级APP",
+ textStyles: {
+ size: '16px',
+ color: "#333",
+ weight: "bold",
+ verticalAlign: "middle",
+ whiteSpace: "normal"
+ },
+ position: {
+ top: viewContentPadding + 'px',
+ height: "30px",
+ }
+ },
+ {
+ tag: 'font',
+ id: 'content',
+ text: contentText,
+ textStyles: {
+ size: '14px',
+ color: "#333",
+ verticalAlign: "middle",
+ whiteSpace: "normal"
+ },
+ position: {
+ top: viewContentPadding * 2 + 30 + 'px',
+ height: "20px",
+ }
+ }
+ ];
+ // 是否有进度条
+ if (data.progress) {
+ popupViewHeight += viewContentPadding + 40;
+ elementList = elementList.concat([{
+ tag: 'font',
+ id: 'progressValue',
+ text: progressTip,
+ textStyles: {
+ size: '14px',
+ color: $mainColor,
+ whiteSpace: "normal"
+ },
+ position: {
+ top: viewContentPadding * 4 + 20 + 'px',
+ height: "30px"
+ }
+ },
+ {
+ tag: 'rect', //绘制进度条背景
+ id: 'progressBg',
+ rectStyles: {
+ radius: "4px",
+ borderColor: "#f1f1f1",
+ borderWidth: "1px",
+ },
+ position: {
+ top: viewContentPadding * 4 + 60 + 'px',
+ left: viewContentPadding + "px",
+ width: viewContentWidth + "px",
+ height: "8px"
+ }
+ },
+ ]);
+ }
+ if (data.buttonNum == 2) {
+ popupViewHeight += viewContentPadding + 30;
+ elementList = elementList.concat([{
+ tag: 'rect', //绘制底边按钮
+ rectStyles: {
+ radius: "3px",
+ borderColor: "#f1f1f1",
+ borderWidth: "1px",
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: viewContentPadding + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px"
+ }
+ },
+ {
+ tag: 'rect', //绘制底边按钮
+ rectStyles: {
+ radius: "3px",
+ color: $mainColor
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: ((viewContentWidth - viewContentPadding) / 2 + viewContentPadding * 2) + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px"
+ }
+ },
+ {
+ tag: 'font',
+ id: 'cancelText',
+ text: "取消下载",
+ textStyles: {
+ size: '14px',
+ color: "#666",
+ lineSpacing: "0%",
+ whiteSpace: "normal"
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: viewContentPadding + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px",
+ }
+ },
+ {
+ tag: 'font',
+ id: 'confirmText',
+ text: "后台下载",
+ textStyles: {
+ size: '14px',
+ color: "#FFF",
+ lineSpacing: "0%",
+ whiteSpace: "normal"
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: ((viewContentWidth - viewContentPadding) / 2 + viewContentPadding * 2) + "px",
+ width: (viewContentWidth - viewContentPadding) / 2 + "px",
+ height: "30px",
+ }
+ }
+ ]);
+ }
+ if (data.buttonNum == 1) {
+ popupViewHeight += viewContentPadding + 40;
+ elementList = elementList.concat([{
+ tag: 'rect', //绘制底边按钮
+ rectStyles: {
+ radius: "6px",
+ color: $mainColor
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: viewContentPadding + "px",
+ width: viewContentWidth + "px",
+ height: "40px"
+ }
+ },
+ {
+ tag: 'font',
+ id: 'confirmText',
+ text: "关闭",
+ textStyles: {
+ size: '14px',
+ color: "#FFF",
+ lineSpacing: "0%",
+ },
+ position: {
+ bottom: viewContentPadding + 'px',
+ left: viewContentPadding + "px",
+ width: viewContentWidth + "px",
+ height: "40px"
+ }
+ }
+ ]);
+ }
+ return {
+ popupViewHeight: popupViewHeight,
+ popupViewWidth: popupViewWidth,
+ screenHeight: screenHeight,
+ viewContentWidth: viewContentWidth,
+ viewContentPadding: viewContentPadding,
+ elementList: elementList
+ };
+}
+// 文件下载的弹窗
+function downloadPopup(data, callback, cancelCallback, rebootCallback) {
+ // 弹窗遮罩层
+ let maskLayer = new plus.nativeObj.View("maskLayer", { //先创建遮罩层
+ top: '0px',
+ left: '0px',
+ height: '100%',
+ width: '100%',
+ backgroundColor: 'rgba(0,0,0,0.5)'
+ });
+ let popupViewData = downloadPopupDrawing(data);
+ // 弹窗内容
+ let popupView = new plus.nativeObj.View("popupView", { //创建底部图标菜单
+ tag: "rect",
+ top: (popupViewData.screenHeight - popupViewData.popupViewHeight) / 2 + "px",
+ left: '15%',
+ height: popupViewData.popupViewHeight + "px",
+ width: "70%",
+ });
+ let progressValue = 0;
+ let progressTip = 0;
+ let contentText = 0;
+ let buttonNum = 2;
+ if (data.buttonNum >= 0) {
+ buttonNum = data.buttonNum;
+ }
+ popupView.draw(popupViewData.elementList);
+ popupView.addEventListener("click", function(e) {
+ let maxTop = popupViewData.popupViewHeight - popupViewData.viewContentPadding;
+ let maxLeft = popupViewData.popupViewWidth - popupViewData.viewContentPadding;
+ if (e.clientY > maxTop - 40 && e.clientY < maxTop) {
+ if (buttonNum == 1) {
+ // 单按钮
+ if (e.clientX > popupViewData.viewContentPadding && e.clientX < maxLeft) {
+ maskLayer.hide();
+ popupView.hide();
+ rebootCallback && rebootCallback();
+ }
+ } else if (buttonNum == 2) {
+ // 双按钮
+ let buttonWidth = (popupViewData.viewContentWidth - popupViewData.viewContentPadding) / 2;
+ if (e.clientX > popupViewData.viewContentPadding && e.clientX < maxLeft - buttonWidth - popupViewData.viewContentPadding) {
+ maskLayer.hide();
+ popupView.hide();
+ cancelCallback && cancelCallback();
+ } else if (e.clientX > maxLeft - buttonWidth && e.clientX < maxLeft) {
+ maskLayer.hide();
+ popupView.hide();
+ }
+ }
+ }
+ });
+ // 显示弹窗
+ maskLayer.show();
+ popupView.show();
+ // 改变进度条
+ callback({
+ change: function(res) {
+ let progressElement = [];
+ if (res.progressValue) {
+ progressValue = res.progressValue;
+ // 绘制进度条
+ progressElement.push({
+ tag: 'rect', //绘制进度条背景
+ id: 'progressValueBg',
+ rectStyles: {
+ radius: "4px",
+ color: $mainColor
+ },
+ position: {
+ top: popupViewData.viewContentPadding * 4 + 60 + 'px',
+ left: popupViewData.viewContentPadding + "px",
+ width: popupViewData.viewContentWidth * (res.progressValue / 100) + "px",
+ height: "8px"
+ }
+ });
+ }
+ if (res.progressTip) {
+ progressTip = res.progressTip;
+ progressElement.push({
+ tag: 'font',
+ id: 'progressValue',
+ text: res.progressTip,
+ textStyles: {
+ size: '14px',
+ color: $mainColor,
+ whiteSpace: "normal"
+ },
+ position: {
+ top: popupViewData.viewContentPadding * 4 + 20 + 'px',
+ height: "30px"
+ }
+ });
+ }
+ if (res.contentText) {
+ contentText = res.contentText;
+ progressElement.push({
+ tag: 'font',
+ id: 'content',
+ text: res.contentText,
+ textStyles: {
+ size: '16px',
+ color: "#333",
+ whiteSpace: "normal"
+ },
+ position: {
+ top: popupViewData.viewContentPadding * 2 + 30 + 'px',
+ height: "30px",
+ }
+ });
+ }
+ if (res.buttonNum >= 0 && buttonNum != res.buttonNum) {
+ buttonNum = res.buttonNum;
+ popupView.reset();
+ popupViewData = downloadPopupDrawing(Object.assign({
+ progressValue: progressValue,
+ progressTip: progressTip,
+ contentText: contentText,
+ }, res));
+ let newElement = [];
+ popupViewData.elementList.map((item, index) => {
+ let have = false;
+ progressElement.forEach((childItem, childIndex) => {
+ if (item.id == childItem.id) {
+ have = true;
+ }
+ });
+ if (!have) {
+ newElement.push(item);
+ }
+ });
+ progressElement = newElement.concat(progressElement);
+ popupView.setStyle({
+ tag: "rect",
+ top: (popupViewData.screenHeight - popupViewData.popupViewHeight) / 2 + "px",
+ left: '15%',
+ height: popupViewData.popupViewHeight + "px",
+ width: "70%",
+ });
+ popupView.draw(progressElement);
+ } else {
+ popupView.draw(progressElement);
+ }
+ },
+ cancel: function() {
+ maskLayer.hide();
+ popupView.hide();
+ }
+ });
+}
+export default function(isPrompt = false) {
+ getCurrentNo(version => {
+ getServerNo(version.versionCode, isPrompt, data => {
+ let res = JSON.parse(data);
+ if (res.forceUpdate) {
+ if (/\.wgt$/i.test(res.downloadUrl)) {
+ getDownload(res);
+ } else if (/\.apk$/i.test(res.downloadUrl)) {
+ plus.runtime.openURL(res.downloadUrl);
+ } else {
+ if (platform == "android") {
+ getDownload(res);
+ } else {
+ plus.runtime.openURL(res.downloadUrl);
+ }
+ }
+ } else {
+ updatePopup(res, function() {
+ if (/\.wgt$/i.test(res.downloadUrl)) {
+ getDownload(res);
+ } else if (/\.html$/i.test(res.downloadUrl)) {
+ plus.runtime.openURL(res.downloadUrl);
+ } else {
+ if (platform == "android") {
+ getDownload(res);
+ } else {
+ plus.runtime.openURL(res.downloadUrl);
+ }
+ }
+ });
+ }
+ });
+ });
+}
+// #endif
diff --git a/mallplusui-uniapp-app2/plugins/request/fileUpload.js b/mallplusui-uniapp-app2/plugins/request/fileUpload.js
new file mode 100644
index 0000000..e1fc1c1
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/request/fileUpload.js
@@ -0,0 +1,390 @@
+import request from "./request.js";
+const qiniuUploader = require("./qiniuUploader");
+export default class fileUpload extends request {
+ constructor(props) {
+ // 调用实现父类的构造函数
+ super(props);
+ }
+ //七牛云上传图片
+ qnImgUpload(data = {}, options = {}) {
+ const _this = this;
+ return new Promise((resolve, reject) => {
+ uni.chooseImage({
+ count: data.count || 9, //默认9
+ sizeType: data.sizeType || ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+ sourceType: data.sourceType || ['album', 'camera'], //从相册选择
+ success: function(res) {
+ _this.qnFileUpload({
+ files: res.tempFiles,
+ ...data
+ }, options).then(resolve, reject);
+ }
+ });
+ });
+ }
+ //七牛云上传文件命名
+ randomChar(l, url = "") {
+ const x = "0123456789qwertyuioplkjhgfdsazxcvbnm";
+ let tmp = "";
+ let time = new Date();
+ for (let i = 0; i < l; i++) {
+ tmp += x.charAt(Math.ceil(Math.random() * 100000000) % x.length);
+ }
+ return (
+ "file/" +
+ url +
+ time.getTime() +
+ tmp
+ );
+ }
+ //七牛云文件上传(支持多张上传)
+ qnFileUpload(data = {}, options = {}) {
+ const _this = this;
+ let requestInfo = {
+ ...data,
+ ...this.config,
+ ...options,
+ header: {},
+ method: "FILE"
+ };
+ return new Promise((resolve, reject) => {
+ //请求前回调
+ if (_this.requestStart) {
+ let requestStart = _this.requestStart(requestInfo);
+ if (typeof requestStart == "object") {
+ requestInfo.load = requestStart.load;
+ requestInfo.files = requestStart.files;
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ return;
+ }
+ }
+ if (Array.isArray(requestInfo.files)) {
+ let len = requestInfo.files.length;
+ let imageList = new Array;
+ if(_this.getQnToken){
+ _this.getQnToken(qnRes => {
+ /*
+ *接口返回参数:
+ *visitPrefix:访问文件的域名
+ *token:七牛云上传token
+ *folderPath:上传的文件夹
+ *region: 地区 默认为:SCN
+ */
+ uploadFile(0);
+ function uploadFile(i) {
+ let fileData = {
+ fileIndex: i,
+ files: requestInfo.files,
+ size: requestInfo.files[i].size
+ };
+ // #ifdef H5
+ fileData.name = requestInfo.files[i].name;
+ fileData.type = requestInfo.files[i].type;
+ // #endif
+ // 交给七牛上传
+ qiniuUploader.upload(requestInfo.files[i].path, (res) => {
+ fileData.url = res.imageURL;
+ requestInfo.onEachUpdate && requestInfo.onEachUpdate({
+ url: res.imageURL,
+ ...fileData
+ });
+ imageList.push(res.imageURL);
+ if (len - 1 > i) {
+ uploadFile(i + 1);
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "request:ok",
+ statusCode: 200,
+ data: imageList
+ });
+ resolve(imageList);
+ }
+ }, (error) => {
+ console.log('error: ' + error);
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, error);
+ reject(error)
+ }, {
+ region: qnRes.region || 'SCN', //地区
+ domain: qnRes.visitPrefix, // bucket 域名,下载资源时用到。
+ key: _this.randomChar(8, qnRes.folderPath),
+ uptoken: qnRes.token, // 由其他程序生成七牛 uptoken
+ uptokenURL: 'UpTokenURL.com/uptoken' // 上传地址
+ }, (res) => {
+ console.log(requestInfo);
+ requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res));
+ // console.log('上传进度', res.progress)
+ // console.log('已经上传的数据长度', res.totalBytesSent)
+ // console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
+ });
+ }
+ });
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "请添加七牛云回调方法:getQnToken",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "请添加七牛云回调方法:getQnToken",
+ statusCode: 0
+ });
+ return;
+ }
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "files 必须是数组类型",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "files 必须是数组类型",
+ statusCode: 0
+ });
+ };
+ });
+
+ }
+ //本地服务器图片上传
+ urlImgUpload(url = '', data = {}, options = {}) {
+ const _this = this;
+ return new Promise((resolve, reject) => {
+ uni.chooseImage({
+ count: data.count || 9, //默认9
+ sizeType: data.sizeType || ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+ sourceType: data.sourceType || ['album', 'camera'], //从相册选择
+ success: function(res) {
+ _this.urlFileUpload(url, {
+ ...data,
+ files: res.tempFiles
+ }, options).then(resolve, reject);
+ }
+ });
+ });
+ }
+ //本地服务器文件上传方法
+ urlFileUpload(url = '', data = {}, options = {}) {
+ let requestInfo = this.getDefault({
+ ...data,
+ url: url,
+ method: "FILE"
+ }, options);
+ const _this = this;
+ return new Promise((resolve, reject) => {
+ //请求前回调
+ if (_this.requestStart) {
+ let requestStart = _this.requestStart(requestInfo);
+ if (typeof requestStart == "object") {
+ requestInfo.data = requestStart.data;
+ requestInfo.header = requestStart.header;
+ requestInfo.isPrompt = requestStart.isPrompt;
+ requestInfo.load = requestStart.load;
+ requestInfo.isFactory = requestStart.isFactory;
+ requestInfo.files = requestStart.files;
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ return;
+ }
+ }
+ // 本地文件上传去掉默认Content-Type
+ if(requestInfo.header['Content-Type']){
+ delete requestInfo.header['Content-Type'];
+ }
+ if (Array.isArray(requestInfo.files)) {
+ // #ifdef APP-PLUS || H5
+ let files = [];
+ let fileData = {
+ files: requestInfo.files,
+ name: requestInfo.name || "file"
+ };
+ requestInfo.files.forEach(item => {
+ files.push({
+ uri: item.path,
+ name: requestInfo.name || "file"
+ });
+ });
+ let config = {
+ url: requestInfo.url,
+ files: files,
+ header: requestInfo.header, //加入请求头
+ success: (response) => {
+ if (typeof(response.data) == "string") {
+ response.data = JSON.parse(response.data);
+ }
+ //是否用外部的数据处理方法
+ if (requestInfo.isFactory && _this.dataFactory) {
+ //数据处理
+ _this.dataFactory({
+ ...requestInfo,
+ response: response,
+ resolve: function(data) {
+ requestInfo.onEachUpdate && requestInfo.onEachUpdate({
+ data: data,
+ ...fileData
+ });
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "request:ok",
+ statusCode: 200,
+ data: data
+ });
+ resolve(data);
+ },
+ reject: function(err) {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "数据工厂返回错误",
+ statusCode: 0,
+ data: err
+ });
+ reject(err);
+ }
+ });
+ } else {
+ requestInfo.onEachUpdate && requestInfo.onEachUpdate({
+ data: response,
+ ...fileData
+ });
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, response);
+ resolve(response);
+ }
+ },
+ fail: (err) => {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, err);
+ reject(err);
+ }
+ };
+ if (requestInfo.data) {
+ config.formData = requestInfo.data;
+ }
+ const uploadTask = uni.uploadFile(config);
+ uploadTask.onProgressUpdate(res => {
+ requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res));
+ });
+ // #endif
+ // #ifdef MP
+ const len = requestInfo.files.length - 1;
+ let fileList = new Array;
+ fileUpload(0);
+
+ function fileUpload(i) {
+ let fileData = {
+ fileIndex: i,
+ files: requestInfo.files,
+ size: requestInfo.files[i].size
+ };
+ // #ifdef H5
+ fileData.name = requestInfo.files[i].name;
+ fileData.type = requestInfo.files[i].type;
+ // #endif
+ let config = {
+ url: requestInfo.url,
+ filePath: requestInfo.files[i].path,
+ header: requestInfo.header, //加入请求头
+ name: requestInfo.name || "file",
+ success: (response) => {
+ if (typeof(response.data) == "string") {
+ response.data = JSON.parse(response.data);
+ }
+ //是否用外部的数据处理方法
+ if (requestInfo.isFactory && _this.dataFactory) {
+ //数据处理
+ _this.dataFactory({
+ ...requestInfo,
+ response: response,
+ resolve: function(data) {
+ requestInfo.onEachUpdate && requestInfo.onEachUpdate({
+ data: data,
+ ...fileData
+ });
+ fileList.push(data);
+ if (len <= i) {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "request:ok",
+ statusCode: 200,
+ data: fileList
+ });
+ resolve(fileList);
+ } else {
+ fileUpload(i + 1);
+ }
+ },
+ reject: function(err) {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "数据工厂返回错误",
+ statusCode: 0,
+ data: err
+ });
+ reject(err);
+ }
+ });
+ } else {
+ requestInfo.onEachUpdate && requestInfo.onEachUpdate({
+ data: response,
+ ...fileData
+ });
+ fileList.push(response);
+ if (len <= i) {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "request:ok",
+ statusCode: 200,
+ data: fileList
+ });
+ resolve(fileList);
+ } else {
+ fileUpload(i + 1);
+ }
+ }
+ },
+ fail: (err) => {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, err);
+ reject(err);
+ }
+ };
+ if (requestInfo.data) {
+ config.formData = requestInfo.data;
+ }
+ const uploadTask = uni.uploadFile(config);
+ uploadTask.onProgressUpdate(res => {
+ requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res));
+ });
+ }
+ // #endif
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "files 必须是数组类型",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "files 必须是数组类型",
+ statusCode: 0
+ })
+ }
+ });
+ }
+}
diff --git a/mallplusui-uniapp-app2/plugins/request/index.js b/mallplusui-uniapp-app2/plugins/request/index.js
new file mode 100644
index 0000000..8884f51
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/request/index.js
@@ -0,0 +1,7 @@
+/***************纯粹的数据请求(如果使用这种可以删除掉fileUpload.js)******************/
+// import request from "./request.js";
+// export default request;
+
+/********数据请求同时继承了文件上传(包括七牛云上传)************/
+import fileUpload from "./fileUpload.js";
+export default fileUpload;
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/plugins/request/qiniuUploader.js b/mallplusui-uniapp-app2/plugins/request/qiniuUploader.js
new file mode 100644
index 0000000..138c80e
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/request/qiniuUploader.js
@@ -0,0 +1,169 @@
+// created by gpake
+(function () {
+
+ var config = {
+ qiniuRegion: '',
+ qiniuImageURLPrefix: '',
+ qiniuUploadToken: '',
+ qiniuUploadTokenURL: '',
+ qiniuUploadTokenFunction: null,
+ qiniuShouldUseQiniuFileName: false
+ }
+
+ module.exports = {
+ init: init,
+ upload: upload,
+ }
+
+ // 在整个程序生命周期中,只需要 init 一次即可
+ // 如果需要变更参数,再调用 init 即可
+ function init(options) {
+ config = {
+ qiniuRegion: '',
+ qiniuImageURLPrefix: '',
+ qiniuUploadToken: '',
+ qiniuUploadTokenURL: '',
+ qiniuUploadTokenFunction: null,
+ qiniuShouldUseQiniuFileName: false
+ };
+ updateConfigWithOptions(options);
+ }
+
+ function updateConfigWithOptions(options) {
+ if (options.region) {
+ config.qiniuRegion = options.region;
+ } else {
+ console.error('qiniu uploader need your bucket region');
+ }
+ if (options.uptoken) {
+ config.qiniuUploadToken = options.uptoken;
+ } else if (options.uptokenURL) {
+ config.qiniuUploadTokenURL = options.uptokenURL;
+ } else if (options.uptokenFunc) {
+ config.qiniuUploadTokenFunction = options.uptokenFunc;
+ }
+ if (options.domain) {
+ config.qiniuImageURLPrefix = options.domain;
+ }
+ config.qiniuShouldUseQiniuFileName = options.shouldUseQiniuFileName
+ }
+
+ function upload(filePath, success, fail, options, progress, cancelTask) {
+ if (null == filePath) {
+ console.error('qiniu uploader need filePath to upload');
+ return;
+ }
+ if (options) {
+ updateConfigWithOptions(options);
+ }
+ if (config.qiniuUploadToken) {
+ doUpload(filePath, success, fail, options, progress, cancelTask);
+ } else if (config.qiniuUploadTokenURL) {
+ getQiniuToken(function () {
+ doUpload(filePath, success, fail, options, progress, cancelTask);
+ });
+ } else if (config.qiniuUploadTokenFunction) {
+ config.qiniuUploadToken = config.qiniuUploadTokenFunction();
+ if (null == config.qiniuUploadToken && config.qiniuUploadToken.length > 0) {
+ console.error('qiniu UploadTokenFunction result is null, please check the return value');
+ return
+ }
+ doUpload(filePath, success, fail, options, progress, cancelTask);
+ } else {
+ console.error('qiniu uploader need one of [uptoken, uptokenURL, uptokenFunc]');
+ return;
+ }
+ }
+
+ function doUpload(filePath, success, fail, options, progress, cancelTask) {
+ if (null == config.qiniuUploadToken && config.qiniuUploadToken.length > 0) {
+ console.error('qiniu UploadToken is null, please check the init config or networking');
+ return
+ }
+ var url = uploadURLFromRegionCode(config.qiniuRegion);
+ var fileName = filePath.split('//')[1];
+ if (options && options.key) {
+ fileName = options.key;
+ }
+ var formData = {
+ 'token': config.qiniuUploadToken
+ };
+ if (!config.qiniuShouldUseQiniuFileName) {
+ formData['key'] = fileName
+ }
+ var uploadTask = wx.uploadFile({
+ url: url,
+ filePath: filePath,
+ name: 'file',
+ formData: formData,
+ success: function (res) {
+ var dataString = res.data
+ if (res.data.hasOwnProperty('type') && res.data.type === 'Buffer') {
+ dataString = String.fromCharCode.apply(null, res.data.data)
+ }
+ try {
+ var dataObject = JSON.parse(dataString);
+ //do something
+ var imageUrl = config.qiniuImageURLPrefix + '/' + dataObject.key;
+ dataObject.imageURL = imageUrl;
+ if (success) {
+ success(dataObject);
+ }
+ } catch (e) {
+ console.log('parse JSON failed, origin String is: ' + dataString)
+ if (fail) {
+ fail(e);
+ }
+ }
+ },
+ fail: function (error) {
+ console.error(error);
+ if (fail) {
+ fail(error);
+ }
+ }
+ })
+
+ uploadTask.onProgressUpdate((res) => {
+ progress && progress(res)
+ })
+
+ cancelTask && cancelTask(() => {
+ uploadTask.abort()
+ })
+ }
+
+ function getQiniuToken(callback) {
+ wx.request({
+ url: config.qiniuUploadTokenURL,
+ success: function (res) {
+ var token = res.data.uptoken;
+ if (token && token.length > 0) {
+ config.qiniuUploadToken = token;
+ if (callback) {
+ callback();
+ }
+ } else {
+ console.error('qiniuUploader cannot get your token, please check the uptokenURL or server')
+ }
+ },
+ fail: function (error) {
+ console.error('qiniu UploadToken is null, please check the init config or networking: ' + error);
+ }
+ })
+ }
+
+ function uploadURLFromRegionCode(code) {
+ var uploadURL = null;
+ switch (code) {
+ case 'ECN': uploadURL = 'https://up.qbox.me'; break;
+ case 'NCN': uploadURL = 'https://up-z1.qbox.me'; break;
+ case 'SCN': uploadURL = 'https://up-z2.qbox.me'; break;
+ case 'NA': uploadURL = 'https://up-na0.qbox.me'; break;
+ case 'ASG': uploadURL = 'https://up-as0.qbox.me'; break;
+ default: console.error('please make the region is with one of [ECN, SCN, NCN, NA, ASG]');
+ }
+ return uploadURL;
+ }
+
+})();
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/plugins/request/request.js b/mallplusui-uniapp-app2/plugins/request/request.js
new file mode 100644
index 0000000..1b2877b
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/request/request.js
@@ -0,0 +1,225 @@
+export default class request {
+ constructor(options) {
+ //请求公共地址
+ this.baseUrl = options.baseUrl || "";
+ //公共文件上传请求地址
+ this.fileUrl = options.fileUrl || "";
+ //默认请求头
+ this.header = options.header || {};
+ //默认配置
+ this.config = {
+ isPrompt: options.isPrompt === false ? false : true,
+ load: options.load === false ? false : true,
+ isFactory: options.isFactory === false ? false : true,
+ loadMore: options.loadMore === false ? false : true
+ };
+ }
+
+ // 获取默认信息
+ getDefault(data, options = {}) {
+ //判断url是不是链接
+ let urlType = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~/])+$/.test(data.url);
+ let config = Object.assign({}, this.config, options, data);
+ if (data.method == "FILE") {
+ config.url = urlType ? data.url : this.fileUrl + data.url;
+ } else {
+ config.url = urlType ? data.url : this.baseUrl + data.url;
+ }
+ //请求头
+ if (options.header) {
+ config.header = Object.assign({}, this.header, options.header);
+ } else if (data.header) {
+ config.header = Object.assign({}, this.header, data.header);
+ } else {
+ config.header = this.header;
+ }
+ return config;
+ }
+
+ //post请求
+ post(url = '', data = {}, options = {}) {
+ return this.request({
+ method: "POST",
+ data: data,
+ url: url,
+ ...options
+ });
+ }
+
+ //get请求
+ get(url = '', data = {}, options = {}) {
+ return this.request({
+ method: "GET",
+ data: data,
+ url: url,
+ ...options
+ });
+ }
+
+ //put请求
+ put(url = '', data = {}, options = {}) {
+ return this.request({
+ method: "PUT",
+ data: data,
+ url: url,
+ ...options
+ });
+ }
+
+ //delete请求
+ delete(url = '', data = {}, options = {}) {
+ return this.request({
+ method: "DELETE",
+ data: data,
+ url: url,
+ ...options
+ });
+ }
+
+ //接口请求方法
+ request(data) {
+ return new Promise((resolve, reject) => {
+ if (!data.url) {
+ console.log("request缺失数据url");
+ reject({
+ errMsg: "缺失数据url",
+ statusCode: 0
+ });
+ return;
+ }
+ let requestInfo = this.getDefault(data);
+ //请求前回调
+ if (this.requestStart) {
+ let requestStart = this.requestStart(requestInfo);
+ if (typeof requestStart == "object") {
+ requestInfo.data = requestStart.data;
+ requestInfo.header = requestStart.header;
+ requestInfo.isPrompt = requestStart.isPrompt;
+ requestInfo.load = requestStart.load;
+ requestInfo.isFactory = requestStart.isFactory;
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ return;
+ }
+ }
+ let requestData = {
+ url: requestInfo.url,
+ header: requestInfo.header, //加入请求头
+ success: (res) => {
+ //请求完成回调
+ this.requestEnd && this.requestEnd(requestInfo, res);
+ //是否用外部的数据处理方法
+ if (requestInfo.isFactory && this.dataFactory) {
+ //数据处理
+ this.dataFactory({
+ ...requestInfo,
+ response: res,
+ resolve: resolve,
+ reject: reject
+ });
+ } else {
+ resolve(res);
+ }
+ },
+ fail: (err) => {
+ console.log("err");
+ //请求完成回调
+ this.requestEnd && this.requestEnd(requestInfo, err);
+ reject(err);
+ }
+ };
+ //请求类型
+ if (requestInfo.method) {
+ requestData.method = requestInfo.method;
+ }
+ if (requestInfo.data) {
+ requestData.data = requestInfo.data;
+ }
+ // #ifdef MP-WEIXIN || MP-ALIPAY
+ if (requestInfo.timeout) {
+ requestData.timeout = requestInfo.timeout;
+ }
+ // #endif
+ if (requestInfo.dataType) {
+ requestData.dataType = requestInfo.dataType;
+ }
+ // #ifndef APP-PLUS || MP-ALIPAY
+ if (requestInfo.responseType) {
+ requestData.responseType = requestInfo.responseType;
+ }
+ // #endif
+ // #ifdef H5
+ if (requestInfo.withCredentials) {
+ requestData.withCredentials = requestInfo.withCredentials;
+ }
+ // #endif
+ uni.request(requestData);
+ });
+ }
+ //jsonp请求(只限于H5使用)
+ jsonp(url = '', data = {}, options = {}) {
+ let requestInfo = this.getDefault({
+ method: "JSONP",
+ data: data,
+ url: url,
+ }, options);
+ let dataStr = '';
+ Object.keys(data).forEach(key => {
+ dataStr += key + '=' + data[key] + '&';
+ });
+ //匹配最后一个&并去除
+ if (dataStr !== '') {
+ dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
+ }
+ requestInfo.url = requestInfo.url + '?' + dataStr;
+ const _this = this;
+ return new Promise((resolve, reject) => {
+ let callbackName = "callback" + Math.ceil(Math.random() * 1000000);
+ if (_this.requestStart) {
+ requestInfo.data = data;
+ let requestStart = _this.requestStart(requestInfo);
+ if (typeof requestStart == "object") {
+ requestInfo.data = requestStart.data;
+ requestInfo.header = requestStart.header;
+ requestInfo.isPrompt = requestStart.isPrompt;
+ requestInfo.load = requestStart.load;
+ requestInfo.isFactory = requestStart.isFactory;
+ } else {
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ reject({
+ errMsg: "请求开始拦截器未通过",
+ statusCode: 0
+ });
+ return;
+ }
+ }
+ // #ifdef H5
+ window[callbackName] = function(data) {
+ resolve(data);
+ }
+ let script = document.createElement("script");
+ script.src = requestInfo.url + "&callback=" + callbackName;
+ document.head.appendChild(script);
+ // 及时删除,防止加载过多的JS
+ document.head.removeChild(script);
+ // #endif
+ //请求完成回调
+ _this.requestEnd && _this.requestEnd(requestInfo, {
+ errMsg: "request:ok",
+ statusCode: 200
+ });
+ });
+ }
+}
diff --git a/mallplusui-uniapp-app2/plugins/request/request.md b/mallplusui-uniapp-app2/plugins/request/request.md
new file mode 100644
index 0000000..2d59e5b
--- /dev/null
+++ b/mallplusui-uniapp-app2/plugins/request/request.md
@@ -0,0 +1,229 @@
+# request请求、配置简单、批量上传图片、超强适应性(很方便的支持多域名请求)
+1. 配置简单、源码清晰注释多、适用于一项目多域名请求、第三方请求、七牛云图片上传、本地服务器图片上传等等
+2. 支持请求`get`、`post`、`put`、`delete`
+3. 自动显示请求加载动画(可单个接口关闭)
+4. 全局`api`数据处理函数,只回调请求正确的数据(可单个接口关闭)
+5. 未登录或登录失效自动拦截并调用登录方法(可单个接口关闭)
+6. 全局自动提示接口抛出的错误信息(可单个接口关闭)
+7. 支持 Promise
+8. 支持拦截器
+9. 支持七牛云文件(图片)批量上传
+10. 支持本地服务器文件(图片)批量上传
+11. 支持上传文件拦截过滤
+12. 支持上传文件进度监听
+13. 支持上传文件单张成功回调
+
+### QQ交流群(学习干货多多) 607391225
+
+
+### 常见问题
+1.接口请求成功了,没有返回数据或者数据是走的catch回调
+
+答:`requestConfig.js` 请求配置文件里面,有一个`$http.dataFactory`方法,里面写的只是参考示例,`此方法需要开发者根据各自的接口返回类型修改`
+
+2.官方的方法有数据,本插件方法请求报错跨域问题
+
+答:`requestConfig.js` 请求配置文件里面,`header`请求头设置的`content-type`请求类型需求和后台保持一致
+
+3.登录后用户`token`怎么设置?
+
+答:`requestConfig.js` 请求配置文件里面,`$http.requestStart`请求开始拦截器里面设置
+
+4.怎么判断上传的文件(图片)太大?怎么过滤掉太大的文件(图片)?
+
+答:`requestConfig.js` 请求配置文件里面,`$http.requestStart`请求开始拦截器里面设置
+
+### 本次更新注意事项
+1. 所有的headers都改成了header(和官方统一)
+2. 七牛云的获取token等信息提取到了`requestConfig.js`文件,参考如下
+
+```
+// 添加获取七牛云token的方法
+$http.getQnToken = function(callback){
+ //该地址需要开发者自行配置(每个后台的接口风格都不一样)
+ $http.get("api/kemean/aid/qn_upload").then(data => {
+ /*
+ *接口返回参数:
+ *visitPrefix:访问文件的域名
+ *token:七牛云上传token
+ *folderPath:上传的文件夹
+ */
+ callback({
+ visitPrefix: data.visitPrefix,
+ token: data.token,
+ folderPath: data.folderPath
+ });
+ });
+}
+```
+
+### 文件说明
+1. `request => request.js` 请求方法的源码文件
+2. `request => fileUpload.js` 七牛云上传和服务器上传的源码文件
+3. `request => index.js` 输出方法的文件
+4. `request => qiniuUploader.js` 七牛云官方上传文件
+5. `requestConfig.js` 请求配置文件(具体看代码)
+
+### 在main.js引入并挂在Vue上
+```
+import $http from '@/zhouWei-request/requestConfig';
+Vue.prototype.$http = $http;
+```
+
+### 通用请求方法(此方法不支持文件上传和JSONP)
+```
+this.$http.request({
+ url: 'aid/region',
+ method: "GET", // POST、GET、PUT、DELETE,具体说明查看官方文档
+ data: {pid:0},
+ timeout: 30000, // 默认 30000 说明:超时时间,单位 ms,具体说明查看官方文档
+ dataType: "json", // 默认 json 说明:如果设为 json,会尝试对返回的数据做一次 JSON.parse,具体说明查看官方文档
+ responseType: "text", // 默认 text 说明:设置响应的数据类型。合法值:text、arraybuffer,具体说明查看官方文档
+ withCredentials: false, // 默认 false 说明:跨域请求时是否携带凭证(cookies),具体说明查看官方文档
+ isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示)
+ load: true,//(默认 true 说明:本接口是否提示加载动画)
+ header: { //默认 无 说明:请求头
+ 'Content-Type': 'application/json'
+ },
+ isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数将失去作用)
+}).then(function (response) {
+ //这里只会在接口是成功状态返回
+}).catch(function (error) {
+ //这里只会在接口是失败状态返回,不需要去处理错误提示
+ console.log(error);
+});
+```
+
+### get请求 正常写法
+```
+this.$http.get('aid/region',{pid:0}).
+then(function (response) {
+ //这里只会在接口是成功状态返回
+}).catch(function (error) {
+ //这里只会在接口是失败状态返回,不需要去处理错误提示
+ console.log(error);
+});
+```
+
+### post请求 async写法
+```
+async request(){
+ let data = await this.$http.post('aid/region',{pid:0});
+ console.log(data);
+}
+```
+
+### 其他功能配置项
+```
+let data = await this.$http.post(
+ 'http://www.aaa.com/aid/region', //可以直接放链接(将不启用全局定义域名)
+ {
+ pid:0
+ },
+ {
+ isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示)
+ load: true,//(默认 true 说明:本接口是否提示加载动画)
+ header: { //默认 无 说明:请求头
+ 'Content-Type': 'application/json'
+ },
+ isFactory: true //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数将失去作用)
+ }
+);
+```
+
+### 本地服务器图片上传(支持多张上传)
+```
+this.$http.urlImgUpload('flie/upload',{
+ name:"后台接受文件key名称", //默认 file
+ count:"最大选择数",//默认 9
+ sizeType:"选择压缩图原图,默认两个都选",//默认 ['original', 'compressed']
+ sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera']
+ data:"而外参数" //可不填,
+ onEachUpdate: res => {
+ console.log("单张上传成功返回:",res);
+ },
+ onProgressUpdate: res => {
+ console.log("上传进度返回:",res);
+ }
+},{
+ isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示)
+ load: true,//(默认 true 说明:本接口是否提示加载动画)
+ header: { //默认 无 说明:请求头
+ 'Content-Type': 'application/json'
+ },
+ isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用)
+ maxSize: 300000 //(默认 无 说明:上传的文件最大字节数限制,默认不限制)
+}).then(res => {
+ console.log("全部上传完返回结果:",res);
+});
+```
+### 本地服务器文件上传(支持多张上传)
+```
+this.$http.urlFileUpload("flie/upload",{
+ files:[], // 必填 临时文件路径
+ data:"向服务器传递的参数", //可不填
+ name:"后台接受文件key名称", //默认 file
+ onEachUpdate: res => {
+ console.log("单张上传成功返回:",res);
+ },
+ onProgressUpdate: res => {
+ console.log("上传进度返回:",res);
+ }
+ },
+ {
+ isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示)
+ load: true,//(默认 true 说明:本接口是否提示加载动画)
+ header: { //默认 无 说明:请求头
+ 'Content-Type': 'application/json'
+ },
+ isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用)
+ maxSize: 300000 //(默认 无 说明:上传的文件最大字节数限制,默认不限制)
+ }).then(res => {
+ console.log("全部上传完返回结果:",res);
+ });
+```
+
+### 七牛云图片上传(支持多张上传)
+```
+this.$http.qnImgUpload({
+ count:"最大选择数", // 默认 9
+ sizeType:"选择压缩图原图,默认两个都选", // 默认 ['original', 'compressed']
+ sourceType:"选择相机拍照或相册上传 默认两个都选", // 默认 ['album','camera']
+ onEachUpdate: res => {
+ console.log("单张上传成功返回:",res);
+ },
+ onProgressUpdate: res => {
+ console.log("上传进度返回:",res);
+ }
+ },
+ {
+ load: true, //(默认 true 说明:本接口是否提示加载动画)
+ maxSize: 300000 //(默认 无 说明:上传的文件最大字节数限制,默认不限制)
+ }).then(res => {
+ console.log("全部上传完返回结果:",res);
+ });
+```
+
+### 七牛云文件上传(支持多张上传)
+```
+this.$http.qnFileUpload(
+ {
+ files:[], // 必填 临时文件路径
+ onEachUpdate: res => {
+ console.log("单张上传成功返回:",res);
+ },
+ onProgressUpdate: res => {
+ console.log("上传进度返回:",res);
+ }
+ },
+ {
+ load: true, //(默认 true 说明:本接口是否提示加载动画)
+ maxSize: 300000 //(默认 无 说明:上传的文件最大字节数限制,默认不限制)
+ }).then(res => {
+ console.log("全部上传完返回结果:",res);
+ });
+```
+### jsonp 跨域请求(只支持H5)
+```
+let data = await this.$http.jsonp('http://www.aaa.com/aid/region',{pid:0});
+```
diff --git a/mallplusui-uniapp-app2/root.txt b/mallplusui-uniapp-app2/root.txt
new file mode 100644
index 0000000..e69de29
diff --git a/mallplusui-uniapp-app2/static/address.png b/mallplusui-uniapp-app2/static/address.png
new file mode 100644
index 0000000..a2bb507
Binary files /dev/null and b/mallplusui-uniapp-app2/static/address.png differ
diff --git a/mallplusui-uniapp-app2/static/arc.png b/mallplusui-uniapp-app2/static/arc.png
new file mode 100644
index 0000000..c7ef6df
Binary files /dev/null and b/mallplusui-uniapp-app2/static/arc.png differ
diff --git a/mallplusui-uniapp-app2/static/css/style.css b/mallplusui-uniapp-app2/static/css/style.css
new file mode 100644
index 0000000..682cb43
--- /dev/null
+++ b/mallplusui-uniapp-app2/static/css/style.css
@@ -0,0 +1,777 @@
+body{
+ background-color: #f8f8f8;
+ font-size: 28upx;
+}
+view{
+ box-sizing: border-box;
+}
+/* #ifdef MP-ALIPAY */
+image{
+ background-size: 100% 100%;
+}
+button{
+ height: auto;
+ border: none;
+ line-height: 2.55555556;
+ padding: 0 28upx;
+}
+input{
+ background: none;
+ padding: 0;
+}
+shared-checkbox{
+ border-radius: 50%;
+}
+shared-checkbox{
+ border-radius: 50%;
+ height: 36rpx;
+ width: 36rpx;
+ margin-top: -4rpx;
+ border: 1rpx solid #d1d1d1;
+ color: #FF7159;
+}
+shared-checkbox:checked {
+ /* width: 36rpx;
+ height: 36rpx;
+ line-height: 36rpx;
+ border-radius: 50%;
+ text-align: center;
+ font-size: 28rpx;
+ color: #fff;
+ background: transparent;
+ transform: translate(-50%, -50%) scale(1);
+ -webkit-transform: translate(-50%, -50%) scale(1);
+ background-color: #FF7159;
+ border: 1rpx solid #FF7159; */
+ background-color: #000;
+ color: #000;
+}
+._radio{
+ border-radius: 50%;/* 圆角 */
+ width: 36rpx;
+ height: 36rpx;
+ margin-top: -4rpx;
+ border: 1rpx solid #d1d1d1;
+}
+/* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */
+._radio:checked{
+ border: 1rpx solid #FF7159;
+ background: #FF7159;
+}
+/* 选中后的 对勾样式 (白色对勾 可根据UI需求自己修改) */
+._radio:checked::before{
+ border-radius: 50%;/* 圆角 */
+ width: 36rpx; /* 选中后对勾大小,不要超过背景的尺寸 */
+ height: 36rpx; /* 选中后对勾大小,不要超过背景的尺寸 */
+ line-height: 36rpx;
+ text-align: center;
+ font-size:28rpx; /* 对勾大小 30rpx */
+ color:#fff; /* 对勾颜色 白色 */
+ background: transparent;
+ transform:translate(-50%, -50%) scale(1);
+ -webkit-transform:translate(-50%, -50%) scale(1);
+}
+/* #endif */
+uni-toast .uni-toast{
+ /* width: 6em; */
+ font-size: 24upx;
+ border-radius: 10px;
+ background: rgba(17,17,17,.5);
+}
+uni-input div, uni-input div div,uni-input, uni-input input{
+ /* min-height: 1rem !important; */
+}
+uni-input{
+ /* height: 1rem; */
+}
+uni-input div div.input-placeholder{
+ /* padding: 8upx 0; */
+}
+.content-top{
+ margin-bottom: 116upx;
+}
+.have-none{
+ background-color: #f3f3f3;
+}
+.color-o{
+ color: #FF7159 !important;
+}
+.color-f{
+ color: #fff !important;
+}
+.color-d{
+ color: #ddd !important;
+}
+.color-3{
+ color: #333 !important;
+}
+.color-6{
+ color: #666 !important;
+}
+.color-9{
+ color: #999 !important;
+}
+.fsz24{
+ font-size: 24upx !important;
+}
+.fsz26{
+ font-size: 26upx !important;
+}
+.fsz28{
+ font-size: 28upx !important;
+}
+.fsz30{
+ font-size: 30upx !important;
+}
+.fsz32{
+ font-size: 32upx !important;
+}
+.fsz34{
+ font-size: 34upx !important;
+}
+.fsz36{
+ font-size: 36upx !important;
+}
+.fsz38{
+ font-size: 38upx !important;
+}
+.fsz50{
+ font-size: 50upx !important;
+}
+.search{
+ width: 100%;
+ height: 104upx;
+ padding: 16upx 26upx;
+ background-color: rgba(255,255,255,1);
+ z-index: 999;
+ transition: all .5s;
+}
+.search-c{
+ width: 100%;
+ height: 100%;
+ position: relative;
+}
+.search-input{
+ background-color: #E9E9E9;
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ line-height: 52upx;
+ padding: 10upx 90upx 10upx 40upx;
+ border-radius: 50upx;
+ font-size: 24upx;
+ transition: all .5s;
+}
+.search-input-p{
+ color: #999;
+ width: 100%;
+ height: 100%;
+}
+.search-input-p-c{
+ position: relative;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.search-icon{
+ position: absolute;
+ top: 50%;
+ right: 30upx;
+ transform: translateY(-50%);
+ z-index: 99;
+}
+.swiper-c{
+ height: 100%;
+}
+.swiper-c image{
+ height: 100%;
+ width: 100%;
+}
+.btn{
+ display: inline-block;
+ box-sizing: border-box;
+ border-radius: 0;
+ font-size: 28upx;
+ transform: scale(1);
+ transition: all .5s;
+}
+/*按钮按下缩小变色*/
+.btn-hover{
+ transform: scale(.90);
+ transition: all .5s;
+ opacity: .8;
+}
+/*按钮按下只变色*/
+.btn-hover2{
+/* transform: scale(.95); */
+ transition: all .1s;
+ opacity: .6;
+}
+.btn::after{
+ border: none;
+}
+.btn-circle{
+ padding: 0upx 20upx;
+ height: 60upx;
+ line-height: 60upx;
+ min-width: 140upx;
+/* border-radius: 6upx; */
+ font-size: 22upx;
+}
+.btn-square{
+ padding: 0upx 40upx;
+ height: 90upx;
+ line-height: 90upx;
+ min-width: 150upx;
+ border: none !important;
+}
+.btn-fillet{
+ border-radius: 50upx;
+}
+.btn-c{
+ background-color: #f7f7f7;
+}
+.btn-w{
+ border: 2upx solid #333;
+ color: #333;
+ background-color: #fff;
+}
+.btn-g{
+ border: 2upx solid #E0E0E0;
+ color: #999;
+ background-color: #fff;
+}
+.btn-b{
+ border: 2upx solid #333;
+ background-color: #333;
+ color: #fff;
+}
+.btn-o{
+ border: 2upx solid #FF7159;
+ background-color: #FF7159;
+ color: #fff;
+}
+.btn-half{
+ width: 50%;
+}
+.btn-all{
+ width: 100%;
+}
+.img-grids{
+ overflow: hidden;
+ /* padding-bottom: 26upx; */
+}
+.img-grids .goods-name{
+ height: 72upx;
+}
+.column3.img-grids .goods-name{
+ height: 68upx;
+}
+.img-grids-item{
+ width: 336upx;
+ margin: 26upx;
+ display: inline-block;
+ background-color: #fff;
+ float: left;
+ min-height: 130upx;
+ /* #ifdef MP-ALIPAY */
+ width: 330rpx;
+ margin: 25rpx;
+ min-height: 130rpx;
+ /* #endif */
+}
+.img-grids-item:nth-child(2n-1){
+ margin-right: 0;
+}
+.img-grids-item-t{
+ width: 336upx;
+ height: 336upx;
+ /* #ifdef MP-ALIPAY */
+ width: 330rpx;
+ height: 330rpx;
+ /* #endif */
+}
+.img-grids-item-b{
+ padding: 0 10upx 10upx;
+}
+.goods-name{
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+ color: #333;
+ width: 100%;
+ /* height: 72upx; */
+ /* #ifdef MP-ALIPAY */
+ min-height: 20px;
+ /* #endif */
+}
+.grids-goods-name{
+ font-size: 26upx;
+}
+.goods-item-c{
+ overflow: hidden;
+ margin-top: 10upx;
+}
+.goods-price{
+ min-width: 120upx;
+ min-height: 40upx;
+ color: #333;
+ font-size: 28upx;
+ display: inline-block;
+ float: left;
+}
+.red-price{
+ color: #FF7159 !important;
+}
+.img-list{
+
+}
+.img-list .goods-name{
+ min-height: 74upx;
+}
+.img-list-item{
+ padding: 30upx 26upx;
+ background-color: #fff;
+ margin-bottom: 2upx;
+ overflow: hidden;
+}
+.img-list-item-l{
+ width: 250upx;
+ height: 250upx;
+ display: inline-block;
+ float: left;
+}
+.img-list-item-r{
+ width: 410upx;
+ min-height: 250upx;
+ display: inline-block;
+ margin-left: 26upx;
+ float: left;
+ padding: 10upx 0;
+ position: relative;
+}
+.list-goods-name{
+ font-size: 28upx;
+}
+.img-list-item .goods-item-c{
+ /* position: absolute; */
+ /* bottom: 0; */
+ width: 100%;
+ margin-top: 0;
+}
+.img-list-item .goods-price{
+ min-width: 150upx;
+ min-height: 50upx;
+ font-size: 38upx;
+ float: none;
+}
+.goods-buy{
+ overflow: hidden;
+}
+.goods-salesvolume{
+ min-width: 100upx;
+ height: 30upx;
+ font-size: 20upx;
+ color: #999;
+ display: inline-block;
+}
+.goods-cart{
+ width: 40upx;
+ height: 40upx;
+ float: right;
+}
+.medium-img{
+ width: 196upx;
+ height: 196upx;
+}
+.little-img{
+ width: 140upx;
+ height: 140upx;
+}
+.small-img{
+ width: 120upx;
+ height: 120upx;
+}
+.medium-right{
+ width: 340upx;
+ min-height: 140upx;
+}
+.little-right{
+ width: 520upx;
+ min-height: 140upx;
+ padding: 0;
+}
+.small-right{
+ width: 540upx;
+ height: 120upx;
+ padding: 0;
+ min-height: 60upx;
+}
+.little-right-t{
+ overflow: hidden;
+}
+.little-right .list-goods-name{
+ float: left;
+ width: 360upx;
+ margin-bottom: 6upx;
+}
+.small-right .list-goods-name{
+ width: 100%;
+}
+.little-right .goods-price{
+ float: right;
+ font-size: 28upx;
+ text-align: right;
+ min-width: 120upx;
+ max-width: 150upx;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ min-height: 40upx;
+}
+.goods-num{
+ float: right;
+ color: #999;
+ font-size: 24upx;
+ height: 30upx;
+ min-width: 50upx;
+}
+.goods-numbox{
+ float: right;
+}
+.little-right .goods-salesvolume{
+ font-size: 24upx;
+ /* float: left; */
+}
+.cell-group{
+ background-color: #fff;
+}
+.cell-item{
+ padding: 20upx 26upx 20upx 0;
+ width: 724upx;
+ margin-left: 26upx;
+ border-bottom: 2upx solid #f3f3f3;
+ position: relative;
+ overflow: hidden;
+ background-color: #fff;
+ color: #333;
+ display: table;
+ min-height: 90upx;
+}
+.cell-item:last-child{
+ border: none;
+}
+.cell-item-hd{
+ display: table-cell;
+ vertical-align: middle;
+ min-width: 160upx;
+ max-width: 180upx;
+ font-size: 28upx;
+ position: relative;
+}
+.cell-hd-icon{
+ width: 40upx;
+ height: 40upx;
+ display: inline-block;
+ float: left;
+ margin-right: 8upx;
+}
+.cell-hd-title{
+ float: left;
+ display: inline-block;
+ position: relative;
+ /* #ifdef MP-ALIPAY */
+ top: 4upx;
+ /* #endif */
+}
+.cell-item-bd{
+ display: table-cell;
+ vertical-align: middle;
+ margin-left: 20upx;
+ min-height: 30upx;
+ overflow: hidden;
+ min-width: 440upx;
+ max-width: 480upx;
+ padding-right: 50upx;
+}
+.cell-bd-view {
+ position: relative;
+ overflow: hidden;
+}
+.cell-bd-text{
+ float: left;
+ position: relative;
+ font-size: 24upx;
+}
+.cell-bd-text-right{
+ float: right;
+}
+.cell-bd-input{
+ display: inline-block;
+ float: left;
+ font-size: 26upx;
+}
+.cell-item-ft{
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ right: 26upx;
+ transform: translateY(-50%);
+ overflow: hidden;
+}
+.right-img .cell-item-ft{
+ right: 8upx;
+ height: 50upx;
+}
+.cell-ft-view{
+ position: relative;
+ overflow: hidden;
+ color: #666;
+ font-size: 28upx;
+ text-align: right;
+}
+.cell-ft-p{
+ font-size: 24upx;
+ color: #666;
+}
+.cell-ft-text{
+ font-size: 28upx;
+ float: right;
+ position: relative;
+ /* top: 8upx; */
+ line-height: 50upx;
+}
+.cell-ft-next{
+ float: right;
+}
+.margin-cell-group{
+ margin: 20upx 0;
+}
+.bottom-cell-group{
+ margin-bottom: 20upx;
+}
+.min-cell-group{
+ margin-bottom: 1px;
+ padding: 20upx 0;
+}
+.min-cell-group .cell-item{
+ border-bottom: none;
+ min-height: 50upx;
+ padding: 0 26upx 0 0;
+}
+.icon{
+ width: 50upx;
+ height: 50upx;
+ /* #ifdef MP-ALIPAY */
+ background-size: 100% 100%;
+ /* #endif */
+}
+.swiper-grids .swiper-list{
+ white-space:nowrap;
+ width:100%;
+ min-height: 200upx;
+}
+.swiper-grids .img-grids-item{
+ float: none;
+ margin-right: 0;
+ width: 255upx;
+ margin-top: 0;
+}
+.swiper-grids .img-grids-item:last-child{
+ margin-right: 26upx;
+}
+.swiper-grids .img-grids-item-t{
+ width: 255upx;
+ height: 255upx;
+}
+.swiper-grids .goods-name{
+ white-space: normal;
+}
+.member-grid{
+ padding: 20upx 26upx;
+ /* overflow: hidden; */
+ width: 100%;
+ display: flex;
+}
+.member-item{
+ /* width: 20%; */
+ flex: 1;
+ /* float: left; */
+ /* display: inline-block; */
+ text-align: center;
+ position: relative;
+}
+/*会员中心图标按下事件*/
+.member-item:active{
+ transform: scale(.90);
+ transition: all .5s;
+ opacity: .8;
+}
+.member-item-icon{
+ width: 50upx;
+ height: 50upx;
+ display: block;
+ margin: 0 auto;
+}
+.member-item-text{
+ font-size: 24upx;
+ color: #666;
+ display: block;
+}
+.cart-list{
+
+}
+.cart-checkbox{
+ position: relative;
+ height: 100%;
+}
+.cart-checkbox-c{
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ left: 26upx;
+ transform: translateY(-50%);
+ z-index: 99;
+}
+.cart-list .img-list-item{
+ padding-left: 90upx;
+}
+.cart-list .little-right{
+ width: 468upx;
+}
+.cart-list .little-right .list-goods-name{
+ width: 300upx;
+}
+.uni-checkbox-input{
+ border-radius: 50% !important;
+ color: #fff !important;
+}
+uni-radio .uni-radio-input,uni-checkbox .uni-checkbox-input{
+ width: 36upx;
+ height: 36upx;
+}
+uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked,.uni-radio-input.uni-radio-input-checked{
+ background-color: #FF7159 !important;
+ border-color: #FF7159 !important;
+ width: 36upx;
+ height: 36upx;
+}
+uni-checkbox.checkboxNo .uni-checkbox-input{
+ background-color: #e1e1e1 !important;
+ border-color: #e1e1e1 !important;
+}
+uni-radio.radioNo .uni-radio-input{
+ background-color: #e1e1e1 !important;
+ border-color: #e1e1e1 !important;
+}
+uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked:before{
+ font-size: 36rpx;
+}
+.login-item-i-p{
+ color: #999;
+}
+.two-line{
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+}
+.badge{
+ display: inline-block;
+ position: absolute;
+ min-width:13px;
+ height:13px;
+ line-height:13px;
+ background-color:#FF7159;
+ color:#fff;
+ font-size:12px;
+ border-radius:50upx;
+ padding:0 3px;
+ z-index: 99;
+}
+.button-bottom{
+ background-color: #fff;
+ position: fixed;
+ bottom: 0;
+ height: 90upx;
+ width: 100%;
+ display: flex;
+ z-index: 66;
+ box-shadow: 0 0 10px #ccc;
+}
+.button-bottom .btn{
+ flex: 1;
+}
+.romotion-tip{
+ /* display: inline-block; */
+ overflow: hidden;
+}
+.romotion-tip-item{
+ display: inline-block;
+ float: left;
+ margin-right: 10upx;
+ margin-bottom: 4upx;
+ background-color: #FF7159;
+ color: #fff;
+ height: 34upx;
+ font-size: 24upx;
+ line-height: 34upx;
+ padding: 0 10upx;
+}
+.bg-gray{
+ background-color: #D0D0D0;
+}
+
+
+
+/* #ifdef MP */
+checkbox .wx-checkbox-input{
+ border-radius: 50%;
+ height: 36rpx;
+ width: 36rpx;
+ margin-top: -4rpx;
+ border: 1rpx solid #d1d1d1;
+
+}
+checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {
+ width: 36rpx;
+ height: 36rpx;
+ line-height: 36rpx;
+ border-radius: 50%;
+ text-align: center;
+ font-size: 28rpx;
+ color: #fff;
+ background: transparent;
+ transform: translate(-50%, -50%) scale(1);
+ -webkit-transform: translate(-50%, -50%) scale(1);
+ background-color: #FF7159;
+ border: 1rpx solid #FF7159;
+}
+radio .wx-radio-input{
+ border-radius: 50%;/* 圆角 */
+ width: 36rpx;
+ height: 36rpx;
+ margin-top: -4rpx;
+ border: 1rpx solid #d1d1d1;
+}
+/* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */
+radio .wx-radio-input.wx-radio-input-checked{
+ border: 1rpx solid #FF7159;
+ background: #FF7159;
+}
+/* 选中后的 对勾样式 (白色对勾 可根据UI需求自己修改) */
+radio .wx-radio-input.wx-radio-input-checked::before{
+ border-radius: 50%;/* 圆角 */
+ width: 36rpx; /* 选中后对勾大小,不要超过背景的尺寸 */
+ height: 36rpx; /* 选中后对勾大小,不要超过背景的尺寸 */
+ line-height: 36rpx;
+ text-align: center;
+ font-size:28rpx; /* 对勾大小 30rpx */
+ color:#fff; /* 对勾颜色 白色 */
+ background: transparent;
+ transform:translate(-50%, -50%) scale(1);
+ -webkit-transform:translate(-50%, -50%) scale(1);
+}
+
+/* #endif */
+
diff --git a/mallplusui-uniapp-app2/static/emptyCart.jpg b/mallplusui-uniapp-app2/static/emptyCart.jpg
new file mode 100644
index 0000000..be15652
Binary files /dev/null and b/mallplusui-uniapp-app2/static/emptyCart.jpg differ
diff --git a/mallplusui-uniapp-app2/static/errorImage.jpg b/mallplusui-uniapp-app2/static/errorImage.jpg
new file mode 100644
index 0000000..7a76067
Binary files /dev/null and b/mallplusui-uniapp-app2/static/errorImage.jpg differ
diff --git a/mallplusui-uniapp-app2/static/fujin.png b/mallplusui-uniapp-app2/static/fujin.png
new file mode 100644
index 0000000..efcd97c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/fujin.png differ
diff --git a/mallplusui-uniapp-app2/static/fujin_.png b/mallplusui-uniapp-app2/static/fujin_.png
new file mode 100644
index 0000000..ad31a46
Binary files /dev/null and b/mallplusui-uniapp-app2/static/fujin_.png differ
diff --git a/mallplusui-uniapp-app2/static/icon/ic_ar.png b/mallplusui-uniapp-app2/static/icon/ic_ar.png
new file mode 100644
index 0000000..33d6c48
Binary files /dev/null and b/mallplusui-uniapp-app2/static/icon/ic_ar.png differ
diff --git a/mallplusui-uniapp-app2/static/image/alipay.png b/mallplusui-uniapp-app2/static/image/alipay.png
new file mode 100644
index 0000000..8f7cf9f
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/alipay.png differ
diff --git a/mallplusui-uniapp-app2/static/image/balancepay.png b/mallplusui-uniapp-app2/static/image/balancepay.png
new file mode 100644
index 0000000..7dc59b6
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/balancepay.png differ
diff --git a/mallplusui-uniapp-app2/static/image/camera.png b/mallplusui-uniapp-app2/static/image/camera.png
new file mode 100644
index 0000000..db29758
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/camera.png differ
diff --git a/mallplusui-uniapp-app2/static/image/del.png b/mallplusui-uniapp-app2/static/image/del.png
new file mode 100644
index 0000000..382f39c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/del.png differ
diff --git a/mallplusui-uniapp-app2/static/image/ic-img.png b/mallplusui-uniapp-app2/static/image/ic-img.png
new file mode 100644
index 0000000..bb94276
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/ic-img.png differ
diff --git a/mallplusui-uniapp-app2/static/image/ic-link.png b/mallplusui-uniapp-app2/static/image/ic-link.png
new file mode 100644
index 0000000..b85d101
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/ic-link.png differ
diff --git a/mallplusui-uniapp-app2/static/image/invite-bg.png b/mallplusui-uniapp-app2/static/image/invite-bg.png
new file mode 100644
index 0000000..618e8bd
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/invite-bg.png differ
diff --git a/mallplusui-uniapp-app2/static/image/payment_balance.png b/mallplusui-uniapp-app2/static/image/payment_balance.png
new file mode 100644
index 0000000..c979e70
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/payment_balance.png differ
diff --git a/mallplusui-uniapp-app2/static/image/qq.png b/mallplusui-uniapp-app2/static/image/qq.png
new file mode 100644
index 0000000..fb4d8b3
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/qq.png differ
diff --git a/mallplusui-uniapp-app2/static/image/wechatpay.png b/mallplusui-uniapp-app2/static/image/wechatpay.png
new file mode 100644
index 0000000..ed8ca52
Binary files /dev/null and b/mallplusui-uniapp-app2/static/image/wechatpay.png differ
diff --git a/mallplusui-uniapp-app2/static/img/alipay.png b/mallplusui-uniapp-app2/static/img/alipay.png
new file mode 100644
index 0000000..bdfc354
Binary files /dev/null and b/mallplusui-uniapp-app2/static/img/alipay.png differ
diff --git a/mallplusui-uniapp-app2/static/iphone.png b/mallplusui-uniapp-app2/static/iphone.png
new file mode 100644
index 0000000..d746b74
Binary files /dev/null and b/mallplusui-uniapp-app2/static/iphone.png differ
diff --git a/mallplusui-uniapp-app2/static/location.png b/mallplusui-uniapp-app2/static/location.png
new file mode 100644
index 0000000..eeab8df
Binary files /dev/null and b/mallplusui-uniapp-app2/static/location.png differ
diff --git a/mallplusui-uniapp-app2/static/logo.png b/mallplusui-uniapp-app2/static/logo.png
new file mode 100644
index 0000000..5c572a4
Binary files /dev/null and b/mallplusui-uniapp-app2/static/logo.png differ
diff --git a/mallplusui-uniapp-app2/static/missing-face.png b/mallplusui-uniapp-app2/static/missing-face.png
new file mode 100644
index 0000000..c9be652
Binary files /dev/null and b/mallplusui-uniapp-app2/static/missing-face.png differ
diff --git a/mallplusui-uniapp-app2/static/position.png b/mallplusui-uniapp-app2/static/position.png
new file mode 100644
index 0000000..e160a4f
Binary files /dev/null and b/mallplusui-uniapp-app2/static/position.png differ
diff --git a/mallplusui-uniapp-app2/static/right-arrow.png b/mallplusui-uniapp-app2/static/right-arrow.png
new file mode 100644
index 0000000..aaabefa
Binary files /dev/null and b/mallplusui-uniapp-app2/static/right-arrow.png differ
diff --git a/mallplusui-uniapp-app2/static/search.png b/mallplusui-uniapp-app2/static/search.png
new file mode 100644
index 0000000..1d8e05a
Binary files /dev/null and b/mallplusui-uniapp-app2/static/search.png differ
diff --git a/mallplusui-uniapp-app2/static/search/attention.png b/mallplusui-uniapp-app2/static/search/attention.png
new file mode 100644
index 0000000..ca115dd
Binary files /dev/null and b/mallplusui-uniapp-app2/static/search/attention.png differ
diff --git a/mallplusui-uniapp-app2/static/search/attention_forbid.png b/mallplusui-uniapp-app2/static/search/attention_forbid.png
new file mode 100644
index 0000000..ba967da
Binary files /dev/null and b/mallplusui-uniapp-app2/static/search/attention_forbid.png differ
diff --git a/mallplusui-uniapp-app2/static/search/back.png b/mallplusui-uniapp-app2/static/search/back.png
new file mode 100644
index 0000000..47cdd81
Binary files /dev/null and b/mallplusui-uniapp-app2/static/search/back.png differ
diff --git a/mallplusui-uniapp-app2/static/search/delete.png b/mallplusui-uniapp-app2/static/search/delete.png
new file mode 100644
index 0000000..c812557
Binary files /dev/null and b/mallplusui-uniapp-app2/static/search/delete.png differ
diff --git a/mallplusui-uniapp-app2/static/select.png b/mallplusui-uniapp-app2/static/select.png
new file mode 100644
index 0000000..fff0c32
Binary files /dev/null and b/mallplusui-uniapp-app2/static/select.png differ
diff --git a/mallplusui-uniapp-app2/static/selected.png b/mallplusui-uniapp-app2/static/selected.png
new file mode 100644
index 0000000..1719f1b
Binary files /dev/null and b/mallplusui-uniapp-app2/static/selected.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-cart-current.png b/mallplusui-uniapp-app2/static/tab-cart-current.png
new file mode 100644
index 0000000..c55bc46
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-cart-current.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-cart.png b/mallplusui-uniapp-app2/static/tab-cart.png
new file mode 100644
index 0000000..6089c09
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-cart.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-cate-current.png b/mallplusui-uniapp-app2/static/tab-cate-current.png
new file mode 100644
index 0000000..c60ede5
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-cate-current.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-cate.png b/mallplusui-uniapp-app2/static/tab-cate.png
new file mode 100644
index 0000000..4913d50
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-cate.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-home-current.png b/mallplusui-uniapp-app2/static/tab-home-current.png
new file mode 100644
index 0000000..4b9c7a6
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-home-current.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-home.png b/mallplusui-uniapp-app2/static/tab-home.png
new file mode 100644
index 0000000..69964d3
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-home.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-my-current.png b/mallplusui-uniapp-app2/static/tab-my-current.png
new file mode 100644
index 0000000..2dd0974
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-my-current.png differ
diff --git a/mallplusui-uniapp-app2/static/tab-my.png b/mallplusui-uniapp-app2/static/tab-my.png
new file mode 100644
index 0000000..e6b4494
Binary files /dev/null and b/mallplusui-uniapp-app2/static/tab-my.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/ad1.jpg b/mallplusui-uniapp-app2/static/temp/ad1.jpg
new file mode 100644
index 0000000..d03fa35
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/ad1.jpg differ
diff --git a/mallplusui-uniapp-app2/static/temp/antFill-gift.png b/mallplusui-uniapp-app2/static/temp/antFill-gift.png
new file mode 100644
index 0000000..dc0fde0
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/antFill-gift.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/antFill-home.png b/mallplusui-uniapp-app2/static/temp/antFill-home.png
new file mode 100644
index 0000000..269907c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/antFill-home.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c1.png b/mallplusui-uniapp-app2/static/temp/c1.png
new file mode 100644
index 0000000..0ca677f
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c1.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c3.png b/mallplusui-uniapp-app2/static/temp/c3.png
new file mode 100644
index 0000000..c72f8a3
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c3.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c4.png b/mallplusui-uniapp-app2/static/temp/c4.png
new file mode 100644
index 0000000..e72766c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c4.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c5.png b/mallplusui-uniapp-app2/static/temp/c5.png
new file mode 100644
index 0000000..5ea4377
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c5.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c6.png b/mallplusui-uniapp-app2/static/temp/c6.png
new file mode 100644
index 0000000..23d6bc9
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c6.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c7.png b/mallplusui-uniapp-app2/static/temp/c7.png
new file mode 100644
index 0000000..1179641
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c7.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/c8.png b/mallplusui-uniapp-app2/static/temp/c8.png
new file mode 100644
index 0000000..43b3839
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/c8.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fabfa-dropbox.png b/mallplusui-uniapp-app2/static/temp/fabfa-dropbox.png
new file mode 100644
index 0000000..18ad1b2
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fabfa-dropbox.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfa-archive.png b/mallplusui-uniapp-app2/static/temp/fasfa-archive.png
new file mode 100644
index 0000000..12fb8ce
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfa-archive.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfa-history.png b/mallplusui-uniapp-app2/static/temp/fasfa-history.png
new file mode 100644
index 0000000..c59c677
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfa-history.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfa-shopping.png b/mallplusui-uniapp-app2/static/temp/fasfa-shopping.png
new file mode 100644
index 0000000..f852f39
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfa-shopping.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfa-sitemap.png b/mallplusui-uniapp-app2/static/temp/fasfa-sitemap.png
new file mode 100644
index 0000000..966a4ed
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfa-sitemap.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfa-street.png b/mallplusui-uniapp-app2/static/temp/fasfa-street.png
new file mode 100644
index 0000000..f1f701c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfa-street.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfa-truck.png b/mallplusui-uniapp-app2/static/temp/fasfa-truck.png
new file mode 100644
index 0000000..82aea48
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfa-truck.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/fasfausers.png b/mallplusui-uniapp-app2/static/temp/fasfausers.png
new file mode 100644
index 0000000..d04126c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/fasfausers.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/h1.png b/mallplusui-uniapp-app2/static/temp/h1.png
new file mode 100644
index 0000000..caa6d19
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/h1.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/nav1.png b/mallplusui-uniapp-app2/static/temp/nav1.png
new file mode 100644
index 0000000..2d9c95e
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/nav1.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/secskill-img.jpg b/mallplusui-uniapp-app2/static/temp/secskill-img.jpg
new file mode 100644
index 0000000..ea21ae9
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/secskill-img.jpg differ
diff --git a/mallplusui-uniapp-app2/static/temp/share_moment.png b/mallplusui-uniapp-app2/static/temp/share_moment.png
new file mode 100644
index 0000000..6fbb733
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/share_moment.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/share_qq.png b/mallplusui-uniapp-app2/static/temp/share_qq.png
new file mode 100644
index 0000000..5cedd48
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/share_qq.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/share_qqzone.png b/mallplusui-uniapp-app2/static/temp/share_qqzone.png
new file mode 100644
index 0000000..ec4115d
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/share_qqzone.png differ
diff --git a/mallplusui-uniapp-app2/static/temp/share_wechat.png b/mallplusui-uniapp-app2/static/temp/share_wechat.png
new file mode 100644
index 0000000..f88a7a7
Binary files /dev/null and b/mallplusui-uniapp-app2/static/temp/share_wechat.png differ
diff --git a/mallplusui-uniapp-app2/static/user-bg.jpg b/mallplusui-uniapp-app2/static/user-bg.jpg
new file mode 100644
index 0000000..af8c49c
Binary files /dev/null and b/mallplusui-uniapp-app2/static/user-bg.jpg differ
diff --git a/mallplusui-uniapp-app2/static/vip-card-bg.png b/mallplusui-uniapp-app2/static/vip-card-bg.png
new file mode 100644
index 0000000..6840371
Binary files /dev/null and b/mallplusui-uniapp-app2/static/vip-card-bg.png differ
diff --git a/mallplusui-uniapp-app2/static/youhuiquan.png b/mallplusui-uniapp-app2/static/youhuiquan.png
new file mode 100644
index 0000000..0a9c80b
Binary files /dev/null and b/mallplusui-uniapp-app2/static/youhuiquan.png differ
diff --git a/mallplusui-uniapp-app2/static/yticon.ttf b/mallplusui-uniapp-app2/static/yticon.ttf
new file mode 100644
index 0000000..966501e
Binary files /dev/null and b/mallplusui-uniapp-app2/static/yticon.ttf differ
diff --git a/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_back_black.png b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_back_black.png
new file mode 100644
index 0000000..d096753
Binary files /dev/null and b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_back_black.png differ
diff --git a/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_back_white.png b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_back_white.png
new file mode 100644
index 0000000..beedbed
Binary files /dev/null and b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_back_white.png differ
diff --git a/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_home_black.png b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_home_black.png
new file mode 100644
index 0000000..cfc4853
Binary files /dev/null and b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_home_black.png differ
diff --git a/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_home_white.png b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_home_white.png
new file mode 100644
index 0000000..6986a30
Binary files /dev/null and b/mallplusui-uniapp-app2/static/zhouWei-navBar/icon_home_white.png differ
diff --git a/mallplusui-uniapp-app2/store/index.js b/mallplusui-uniapp-app2/store/index.js
new file mode 100644
index 0000000..09ce84e
--- /dev/null
+++ b/mallplusui-uniapp-app2/store/index.js
@@ -0,0 +1,38 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+ state: {
+ hasLogin: false,
+ userInfo:''
+ },
+ mutations: {
+ login(state, provider) {
+ console.log(provider);
+ if (provider && provider!=undefined){
+ state.hasLogin = true;
+ uni.setStorage({//缓存用户登陆状态
+ key: 'userInfo',
+ data: provider.userInfo
+ })
+ state.userInfo = provider;
+ }
+
+
+ },
+ logout(state) {
+ state.hasLogin = false;
+ state.userInfo = '';
+ uni.removeStorage({
+ key: 'userInfo'
+ })
+ }
+ },
+ actions: {
+
+ }
+})
+
+export default store
diff --git a/mallplusui-uniapp-app2/test.json b/mallplusui-uniapp-app2/test.json
new file mode 100644
index 0000000..bb96e45
--- /dev/null
+++ b/mallplusui-uniapp-app2/test.json
@@ -0,0 +1 @@
+1.小程序订单列表下拉问题
\ No newline at end of file
diff --git a/mallplusui-uniapp-app2/uni.scss b/mallplusui-uniapp-app2/uni.scss
new file mode 100644
index 0000000..89632af
--- /dev/null
+++ b/mallplusui-uniapp-app2/uni.scss
@@ -0,0 +1,112 @@
+
+/* 页面左右间距 */
+$page-row-spacing: 30upx;
+$page-color-base: #f8f8f8;
+$page-color-light: #f8f6fc;
+$base-color: #fa436a;
+
+/* 文字尺寸 */
+$font-sm: 24upx;
+$font-base: 28upx;
+$font-lg: 32upx;
+/*文字颜色*/
+$font-color-dark: #303133;
+$font-color-base: #606266;
+$font-color-light: #909399;
+$font-color-disabled: #C0C4CC;
+$font-color-spec: #4399fc;
+$font-color-gray:#999999;
+$font-color-red:#dd0037;
+$font-color-ccc:#cccccc;
+$font-color-999:#999999;
+$font-color-666:#666666;
+$font-color-333:#333333;
+$font-color-000:#000000;
+/* 边框颜色 */
+$border-color-dark: #DCDFE6;
+$border-color-base: #E4E7ED;
+$border-color-light: #EBEEF5;
+/* 背景颜色 */
+$image-bg-color:#eeeeee;
+$bgcolor_white:#ffffff;
+$all_bgcolor:#f4f4f4;
+$vui_bgcolor:#8c0027;
+/* 图片加载中颜色 */
+$image-bg-color: #eee;
+/* 行为相关颜色 */
+$uni-color-primary:#fa436a;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+//自定义变量
+$theme-color: #28b8a1;
+$bg-grey: #f4f4f4;
+$bd-color: #f0f0f0;
+$color-light: #5e5e5e;
+$g2: #eeeeee;
+$g5: #9e9e9e;
+$fz12: 24upx;
+$fz16: 32upx;
+$fz18: 36upx;
+$fz20: 40upx;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:24upx;
+$uni-font-size-base:28upx;
+$uni-font-size-lg:32upx;
+
+/* 图片尺寸 */
+$uni-img-size-sm:40upx;
+$uni-img-size-base:52upx;
+$uni-img-size-lg:80upx;
+
+/* Border Radius */
+$uni-border-radius-sm: 4upx;
+$uni-border-radius-base: 6upx;
+$uni-border-radius-lg: 12upx;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20upx;
+$uni-spacing-row-lg: 30upx;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 8upx;
+$uni-spacing-col-base: 16upx;
+$uni-spacing-col-lg: 24upx;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40upx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36upx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30upx;
+
+
+
+
+