diff --git a/crmeb/app/dao/system/config/SystemStorageDao.php b/crmeb/app/dao/system/config/SystemStorageDao.php index 606b45780..3cf199110 100644 --- a/crmeb/app/dao/system/config/SystemStorageDao.php +++ b/crmeb/app/dao/system/config/SystemStorageDao.php @@ -74,6 +74,8 @@ class SystemStorageDao extends BaseDao $query->where('type', $where['type']); })->where('is_delete', 0)->when(isset($where['access_key']), function ($query) use ($where) { $query->where('access_key', $where['access_key']); + })->when(!empty($where['id']), function ($query) use ($where) { + $query->where('id', $where['id']); }); } } diff --git a/crmeb/app/services/order/StoreOrderDeliveryServices.php b/crmeb/app/services/order/StoreOrderDeliveryServices.php index 136a54f14..e7519c69a 100644 --- a/crmeb/app/services/order/StoreOrderDeliveryServices.php +++ b/crmeb/app/services/order/StoreOrderDeliveryServices.php @@ -441,7 +441,6 @@ class StoreOrderDeliveryServices extends BaseServices $orderInfoServices = app()->make(StoreOrderCartInfoServices::class); $storeName = $orderInfoServices->getCarIdByProductTitle((int)$orderInfo->id); // 发货信息录入 - event('OrderShipping', [$orderInfo, $type, $data['delivery_id'], $data['delivery_name']]); $res = []; switch ($type) { case 1://快递发货 @@ -458,6 +457,13 @@ class StoreOrderDeliveryServices extends BaseServices default: throw new AdminException(400522); } + if (!$data['delivery_id'] && !empty($res['kuaidinum'])) { + $data['delivery_id'] = $res['kuaidinum']; + } + if (!$data['delivery_id']) { + $data['delivery_id'] = uniqid(); + } + event('OrderShipping', [$orderInfo, $type, $data['delivery_id'], $data['delivery_name']]); //到期自动收货 event('OrderDeliveryListener', [$orderInfo, $storeName, $data, $type]); return $res; diff --git a/crmeb/app/services/system/config/SystemStorageServices.php b/crmeb/app/services/system/config/SystemStorageServices.php index 2fa7401f1..4cea4ea9e 100644 --- a/crmeb/app/services/system/config/SystemStorageServices.php +++ b/crmeb/app/services/system/config/SystemStorageServices.php @@ -217,7 +217,7 @@ class SystemStorageServices extends BaseServices $make->update('tengxun_appid', ['value' => json_encode($appid)], 'menu_name'); break; } - \crmeb\services\CacheService::clear(); + $make->cacheDriver()->clear(); } } @@ -315,6 +315,11 @@ class SystemStorageServices extends BaseServices case 4:// cos 腾讯云 $upload = UploadService::init($type); $list = $upload->listbuckets(); + if (!empty($list['Name'])) { + $newList = $list; + $list = []; + $list[] = $newList; + } $config = $this->getStorageConfig($type); foreach ($list as $item) { if (!$this->dao->count(['name' => $item['Name'], 'access_key' => $config['accessKey']])) { @@ -438,6 +443,9 @@ class SystemStorageServices extends BaseServices //是否添加过域名不存在需要绑定域名 $domainList = $upload->getDomian($info->name, $info->region); $domainParse = parse_url($domain); + if (false === $domainParse) { + throw new AdminException('域名输入有误'); + } if (!in_array($domainParse['host'], $domainList)) { //绑定域名到云储存桶 $res = $upload->bindDomian($info->name, $domain, $info->region); diff --git a/crmeb/crmeb/services/upload/storage/Cos.php b/crmeb/crmeb/services/upload/storage/Cos.php index c01041944..65272084f 100644 --- a/crmeb/crmeb/services/upload/storage/Cos.php +++ b/crmeb/crmeb/services/upload/storage/Cos.php @@ -478,7 +478,9 @@ class Cos extends BaseUpload 'Type' => 'REST', 'ForcedReplacement' => 'CNAME' ]); - $res = $res->toArray(); + if (method_exists($res, 'toArray')) { + $res = $res->toArray(); + } if ($res['RequestId'] ?? null) { return true; } diff --git a/template/admin/src/locale/index.js b/template/admin/src/locale/index.js deleted file mode 100644 index ccbf1caa9..000000000 --- a/template/admin/src/locale/index.js +++ /dev/null @@ -1,37 +0,0 @@ -import Vue from 'vue'; -import VueI18n from 'vue-i18n'; -import { localRead } from '@/libs/util'; -import customZhCn from './lang/zh-CN'; -import customZhTw from './lang/zh-TW'; -import customEnUs from './lang/en-US'; -import zhCnLocale from 'iview/src/locale/lang/zh-CN'; -import enUsLocale from 'iview/src/locale/lang/en-US'; -import zhTwLocale from 'iview/src/locale/lang/zh-TW'; - -Vue.use(VueI18n); - -// 自动根据浏览器系统语言设置语言 -const navLang = navigator.language; -const localLang = navLang === 'zh-CN' || navLang === 'en-US' ? navLang : false; -let lang = localLang || localRead('local') || 'zh-CN'; - -Vue.config.lang = lang; - -// vue-i18n 6.x+写法 -Vue.locale = () => {}; -const messages = { - 'zh-CN': Object.assign(zhCnLocale, customZhCn), - 'zh-TW': Object.assign(zhTwLocale, customZhTw), - 'en-US': Object.assign(enUsLocale, customEnUs), -}; -const i18n = new VueI18n({ - locale: lang, - messages, -}); - -export default i18n; - -// vue-i18n 5.x写法 -// Vue.locale('zh-CN', Object.assign(zhCnLocale, customZhCn)) -// Vue.locale('en-US', Object.assign(zhTwLocale, customZhTw)) -// Vue.locale('zh-TW', Object.assign(enUsLocale, customEnUs)) diff --git a/template/admin/src/locale/lang/en-US.js b/template/admin/src/locale/lang/en-US.js deleted file mode 100644 index 40174ca9e..000000000 --- a/template/admin/src/locale/lang/en-US.js +++ /dev/null @@ -1,47 +0,0 @@ -export default { - home: 'Home', - login: 'Login', - components: 'Components', - count_to_page: 'Count-to', - tables_page: 'Table', - split_pane_page: 'Split-pane', - markdown_page: 'Markdown-editor', - editor_page: 'Rich-Text-Editor', - icons_page: 'Custom-icon', - img_cropper_page: 'Image-editor', - update: 'Update', - doc: 'Document', - join_page: 'QQ Group', - update_table_page: 'Update .CSV', - update_paste_page: 'Paste Table Data', - multilevel: 'multilevel', - directive_page: 'Directive', - level_1: 'Level-1', - level_2: 'Level-2', - level_2_1: 'Level-2-1', - level_2_3: 'Level-2-3', - level_2_2: 'Level-2-2', - level_2_2_1: 'Level-2-2-1', - level_2_2_2: 'Level-2-2-2', - excel: 'Excel', - 'upload-excel': 'Upload Excel', - 'export-excel': 'Export Excel', - tools_methods_page: 'Tools Methods', - drag_list_page: 'Drag-list', - i18n_page: 'Internationalization', - modalTitle: 'Modal Title', - content: 'This is the modal box content.', - buttonText: 'Show Modal', - 'i18n-tip': - 'Note: Only this page is multi-language, other pages do not add language content to the multi-language package.', - error_store_page: 'Error Collection', - error_logger_page: 'Error Logger', - query: 'Query', - params: 'Params', - cropper_page: 'Cropper', - message_page: 'Message Center', - tree_table_page: 'Tree Table', - org_tree_page: 'Org Tree', - drag_drawer_page: 'Draggable Drawer', - tree_select_page: 'Tree Selector', -}; diff --git a/template/admin/src/locale/lang/zh-CN.js b/template/admin/src/locale/lang/zh-CN.js deleted file mode 100644 index 8f10be012..000000000 --- a/template/admin/src/locale/lang/zh-CN.js +++ /dev/null @@ -1,46 +0,0 @@ -export default { - home: '首页问问', - login: '登录', - components: '组件', - count_to_page: '数字渐变', - tables_page: '多功能表格', - split_pane_page: '分割窗口', - markdown_page: 'Markdown编辑器', - editor_page: '富文本编辑器', - icons_page: '自定义图标', - img_cropper_page: '图片编辑器', - update: '上传数据', - join_page: 'QQ群问问', - doc: '文档', - update_table_page: '上传CSV文件', - update_paste_page: '粘贴表格数据', - multilevel: '多级菜单', - directive_page: '指令', - level_1: 'Level-1', - level_2: 'Level-2', - level_2_1: 'Level-2-1', - level_2_3: 'Level-2-3', - level_2_2: 'Level-2-2', - level_2_2_1: 'Level-2-2-1', - level_2_2_2: 'Level-2-2-2', - excel: 'Excel', - 'upload-excel': '上传excel', - 'export-excel': '导出excel', - tools_methods_page: '工具函数', - drag_list_page: '拖拽列表', - i18n_page: '多语言', - modalTitle: '模态框题目', - content: '这是模态框内容', - buttonText: '显示模态框', - 'i18n-tip': '注:仅此页做了多语言,其他页面没有在多语言包中添加语言内容', - error_store_page: '错误收集', - error_logger_page: '错误日志', - query: '带参路由', - params: '动态路由', - cropper_page: '图片裁剪', - message_page: '消息中心', - tree_table_page: '树状表格', - org_tree_page: '组织结构树', - drag_drawer_page: '可拖动抽屉', - tree_select_page: '树状下拉选择器2', -}; diff --git a/template/admin/src/locale/lang/zh-TW.js b/template/admin/src/locale/lang/zh-TW.js deleted file mode 100644 index c4598d943..000000000 --- a/template/admin/src/locale/lang/zh-TW.js +++ /dev/null @@ -1,46 +0,0 @@ -export default { - home: '首頁', - login: '登錄', - components: '组件', - count_to_page: '数字渐变', - tables_page: '多功能表格', - split_pane_page: '分割窗口', - markdown_page: 'Markdown編輯器', - editor_page: '富文本編輯器', - icons_page: '自定義圖標', - img_cropper_page: '圖片編輯器', - update: '上傳數據', - join_page: 'QQ群', - doc: '文檔', - update_table_page: '上傳CSV文件', - update_paste_page: '粘貼表格數據', - multilevel: '多级菜单', - directive_page: '指令', - level_1: 'Level-1', - level_2: 'Level-2', - level_2_1: 'Level-2-1', - level_2_3: 'Level-2-3', - level_2_2: 'Level-2-2', - level_2_2_1: 'Level-2-2-1', - level_2_2_2: 'Level-2-2-2', - excel: 'Excel', - 'upload-excel': '上傳excel', - 'export-excel': '導出excel', - tools_methods_page: '工具函數', - drag_list_page: '拖拽列表', - i18n_page: '多語言', - modalTitle: '模態框題目', - content: '這是模態框內容', - buttonText: '顯示模態框', - 'i18n-tip': '注:僅此頁做了多語言,其他頁面沒有在多語言包中添加語言內容', - error_store_page: '錯誤收集', - error_logger_page: '錯誤日誌', - query: '帶參路由', - params: '動態路由', - cropper_page: '圖片裁剪', - message_page: '消息中心', - tree_table_page: '樹狀表格', - org_tree_page: '組織結構樹', - drag_drawer_page: '可拖動抽屜', - tree_select_page: '樹狀下拉選擇器', -}; diff --git a/template/admin/src/main.js b/template/admin/src/main.js index eab308837..6d1370a9f 100644 --- a/template/admin/src/main.js +++ b/template/admin/src/main.js @@ -16,13 +16,11 @@ import router from './router'; import store from './store'; import ViewUI from 'view-design'; -// import ViewUI from 'view-design' Vue.prototype.bus = new Vue(); import Router from 'vue-router'; import Auth from '@/libs/wechat'; import 'view-design/dist/styles/iview.css'; import { i18n } from '@/i18n/index.js'; -// import i18n from '@/locale'; import config from '@/config'; import importDirective from '@/directive'; @@ -31,7 +29,6 @@ import installPlugin from '@/plugin'; import './index.less'; import '@/assets/icons/iconfont.css'; import '@/assets/iconfont/iconfont.css'; -import './assets/iconfont/iconfont.css'; import '@/theme/index.scss'; import Element from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; @@ -73,8 +70,6 @@ import timeOptions from '@/libs/timeOptions'; import scroll from '@/libs/loading'; import * as tools from '@/libs/tools'; import VueTreeList from 'vue-tree-list'; -import { getHeaderName, getHeaderSider, getMenuSider, getSiderSubmenu } from '@/libs/system'; -import { getMenuopen } from '@/libs/util'; // 复制到粘贴板插件 import VueClipboard from 'vue-clipboard2'; @@ -101,9 +96,6 @@ import settings from '@/setting'; Vue.prototype.$routeProStr = settings.routePre; -// 实际打包时应该不引入mock -/* eslint-disable */ -if (process.env.NODE_ENV !== 'production') require('@/mock'); window.Promise = Promise; Vue.prototype.$modalForm = modalForm; Vue.prototype.$modalSure = modalSure; @@ -168,7 +160,7 @@ import vuescroll from 'vuescroll'; Vue.use(vuescroll); -// register global utility filters +// 注册全局 过滤器 Object.keys(filters).forEach((key) => { Vue.filter(key, filters[key]); }); @@ -204,8 +196,15 @@ new Vue({ } }); } - - if (to.name == 'product_productAdd') { + console.log(to.name); + if ( + [ + 'product_productAdd', + 'marketing_bargainCreate', + 'marketing_storeSeckillCreate', + 'marketing_storeIntegralCreate', + ].includes(to.name) + ) { let route = to.matched[1].path.split(':')[0]; this.$store.state.menus.oneLvRoutes.map((e) => { if (route.indexOf(e.path) != -1) { diff --git a/template/admin/src/mock/data.js b/template/admin/src/mock/data.js deleted file mode 100644 index 62f8476c2..000000000 --- a/template/admin/src/mock/data.js +++ /dev/null @@ -1,44 +0,0 @@ -import Mock from 'mockjs'; -import { doCustomTimes } from '@/libs/util'; -import orgData from './data/org-data'; -import { treeData } from './data/tree-select'; -const Random = Mock.Random; - -export const getTableData = (req) => { - let tableData = []; - doCustomTimes(5, () => { - tableData.push( - Mock.mock({ - name: '@name', - email: '@email', - createTime: '@date', - }), - ); - }); - return tableData; -}; - -export const getDragList = (req) => { - let dragList = []; - doCustomTimes(5, () => { - dragList.push( - Mock.mock({ - name: Random.csentence(10, 13), - id: Random.increment(10), - }), - ); - }); - return dragList; -}; - -export const uploadImage = (req) => { - return Promise.resolve(); -}; - -export const getOrgData = (req) => { - return orgData; -}; - -export const getTreeSelectData = (req) => { - return treeData; -}; diff --git a/template/admin/src/mock/data/org-data.js b/template/admin/src/mock/data/org-data.js deleted file mode 100644 index 028a5f009..000000000 --- a/template/admin/src/mock/data/org-data.js +++ /dev/null @@ -1,50 +0,0 @@ -export default { - id: 0, - label: 'XXX科技有限公司', - children: [ - { - id: 2, - label: '产品研发部', - children: [ - { - id: 5, - label: '研发-前端', - }, - { - id: 6, - label: '研发-后端', - }, - { - id: 9, - label: 'UI设计', - }, - { - id: 10, - label: '产品经理', - }, - ], - }, - { - id: 3, - label: '销售部', - children: [ - { - id: 7, - label: '销售一部', - }, - { - id: 8, - label: '销售二部', - }, - ], - }, - { - id: 4, - label: '财务部', - }, - { - id: 11, - label: 'HR人事', - }, - ], -}; diff --git a/template/admin/src/mock/data/tree-select.js b/template/admin/src/mock/data/tree-select.js deleted file mode 100644 index 54603866a..000000000 --- a/template/admin/src/mock/data/tree-select.js +++ /dev/null @@ -1,82 +0,0 @@ -export const treeData = [ - { - id: 1, - title: '1', - children: [ - { - id: 11, - title: '1-1', - loading: false, - children: [ - // { - // id: 111, - // title: '1-1-1' - // }, - // { - // id: 112, - // title: '1-1-2' - // }, - // { - // id: 113, - // title: '1-1-3' - // }, - // { - // id: 114, - // title: '1-1-4' - // } - ], - }, - { - id: 12, - title: '1-2', - children: [ - { - id: 121, - title: '1-2-1', - }, - ], - }, - ], - }, -]; - -export const newTreeData = [ - { - id: 'a', - title: 'a', - children: [ - { - id: 'a1', - title: 'a-1', - children: [ - { - id: 112, - title: '1-1-2', - }, - { - id: 'a12', - title: 'a-1-2', - }, - { - id: 'a13', - title: 'a-1-3', - }, - { - id: 'a14', - title: 'a-1-4', - }, - ], - }, - { - id: 'a2', - title: 'a-2', - children: [ - { - id: 'a21', - title: 'b-2-1', - }, - ], - }, - ], - }, -]; diff --git a/template/admin/src/mock/index.js b/template/admin/src/mock/index.js deleted file mode 100644 index 952717b50..000000000 --- a/template/admin/src/mock/index.js +++ /dev/null @@ -1,28 +0,0 @@ -import Mock from 'mockjs'; -// import { login, logout, getUserInfo } from './login' -import { getTableData, getDragList, uploadImage, getOrgData, getTreeSelectData } from './data'; -import { getMessageInit, getContentByMsgId, hasRead, removeReaded, restoreTrash, messageCount } from './user'; - -// 配置Ajax请求延时,可用来测试网络延迟大时项目中一些效果 -// Mock.setup({ -// timeout: 1000 -// }); -// -// // 登录相关和获取用户信息 -// Mock.mock(/\/login/, login); -// Mock.mock(/\/get_info/, getUserInfo); -// Mock.mock(/\/logout/, logout); -// Mock.mock(/\/get_table_data/, getTableData); -// Mock.mock(/\/get_drag_list/, getDragList); -// Mock.mock(/\/save_error_logger/, 'success'); -// Mock.mock(/\/image\/upload/, uploadImage); -// Mock.mock(/\/message\/init/, getMessageInit); -// Mock.mock(/\/message\/content/, getContentByMsgId); -// Mock.mock(/\/message\/has_read/, hasRead); -// Mock.mock(/\/message\/remove_readed/, removeReaded); -// Mock.mock(/\/message\/restore/, restoreTrash); -// Mock.mock(/\/message\/count/, messageCount); -// Mock.mock(/\/get_org_data/, getOrgData); -// Mock.mock(/\/get_tree_select_data/, getTreeSelectData); -// -// export default Mock diff --git a/template/admin/src/mock/login.js b/template/admin/src/mock/login.js deleted file mode 100644 index ab5fa7bc8..000000000 --- a/template/admin/src/mock/login.js +++ /dev/null @@ -1,31 +0,0 @@ -// import { getParams } from '@/libs/util' -// const USER_MAP = { -// super_admin: { -// name: 'super_admin', -// user_id: '1', -// access: ['super_admin', 'admin'], -// token: 'super_admin', -// avatar: 'https://file.iviewui.com/dist/a0e88e83800f138b94d2414621bd9704.png' -// }, -// admin: { -// name: 'admin', -// user_id: '2', -// access: ['admin'], -// token: 'admin', -// avatar: 'https://avatars0.githubusercontent.com/u/20942571?s=460&v=4' -// } -// } -// -// export const login = req => { -// req = JSON.parse(req.body) -// return { token: USER_MAP[req.userName].token } -// } -// -// export const getUserInfo = req => { -// const params = getParams(req.url) -// return USER_MAP[params.token] -// } -// -// export const logout = req => { -// return null -// } diff --git a/template/admin/src/mock/user.js b/template/admin/src/mock/user.js deleted file mode 100644 index 956665903..000000000 --- a/template/admin/src/mock/user.js +++ /dev/null @@ -1,64 +0,0 @@ -import Mock from 'mockjs'; -import { doCustomTimes } from '@/libs/util'; -const Random = Mock.Random; - -export const getMessageInit = () => { - let unreadList = []; - doCustomTimes(3, () => { - unreadList.push( - Mock.mock({ - title: Random.cword(10, 15), - create_time: '@date', - msg_id: Random.increment(100), - }), - ); - }); - let readedList = []; - doCustomTimes(4, () => { - readedList.push( - Mock.mock({ - title: Random.cword(10, 15), - create_time: '@date', - msg_id: Random.increment(100), - }), - ); - }); - let trashList = []; - doCustomTimes(2, () => { - trashList.push( - Mock.mock({ - title: Random.cword(10, 15), - create_time: '@date', - msg_id: Random.increment(100), - }), - ); - }); - return { - unread: unreadList, - readed: readedList, - trash: trashList, - }; -}; - -export const getContentByMsgId = () => { - return `
        这是消息内容,这个内容是使用富文本编辑器编辑的,所以你可以看到一些格式
  1. 你可以查看Mock返回的数据格式,和api请求的接口,来确定你的后端接口的开发
  2. 使用你的真实接口后,前端页面基本不需要修改即可满足基本需求
  3. 快来试试吧

${Random.csentence( - 100, - 200, - )}

`; -}; - -export const hasRead = () => { - return true; -}; - -export const removeReaded = () => { - return true; -}; - -export const restoreTrash = () => { - return true; -}; - -export const messageCount = () => { - return 3; -}; diff --git a/template/admin/src/pages/marketing/storeBargain/index.vue b/template/admin/src/pages/marketing/storeBargain/index.vue index 094f6dfce..aef9b6f0e 100644 --- a/template/admin/src/pages/marketing/storeBargain/index.vue +++ b/template/admin/src/pages/marketing/storeBargain/index.vue @@ -83,9 +83,9 @@