mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-29 22:10:49 +00:00
Merge branch 'v5.0.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v5.0.0dev
This commit is contained in:
commit
2ab3472aab
@ -681,7 +681,7 @@ class PublicController
|
||||
$data['member_card_status'] = sys_config('member_card_status');//是否开启付费会员
|
||||
$data['member_price_status'] = sys_config('member_price_status');//商品会员折扣价展示启用
|
||||
$data['ali_pay_status'] = sys_config('ali_pay_status') != '0';//支付宝是否启用
|
||||
$data['wechat_pay_status'] = sys_config('pay_weixin_open') != '0';//微信是否启用
|
||||
$data['pay_weixin_open'] = sys_config('pay_weixin_open') != '0';//微信是否启用
|
||||
$data['yue_pay_status'] = sys_config('yue_pay_status') == 1 && sys_config('balance_func_status') != 0;//余额是否启用
|
||||
$data['offline_pay_status'] = sys_config('offline_pay_status') == 1;//线下是否启用
|
||||
$data['friend_pay_status'] = sys_config('friend_pay_status') == 1;//好友是否启用
|
||||
|
||||
@ -124,7 +124,8 @@ class StoreCartController
|
||||
['id', 0],//购物车编号
|
||||
['number', 0],//购物车编号
|
||||
]);
|
||||
if (!$where['id'] || !$where['number'] || !is_numeric($where['id']) || !is_numeric($where['number'])) return app('json')->fail(100100);
|
||||
if (!$where['id'] || !is_numeric($where['id'])) return app('json')->fail(100100);
|
||||
if (!$where['number'] || !is_numeric($where['number'])) return app('json')->fail(100007);
|
||||
$res = $this->services->changeUserCartNum($where['id'], $where['number'], $request->uid());
|
||||
if ($res) return app('json')->success(100001);
|
||||
else return app('json')->fail(100007);
|
||||
|
||||
@ -59,6 +59,8 @@ class StoreCombinationDao extends BaseDao
|
||||
$query->name('store_category')->where('pid', $where['cid'])->field('id')->select();
|
||||
})->field('product_id')->select();
|
||||
});
|
||||
})->when(isset($where['id']) && $where['id'], function ($query) use ($where) {
|
||||
$query->where('id', $where['id']);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ class StoreOrderInvoiceDao extends BaseDao
|
||||
return parent::search($where, $search)->when($type, function ($query) use ($type) {
|
||||
switch ($type) {
|
||||
case 1://待开
|
||||
$query->where('is_invoice', 0)->where('invoice_time', 0)->where('is_refund', 0);
|
||||
$query->where('is_invoice', 0)->where('is_refund', 0);
|
||||
break;
|
||||
case 2://已开
|
||||
$query->where('is_invoice', 1);
|
||||
|
||||
@ -220,7 +220,7 @@ class StoreBargainUserServices extends BaseServices
|
||||
public function userBargainStatusFail($bargain_id, $is_true)
|
||||
{
|
||||
if ($is_true) {
|
||||
$this->dao->delete(['bargain_id' => $bargain_id, 'status' => 1]);
|
||||
$this->dao->delete(['bargain_id' => $bargain_id]);
|
||||
/** @var StoreBargainUserHelpServices $service */
|
||||
$service = app()->make(StoreBargainUserHelpServices::class);
|
||||
$service->delete(['bargain_id' => $bargain_id]);
|
||||
|
||||
@ -226,8 +226,8 @@ class StoreOrderComputedServices extends BaseServices
|
||||
// 可用积分
|
||||
$usable = bcsub((string)$userInfo['integral'], (string)$userBillServices->getBillSum(['uid' => $userInfo['uid'], 'is_frozen' => 1]), 0);
|
||||
|
||||
$SurplusIntegral = 0;
|
||||
if ($useIntegral && $userInfo['integral'] > 0) {
|
||||
$SurplusIntegral = $usable;
|
||||
if ($useIntegral && $userInfo['integral'] > 0 && $other['integralRatio'] > 0) {
|
||||
//积分抵扣上限
|
||||
$integralMaxNum = sys_config('integral_max_num', 200);
|
||||
if ($integralMaxNum > 0 && $usable > $integralMaxNum) {
|
||||
|
||||
@ -31,6 +31,9 @@ export default {
|
||||
getThemeConfig() {
|
||||
return this.$store.state.themeConfig.themeConfig;
|
||||
},
|
||||
tagNavList() {
|
||||
return this.$store.state.app.tagNavList;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
$route(newRoute) {
|
||||
|
||||
@ -40,6 +40,8 @@
|
||||
import Contextmenu from '@/layout/navBars/tagsView/contextmenu';
|
||||
import { Session } from '@/utils/storage.js';
|
||||
import { mapMutations } from 'vuex';
|
||||
import setting from '@/setting';
|
||||
|
||||
export default {
|
||||
name: 'tagsView',
|
||||
components: { Contextmenu },
|
||||
@ -77,7 +79,9 @@ export default {
|
||||
this.tagsViewRoutesList = this.$store.state.app.tagNavList;
|
||||
},
|
||||
mounted() {
|
||||
// this.getTagsViewRoutes();
|
||||
if (!this.$store.state.app.tagNavList.length) {
|
||||
this.getTagsViewRoutes();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations(['setBreadCrumb', 'setTagNavList', 'addTag', 'setLocal', 'setHomeRoute', 'closeTag']),
|
||||
@ -90,7 +94,15 @@ export default {
|
||||
onTagsClick(v, k) {
|
||||
this.tagsRoutePath = v.path;
|
||||
this.tagsRefsIndex = k;
|
||||
this.$router.push(v);
|
||||
try {
|
||||
if (v.name == 'home_index') {
|
||||
this.$router.replace(`${setting.routePre}/home/`);
|
||||
} else {
|
||||
this.$router.push(v);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
// 获取 tagsView 的下标:用于处理 tagsView 点击时的横向滚动
|
||||
getTagsRefsIndex(path) {
|
||||
@ -184,9 +196,8 @@ export default {
|
||||
// 获取 vuex 中的 tagsViewRoutes 列表
|
||||
getTagsViewRoutes() {
|
||||
this.tagsRoutePath = this.$route.path;
|
||||
this.tagsViewList = [];
|
||||
if (!this.$store.state.themeConfig.themeConfig.isCacheTagsView) Session.remove('tagsViewList');
|
||||
this.tagsViewRoutesList = this.$store.state.tagsViewRoutes.tagsViewRoutes;
|
||||
// if (!this.$store.state.themeConfig.themeConfig.isCacheTagsView) Session.remove('tagsViewList');
|
||||
this.tagsViewRoutesList = this.$store.state.menus.oneLvMenus;
|
||||
this.initTagsViewList();
|
||||
},
|
||||
// 存储 tagsViewList 到浏览器临时缓存中,页面刷新时,保留记录
|
||||
@ -195,14 +206,17 @@ export default {
|
||||
},
|
||||
// 初始化设置了 tagsView 数据
|
||||
initTagsViewList() {
|
||||
if (Session.get('tagsViewList') && this.$store.state.themeConfig.themeConfig.isCacheTagsView) {
|
||||
this.tagsViewList = Session.get('tagsViewList');
|
||||
} else {
|
||||
this.tagsViewRoutesList.map((v) => {
|
||||
if (v.isAffix && !v.isHide) this.tagsViewList.push({ ...v });
|
||||
});
|
||||
this.addTagsView(this.$route.path);
|
||||
}
|
||||
// if (Session.get('tagsViewList') && this.$store.state.themeConfig.themeConfig.isCacheTagsView) {
|
||||
// this.tagsViewList = Session.get('tagsViewList');
|
||||
// } else {
|
||||
let arr = [];
|
||||
console.log(this.tagsViewRoutesList);
|
||||
this.tagsViewRoutesList.map((v) => {
|
||||
if (v.meta && v.meta.isAffix) arr.push({ ...v });
|
||||
});
|
||||
// }
|
||||
console.log(arr);
|
||||
this.setTagNavList(arr);
|
||||
// 初始化当前元素(li)的下标
|
||||
this.getTagsRefsIndex(this.$route.path);
|
||||
// 添加初始化横向滚动条移动到对应位置
|
||||
@ -224,8 +238,7 @@ export default {
|
||||
this.tagsDropdown.y = clientY;
|
||||
this.$refs.tagsContextmenu.openContextmenu(v);
|
||||
},
|
||||
onContextmenuIcon(e) {
|
||||
},
|
||||
onContextmenuIcon(e) {},
|
||||
// 当前项右键菜单点击
|
||||
onCurrentContextmenuClick(data) {
|
||||
let { id, path } = data;
|
||||
@ -417,6 +430,13 @@ export default {
|
||||
// .tags-style-three {
|
||||
// }
|
||||
// // 风格4
|
||||
// 风格1
|
||||
.tags-style-one {
|
||||
.is-active {
|
||||
background: none !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
||||
// 风格4
|
||||
.tags-style-four {
|
||||
.layout-navbars-tagsview-ul-li {
|
||||
@ -436,7 +456,7 @@ export default {
|
||||
}
|
||||
.is-active {
|
||||
background: none !important;
|
||||
color: var(--prev-bg-menu-hover-ba-color) !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
||||
// 风格5
|
||||
|
||||
@ -163,7 +163,7 @@ export const getHomeRoute = (routers, homeName = 'home') => {
|
||||
export const getNewTagList = (list, newRoute) => {
|
||||
const { name, path, meta } = newRoute;
|
||||
let newList = [...list];
|
||||
if (newList.findIndex((item) => item.name === name) >= 0) return newList;
|
||||
if (newList.findIndex((item) => item.path === path) >= 0) return newList;
|
||||
else newList.push({ name, path, meta });
|
||||
return newList;
|
||||
};
|
||||
|
||||
@ -213,6 +213,8 @@ export default {
|
||||
this.$store.dispatch('routesList/setRoutesList', data.menus);
|
||||
let arr = formatFlatteningRoutes(this.$router.options.routes);
|
||||
this.formatTwoStageRoutes(arr);
|
||||
this.$store.commit('menus/setOneLvMenus', arr);
|
||||
|
||||
// 记录用户信息
|
||||
this.$store.commit('userInfo/name', data.user_info.account);
|
||||
this.$store.commit('userInfo/avatar', data.user_info.head_pic);
|
||||
@ -241,8 +243,7 @@ export default {
|
||||
this.checkSocket();
|
||||
} catch (e) {}
|
||||
PrevLoading.start();
|
||||
|
||||
return this.$router.replace({
|
||||
return this.$router.push({
|
||||
path: findFirstNonNullChildren(res.data.menus).path || this.$routeProStr + '/',
|
||||
});
|
||||
})
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
@click="selectUser(item)"
|
||||
>
|
||||
<div class="avatar">
|
||||
<img v-lazy="item.avatar" alt="" />
|
||||
<img v-lazy="item.wx_avatar" alt="" />
|
||||
<div class="status" :class="{ off: item.online == 0 }"></div>
|
||||
</div>
|
||||
<div class="user-info">
|
||||
|
||||
@ -133,10 +133,10 @@
|
||||
v-paste="handleParse"
|
||||
v-model="chatCon"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
:rows="8"
|
||||
@on-keydown="listen($event)"
|
||||
placeholder="请输入文字内容"
|
||||
style="font-size: 14px"
|
||||
style="font-size: 14px; height: 150px"
|
||||
/>
|
||||
<div class="send-btn">
|
||||
<Button class="btns" type="primary" :disabled="disabled" @click.stop="sendText">发送</Button>
|
||||
@ -628,9 +628,10 @@ export default {
|
||||
<style lang="stylus" scoped>
|
||||
@import '../../../styles/emoji-awesome/css/google.min.css';
|
||||
|
||||
textarea.ivu-input {
|
||||
/deep/ textarea.ivu-input {
|
||||
border: none;
|
||||
resize: none;
|
||||
|
||||
}
|
||||
|
||||
.kefu-layouts {
|
||||
|
||||
@ -235,7 +235,7 @@ export default {
|
||||
{
|
||||
col: 8,
|
||||
count: 0,
|
||||
name: '推广人数(人)',
|
||||
name: '砍价人数(人)',
|
||||
className: 'ios-speedometer-outline',
|
||||
},
|
||||
{
|
||||
|
||||
@ -23,6 +23,9 @@
|
||||
<span class="nickname">{{ row.nickname }}</span> |
|
||||
<span class="uid">{{ row.uid }}</span>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="pay_price">
|
||||
<span>{{ row.paid ? row.pay_price : '未支付' }}</span>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="info">
|
||||
<div class="tabBox" v-for="(val, i) in row._info" :key="i">
|
||||
<div class="tabBox_img" v-viewer>
|
||||
@ -63,13 +66,14 @@
|
||||
</div>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="action">
|
||||
<a @click="edit(row)" v-if="row._status === 1">编辑</a>
|
||||
<a @click="edit(row)" v-if="row._status === 1 && row.is_del !== 1">编辑</a>
|
||||
<a
|
||||
@click="sendOrder(row)"
|
||||
v-if="
|
||||
(row.status === 4 || row._status === 2 || row._status === 8) &&
|
||||
row.shipping_type === 1 &&
|
||||
(row.pinkStatus === null || row.pinkStatus === 2)
|
||||
(row.pinkStatus === null || row.pinkStatus === 2) &&
|
||||
row.is_del !== 1
|
||||
"
|
||||
>发送货</a
|
||||
>
|
||||
@ -81,12 +85,15 @@
|
||||
>
|
||||
<Divider
|
||||
type="vertical"
|
||||
v-if="(row._status === 8 || row.status === 0 || row.status === 4) && row.split.length"
|
||||
v-if="(row._status === 8 || row.status === 0 || row.status === 4) && row.split.length && row.is_del !== 1"
|
||||
/>
|
||||
<a @click="splitOrderDetail(row)" v-if="row.split.length">查看子订单</a>
|
||||
<a @click="splitOrderDetail(row)" v-if="row.split.length && row.is_del !== 1">查看子订单</a>
|
||||
<Divider
|
||||
type="vertical"
|
||||
v-if="(row._status === 2 && row.shipping_type === 1 && row.pinkStatus === 2) || row.split.length"
|
||||
v-if="
|
||||
(row._status === 2 && row.shipping_type === 1 && row.pinkStatus === 2) ||
|
||||
(row.split.length && row.is_del !== 1)
|
||||
"
|
||||
/>
|
||||
<Divider
|
||||
type="vertical"
|
||||
@ -97,7 +104,8 @@
|
||||
row._status === 3 ||
|
||||
(row._status === 2 && !row.pinkStatus) ||
|
||||
row._status === 4 ||
|
||||
(row.shipping_type == 2 && row.status == 0 && row.paid == 1 && row.refund_status === 0))
|
||||
(row.shipping_type == 2 && row.status == 0 && row.paid == 1 && row.refund_status === 0)) &&
|
||||
row.is_del !== 1
|
||||
"
|
||||
/>
|
||||
<template>
|
||||
@ -110,7 +118,7 @@
|
||||
<DropdownItem
|
||||
name="1"
|
||||
ref="ones"
|
||||
v-show="row._status === 1 && row.paid === 0 && row.pay_type === 'offline'"
|
||||
v-show="row._status === 1 && row.paid === 0 && row.pay_type === 'offline' && row.is_del !== 1"
|
||||
>确认付款</DropdownItem
|
||||
>
|
||||
<DropdownItem name="2">订单详情</DropdownItem>
|
||||
@ -257,7 +265,7 @@ export default {
|
||||
},
|
||||
{
|
||||
title: '实际支付',
|
||||
key: 'pay_price',
|
||||
slot: 'pay_price',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
},
|
||||
|
||||
@ -541,6 +541,6 @@ export default {
|
||||
|
||||
// 选项卡头部
|
||||
>>> .ivu-tabs.ivu-tabs-card > .ivu-tabs-bar .ivu-tabs-nav-container {
|
||||
background-color: #333;
|
||||
background-color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -919,7 +919,7 @@ export default {
|
||||
this.giveLevelTime(row.uid);
|
||||
break;
|
||||
case '4':
|
||||
this.del(row, '清除 【 ' + row.nickname + ' 】的会员等级', index, 'user');
|
||||
this.del(row, '清除 【 ' + this.tenText(row.nickname) + ' 】的会员等级', index, 'user');
|
||||
break;
|
||||
case '5':
|
||||
this.$modalForm(userSetGroup(uids)).then(() => this.getList());
|
||||
@ -931,9 +931,17 @@ export default {
|
||||
this.editS(row);
|
||||
break;
|
||||
default:
|
||||
this.del(row, '解除【 ' + row.nickname + ' 】的上级推广人', index, 'tuiguang');
|
||||
this.del(row, '解除【 ' + this.tenText(row.nickname) + ' 】的上级推广人', index, 'tuiguang');
|
||||
}
|
||||
},
|
||||
tenText(str) {
|
||||
if (str.length > 10) {
|
||||
//如果字符长度超过10,后面的字符就变成...可自行调整长度和代替字符
|
||||
str = str.substr(0, 10) + '...'; //截取从第一个字符开始,往后取10个字符,剩余的用...代替
|
||||
//console.log(str); // 'js字符超出指定个数...'
|
||||
}
|
||||
return str;
|
||||
},
|
||||
openLabel(row) {
|
||||
this.labelShow = true;
|
||||
this.labelActive.uid = row.uid;
|
||||
@ -998,6 +1006,7 @@ export default {
|
||||
url: name === 'user' ? `user/del_level/${row.uid}` : `agent/stair/delete_spread/${row.uid}`,
|
||||
method: name === 'user' ? 'DELETE' : 'PUT',
|
||||
ids: '',
|
||||
width: 600,
|
||||
};
|
||||
this.$modalSure(delfromData)
|
||||
.then((res) => {
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
// export default {
|
||||
@ -52,7 +52,7 @@ export default {
|
||||
component: LayoutMain,
|
||||
children: [
|
||||
{
|
||||
path: routePre+'/home',
|
||||
path: routePre + '/home/',
|
||||
name: `${pre}index`,
|
||||
header: 'home',
|
||||
meta: {
|
||||
|
||||
@ -26,6 +26,7 @@ export default {
|
||||
menusName: getMenusName(),
|
||||
openMenus: [],
|
||||
childMenuList: [],
|
||||
oneLvMenus: [],
|
||||
},
|
||||
mutations: {
|
||||
getmenusNav(state, menuList) {
|
||||
@ -37,8 +38,10 @@ export default {
|
||||
setopenMenus(state, openList) {
|
||||
state.openMenus = openList;
|
||||
},
|
||||
setOneLvMenus(state, oneLvMenus) {
|
||||
state.oneLvMenus = oneLvMenus;
|
||||
},
|
||||
childMenuList(state, list) {
|
||||
console.log('bbbbb')
|
||||
state.childMenuList = list;
|
||||
},
|
||||
},
|
||||
|
||||
@ -123,6 +123,13 @@
|
||||
async onLaunch(option) {
|
||||
uni.hideTabBar()
|
||||
let that = this;
|
||||
// #ifdef H5
|
||||
if (option.query.hasOwnProperty('type') && option.query.type == "iframeWindow") {
|
||||
this.globalData.isIframe = true;
|
||||
} else {
|
||||
this.globalData.isIframe = false;
|
||||
}
|
||||
// #endif
|
||||
colorChange('color_change').then(res => {
|
||||
uni.setStorageSync('is_diy', res.data.is_diy)
|
||||
uni.$emit('is_diy', res.data.is_diy)
|
||||
@ -245,13 +252,7 @@
|
||||
}
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
if (option.query.hasOwnProperty('type') && option.query.type == "iframeWindow") {
|
||||
this.globalData.isIframe = true;
|
||||
} else {
|
||||
this.globalData.isIframe = false;
|
||||
}
|
||||
// #endif
|
||||
|
||||
// #ifdef MP
|
||||
// 小程序静默授权
|
||||
// if (!this.$store.getters.isLogin) {
|
||||
|
||||
@ -178,7 +178,7 @@
|
||||
getBasicConfig() {
|
||||
basicConfig().then(res => {
|
||||
//微信支付是否开启
|
||||
this.cartArr[0].payStatus = res.data.wechat_pay_status || 0
|
||||
this.cartArr[0].payStatus = res.data.pay_weixin_open || 0
|
||||
//支付宝是否开启
|
||||
this.cartArr[1].payStatus = res.data.ali_pay_status || 0;
|
||||
//#ifdef MP
|
||||
|
||||
@ -5,18 +5,18 @@
|
||||
<view>{{$t(`当前共`)}} <text class="text"> {{count}} </text> {{$t(`件商品`)}}</view>
|
||||
<view class="admin" @click="showRadio">{{checkbox_show?$t(`取消`):$t(`管理`)}}</view>
|
||||
</view>
|
||||
<checkbox-group @change="checkboxChange">
|
||||
<view class='item acea-row' v-for="(item,index) in collectProductList" :key="index" @click="jump(item)">
|
||||
<checkbox-group @change.stop="checkboxChange">
|
||||
<view class='item acea-row' v-for="(item,index) in collectProductList" :key="index">
|
||||
<view class="left">
|
||||
<checkbox v-show="checkbox_show" :value="item.pid.toString()" :checked="item.checked" />
|
||||
<view class='pictrue'>
|
||||
<view class='pictrue' @click="jump(item)">
|
||||
<image :src="item.image"></image>
|
||||
<view class="invalid acea-row row-center-wrapper" v-if="!item.is_show">
|
||||
已下架
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='text acea-row row-column-between'>
|
||||
<view class='text acea-row row-column-between' @click="jump(item)">
|
||||
<view class='name line2'>{{item.store_name}}</view>
|
||||
<view class='acea-row row-between-wrapper'>
|
||||
<view class='money font-color'>{{$t(`¥`)}}{{item.price}}</view>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user