mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2026-02-05 05:19:49 +08:00
Merge branch 'develop' into 'master'
20220927日常更新 See merge request jianweie/coreshoppro!3
This commit is contained in:
210
CoreCms.Net.Uni-App/CoreShop/common/utils/formatter.js
Normal file
210
CoreCms.Net.Uni-App/CoreShop/common/utils/formatter.js
Normal file
@@ -0,0 +1,210 @@
|
||||
/**
|
||||
* 格式化器
|
||||
* @Author: wenjm
|
||||
* @Date: 2018-02-24 23:28:28
|
||||
* @Last Modified by: wenjm
|
||||
* @Last Modified time: 2018-05-15 14:35:01
|
||||
*/
|
||||
export default {
|
||||
|
||||
formatDateTime(value) {
|
||||
return this.formatDate(value, 'yyyy-MM-dd hh:mm:ss');
|
||||
},
|
||||
|
||||
/**
|
||||
* 格式化时间显示方式
|
||||
* 用法:format="yyyy-MM-dd hh:mm:ss";
|
||||
*/
|
||||
formatDate(value, format = 'yyyy-MM-dd') {
|
||||
if (!value) return "";
|
||||
if (!format) format = "yyyy-MM-dd";
|
||||
let d = value;
|
||||
if (typeof value === 'string') {
|
||||
if (value.indexOf("/Date(") > -1)
|
||||
d = new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
|
||||
else
|
||||
d = new Date(Date.parse(value.replace(/-/g, "/").replace("T", " ").split(".")[0])); //.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
|
||||
}
|
||||
let o = {
|
||||
"M+": d.getMonth() + 1, //month
|
||||
"d+": d.getDate(), //day
|
||||
"h+": d.getHours(), //hour
|
||||
"m+": d.getMinutes(), //minute
|
||||
"s+": d.getSeconds(), //second
|
||||
"q+": Math.floor((d.getMonth() + 3) / 3), //quarter
|
||||
"S": d.getMilliseconds() //millisecond
|
||||
};
|
||||
if (/(y+)/.test(format)) {
|
||||
format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
}
|
||||
for (let k in o) {
|
||||
if (new RegExp("(" + k + ")").test(format)) {
|
||||
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
|
||||
}
|
||||
}
|
||||
return format;
|
||||
},
|
||||
|
||||
formatTime(t) {
|
||||
if (isNaN(t) || t == 0) { return 0; }
|
||||
|
||||
let n = 31536000000;
|
||||
if (t >= n) {
|
||||
return this.formatNumber(t / n, '#,##0.##') + ' 年';
|
||||
}
|
||||
|
||||
n = 86400000;
|
||||
if (t >= n) {
|
||||
return this.formatNumber(t / n, '#,##0.##') + ' 日';
|
||||
}
|
||||
|
||||
n = 3600000;
|
||||
if (t >= n) {
|
||||
return this.formatNumber(t / n, '#,##0.##') + ' 小时';
|
||||
}
|
||||
|
||||
n = 60000;
|
||||
if (t >= n) {
|
||||
return this.formatNumber(t / n, '#,##0.##') + ' 分';
|
||||
}
|
||||
|
||||
n = 1000;
|
||||
if (t >= n) {
|
||||
return this.formatNumber(t / n, '#,##0.##') + ' 秒';
|
||||
}
|
||||
|
||||
return this.formatNumber(t, '#,##0.##') + ' 毫秒';
|
||||
},
|
||||
|
||||
/**
|
||||
* 格式化数字显示方式
|
||||
* 用法
|
||||
* formatNumber(12345.999,'#,##0.00');
|
||||
* formatNumber(12345.999,'#,##0.##');
|
||||
* formatNumber(123,'000000');
|
||||
*/
|
||||
formatNumber(value, pattern) {
|
||||
if (value == null)
|
||||
return value;
|
||||
let strarr = value ? value.toString().split('.') : ['0'];
|
||||
let fmtarr = pattern ? pattern.split('.') : [''];
|
||||
let retstr = '';
|
||||
// 整数部分
|
||||
let str = strarr[0];
|
||||
let fmt = fmtarr[0];
|
||||
let i = str.length - 1;
|
||||
let comma = false;
|
||||
for (let f = fmt.length - 1; f >= 0; f--) {
|
||||
switch (fmt.substr(f, 1)) {
|
||||
case '#':
|
||||
if (i >= 0) retstr = str.substr(i--, 1) + retstr;
|
||||
break;
|
||||
case '0':
|
||||
if (i >= 0) retstr = str.substr(i--, 1) + retstr;
|
||||
else retstr = '0' + retstr;
|
||||
break;
|
||||
case ',':
|
||||
comma = true;
|
||||
retstr = ',' + retstr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= 0) {
|
||||
if (comma) {
|
||||
let l = str.length;
|
||||
for (; i >= 0; i--) {
|
||||
retstr = str.substr(i, 1) + retstr;
|
||||
if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr;
|
||||
}
|
||||
} else retstr = str.substr(0, i + 1) + retstr;
|
||||
}
|
||||
retstr = retstr + '.';
|
||||
// 处理小数部分
|
||||
str = strarr.length > 1 ? strarr[1] : '';
|
||||
fmt = fmtarr.length > 1 ? fmtarr[1] : '';
|
||||
i = 0;
|
||||
for (let f = 0; f < fmt.length; f++) {
|
||||
switch (fmt.substr(f, 1)) {
|
||||
case '#':
|
||||
if (i < str.length) retstr += str.substr(i++, 1);
|
||||
break;
|
||||
case '0':
|
||||
if (i < str.length) retstr += str.substr(i++, 1);
|
||||
else retstr += '0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
return retstr.replace(/^,+/, '').replace(/\.$/, '');
|
||||
},
|
||||
|
||||
//格式化金额
|
||||
formatMoney(value, pattern) {
|
||||
if (!value || value == 0)
|
||||
return 0;
|
||||
let sign = value < 0 ? '-' : '';
|
||||
return sign + this.formatNumber(Math.abs(value), pattern || '#,##0.00');
|
||||
},
|
||||
|
||||
formatMoneyCn(value) {
|
||||
return '¥' + this.formatMoney(value);
|
||||
},
|
||||
|
||||
formatWeek(value) {
|
||||
let week = new Array("日", "一", "二", "三", "四", "五", "六");
|
||||
let datetimeReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
|
||||
if (datetimeReg.test(value)) {
|
||||
value = value.replace(/-/g, "/");
|
||||
}
|
||||
let day = new Date(value).getDay();
|
||||
|
||||
return "星期" + week[day];
|
||||
},
|
||||
|
||||
formatMoneyAuto(value, pattern = '#,##0.00') {
|
||||
let unit = "元";
|
||||
if (value) {
|
||||
let unitNum = {
|
||||
// '千': 1000.00,
|
||||
'万': 10000.00,
|
||||
'千万': 10000000.00,
|
||||
'亿': 100000000.00,
|
||||
'百亿': 10000000000.00
|
||||
};
|
||||
let unitCount = {
|
||||
// "4": '千',
|
||||
"5": '万',
|
||||
"8": '千万',
|
||||
"9": '亿',
|
||||
"11": '百亿'
|
||||
};
|
||||
let count = 0;
|
||||
let money = value;
|
||||
|
||||
while (money >= 1) {
|
||||
money = money / 10;
|
||||
count++;
|
||||
}
|
||||
let tmp = unitCount[count + ""];
|
||||
while (count >= 4 && tmp === undefined) {
|
||||
tmp = unitCount[(--count) + ""];
|
||||
}
|
||||
unit = tmp === undefined ? unit : tmp;
|
||||
value = (count >= 4) ? value / (unitNum[unit]) : value;
|
||||
}
|
||||
return this.formatMoney(value, pattern) + unit || "";
|
||||
},
|
||||
|
||||
formatFileSize(value) {
|
||||
if (null == value || value == '') {
|
||||
return "0 Bytes";
|
||||
}
|
||||
var unitArr = new Array("Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
|
||||
var index = 0;
|
||||
var srcsize = parseFloat(value);
|
||||
index = Math.floor(Math.log(srcsize) / Math.log(1024));
|
||||
var size = srcsize / Math.pow(1024, index);
|
||||
size = size.toFixed(2);
|
||||
return size + unitArr[index];
|
||||
}
|
||||
|
||||
}
|
||||
51
CoreCms.Net.Uni-App/CoreShop/common/utils/formatter.md
Normal file
51
CoreCms.Net.Uni-App/CoreShop/common/utils/formatter.md
Normal file
@@ -0,0 +1,51 @@
|
||||
格式化器:
|
||||
支持日期格式化、格式化数字显示、格式化金额、格式化星期、小写金额转大写、文件格式化
|
||||
|
||||
使用:
|
||||
日期格式使用:
|
||||
2018-02-24 23:28:28 :
|
||||
var date=formatter.formatDateTime(new Date());
|
||||
2018-02-24
|
||||
var date=formatter.formatDate(new Date(),"yyyy-MM-dd");
|
||||
2018/02/24
|
||||
var date=formatter.formatDate(new Date(),"yyyy/MM/dd");
|
||||
2018-02-24 23:28
|
||||
var date=formatter.formatDate(new Date(),"yyyy-MM-dd HH:mm");
|
||||
|
||||
格式化数字显示方式:
|
||||
123,45.999
|
||||
var money=formatter.formatNumber(12345.999,'#,##0.00');
|
||||
星期五
|
||||
var week=formatter.formatWeek("五");
|
||||
小写转大写
|
||||
一千二百三十四
|
||||
var chinese=formatter.formatMoneyAuto("1234");
|
||||
文件大小转化:
|
||||
1Kb
|
||||
var fileSize=formatter.formatFileSize("1024");
|
||||
|
||||
1Mb
|
||||
var fileSize=formatter.formatFileSize("1024*1024");
|
||||
|
||||
|
||||
案例:
|
||||
<script>
|
||||
import formatter from '@/common/utils/formatter.js';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
appcache: '0Mb'
|
||||
};
|
||||
},
|
||||
onLoad(e) {
|
||||
var self = this;
|
||||
// #ifdef APP-PLUS
|
||||
// 获取当前应用缓存大小并转化为MB、KB、GB等格式
|
||||
plus.cache.calculate(function(size) {
|
||||
console.log(size);
|
||||
self.appcache = formatter.formatFileSize(size);
|
||||
});
|
||||
// #endif
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -144,7 +144,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import formatter from '@/common/utils/formatter.js';
|
||||
export default {
|
||||
|
||||
data() {
|
||||
@@ -209,7 +209,8 @@
|
||||
this.cart.forEach(function (item, index, input) {
|
||||
goodsTotalMoney += item.price * item.nums
|
||||
})
|
||||
this.totalprice = this.$common.formatMoney(goodsTotalMoney, 2, '')
|
||||
//this.totalprice = this.$common.formatMoney(goodsTotalMoney, 2, '')
|
||||
this.totalprice = parseFloat(formatter.formatMoney(goodsTotalMoney))
|
||||
},
|
||||
toNumberChange: function (e) {
|
||||
console.log(e);
|
||||
@@ -299,16 +300,18 @@
|
||||
this.$u.toast('请先选择商品')
|
||||
return true
|
||||
}
|
||||
if (parseFloat(this.totalprice) < parseFloat(this.model.startBuyPrice)) {
|
||||
var totalprice = parseFloat(formatter.formatMoney(this.totalprice));
|
||||
var startBuyPrice = parseFloat(formatter.formatMoney(this.model.startBuyPrice));
|
||||
if (totalprice < startBuyPrice) {
|
||||
this.$u.toast('最小购买价格为' + this.model.startBuyPrice + '元,请增加购买产品')
|
||||
return true
|
||||
}
|
||||
let userToken = this.$db.get('userToken');
|
||||
let obj = {
|
||||
cart: this.cart,
|
||||
id: this.id,
|
||||
token: userToken
|
||||
}
|
||||
//let userToken = this.$db.get('userToken');
|
||||
//let obj = {
|
||||
// cart: this.cart,
|
||||
// id: this.id,
|
||||
// token: userToken
|
||||
//}
|
||||
this.submitStatus = true;
|
||||
let newData = '';
|
||||
for (var i = 0; i < this.cart.length; i++) {
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
}
|
||||
|
||||
|
||||
.cart-box { position: absolute; bottom: 30rpx; left: 30rpx; right: 30rpx; height: 96rpx; border-radius: 48rpx; box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2); background-color: #FFFFFF; display: flex; align-items: center; justify-content: space-between; z-index: 10;
|
||||
.cart-box { position: fixed; bottom: 30rpx; left: 30rpx; right: 30rpx; height: 96rpx; border-radius: 48rpx; box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2); background-color: #FFFFFF; display: flex; align-items: center; justify-content: space-between; z-index: 10;
|
||||
.cart-img { width: 96rpx; height: 96rpx; position: relative; margin-top: -48rpx; }
|
||||
.pay-btn { height: 100%; padding: 0 30rpx; color: #FFFFFF; border-radius: 0 50rpx 50rpx 0; display: flex; align-items: center; font-size: 28rpx; }
|
||||
.mark { padding-left: 46rpx; margin-right: 30rpx; position: relative;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="content">
|
||||
<scroll-view class="menus" :scroll-into-view="menuScrollIntoView" scroll-with-animation scroll-y>
|
||||
<scroll-view class="menus" scroll-with-animation scroll-y :scroll-top="headerH" :style="'height:' + scorllH+'px;'">
|
||||
<view class="wrapper">
|
||||
<view class="menu" :id="`menu-${item.id}`" :class="{'current': item.id === currentCateId}" v-for="(item, index) in menus"
|
||||
:key="index" @tap="handleMenuTap(item.id)">
|
||||
@@ -50,14 +50,11 @@
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<!-- goods list begin -->
|
||||
<scroll-view class="goods" scroll-with-animation scroll-y :scroll-top="cateScrollTop" @scroll="handleGoodsScroll">
|
||||
<scroll-view class="goods" scroll-with-animation scroll-y :scroll-top="headerH" :style="'height:' + scorllH+'px;'">
|
||||
<view class="wrapper">
|
||||
<view class="list">
|
||||
<!-- category begin -->
|
||||
<view class="category" v-for="(good, key) in goodsList" :key="key" :id="`cate-${item.id}`">
|
||||
<view class="items">
|
||||
<!-- 商品 begin -->
|
||||
<view class="good">
|
||||
<image :src="good.images" class="image" @tap="goGoodsDetail(item.id)"></image>
|
||||
<view class="right">
|
||||
@@ -74,10 +71,8 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 商品 end -->
|
||||
</view>
|
||||
</view>
|
||||
<!-- category end -->
|
||||
<u-loadmore :status="status" :icon-type="iconType" :load-text="loadText" margin-top="20" margin-bottom="20" />
|
||||
</view>
|
||||
</view>
|
||||
@@ -85,16 +80,7 @@
|
||||
</scroll-view>
|
||||
<!-- goods list end -->
|
||||
</view>
|
||||
<!-- 购物车栏 begin -->
|
||||
<view class="cart-box">
|
||||
<view class="mark">
|
||||
<image src="https://files.cdn.coreshop.cn/static/template/diancan/images/cart.png" class="cart-img"></image>
|
||||
<view class="tag">{{cartNums}}</view>
|
||||
</view>
|
||||
<view class="price">¥{{cartMoney}}</view>
|
||||
<button type="primary" class="pay-btn" @tap="redirectCart" :disabled="cartNums<=0">去结算</button>
|
||||
</view>
|
||||
<!-- 购物车栏 end -->
|
||||
|
||||
</view>
|
||||
|
||||
<vk-data-goods-sku-popup ref="skuPopup"
|
||||
@@ -107,6 +93,17 @@
|
||||
@close="onCloseSkuPopup"
|
||||
@add-cart="addCart"
|
||||
@buy-now="buyNow"></vk-data-goods-sku-popup>
|
||||
|
||||
<!-- 购物车栏 begin -->
|
||||
<view class="cart-box">
|
||||
<view class="mark">
|
||||
<image src="https://files.cdn.coreshop.cn/static/template/diancan/images/cart.png" class="cart-img"></image>
|
||||
<view class="tag">{{cartNums}}</view>
|
||||
</view>
|
||||
<view class="price">¥{{cartMoney}}</view>
|
||||
<button type="primary" class="pay-btn" @tap="redirectCart" :disabled="cartNums<=0">去结算</button>
|
||||
</view>
|
||||
<!-- 购物车栏 end -->
|
||||
<!-- 登录提示 -->
|
||||
<coreshop-login-modal></coreshop-login-modal>
|
||||
</view>
|
||||
@@ -123,7 +120,6 @@
|
||||
menuScrollIntoView: '',
|
||||
good: {},
|
||||
currentCateId: 0,//默认分类
|
||||
scrollTop: 0,
|
||||
loadStatus: 'loadmore',
|
||||
loadIconType: 'flower',
|
||||
loadText: {
|
||||
@@ -141,6 +137,9 @@
|
||||
skuMode: 1,
|
||||
// 后端返回的商品信息
|
||||
goodsSkuInfo: {},
|
||||
|
||||
headerH: 0,
|
||||
scorllH: 0, //滚动区域全屏
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -166,6 +165,20 @@
|
||||
},
|
||||
},
|
||||
onShow() {
|
||||
uni.getSystemInfo({
|
||||
success: (e) => {
|
||||
// #ifndef MP
|
||||
this.StatusBar = e.statusBarHeight;
|
||||
if (e.platform == 'android') {
|
||||
this.headerH = e.statusBarHeight + 50;
|
||||
} else {
|
||||
this.headerH = e.statusBarHeight + 45;
|
||||
};
|
||||
// #endif
|
||||
this.scorllH = e.windowHeight - e.statusBarHeight - 180;
|
||||
}
|
||||
})
|
||||
|
||||
this.categories();
|
||||
// 获取购物车数量
|
||||
this.getCartNums();
|
||||
@@ -315,7 +328,6 @@
|
||||
this.page = 1;
|
||||
this.goodsList = [];
|
||||
this.getGoods();
|
||||
//this.$nextTick(() => this.cateScrollTop = this.goods.find(item => item.id == id).top)
|
||||
},
|
||||
categories() {
|
||||
this.$u.api.categories().then(res => {
|
||||
|
||||
@@ -319,15 +319,16 @@ template {
|
||||
margin-top: 5px;
|
||||
}
|
||||
.urlBox {
|
||||
width: 300px;
|
||||
width: 800px;
|
||||
border: 1px solid #e9e9e9;
|
||||
box-shadow: 0 3px 10px #dcdcdc;
|
||||
position: relative;
|
||||
padding: 10px;
|
||||
}
|
||||
.urlBox p {
|
||||
font-size: 12px;
|
||||
font-size: 13px;
|
||||
word-break: break-all;
|
||||
line-height: 30px;
|
||||
}
|
||||
.recycle {
|
||||
position: absolute;
|
||||
@@ -644,8 +645,9 @@ template {
|
||||
}
|
||||
.savePageBtn {
|
||||
padding: 10px 13px;
|
||||
text-align: right;
|
||||
border-top: 1px dotted #ddd;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.lay-special {
|
||||
height: 30px;
|
||||
|
||||
@@ -76,8 +76,8 @@ template { display: none; }
|
||||
}
|
||||
}
|
||||
}
|
||||
.urlBox { width: 300px; border: 1px solid #e9e9e9; box-shadow: 0 3px 10px #dcdcdc; position: relative; padding: 10px;
|
||||
p { font-size: 12px; word-break: break-all; }
|
||||
.urlBox { width: 800px; border: 1px solid #e9e9e9; box-shadow: 0 3px 10px #dcdcdc; position: relative; padding: 10px;
|
||||
p { font-size: 13px; word-break: break-all; line-height: 30px; }
|
||||
}
|
||||
.recycle { position: absolute; top: 43px; right: 26px;
|
||||
ul { position: relative;
|
||||
@@ -170,7 +170,7 @@ template { display: none; }
|
||||
}
|
||||
}
|
||||
}
|
||||
.savePageBtn { padding: 10px 13px; text-align: right; border-top: 1px dotted #ddd; }
|
||||
.savePageBtn { padding: 10px 13px; border-top: 1px dotted #ddd; display: flex; justify-content: space-between; }
|
||||
.lay-special { height: 30px; align-items: center;
|
||||
.special-left { width: 70px; padding: 5px 10px;
|
||||
img { width: 100%; }
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1385,12 +1385,34 @@ new Vue({
|
||||
},
|
||||
mounted() {
|
||||
var that = this;
|
||||
layui.use(['admin', 'form', 'coreHelper'],
|
||||
layui.use(['admin', 'form', 'coreHelper', 'layer', 'util'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, layer = layui.layer
|
||||
, util = layui.util
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
//处理属性 为 lay-active 的所有元素事件
|
||||
util.event('lay-active', {
|
||||
commonUrl: function (othis) {
|
||||
layer.open({
|
||||
type: 1,
|
||||
shade: 0,
|
||||
shadeClose: true,
|
||||
closeBtn: 2,
|
||||
skin: 'demo-class',
|
||||
title: '常用前端地址',
|
||||
//area: ['500px', '80%'],
|
||||
cancel: function () {
|
||||
$('#urlBox').hide();
|
||||
},
|
||||
content: $('#urlBox')
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(LAY-app-CoreCmsPages-EditForm-submit)',
|
||||
function (data) {
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="savePageBtn">
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-active="commonUrl">常用前端地址</button>
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsPages-EditForm-submit" id="LAY-app-CoreCmsPages-EditForm-submit">保存页面</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -124,36 +125,40 @@
|
||||
<div class="edit-body">
|
||||
<layout-config ref="config"></layout-config>
|
||||
</div>
|
||||
<div class="urlBox">
|
||||
<h4>常用前端地址:</h4>
|
||||
<p>前端首页:/pages/index/default/default</p>
|
||||
<p>购 物 车:/pages/index/cart/cart</p>
|
||||
<p>会员中心:pages/index/member/member</p>
|
||||
<p>搜索中心:/pages/search/search</p>
|
||||
<p>分类首页:/pages/category/index/index</p>
|
||||
<p>分类列表:/pages/category/list/list?id=分类序列</p>
|
||||
<p>商品详情:/pages/goods/goodDetails/goodDetails?id=商品序列</p>
|
||||
<p>门店列表:/pages/storeMap/storeMap</p>
|
||||
<p>文章列表:/pages/article/list/list</p>
|
||||
<p>文章详情:/pages/article/details/details?id=文章序列</p>
|
||||
<p>万能表单:/pages/form/details/details?id=表单序列</p>
|
||||
<p>服务商品列表:/pages/serviceGoods/index/index</p>
|
||||
<p>服务商品详情:/pages/serviceGoods/details/details?id=商品序列</p>
|
||||
<p>优惠券列表:/pages/coupon/coupon</p>
|
||||
<p>打赏:/pages/reward/reward</p>
|
||||
<p>拼团列表:/pages/activity/pinTuan/list/list</p>
|
||||
<p>拼团详情:/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails?id=拼团序列</p>
|
||||
<p>秒杀列表:/pages/activity/seckill/list/list</p>
|
||||
<p>秒杀详情:/pages/activity/seckill/seckillDetails/seckillDetails?id=秒杀序列</p>
|
||||
<p>团购列表:/pages/activity/groupBuying/list/list</p>
|
||||
<p>团购详情:/pages/activity/groupBuying/groupBuyingDetails/groupBuyingDetails?id=团购序列</p>
|
||||
<p>接龙列表:/pages/activity/solitaire/list/list</p>
|
||||
<p>接龙详情:/pages/activity/solitaire/solitaireDetails/solitaireDetails?id=接龙序列</p>
|
||||
<p>日历签到:/pages/activity/checkIn/checkIn/checkIn</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<div class="urlBox" id="urlBox" style="display: none;">
|
||||
<h4>常用前端地址:</h4>
|
||||
<p>前端首页:/pages/index/default/default</p>
|
||||
<p>购 物 车:/pages/index/cart/cart</p>
|
||||
<p>会员中心:pages/index/member/member</p>
|
||||
<p>搜索中心:/pages/search/search</p>
|
||||
<p>分类首页:/pages/category/index/index</p>
|
||||
<p>分类列表:/pages/category/list/list?id=分类序列</p>
|
||||
<p>商品详情:/pages/goods/goodDetails/goodDetails?id=商品序列</p>
|
||||
<p>门店列表:/pages/storeMap/storeMap</p>
|
||||
<p>文章列表:/pages/article/list/list</p>
|
||||
<p>文章详情:/pages/article/details/details?id=文章序列</p>
|
||||
<p>万能表单:/pages/form/details/details?id=表单序列</p>
|
||||
<p>服务商品列表:/pages/serviceGoods/index/index</p>
|
||||
<p>服务商品详情:/pages/serviceGoods/details/details?id=商品序列</p>
|
||||
<p>优惠券列表:/pages/coupon/coupon</p>
|
||||
<p>打赏:/pages/reward/reward</p>
|
||||
<p>拼团列表:/pages/activity/pinTuan/list/list</p>
|
||||
<p>拼团详情:/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails?id=拼团序列</p>
|
||||
<p>秒杀列表:/pages/activity/seckill/list/list</p>
|
||||
<p>秒杀详情:/pages/activity/seckill/seckillDetails/seckillDetails?id=秒杀序列</p>
|
||||
<p>团购列表:/pages/activity/groupBuying/list/list</p>
|
||||
<p>团购详情:/pages/activity/groupBuying/groupBuyingDetails/groupBuyingDetails?id=团购序列</p>
|
||||
<p>接龙列表:/pages/activity/solitaire/list/list</p>
|
||||
<p>接龙详情:/pages/activity/solitaire/solitaireDetails/solitaireDetails?id=接龙序列</p>
|
||||
<p>日历签到:/pages/activity/checkIn/checkIn/checkIn</p>
|
||||
</div>
|
||||
|
||||
|
||||
<template id="layout">
|
||||
<div class="layout-container">
|
||||
<draggable v-model="pageData" :options="{group: { name: 'widget'},sort: true,ghostClass: 'ghost',dragClass:'dragItem',
|
||||
|
||||
@@ -148,9 +148,9 @@
|
||||
<input type="text" name="continueunitAreaPrice[0]" required value="0" lay-verType="tips" lay-verify="required" placeholder="" autocomplete="off" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<a class="layui-btn layui-btn-xs addarea-class">
|
||||
<!--<a class="layui-btn layui-btn-xs addarea-class">
|
||||
添加地区
|
||||
</a>
|
||||
</a>-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs del-class">
|
||||
删除
|
||||
</a>
|
||||
|
||||
@@ -129,7 +129,12 @@
|
||||
<th>选择地区</th>
|
||||
<th>首重费用</th>
|
||||
<th>续重费用</th>
|
||||
<th>操作</th>
|
||||
<th>
|
||||
操作
|
||||
<a class="layui-btn layui-btn-xs addarea-class">
|
||||
添加地区
|
||||
</a>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="view">
|
||||
@@ -151,9 +156,9 @@
|
||||
<input type="text" name="continueunitAreaPrice[{{ index }}]" required value="{{ item.continueunitAreaPrice || 0 }}" lay-verType="tips" lay-verify="required" placeholder="" autocomplete="off" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<a class="layui-btn layui-btn-xs addarea-class">
|
||||
<!--<a class="layui-btn layui-btn-xs addarea-class">
|
||||
添加地区
|
||||
</a>
|
||||
</a>-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs del-class">
|
||||
删除
|
||||
</a>
|
||||
@@ -177,9 +182,9 @@
|
||||
<input type="text" name="continueunitAreaPrice[0]" required value="0" lay-verType="tips" lay-verify="required" placeholder="" autocomplete="off" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<a class="layui-btn layui-btn-xs addarea-class">
|
||||
<!--<a class="layui-btn layui-btn-xs addarea-class">
|
||||
添加地区
|
||||
</a>
|
||||
</a>-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs del-class">
|
||||
删除
|
||||
</a>
|
||||
@@ -217,9 +222,9 @@
|
||||
<input type="text" name="continueunitAreaPrice[{{ d.id }}]" required value="0" lay-verType="tips" lay-verify="required" placeholder="" autocomplete="off" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<a class="layui-btn layui-btn-xs addarea-class">
|
||||
<!--<a class="layui-btn layui-btn-xs addarea-class">
|
||||
添加地区
|
||||
</a>
|
||||
</a>-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs del-class">
|
||||
删除
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user