Merge branch 'v5.0.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v5.0.0dev

This commit is contained in:
liaofei 2023-04-24 15:21:13 +08:00
commit daafa16c8b
18 changed files with 233 additions and 192 deletions

View File

@ -51,6 +51,8 @@ class PublicController
$data['site_keywords'] = sys_config('site_keywords');
$data['site_description'] = sys_config('site_description');
$data['network_security'] = sys_config('network_security');
$data['icp_url'] = sys_config('icp_url');
$data['network_security_url'] = sys_config('network_security_url');
$logoUrl = sys_config('pc_logo');
if (strstr($logoUrl, 'http') === false && $logoUrl) {
$logoUrl = sys_config('site_url') . $logoUrl;

View File

@ -117,6 +117,9 @@ class PublicController
public function getSiteConfig()
{
$data['record_No'] = sys_config('record_No');
$data['icp_url'] = sys_config('icp_url');
$data['network_security'] = sys_config('network_security');
$data['network_security_url'] = sys_config('network_security_url');
return app('json')->success($data);
}

View File

@ -365,8 +365,6 @@ Route::group(function () {
Route::post('user/set_visit', 'v1.user.UserController/set_visit')->name('setVisit');// 添加用户访问记录
//复制口令接口
Route::get('copy_words', 'v1.PublicController/copy_words')->name('copyWords');// 复制口令接口
//获取网站配置
Route::get('site_config', 'v1.PublicController/getSiteConfig')->name('getSiteConfig');//获取网站配置
//活动---积分商城
Route::get('store_integral/index', 'v1.activity.StoreIntegralController/index')->name('storeIntegralIndex');//积分商城首页数据

View File

@ -53,6 +53,9 @@ class SystemDatabackupServices extends BaseServices
public function getDataList()
{
$list = $this->dbBackup->dataList();
foreach ($list as &$item) {
$item['is_edit'] = false;
}
$count = count($list);
return compact('list', 'count');
}
@ -69,6 +72,7 @@ class SystemDatabackupServices extends BaseServices
$count = count($list);
foreach ($list as $key => $f) {
$list[$key]['EXTRA'] = ($f['EXTRA'] == 'auto_increment' ? '是' : ' ');
$list[$key]['is_edit'] = false;
}
return compact('list', 'count');
}
@ -91,7 +95,7 @@ class SystemDatabackupServices extends BaseServices
{
$tables = explode(',', $tables);
$data = '';
ini_set ("memory_limit","-1");
ini_set("memory_limit", "-1");
foreach ($tables as $t) {
$res = $this->dbBackup->backup($t, 0);
if ($res == false && $res != 0) {

View File

@ -288,6 +288,7 @@ class SystemFileServices extends BaseServices
$navList[$key]['pathname'] = $value['pathname'];
$navList[$key]['contextmenu'] = true;
$list[$key]['mark'] = $markList[str_replace(root_path(), '/', $value['pathname'])] ?? '';
$list[$key]['is_edit'] = false;
}
return compact('dir', 'list', 'navList');
}

View File

@ -115,24 +115,25 @@ export default {
},
addHotTxt() {
let val = {
children: [
chiild: [
{
max: 20,
pla: '选填,不超过四个字',
title: '标题',
val: 'CRMEB v4.2.2 正式发布',
val: '',
},
{
max: 99,
pla: '选填',
title: '链接',
val: '链接',
val: '',
},
],
};
if (this.name == 'newList') {
let obj = JSON.parse(JSON.stringify(this.datas[this.name].list[this.datas[this.name].list.length - 1]));
this.datas[this.name].list.push(obj);
let arrs = this.datas[this.name].list[this.datas[this.name].list.length - 1];
let obj = arrs ? JSON.parse(JSON.stringify(arrs)) : '';
this.datas[this.name].list.push(obj || val);
return;
}
if (this.datas[this.name].list.length == 0) {

View File

@ -1,159 +1,159 @@
// 定义内容
export default {
router: {
home: '首页',
system: '系统设置',
systemMenu: '菜单管理',
systemUser: '用户管理',
limits: '权限管理',
limitsFrontEnd: '前端控制',
limitsFrontEndPage: '页面权限',
limitsFrontEndBtn: '按钮权限',
limitsBackEnd: '后端控制',
limitsBackEndEndPage: '页面权限',
menu: '菜单嵌套',
menu1: '菜单1',
menu11: '菜单11',
menu12: '菜单12',
menu121: '菜单121',
menu122: '菜单122',
menu13: '菜单13',
menu2: '菜单2',
funIndex: '功能',
funTagsView: 'tagsView 操作',
funSignCanvas: '在线签名',
funCountup: 'countup 数字滚动',
funEchartsTree: 'echartsTree 树图',
funSelector: '图标选择器',
funWangEditor: 'wangEditor 编辑器',
funCropper: 'cropper 图片裁剪',
funMindMap: 'G6 思维导图',
funQrcode: 'qrcode 二维码生成',
funEchartsMap: '地理坐标/地图',
funPrintJs: '页面打印',
funClipboard: '复制剪切',
funScreenShort: 'web端自定义截屏',
pagesIndex: '页面',
pagesFiltering: '过滤筛选组件',
pagesFilteringDetails: '过滤筛选组件详情',
pagesFilteringDetails1: '过滤筛选组件详情111',
pagesIocnfont: 'iconfont 字体图标',
pagesElement: 'element 字体图标',
pagesAwesome: 'awesome 字体图标',
pagesCityLinkage: '城市多级联动',
pagesFormAdapt: '表单自适应',
pagesListAdapt: '列表自适应',
pagesWaterfall: '瀑布屏',
pagesSteps: '步骤条',
chartIndex: '大数据图表',
personal: '个人中心',
tools: '工具类集合',
layoutLinkView: '外链',
layoutIfameView: '内嵌 iframe',
},
staticRoutes: {
signIn: '登录',
notFound: '找不到此页面',
noPower: '没有权限',
},
user: {
title0: '组件大小',
title1: '语言切换',
title2: '菜单搜索',
title3: '布局配置',
title4: '消息',
title5: '开全屏',
title6: '关全屏',
dropdownDefault: '默认',
dropdownMedium: '中等',
dropdownSmall: '小型',
dropdownMini: '超小',
dropdown1: '首页',
dropdown2: '个人中心',
dropdown3: '404',
dropdown4: '401',
dropdown5: '退出登录',
dropdown6: '代码仓库',
searchPlaceholder: '菜单搜索:支持中文、路由路径',
newTitle: '通知',
newBtn: '全部已读',
newGo: '前往通知中心',
newDesc: '暂无通知',
logOutTitle: '提示',
logOutMessage: '此操作将退出登录, 是否继续?',
logOutConfirm: '确定',
logOutCancel: '取消',
logOutExit: '退出中',
logOutSuccess: '安全退出成功!',
},
tagsView: {
refresh: '刷新',
close: '关闭',
closeOther: '关闭其它',
closeAll: '全部关闭',
fullscreen: '当前页全屏',
},
notFound: {
foundTitle: '地址输入错误,请重新输入地址~',
foundMsg: '您可以先检查网址,然后重新输入或给我们反馈问题。',
foundBtn: '返回首页',
},
layout: {
configTitle: '布局配置',
oneTitle: '全局主题',
menuBag: '菜单背景色',
twoTitle: '菜单 / 顶栏',
twoTopBar: '顶栏背景',
twoMenuBar: '菜单背景',
twoColumnsMenuBar: '分栏菜单背景',
twoTopBarColor: '顶栏默认字体颜色',
twoMenuBarColor: '菜单默认字体颜色',
twoColumnsMenuBarColor: '分栏菜单默认字体颜色',
twoIsTopBarColorGradual: '顶栏背景渐变',
twoIsMenuBarColorGradual: '菜单背景渐变',
twoIsMenuBarColorHighlight: '菜单字体背景高亮',
threeTitle: '界面设置',
threeIsCollapse: '菜单水平折叠',
threeIsUniqueOpened: '菜单手风琴',
threeIsFixedHeader: '固定 Header',
threeIsClassicSplitMenu: '经典布局分割菜单',
threeIsLockScreen: '开启锁屏',
threeLockScreenTime: '自动锁屏(s/秒)',
fourTitle: '界面显示',
fourIsShowLogo: '侧边栏 Logo',
fourIsBreadcrumb: '面包屑',
fourIsBreadcrumbIcon: '面包屑图标',
fourIsTagsview: '历史菜单',
fourIsTagsviewIcon: '历史菜单 图标',
fourIsFooter: 'Footer',
fourIsGrayscale: '灰色模式',
fourIsInvert: '色弱模式',
fourIsDark: '深色模式',
fourIsWartermark: '开启水印',
fourWartermarkText: '水印文案',
fiveTitle: '其它设置',
fiveTagsStyle: '标签风格',
themeStyle: '主题',
fiveAnimation: '主页面切换动画',
fiveColumnsAsideStyle: '分栏高亮风格',
fiveColumnsAsideLayout: '分栏布局风格',
sixTitle: '布局切换',
sixDefaults: '默认',
sixClassic: '经典',
sixTransverse: '横向',
sixColumns: '分栏',
tipText: '点击下方按钮,复制布局配置去 `src/store/modules/themeConfig.js` 中修改。',
copyText: '一键复制配置',
resetText: '一键恢复默认',
copyTextSuccess: '复制成功!',
copyTextError: '复制失败!',
},
upgrade: {
title: '新版本升级',
msg: '新版本来啦,马上更新尝鲜吧!不用担心,更新很快的哦!',
desc: '提示:更新会还原默认配置',
btnOne: '残忍拒绝',
btnTwo: '马上更新',
btnTwoLoading: '更新中',
},
router: {
home: '首页',
system: '系统设置',
systemMenu: '菜单管理',
systemUser: '用户管理',
limits: '权限管理',
limitsFrontEnd: '前端控制',
limitsFrontEndPage: '页面权限',
limitsFrontEndBtn: '按钮权限',
limitsBackEnd: '后端控制',
limitsBackEndEndPage: '页面权限',
menu: '菜单嵌套',
menu1: '菜单1',
menu11: '菜单11',
menu12: '菜单12',
menu121: '菜单121',
menu122: '菜单122',
menu13: '菜单13',
menu2: '菜单2',
funIndex: '功能',
funTagsView: 'tagsView 操作',
funSignCanvas: '在线签名',
funCountup: 'countup 数字滚动',
funEchartsTree: 'echartsTree 树图',
funSelector: '图标选择器',
funWangEditor: 'wangEditor 编辑器',
funCropper: 'cropper 图片裁剪',
funMindMap: 'G6 思维导图',
funQrcode: 'qrcode 二维码生成',
funEchartsMap: '地理坐标/地图',
funPrintJs: '页面打印',
funClipboard: '复制剪切',
funScreenShort: 'web端自定义截屏',
pagesIndex: '页面',
pagesFiltering: '过滤筛选组件',
pagesFilteringDetails: '过滤筛选组件详情',
pagesFilteringDetails1: '过滤筛选组件详情111',
pagesIocnfont: 'iconfont 字体图标',
pagesElement: 'element 字体图标',
pagesAwesome: 'awesome 字体图标',
pagesCityLinkage: '城市多级联动',
pagesFormAdapt: '表单自适应',
pagesListAdapt: '列表自适应',
pagesWaterfall: '瀑布屏',
pagesSteps: '步骤条',
chartIndex: '大数据图表',
personal: '个人中心',
tools: '工具类集合',
layoutLinkView: '外链',
layoutIfameView: '内嵌 iframe',
},
staticRoutes: {
signIn: '登录',
notFound: '找不到此页面',
noPower: '没有权限',
},
user: {
title0: '组件大小',
title1: '语言切换',
title2: '菜单搜索',
title3: '布局配置',
title4: '消息',
title5: '开全屏',
title6: '关全屏',
dropdownDefault: '默认',
dropdownMedium: '中等',
dropdownSmall: '小型',
dropdownMini: '超小',
dropdown1: '首页',
dropdown2: '个人中心',
dropdown3: '404',
dropdown4: '401',
dropdown5: '退出登录',
dropdown6: '代码仓库',
searchPlaceholder: '菜单搜索:支持中文、路由路径',
newTitle: '通知',
newBtn: '全部已读',
newGo: '前往通知中心',
newDesc: '暂无通知',
logOutTitle: '提示',
logOutMessage: '此操作将退出登录, 是否继续?',
logOutConfirm: '确定',
logOutCancel: '取消',
logOutExit: '退出中',
logOutSuccess: '安全退出成功!',
},
tagsView: {
refresh: '刷新',
close: '关闭',
closeOther: '关闭其它',
closeAll: '全部关闭',
fullscreen: '当前页全屏',
},
notFound: {
foundTitle: '地址输入错误,请重新输入地址~',
foundMsg: '您可以先检查网址,然后重新输入或给我们反馈问题。',
foundBtn: '返回首页',
},
layout: {
configTitle: '布局配置',
oneTitle: '全局主题',
menuBag: '菜单背景色',
twoTitle: '菜单 / 顶栏',
twoTopBar: '顶栏背景',
twoMenuBar: '菜单背景',
twoColumnsMenuBar: '分栏菜单背景',
twoTopBarColor: '顶栏默认字体颜色',
twoMenuBarColor: '菜单默认字体颜色',
twoColumnsMenuBarColor: '分栏菜单默认字体颜色',
twoIsTopBarColorGradual: '顶栏背景渐变',
twoIsMenuBarColorGradual: '菜单背景渐变',
twoIsMenuBarColorHighlight: '菜单字体背景高亮',
threeTitle: '界面设置',
threeIsCollapse: '菜单水平折叠',
threeIsUniqueOpened: '菜单手风琴',
threeIsFixedHeader: '固定 Header',
threeIsClassicSplitMenu: '经典布局分割菜单',
threeIsLockScreen: '开启锁屏',
threeLockScreenTime: '自动锁屏(s/秒)',
fourTitle: '界面显示',
fourIsShowLogo: '侧边栏 Logo',
fourIsBreadcrumb: '面包屑',
fourIsBreadcrumbIcon: '面包屑图标',
fourIsTagsview: '历史菜单',
fourIsTagsviewIcon: '历史菜单 图标',
fourIsFooter: 'Footer',
fourIsGrayscale: '灰色模式',
fourIsInvert: '色弱模式',
fourIsDark: '深色模式',
fourIsWartermark: '开启水印',
fourWartermarkText: '水印文案',
fiveTitle: '其它设置',
fiveTagsStyle: '历史菜单风格',
themeStyle: '主题',
fiveAnimation: '主页面切换动画',
fiveColumnsAsideStyle: '分栏高亮风格',
fiveColumnsAsideLayout: '分栏布局风格',
sixTitle: '布局切换',
sixDefaults: '默认',
sixClassic: '经典',
sixTransverse: '横向',
sixColumns: '分栏',
tipText: '点击下方按钮,复制布局配置去 `src/store/modules/themeConfig.js` 中修改。',
copyText: '一键复制配置',
resetText: '一键恢复默认',
copyTextSuccess: '复制成功!',
copyTextError: '复制失败!',
},
upgrade: {
title: '新版本升级',
msg: '新版本来啦,马上更新尝鲜吧!不用担心,更新很快的哦!',
desc: '提示:更新会还原默认配置',
btnOne: '残忍拒绝',
btnTwo: '马上更新',
btnTwoLoading: '更新中',
},
};

View File

@ -477,9 +477,10 @@ export default {
log(evt) {
// 中间拖拽排序
if (evt.moved) {
if (evt.moved.element.name == 'search_box') {
if (evt.moved.element.name == 'search_box' || evt.moved.element.name == 'nav_bar') {
return this.$Message.warning('该组件禁止拖拽');
}
// if (evt.moved.element.name == "nav_bar") {
// return this.$Message.warning("该组件禁止拖拽");
// }
@ -542,7 +543,7 @@ export default {
return;
}
}
if (item.name == 'search_box') {
if (item.name == 'search_box' || item.name == 'nav_bar') {
return this.$Message.warning('该组件禁止移动');
}
// if (item.name == "nav_bar") {

View File

@ -207,7 +207,7 @@ export default {
components: {
footPage,
html2canvas,
draggable: vuedraggable
draggable: vuedraggable,
},
filters: {
filterTxt(val) {
@ -402,7 +402,7 @@ export default {
log(evt) {
// 中间拖拽排序
if (evt.moved) {
if (evt.moved.element.name == 'search_box') {
if (evt.moved.element.name == 'search_box' || evt.moved.element.name == 'nav_bar') {
return this.$Message.warning('该组件禁止拖拽');
}
// if (evt.moved.element.name == "nav_bar") {
@ -467,9 +467,10 @@ export default {
return;
}
}
if (item.name == 'search_box') {
if (item.name == 'search_box' || item.name == 'nav_bar') {
return this.$Message.warning('该组件禁止移动');
}
console.log(item);
// if (item.name == "nav_bar") {
// return this.$Message.warning("该组件禁止移动");
// }

View File

@ -589,6 +589,7 @@ export default {
syncRoute(this.app_name).then((res) => {
this.getInterfaceList('one');
this.$Message.success(res.msg);
this.$Modal.remove();
});
},
});

View File

@ -42,7 +42,7 @@
</FormItem>
<FormItem label="模块名" prop="modelName">
<Input class="form-width" v-model="foundation.modelName" placeholder="请输入模块名"></Input>
<div class="tip">用于生成模块名称</div>
<div class="tip">模块名称为中文或者英文,用在接口名称前缀、表单头部标题</div>
</FormItem>
<FormItem label="表名" prop="tableName">
<Input
@ -65,7 +65,7 @@
</div>
</FormItem>
<FormItem label="字段配置">
<Button type="primary" @click="addRow">{{ foundation.isTable ? '生成字段' : '添加一行' }}</Button>
<Button type="primary" @click="addRow">{{ foundation.isTable ? '获取字段' : '添加一行' }}</Button>
<div>
<Table
ref="selection"

View File

@ -6,7 +6,7 @@
><Button icon="ios-arrow-back" size="small" type="text">返回</Button></router-link
>
<Divider type="vertical" />
<span class="ivu-page-header-title mr20" style="padding: 0">代码生成</span>
<span class="ivu-page-header-title mr20" style="padding: 0">添加功能</span>
</div>
</div>
<div class="message">
@ -143,6 +143,19 @@ export default {
this.bus.$emit('routesListChange');
});
},
formatTwoStageRoutes(arr) {
if (arr.length <= 0) return false;
const newArr = [];
const cacheList = [];
arr.forEach((v) => {
if (v && v.meta && v.meta.keepAlive) {
newArr.push({ ...v });
cacheList.push(v.name);
this.$store.dispatch('keepAliveNames/setCacheKeepAlive', cacheList);
}
});
return newArr;
},
},
};
</script>

View File

@ -1,5 +1,5 @@
// 请求接口地址 如果没有配置自动获取当前网址路径
const VUE_APP_API_URL = `https://v5.wuht.net/adminapi`||process.env.VUE_APP_API_URL || `${location.origin}/adminapi`;
const VUE_APP_API_URL = process.env.VUE_APP_API_URL || `${location.origin}/adminapi`;
const Setting = {
// 路由前缀

View File

@ -163,7 +163,6 @@
getLangVersion().then(res => {
let version = res.data.version
if (version != uni.getStorageSync('LANG_VERSION')) {
console.log('我变了')
getLangJson().then(res => {
let value = Object.keys(res.data)[0]
Cache.set('locale', Object.keys(res.data)[0])

View File

@ -6,14 +6,14 @@
<swiper-item v-if="videoline">
<view class="item">
<view v-show="!controls" style="width:100%;height:100% ">
<video id="myVideo" :src='videoline' objectFit="contain" controls style="width:100%;height:100%"
<video id="myVideo" :src='encodeURI(videoline)' objectFit="contain" controls style="width:100%;height:100%"
show-center-play-btn show-mute-btn="true" auto-pause-if-navigate :custom-cache="false"
:enable-progress-gesture="false" :poster="imgUrls[0]" @pause="videoPause"></video>
</view>
<view class="poster" v-show="controls">
<image class="image" :src="imgUrls[0]"></image>
</view>
<view class="stop" v-show="controls" @tap="bindPause">
<view class="stop" v-show="controls" @click.stop="bindPause">
<image class="image" src="../../static/images/stop.png"></image>
</view>
</view>
@ -33,7 +33,7 @@
<!-- #endif -->
<block v-for="(item,index) in imgUrls" :key='index'>
<swiper-item v-if="videoline?index>=1:index>=0">
<image :src="item" class="slide-image" @click="openImage(index)" />
<image :src="item" class="slide-image" @click.stop="openImage(index)" />
</swiper-item>
</block>
</swiper>
@ -95,8 +95,8 @@
},
bindPause: function() {
// #ifndef APP-PLUS
this.videoContext.play();
this.$set(this, 'controls', false)
this.videoContext.play();
this.autoplay = false
// #endif
// #ifdef APP-PLUS

View File

@ -80,8 +80,7 @@
</view>
</view>
<!-- 订单 -->
<view class="order-box" v-if="item.msn_type == 6 && item.orderInfo"
@click="goOrder(item)">
<view class="order-box" v-if="item.msn_type == 6 && item.orderInfo" @click="goOrder(item)">
<view class="title">{{$t(`订单号`)}}: {{ item.orderInfo.order_id }}</view>
<view class="info">
<image :src="item.orderInfo.cartInfo[0].productInfo.image"></image>
@ -639,18 +638,19 @@
.footer-box {
display: flex;
align-items: center;
padding: 0 30rpx;
color: rgba(0, 0, 0, 0.8);
background: #f7f7f7;
/* #ifdef APP-PLUS */
padding: 0 30rpx;
height: 70rpx;
height: (70rpx + constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
height: calc(70rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
/* #endif */
/* #ifndef APP-PLUS */
height: 100rpx;
height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
/* #endif */
/* #ifndef APP-PLUS */
padding: 0 30rpx 15rpx 30rpx;
height: 115rpx;
/* #endif */
.words .icon-tupian {
font-size: 50rpx;

View File

@ -89,7 +89,8 @@
<tabBar :dataConfig="tabBar.default" :pagePath="'/pages/index/index'"
@click.native="bindEdit('tabBar', 'default')"></tabBar>
<!-- #ifdef H5 -->
<view v-if="site_config && !isIframe" class="site-config" @click="goICP">{{site_config}}</view>
<view v-if="site_config.record_No && !isIframe" class="site-config" @click="goICP">{{site_config.record_No}}</view>
<view v-if="site_config.network_security && !isIframe" class="site-config" @click="goNetwork">{{site_config.network_security}}</view>
<!-- #endif -->
<view class="uni-p-b-98"></view>
<couponWindow style="position: relative; z-index: 10000" :window="isCouponShow" @onColse="couponClose"
@ -251,7 +252,7 @@
couponObj: {},
isCouponShow: false,
shareInfo: {},
site_config: "",
site_config: {},
isIframe: app.globalData.isIframe,
headerSerch: {}, //头部搜索
swiperBg: {}, //轮播
@ -326,7 +327,7 @@
// #endif
siteConfig()
.then((res) => {
this.site_config = res.data.record_No;
this.site_config = res.data;
})
.catch((err) => {
return this.$util.Tips({
@ -486,13 +487,23 @@
// #endif
goICP() {
// #ifdef H5
window.open("http://beian.miit.gov.cn/");
window.open(this.site_config.icp_url);
// #endif
// #ifdef MP
uni.navigateTo({
url: `/pages/annex/web_view/index?url=https://beian.miit.gov.cn/`,
url: `/pages/annex/web_view/index?url=` + this.site_config.icp_url,
});
// #endif
},
goNetwork() {
// #ifdef H5
window.open(this.site_config.network_security_url);
// #endif
// #ifdef MP
uni.navigateTo({
url: `/pages/annex/web_view/index?url=` + this.site_config.network_security_url,
});
// #endif
},
onLoadFun() {},
reconnect() {

View File

@ -10,7 +10,8 @@
<view class='money'>
<view>{{orderInfo.total_price}}{{$t(`积分`)}}</view>
<view>x{{orderInfo.total_num}}</view>
</view>
</view>
<view class='line1 gray-sty'>{{orderInfo.suk}}</view>
</view>
</view>
<view class='logisticsCon'>
@ -295,5 +296,10 @@
.logistics .logisticsCon .item .text .data .time {
margin-left: 15rpx;
}
.gray-sty {
width: 100%;
font-size: 24rpx;
color: #999999;
}
</style>