Browse Source

初始化

zhaoyun 2 months ago
commit
1b4afb8673
100 changed files with 6643 additions and 0 deletions
  1. 14 0
      mer_mer_admin/.editorconfig
  2. 15 0
      mer_mer_admin/.env.development
  3. 7 0
      mer_mer_admin/.env.production
  4. 6 0
      mer_mer_admin/.env.staging
  5. 6 0
      mer_mer_admin/.eslintignore
  6. 10 0
      mer_mer_admin/.eslintrc.js
  7. 23 0
      mer_mer_admin/.gitignore
  8. 22 0
      mer_mer_admin/.prettierignore
  9. 35 0
      mer_mer_admin/.prettierrc.js
  10. 5 0
      mer_mer_admin/.travis.yml
  11. 21 0
      mer_mer_admin/LICENSE
  12. 18 0
      mer_mer_admin/README.ZBKJ.md
  13. 261 0
      mer_mer_admin/README.md
  14. 11 0
      mer_mer_admin/babel.config.js
  15. 23 0
      mer_mer_admin/jest.config.js
  16. 9 0
      mer_mer_admin/jsconfig.json
  17. 99 0
      mer_mer_admin/package.json
  18. 18 0
      mer_mer_admin/plop-templates/component/index.hbs
  19. 59 0
      mer_mer_admin/plop-templates/component/prompt.js
  20. 15 0
      mer_mer_admin/plop-templates/store/index.hbs
  21. 66 0
      mer_mer_admin/plop-templates/store/prompt.js
  22. 9 0
      mer_mer_admin/plop-templates/utils.js
  23. 18 0
      mer_mer_admin/plop-templates/view/index.hbs
  24. 59 0
      mer_mer_admin/plop-templates/view/prompt.js
  25. 9 0
      mer_mer_admin/plopfile.js
  26. 5 0
      mer_mer_admin/postcss.config.js
  27. BIN
      mer_mer_admin/public/favicon.ico
  28. 23 0
      mer_mer_admin/public/index.html
  29. 38 0
      mer_mer_admin/public/preview.html
  30. 230 0
      mer_mer_admin/public/static/tinymce4.7.5/langs/zh_CN.js
  31. 138 0
      mer_mer_admin/public/static/tinymce4.7.5/plugins/codesample/css/prism.css
  32. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-cool.gif
  33. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-cry.gif
  34. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-embarassed.gif
  35. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-foot-in-mouth.gif
  36. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-frown.gif
  37. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-innocent.gif
  38. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-kiss.gif
  39. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-laughing.gif
  40. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-money-mouth.gif
  41. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-sealed.gif
  42. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-smile.gif
  43. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-surprised.gif
  44. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-tongue-out.gif
  45. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-undecided.gif
  46. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-wink.gif
  47. BIN
      mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-yell.gif
  48. 154 0
      mer_mer_admin/public/static/tinymce4.7.5/plugins/visualblocks/css/visualblocks.css
  49. 0 0
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/content.inline.min.css
  50. 0 0
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/content.min.css
  51. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-mobile.woff
  52. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.eot
  53. 27 0
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.svg
  54. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.ttf
  55. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.woff
  56. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.eot
  57. 131 0
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.svg
  58. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.ttf
  59. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.woff
  60. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/anchor.gif
  61. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/loader.gif
  62. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/object.gif
  63. BIN
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/trans.gif
  64. 0 0
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/skin.min.css
  65. 0 0
      mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/skin.min.css.map
  66. 1 0
      mer_mer_admin/public/static/tinymce4.7.5/tinymce.min.js
  67. 100 0
      mer_mer_admin/src/App.vue
  68. 52 0
      mer_mer_admin/src/api/authInformation.js
  69. 154 0
      mer_mer_admin/src/api/categoryApi.js
  70. 91 0
      mer_mer_admin/src/api/dashboard.js
  71. 54 0
      mer_mer_admin/src/api/deliveryPersonnel.js
  72. 109 0
      mer_mer_admin/src/api/devise.js
  73. 166 0
      mer_mer_admin/src/api/finance.js
  74. 154 0
      mer_mer_admin/src/api/group.js
  75. 161 0
      mer_mer_admin/src/api/logistics.js
  76. 748 0
      mer_mer_admin/src/api/marketing.js
  77. 102 0
      mer_mer_admin/src/api/merchant.js
  78. 367 0
      mer_mer_admin/src/api/order.js
  79. 738 0
      mer_mer_admin/src/api/product.js
  80. 142 0
      mer_mer_admin/src/api/productCdkey.js
  81. 42 0
      mer_mer_admin/src/api/req.js
  82. 112 0
      mer_mer_admin/src/api/role.js
  83. 22 0
      mer_mer_admin/src/api/roleApi.js
  84. 93 0
      mer_mer_admin/src/api/staff.js
  85. 74 0
      mer_mer_admin/src/api/systemForm.js
  86. 56 0
      mer_mer_admin/src/api/systemFormConfig.js
  87. 34 0
      mer_mer_admin/src/api/systemPcConfig.js
  88. 338 0
      mer_mer_admin/src/api/systemSetting.js
  89. 166 0
      mer_mer_admin/src/api/systemadmin.js
  90. 75 0
      mer_mer_admin/src/api/user.js
  91. BIN
      mer_mer_admin/src/assets/401_images/401.gif
  92. BIN
      mer_mer_admin/src/assets/404_images/404.png
  93. BIN
      mer_mer_admin/src/assets/404_images/404_cloud.png
  94. 14 0
      mer_mer_admin/src/assets/iconfont/iconfont-weapp-icon.css
  95. 894 0
      mer_mer_admin/src/assets/iconfont/iconfont.css
  96. BIN
      mer_mer_admin/src/assets/imgs/app.png
  97. BIN
      mer_mer_admin/src/assets/imgs/bg.jpg
  98. BIN
      mer_mer_admin/src/assets/imgs/capsule.png
  99. BIN
      mer_mer_admin/src/assets/imgs/couponBg.png
  100. BIN
      mer_mer_admin/src/assets/imgs/couponBg2.png

+ 14 - 0
mer_mer_admin/.editorconfig

@@ -0,0 +1,14 @@
+# https://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false

+ 15 - 0
mer_mer_admin/.env.development

@@ -0,0 +1,15 @@
+# just a flag
+ENV = 'development'
+
+# base api
+# VUE_APP_BASE_API = '/dev-api'
+VUE_APP_BASE_API = 'http://127.0.0.1:8080'
+
+# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
+# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
+# It only does one thing by converting all import() to require().
+# This configuration can significantly increase the speed of hot updates,
+# when you have a large number of pages.
+# Detail:  https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
+
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 7 - 0
mer_mer_admin/.env.production

@@ -0,0 +1,7 @@
+# just a flag
+ENV = 'production'
+
+# base api
+# VUE_APP_BASE_API = '/prod-api'
+VUE_APP_BASE_API = 'http://127.0.0.1:8080'
+

+ 6 - 0
mer_mer_admin/.env.staging

@@ -0,0 +1,6 @@
+ENV = 'production'
+
+# base api
+# VUE_APP_BASE_API = '/prod-api'
+VUE_APP_BASE_API = 'http://127.0.0.1:8080'
+

+ 6 - 0
mer_mer_admin/.eslintignore

@@ -0,0 +1,6 @@
+build/*.js
+src/assets
+public
+dist
+src/components/FormGenerator
+src/directive

+ 10 - 0
mer_mer_admin/.eslintrc.js

@@ -0,0 +1,10 @@
+module.exports = {
+  // root: true,
+  // parser: 'vue-eslint-parser',
+  // parserOptions: {
+  //   sourceType: 'module',
+  //   ecmaVersion: 6,
+  //   parser: 'babel-eslint',
+  // },
+  // extends: ['plugin:prettier/recommended'],
+};

+ 23 - 0
mer_mer_admin/.gitignore

@@ -0,0 +1,23 @@
+.DS_Store
+node_modules/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+**/*.log
+
+tests/**/coverage/
+tests/e2e/reports
+selenium-debug.log
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+
+package-lock.json
+yarn.lock

+ 22 - 0
mer_mer_admin/.prettierignore

@@ -0,0 +1,22 @@
+.DS_Store
+node_modules/
+dist/
+public/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+**/*.log
+
+tests/**/coverage/
+tests/e2e/reports
+selenium-debug.log
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+*.md

+ 35 - 0
mer_mer_admin/.prettierrc.js

@@ -0,0 +1,35 @@
+module.exports = {
+  // 一行最多 120 字符
+  printWidth: 120,
+  // 使用 2 个空格缩进
+  tabWidth: 2,
+  // 不使用 tab 缩进,而使用空格
+  useTabs: false,
+  // 行尾需要有分号
+  semi: true,
+  // 使用单引号代替双引号
+  singleQuote: true,
+  // 对象的 key 仅在必要时用引号
+  quoteProps: 'as-needed',
+  // jsx 不使用单引号,而使用双引号
+  jsxSingleQuote: false,
+  // 末尾使用逗号
+  trailingComma: 'all',
+  // 大括号内的首尾需要空格 { foo: bar }
+  bracketSpacing: true,
+  // 箭头函数,只有一个参数的时候,也需要括号
+  arrowParens: 'always',
+  // 每个文件格式化的范围是文件的全部内容
+  rangeStart: 0,
+  rangeEnd: Infinity,
+  // 不需要写文件开头的 @prettier
+  requirePragma: false,
+  // 不需要自动在文件开头插入 @prettier
+  insertPragma: false,
+  // 使用默认的折行标准
+  proseWrap: 'preserve',
+  // 根据显示样式决定 html 要不要折行
+  htmlWhitespaceSensitivity: 'css',
+  // 换行符使用 lf
+  endOfLine: 'lf',
+};

+ 5 - 0
mer_mer_admin/.travis.yml

@@ -0,0 +1,5 @@
+language: node_js
+node_js: 10
+script: npm run test
+notifications:
+  email: false

+ 21 - 0
mer_mer_admin/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017-present PanJiaChen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 18 - 0
mer_mer_admin/README.ZBKJ.md

@@ -0,0 +1,18 @@
+公用组件
+无限极分类组件 src/components/Category
+使用范围:菜单,文章等各种分类配置数据
+
+表单生成组件
+https://github.com/JakHuang/form-generator
+
+json渲染表单以及是否需要编辑数据回填的功能以下为例
+示例:src/views/maintain/devconfig/combineEdit.vue
+
+
+<parser v-if="formConf.fields.length > 0" :isEdit="isCreate === 1" :form-conf="formConf" :formEditData="editData" @submit="handlerSubmit" />
+注意:设置单选按钮的值时需要带上单引号,要不渲染待编辑数据时不会自动选中
+
+提示:如果不需要每次刷新页面都弹出二维码,请在src/layout/index.vue中注释或者删除15行代码。
+```
+<div class="open-image" @click="clear" v-if="openImage"><img src="@/assets/imgs/pc1.png" alt=""></div>
+```

+ 261 - 0
mer_mer_admin/README.md

@@ -0,0 +1,261 @@
+# CRMEB Admin
+## 开发规范
+统一使用ES6 语法
+方法注释
+/*
+* th => 表头
+* data => 数据
+* fileName => 文件名
+* fileType => 文件类型
+* sheetName => sheet页名
+*/
+export default function toExcel ({ th, data, fileName, fileType, sheetName }) 
+行注释 //
+
+### 命名
+
+页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList 
+例如:商品模块
+store 商品
+    ├─ store 商品管理
+        ├─index.vue 首页
+        ├─ creatStore  新建商品
+            ├─ index.vue
+        ├─ sort 商品分类
+            ├─ index.vue
+        ├─storeAttr 商品规格
+            ├─ index.vue
+        ├─storeComment 商品评论
+            ├─ index.vue    
+
+页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList
+
+类名函数命名 大驼峰式 例如:addUser
+变量命名 小驼峰式 例如:user 或者 userInfo
+常量 采用全大些下划线命名 例如:VUE_APP_API_URl
+
+### 文件管理规范
+views 页面模块必须件文件夹区分
+api 接口一个模块一个文件
+组建 一个组建一个文件夹
+plugins 插件一个插件一个文件夹
+vuex 路由状态管理,一个模块在modules 中建一个文件夹
+router 一个模块一个模块在modules 中建一个文件夹
+style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动
+自定义通用样式 style.less,每次添加必须加注释,页面独立样式在在页面内写,后缀less 格式
+组建样式 styles 中添加文件夹 composents 对应components 目录新建样式文件
+utils 自定义工具js 独立命名,一般不用新建文件夹
+
+## 模块命名
+~~~
+├─ login 登录
+├─ dashboard 首页
+├─ store 商品管理
+├─ order 系统订单管理
+├─ distribution 分销
+├─ user 用户管理
+├─ content 内容管理
+├─ appSetting 各个应用模块功能管理公众号、小程序、支付宝、百度小程序、今日头条小程序 
+├─ marketing 营销管理 优惠劵 积分 秒杀
+├─ sms 设置 短信设置
+├─ systemSetting 设置 管理员权限 系统设置 物流设置
+├─ maintain 维护 配置分类 组合数据 表单配置
+├─ error-page 错误页
+
+~~~
+## 目录结构
+主要目录结构及说明:
+~~~
+├── public                         # 静态资源
+│   ├── favicon.ico                # favicon图标
+│   └── index.html                 # html 模板
+├── src                            # 源代码
+│   ├── api                        # 所有请求
+│   │    └──authInformation.js     # 有关版权的接口
+│   │    └──user.js                # 有关登录/用户的接口
+│   │    └──categoryApi.js         # 有关配置的接口
+│   │    └──dashboard.js           # 有关主页的接口
+│   │    └──logistics.js           # 有关城市数据、物流配置、运费模板的接口
+│   │    └──marketing.js           # 有关优惠券、视频号的接口
+│   │    └──merchant.js            # 有关商户的接口
+│   │    └──order.js               # 有关订单的接口
+│   │    └──role.js                # 有关权限的接口
+│   │    └──roleApi.js             # 有关菜单的接口
+│   │    └──product.js             # 有关商品的接口
+│   │    └──systemadmin.js         # 有关管理员的接口
+│   │    └──systemFormConfig.js    # 有关表单配置的接口
+│   │    └──systemSetting.js       # 有关上传文件的接口
+│   │    └──user.js                # 有关用户的接口
+│   ├── assets                 # 图片、svg 等静态资源
+│   ├── components            # 公共组件
+│   │    └──base       # 公共组件
+│   │    └──Breadcrumb        # 头部标题标签
+│   │    └──echartsNew        # 统计
+│   │    └──Category          # 分类
+│   │    └──FormGenerator     # 表单配置
+│   │    └──couponList        # 优惠劵列表
+│   │    └──detailUser        # 用户详情
+│   │    └──goodsList         # 商品列表
+│   │    └──Hamburger         # 导航收缩组件
+│   │    └──HeaderSearch      # 导航搜索组件
+│   │    └──linkaddress       # 页面设计弹窗组件
+│   │    └──orderDetail       # 订单详情组件
+│   │    └──RightPanel        # 右侧设置按钮,设置导航相关
+│   │    └──Screenfull        # 全屏
+│   │    └──SvgIcon           # svg图标
+│   │    └──Tinymce           # 富文本编辑器
+│   │    └──ThemePicker       # 右侧设置按钮,设置组题颜色
+│   │    └──UploadExcel       # 下载Excel
+│   │    └──uploadFrom        # 自定义表单上传组件
+│   │    └──userList          # 用户列表
+│   │    └──TopNav            # 顶部一级导航
+│   │    └──TimeSelect        # 时间段选择
+│   ├── layouts               # 导航布局
+│   │    ├──index             # 主页面
+│   │    ├──components        # 导航组件
+│   │        └──copyright     # 脚部版权信息
+│   │        └──Settings      # 右边小按钮,设置导航等
+│   │        └──Sidebar       # 侧边导航
+│   │        └──TagsView      # tab标签页导航
+│   │        └──Navbar        # 头部导航
+│   │        └──AppMain       # 导航路由
+│   │        └──index.js      # 组件引用
+│   │    └──mixins            # 自适应大小
+│   ├── libs                  # 公共js方法
+│   │    └──settingMer        # 配置请求地址
+│   │    └──modal-icon.js           # 图标库插件
+│   │    └──modal-parserFrom.js     # 自定义表单弹窗插件
+│   │    └──modal-sure.js           # 确定弹窗插件
+│   │    └──timeOptions.js          # 当前时间日期选择器特有的选项
+│   │    └──yearOptions.js          # 当前年份选择器特有的选项
+│   ├── views                 # 所有页面
+│   │    └──coupon                   # 优惠券
+│   │    └──login                    # 登录
+│   │         └──index               # 登录
+│   │    └──dashboard                # 首页
+│   │    └──product                  # 商品
+│   │         └──creatProduct        # 添加商品
+│   │         └──attr                # 商品规格
+│   │         └──category            # 商品分类
+│   │         └──comment             # 商品评论
+│   │         └──components          # 商品评论
+│   │              └──storeEdit      # 免审编辑库存
+│   │         └──guarantee           # 保障服务组合
+│   │    └──order                    # 订单管理
+│   │         └──index               # 订单列表
+│   │         └──orderSend           # 订单发货
+│   │         └──orderVideoSend      # 视频号订单发货
+│   │         └──refund              # 退款单
+│   │    └──systemSetting            # 设置
+│   │         └──administratorAuthority     # 管理权限
+│   │              └──adminList      # 管理员列表
+│   │              └──identityManager# 身份管理
+│   │              └──permissionRules# 权限规则
+│   │         └──deliverGoods        # 运费模板
+│   │              └──freightSet     # 运费模板 
+│   │         └──modifyStoreInfo           # 商户设置
+│   │         └──systemExport             # 数据导出
+│   │    └──user                     # 用户
+│   │         └──list                # 用户管理
+│   │    └──maintain                 # 维护 
+│   │         └──logistics           # 地址管理
+│   │         └──picture             # 素材管理
+│   │         └──user                # 个人中心
+│   │         └──sensitiveList       # 敏感日志操作 
+│   │    └──financial                # 财务
+│   │         └──capitalFlow         # 资金流水
+│   │         └──closingRecord       # 结算记录
+│   │         └──statement           # 账单管理
+│   │    └──videoChannel             # 视频号管理
+│   │         └──draftList           # 待审核列表
+│   │         └──productList         # 过审商品
+│   │    └──error-page               # 错误页
+│   │         └──404                 # 错误页404
+│   │         └──403                 # 错误页403
+│   ├── filters                      # 过滤器
+│   ├── router                       # 路由配置
+│   │    └──modules                  # 页面路由模块
+│   │         └──user.js             # 有关用户
+│   │         └──appSetting.js       # 有关应用
+│   │         └──coupon.js           # 有关优惠券
+│   │         └──order.js            # 有关订单
+│   │         └──finance.js          # 有关财务
+│   │         └──product.js          # 有关商品
+│   │         └──maintain.js         # 有关维护
+│   │         └──operation.js        # 有关设置
+│   │         └──videoChannel.js     # 有关视频号
+│   │    └──index.js                 # 路由的汇总
+│   ├── store                        # Vuex 状态管理
+│   ├── utils                        # 全局公用方法
+│   │    └──auth.js                  # Cookies管理
+│   │    └──request.js               # 请求封装
+│   │    └──settingMer.js            # 请求地址配置
+│   │    └──ZBKJIutil.js             # 公共函数工具
+│   │    └──validate.js              # 公共教校验工具
+│   │    └──parsing.js               # 通用js方法封装工具
+│   │    └──constants.js             # 全局静态变量工具
+│   │    └──clipboard.js             # 粘贴复制工具
+│   │    └──permission.js            # 权限判断
+│   ├── styles                       # 样式管理
+│   ├── permission.js                # 路由拦截
+│   ├── main.js                      # 入口文件 加载组件 初始化等
+│   └── App.vue                      # 入口页面
+├── tests                      # 测试
+├── .env.xxx                   # 环境变量配置
+├── .eslintrc.js               # eslint 配置项
+├── .babelrc                   # babel-loader 配置
+├── .travis.yml                # 自动化CI配置
+├── vue.config.js              # vue-cli 配置
+├── postcss.config.js          # postcss 配置
+└── package.json               # package.json
+
+
+~~~
+## 开发
+
+```bash
+# 克隆项目
+git clone https://gitee.com/ZhongBangKeJi/crmeb_java/
+
+# 进入项目目录
+cd ##
+
+# 安装依赖
+npm install
+
+# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
+npm install --registry=https://registry.npm.taobao.org
+
+# 启动服务
+npm run dev
+```
+
+浏览器访问 http://localhost:9527
+
+## 发布
+
+```bash
+# 构建测试环境
+npm run build:stage
+
+# 构建生产环境
+npm run build:prod
+```
+
+## 其它
+
+```bash
+# 预览发布环境效果
+npm run preview
+
+# 预览发布环境效果 + 静态资源分析
+npm run preview -- --report
+
+# 代码格式检查
+npm run lint
+
+# 代码格式检查并自动修复
+npm run lint -- --fix
+```
+
+

+ 11 - 0
mer_mer_admin/babel.config.js

@@ -0,0 +1,11 @@
+module.exports = {
+  presets: [
+    [
+      '@vue/app',
+      {
+        useBuiltIns: 'entry',
+        polyfills: ['es6.promise', 'es6.symbol'],
+      },
+    ],
+  ],
+};

+ 23 - 0
mer_mer_admin/jest.config.js

@@ -0,0 +1,23 @@
+module.exports = {
+  moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
+  transform: {
+    '^.+\\.vue$': 'vue-jest',
+    '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
+    '^.+\\.jsx?$': 'babel-jest',
+  },
+  moduleNameMapper: {
+    '^@/(.*)$': '<rootDir>/src/$1',
+  },
+  snapshotSerializers: ['jest-serializer-vue'],
+  testMatch: ['**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'],
+  collectCoverageFrom: [
+    'src/utils/**/*.{js,vue}',
+    '!src/utils/auth.js',
+    '!src/utils/request.js',
+    'src/components/**/*.{js,vue}',
+  ],
+  coverageDirectory: '<rootDir>/tests/unit/coverage',
+  // 'collectCoverage': true,
+  coverageReporters: ['lcov', 'text-summary'],
+  testURL: 'http://localhost/',
+};

+ 9 - 0
mer_mer_admin/jsconfig.json

@@ -0,0 +1,9 @@
+{
+  "compilerOptions": {
+    "baseUrl": "./",
+    "paths": {
+      "@/*": ["src/*"]
+    }
+  },
+  "exclude": ["node_modules", "dist"]
+}

+ 99 - 0
mer_mer_admin/package.json

@@ -0,0 +1,99 @@
+{
+  "name": "crmeb-java-webpc-admin",
+  "version": "4.2.1",
+  "description": "Java mall free open source CRMEB mall JAVA version, SpringBoot + Maven + Swagger + Mybatis Plus + Redis + Uniapp +Vue+elementUI Including mobile terminal, applet, PC background, Api interface; products, users, shopping carts, orders, points, Modules such as coupons, marketing, balance, permissions, roles, system settings, combined data, and drag-and-drop forms have greatly reduced the cost of second-opening.",
+  "author": "CRMEB",
+  "license": "MIT",
+  "scripts": {
+    "dev": "vue-cli-service serve --open",
+    "build:prod": "vue-cli-service build",
+    "build:stage": "vue-cli-service build --mode staging",
+    "preview": "node build/index.js --preview",
+    "prettier:comment": "自动格式化当前目录下的所有文件",
+    "prettier": "prettier --write .",
+    "lint": "eslint --ext .js,.vue src",
+    "test:unit": "jest --clearCache && vue-cli-service test:unit",
+    "test:ci": "npm run lint && npm run test:unit",
+    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
+    "new": "plop",
+    "serve_t": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & npm run serve\n"
+  },
+  "keywords": [
+    "CRMEB Java"
+  ],
+  "repository": {
+    "type": "gitee",
+    "url": "https://gitee.com/ZhongBangKeJi/crmeb_java"
+  },
+  "dependencies": {
+    "@babel/parser": "^7.9.6",
+    "@riophae/vue-treeselect": "0.4.0",
+    "async-validator": "^1.11.2",
+    "axios": "^0.24.0",
+    "babel-polyfill": "^6.26.0",
+    "clipboard": "^2.0.4",
+    "core-js": "^2.6.11",
+    "crypto-js": "^4.2.0",
+    "echarts": "4.2.1",
+    "element-ui": "2.15.6",
+    "file-saver": "2.0.1",
+    "fuse.js": "3.4.4",
+    "js-cookie": "2.2.0",
+    "jsonlint": "1.6.3",
+    "jszip": "3.2.1",
+    "mpvue-calendar": "^2.3.7",
+    "normalize.css": "7.0.0",
+    "nprogress": "0.2.0",
+    "path-to-regexp": "2.4.0",
+    "qrcodejs2": "^0.0.2",
+    "sass": "1.26.2",
+    "sass-loader": "^7.2.0",
+    "screenfull": "^5.0.2",
+    "script-loader": "0.7.2",
+    "throttle-debounce": "^2.1.0",
+    "vconsole": "^3.3.2",
+    "vue": "2.6.10",
+    "vue-awesome-swiper": "^3.1.3",
+    "vue-cropper": "^0.5.8",
+    "vue-echarts": "^4.0.3",
+    "vue-router": "3.0.2",
+    "vue-ydui": "^1.2.6",
+    "vuedraggable": "^2.20.0",
+    "vuex": "3.1.0",
+    "wechat-jssdk": "^5.0.4",
+    "xlsx": "0.14.1"
+  },
+  "devDependencies": {
+    "@babel/core": "7.23.5",
+    "@babel/register": "7.0.0",
+    "@vue/cli-plugin-babel": "3.5.3",
+    "@vue/cli-plugin-unit-jest": "3.5.3",
+    "@vue/cli-service": "4.0.0",
+    "@vue/test-utils": "1.0.0-beta.29",
+    "babel-core": "7.0.0-bridge.0",
+    "babel-jest": "23.6.0",
+    "chalk": "2.4.2",
+    "chokidar": "^3.1.1",
+    "connect": "3.6.6",
+    "html-webpack-plugin": "3.2.0",
+    "mockjs": "1.0.1-beta3",
+    "plop": "2.3.0",
+    "prettier": "^2.5.1",
+    "runjs": "^4.3.2",
+    "script-ext-html-webpack-plugin": "2.1.3",
+    "script-loader": "^0.7.2",
+    "serve-static": "^1.13.2",
+    "svg-sprite-loader": "4.1.3",
+    "svgo": "1.2.0",
+    "vue-lazyload": "^1.3.3",
+    "vue-template-compiler": "2.6.10"
+  },
+  "engines": {
+    "node": ">=8.9",
+    "npm": ">= 3.0.0"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ]
+}

+ 18 - 0
mer_mer_admin/plop-templates/component/index.hbs

@@ -0,0 +1,18 @@
+{{#if template}}
+  <template>
+    <div></div>
+  </template>
+{{/if}}
+
+{{#if script}}
+  <script>
+    export default { name: '{{properCase name}}', props: {}, data() { return {} }, created() {}, mounted() {}, methods:
+    {} }
+  </script>
+{{/if}}
+
+{{#if style}}
+  <style lang='scss' scoped>
+
+  </style>
+{{/if}}

+ 59 - 0
mer_mer_admin/plop-templates/component/prompt.js

@@ -0,0 +1,59 @@
+const { notEmpty } = require('../utils.js');
+
+module.exports = {
+  description: 'generate vue component',
+  prompts: [
+    {
+      type: 'input',
+      name: 'name',
+      message: 'component name please',
+      validate: notEmpty('name'),
+    },
+    {
+      type: 'checkbox',
+      name: 'blocks',
+      message: 'Blocks:',
+      choices: [
+        {
+          name: '<wxTemplate>',
+          value: 'template',
+          checked: true,
+        },
+        {
+          name: '<script>',
+          value: 'script',
+          checked: true,
+        },
+        {
+          name: 'style',
+          value: 'style',
+          checked: true,
+        },
+      ],
+      validate(value) {
+        if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
+          return 'Components require at least a <script> or <wxTemplate> tag.';
+        }
+        return true;
+      },
+    },
+  ],
+  actions: (data) => {
+    const name = '{{properCase name}}';
+    const actions = [
+      {
+        type: 'add',
+        path: `src/components/${name}/index.vue`,
+        templateFile: 'plop-templates/component/index.hbs',
+        data: {
+          name: name,
+          template: data.blocks.includes('template'),
+          script: data.blocks.includes('script'),
+          style: data.blocks.includes('style'),
+        },
+      },
+    ];
+
+    return actions;
+  },
+};

+ 15 - 0
mer_mer_admin/plop-templates/store/index.hbs

@@ -0,0 +1,15 @@
+{{#if state}}
+  const state = {}
+{{/if}}
+
+{{#if mutations}}
+  const mutations = {}
+{{/if}}
+
+{{#if actions}}
+  const actions = {}
+{{/if}}
+
+export default { namespaced: true,
+{{options}}
+}

+ 66 - 0
mer_mer_admin/plop-templates/store/prompt.js

@@ -0,0 +1,66 @@
+const { notEmpty } = require('../utils.js');
+
+module.exports = {
+  description: 'generate product',
+  prompts: [
+    {
+      type: 'input',
+      name: 'name',
+      message: 'product name please',
+      validate: notEmpty('name'),
+    },
+    {
+      type: 'checkbox',
+      name: 'blocks',
+      message: 'Blocks:',
+      choices: [
+        {
+          name: 'state',
+          value: 'state',
+          checked: true,
+        },
+        {
+          name: 'mutations',
+          value: 'mutations',
+          checked: true,
+        },
+        {
+          name: 'actions',
+          value: 'actions',
+          checked: true,
+        },
+      ],
+      validate(value) {
+        if (!value.includes('state') || !value.includes('mutations')) {
+          return 'product require at least state and mutations';
+        }
+        return true;
+      },
+    },
+  ],
+  actions(data) {
+    const name = '{{name}}';
+    const { blocks } = data;
+    const options = ['state', 'mutations'];
+    const joinFlag = `,
+  `;
+    if (blocks.length === 3) {
+      options.push('actions');
+    }
+
+    const actions = [
+      {
+        type: 'add',
+        path: `src/store/modules/${name}.js`,
+        templateFile: 'plop-templates/product/index.hbs',
+        data: {
+          options: options.join(joinFlag),
+          state: blocks.includes('state'),
+          mutations: blocks.includes('mutations'),
+          actions: blocks.includes('actions'),
+        },
+      },
+    ];
+    return actions;
+  },
+};

+ 9 - 0
mer_mer_admin/plop-templates/utils.js

@@ -0,0 +1,9 @@
+exports.notEmpty = (name) => {
+  return (v) => {
+    if (!v || v.trim === '') {
+      return `${name} is required`;
+    } else {
+      return true;
+    }
+  };
+};

+ 18 - 0
mer_mer_admin/plop-templates/view/index.hbs

@@ -0,0 +1,18 @@
+{{#if template}}
+  <template>
+    <div></div>
+  </template>
+{{/if}}
+
+{{#if script}}
+  <script>
+    export default { name: '{{properCase name}}', props: {}, data() { return {} }, created() {}, mounted() {}, methods:
+    {} }
+  </script>
+{{/if}}
+
+{{#if style}}
+  <style lang='scss' scoped>
+
+  </style>
+{{/if}}

+ 59 - 0
mer_mer_admin/plop-templates/view/prompt.js

@@ -0,0 +1,59 @@
+const { notEmpty } = require('../utils.js');
+
+module.exports = {
+  description: 'generate a view',
+  prompts: [
+    {
+      type: 'input',
+      name: 'name',
+      message: 'view name please',
+      validate: notEmpty('name'),
+    },
+    {
+      type: 'checkbox',
+      name: 'blocks',
+      message: 'Blocks:',
+      choices: [
+        {
+          name: '<wxTemplate>',
+          value: 'template',
+          checked: true,
+        },
+        {
+          name: '<script>',
+          value: 'script',
+          checked: true,
+        },
+        {
+          name: 'style',
+          value: 'style',
+          checked: true,
+        },
+      ],
+      validate(value) {
+        if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
+          return 'View require at least a <script> or <wxTemplate> tag.';
+        }
+        return true;
+      },
+    },
+  ],
+  actions: (data) => {
+    const name = '{{name}}';
+    const actions = [
+      {
+        type: 'add',
+        path: `src/views/${name}/index.vue`,
+        templateFile: 'plop-templates/view/index.hbs',
+        data: {
+          name: name,
+          template: data.blocks.includes('template'),
+          script: data.blocks.includes('script'),
+          style: data.blocks.includes('style'),
+        },
+      },
+    ];
+
+    return actions;
+  },
+};

+ 9 - 0
mer_mer_admin/plopfile.js

@@ -0,0 +1,9 @@
+const viewGenerator = require('./plop-templates/view/prompt');
+const componentGenerator = require('./plop-templates/component/prompt');
+const storeGenerator = require('./plop-templates/store/prompt.js');
+
+module.exports = function (plop) {
+  plop.setGenerator('view', viewGenerator);
+  plop.setGenerator('component', componentGenerator);
+  plop.setGenerator('store', storeGenerator);
+};

+ 5 - 0
mer_mer_admin/postcss.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  plugins: {
+    autoprefixer: {},
+  },
+};

BIN
mer_mer_admin/public/favicon.ico


+ 23 - 0
mer_mer_admin/public/index.html

@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="renderer" content="webkit">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    <meta name="author" content="CRMEB! Team and CRMEB UI Team" />
+    <meta name="copyright" content="2001-2013 CRMEB Inc." />
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title><%= webpackConfig.name %></title>
+  </head>
+  <body>
+    <script src="<%= BASE_URL %>static/tinymce4.7.5/tinymce.min.js"></script>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+    <div class="pre-loader" id="pre-loader">
+      <div class="inner one"></div>
+      <div class="inner two"></div>
+      <div class="inner three"></div>
+    </div>
+  </body>
+</html>

+ 38 - 0
mer_mer_admin/public/preview.html

@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang="zh">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title>form-generator-preview</title>
+    <link href="https://cdn.bootcss.com/element-ui/2.12.0/theme-chalk/index.css" rel="stylesheet">
+    <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
+    <script src="https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js"></script>
+    <!-- <script src="https://cdn.bootcss.com/axios/0.19.0/axios.min.js"></script> -->
+    <script src="https://cdn.bootcss.com/element-ui/2.12.0/index.js"></script>
+    <style>
+      body{
+        margin: 0;
+        padding: 0;
+        overflow-x: hidden;
+        -moz-osx-font-smoothing: grayscale;
+        -webkit-font-smoothing: antialiased;
+        text-rendering: optimizeLegibility;
+        height: calc(100vh - 33px);
+        padding: 12px;
+        box-sizing: border-box;
+        font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
+      }
+      input, textarea{
+        font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
+      }
+    </style>
+  </head>
+  <body>
+    <noscript>
+      <strong>抱歉,javascript被禁用,请开启后重试。</strong>
+    </noscript>
+    <div id="previewApp"></div>
+  </body>
+</html>

+ 230 - 0
mer_mer_admin/public/static/tinymce4.7.5/langs/zh_CN.js

@@ -0,0 +1,230 @@
+tinymce.addI18n('zh_CN',{
+"Cut": "\u526a\u5207",
+"Heading 5": "\u6807\u98985",
+"Header 2": "\u6807\u98982",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
+"Heading 4": "\u6807\u98984",
+"Div": "Div\u533a\u5757",
+"Heading 2": "\u6807\u98982",
+"Paste": "\u7c98\u8d34",
+"Close": "\u5173\u95ed",
+"Font Family": "\u5b57\u4f53",
+"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
+"Align right": "\u53f3\u5bf9\u9f50",
+"New document": "\u65b0\u6587\u6863",
+"Blockquote": "\u5f15\u7528",
+"Numbered list": "\u7f16\u53f7\u5217\u8868",
+"Heading 1": "\u6807\u98981",
+"Headings": "\u6807\u9898",
+"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
+"Formats": "\u683c\u5f0f",
+"Headers": "\u6807\u9898",
+"Select all": "\u5168\u9009",
+"Header 3": "\u6807\u98983",
+"Blocks": "\u533a\u5757",
+"Undo": "\u64a4\u6d88",
+"Strikethrough": "\u5220\u9664\u7ebf",
+"Bullet list": "\u9879\u76ee\u7b26\u53f7",
+"Header 1": "\u6807\u98981",
+"Superscript": "\u4e0a\u6807",
+"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
+"Font Sizes": "\u5b57\u53f7",
+"Subscript": "\u4e0b\u6807",
+"Header 6": "\u6807\u98986",
+"Redo": "\u91cd\u590d",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "\u786e\u5b9a",
+"Bold": "\u7c97\u4f53",
+"Code": "\u4ee3\u7801",
+"Italic": "\u659c\u4f53",
+"Align center": "\u5c45\u4e2d",
+"Header 5": "\u6807\u98985",
+"Heading 6": "\u6807\u98986",
+"Heading 3": "\u6807\u98983",
+"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
+"Header 4": "\u6807\u98984",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
+"Underline": "\u4e0b\u5212\u7ebf",
+"Cancel": "\u53d6\u6d88",
+"Justify": "\u4e24\u7aef\u5bf9\u9f50",
+"Inline": "\u6587\u672c",
+"Copy": "\u590d\u5236",
+"Align left": "\u5de6\u5bf9\u9f50",
+"Visual aids": "\u7f51\u683c\u7ebf",
+"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
+"Square": "\u65b9\u5757",
+"Default": "\u9ed8\u8ba4",
+"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
+"Circle": "\u7a7a\u5fc3\u5706",
+"Disc": "\u5b9e\u5fc3\u5706",
+"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
+"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
+"Name": "\u540d\u79f0",
+"Anchor": "\u951a\u70b9",
+"Id": "\u6807\u8bc6\u7b26",
+"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
+"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
+"Special character": "\u7279\u6b8a\u7b26\u53f7",
+"Source code": "\u6e90\u4ee3\u7801",
+"Language": "\u8bed\u8a00",
+"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
+"B": "B",
+"R": "R",
+"G": "G",
+"Color": "\u989c\u8272",
+"Right to left": "\u4ece\u53f3\u5230\u5de6",
+"Left to right": "\u4ece\u5de6\u5230\u53f3",
+"Emoticons": "\u8868\u60c5",
+"Robots": "\u673a\u5668\u4eba",
+"Document properties": "\u6587\u6863\u5c5e\u6027",
+"Title": "\u6807\u9898",
+"Keywords": "\u5173\u952e\u8bcd",
+"Encoding": "\u7f16\u7801",
+"Description": "\u63cf\u8ff0",
+"Author": "\u4f5c\u8005",
+"Fullscreen": "\u5168\u5c4f",
+"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
+"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
+"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
+"General": "\u666e\u901a",
+"Advanced": "\u9ad8\u7ea7",
+"Source": "\u5730\u5740",
+"Border": "\u8fb9\u6846",
+"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
+"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
+"Image description": "\u56fe\u7247\u63cf\u8ff0",
+"Style": "\u6837\u5f0f",
+"Dimensions": "\u5927\u5c0f",
+"Insert image": "\u63d2\u5165\u56fe\u7247",
+"Image": "\u56fe\u7247",
+"Zoom in": "\u653e\u5927",
+"Contrast": "\u5bf9\u6bd4\u5ea6",
+"Back": "\u540e\u9000",
+"Gamma": "\u4f3d\u9a6c\u503c",
+"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
+"Resize": "\u8c03\u6574\u5927\u5c0f",
+"Sharpen": "\u9510\u5316",
+"Zoom out": "\u7f29\u5c0f",
+"Image options": "\u56fe\u7247\u9009\u9879",
+"Apply": "\u5e94\u7528",
+"Brightness": "\u4eae\u5ea6",
+"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
+"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
+"Edit image": "\u7f16\u8f91\u56fe\u7247",
+"Color levels": "\u989c\u8272\u5c42\u6b21",
+"Crop": "\u88c1\u526a",
+"Orientation": "\u65b9\u5411",
+"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
+"Invert": "\u53cd\u8f6c",
+"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
+"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
+"Remove link": "\u5220\u9664\u94fe\u63a5",
+"Url": "\u5730\u5740",
+"Text to display": "\u663e\u793a\u6587\u5b57",
+"Anchors": "\u951a\u70b9",
+"Insert link": "\u63d2\u5165\u94fe\u63a5",
+"Link": "\u94fe\u63a5",
+"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
+"None": "\u65e0",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
+"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
+"Target": "\u6253\u5f00\u65b9\u5f0f",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
+"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
+"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
+"Media": "\u5a92\u4f53",
+"Alternative source": "\u955c\u50cf",
+"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
+"Insert video": "\u63d2\u5165\u89c6\u9891",
+"Poster": "\u5c01\u9762",
+"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
+"Embed": "\u5185\u5d4c",
+"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
+"Page break": "\u5206\u9875\u7b26",
+"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
+"Preview": "\u9884\u89c8",
+"Print": "\u6253\u5370",
+"Save": "\u4fdd\u5b58",
+"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
+"Replace": "\u66ff\u6362",
+"Next": "\u4e0b\u4e00\u4e2a",
+"Whole words": "\u5168\u5b57\u5339\u914d",
+"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
+"Replace with": "\u66ff\u6362\u4e3a",
+"Find": "\u67e5\u627e",
+"Replace all": "\u5168\u90e8\u66ff\u6362",
+"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
+"Prev": "\u4e0a\u4e00\u4e2a",
+"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
+"Finish": "\u5b8c\u6210",
+"Ignore all": "\u5168\u90e8\u5ffd\u7565",
+"Ignore": "\u5ffd\u7565",
+"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
+"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
+"Rows": "\u884c",
+"Height": "\u9ad8",
+"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
+"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
+"Border color": "\u8fb9\u6846\u989c\u8272",
+"Column group": "\u5217\u7ec4",
+"Row": "\u884c",
+"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
+"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
+"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
+"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
+"Row type": "\u884c\u7c7b\u578b",
+"Insert table": "\u63d2\u5165\u8868\u683c",
+"Body": "\u8868\u4f53",
+"Caption": "\u6807\u9898",
+"Footer": "\u8868\u5c3e",
+"Delete row": "\u5220\u9664\u884c",
+"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
+"Scope": "\u8303\u56f4",
+"Delete table": "\u5220\u9664\u8868\u683c",
+"H Align": "\u6c34\u5e73\u5bf9\u9f50",
+"Top": "\u9876\u90e8\u5bf9\u9f50",
+"Header cell": "\u8868\u5934\u5355\u5143\u683c",
+"Column": "\u5217",
+"Row group": "\u884c\u7ec4",
+"Cell": "\u5355\u5143\u683c",
+"Middle": "\u5782\u76f4\u5c45\u4e2d",
+"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
+"Copy row": "\u590d\u5236\u884c",
+"Row properties": "\u884c\u5c5e\u6027",
+"Table properties": "\u8868\u683c\u5c5e\u6027",
+"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
+"V Align": "\u5782\u76f4\u5bf9\u9f50",
+"Header": "\u8868\u5934",
+"Right": "\u53f3\u5bf9\u9f50",
+"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
+"Cols": "\u5217",
+"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
+"Width": "\u5bbd",
+"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
+"Left": "\u5de6\u5bf9\u9f50",
+"Cut row": "\u526a\u5207\u884c",
+"Delete column": "\u5220\u9664\u5217",
+"Center": "\u5c45\u4e2d",
+"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
+"Insert template": "\u63d2\u5165\u6a21\u677f",
+"Templates": "\u6a21\u677f",
+"Background color": "\u80cc\u666f\u8272",
+"Custom...": "\u81ea\u5b9a\u4e49...",
+"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
+"No color": "\u65e0",
+"Text color": "\u6587\u5b57\u989c\u8272",
+"Table of Contents": "\u5185\u5bb9\u5217\u8868",
+"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
+"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
+"Words: {0}": "\u5b57\u6570\uff1a{0}",
+"Insert": "\u63d2\u5165",
+"File": "\u6587\u4ef6",
+"Edit": "\u7f16\u8f91",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
+"Tools": "\u5de5\u5177",
+"View": "\u89c6\u56fe",
+"Table": "\u8868\u683c",
+"Format": "\u683c\u5f0f"
+});

+ 138 - 0
mer_mer_admin/public/static/tinymce4.7.5/plugins/codesample/css/prism.css

@@ -0,0 +1,138 @@
+/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  direction: ltr;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #a67f59;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}
+

BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-cool.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-cry.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-embarassed.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-foot-in-mouth.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-frown.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-innocent.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-kiss.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-laughing.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-money-mouth.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-sealed.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-smile.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-surprised.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-tongue-out.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-undecided.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-wink.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/plugins/emoticons/img/smiley-yell.gif


+ 154 - 0
mer_mer_admin/public/static/tinymce4.7.5/plugins/visualblocks/css/visualblocks.css

@@ -0,0 +1,154 @@
+.mce-visualblocks p {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks h1 {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks h2 {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks h3 {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks h4 {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks h5 {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks h6 {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks div:not([data-mce-bogus]) {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks section {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks article {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks blockquote {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks address {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks pre {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin-left: 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks figure {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks hgroup {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks aside {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks figcaption {
+  border: 1px dashed #BBB;
+}
+
+.mce-visualblocks ul {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks ol {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+  background-repeat: no-repeat;
+}
+
+.mce-visualblocks dl {
+  padding-top: 10px;
+  border: 1px dashed #BBB;
+  margin: 0 0 1em 3px;
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+  background-repeat: no-repeat;
+}

File diff suppressed because it is too large
+ 0 - 0
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/content.inline.min.css


File diff suppressed because it is too large
+ 0 - 0
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/content.min.css


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-mobile.woff


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.eot


File diff suppressed because it is too large
+ 27 - 0
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.svg


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.ttf


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.woff


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.eot


+ 131 - 0
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.svg

@@ -0,0 +1,131 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe000;" glyph-name="save" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
+<glyph unicode="&#xe001;" glyph-name="newdocument" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" />
+<glyph unicode="&#xe002;" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
+<glyph unicode="&#xe003;" glyph-name="alignleft" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe004;" glyph-name="aligncenter" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe005;" glyph-name="alignright" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe006;" glyph-name="alignjustify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe007;" glyph-name="cut" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" />
+<glyph unicode="&#xe008;" glyph-name="paste" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" />
+<glyph unicode="&#xe009;" glyph-name="searchreplace" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
+<glyph unicode="&#xe00a;" glyph-name="bullist" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" />
+<glyph unicode="&#xe00b;" glyph-name="numlist" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" />
+<glyph unicode="&#xe00c;" glyph-name="indent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" />
+<glyph unicode="&#xe00d;" glyph-name="outdent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" />
+<glyph unicode="&#xe00e;" glyph-name="blockquote" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" />
+<glyph unicode="&#xe00f;" glyph-name="undo" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" />
+<glyph unicode="&#xe010;" glyph-name="redo" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" />
+<glyph unicode="&#xe011;" glyph-name="link" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" />
+<glyph unicode="&#xe012;" glyph-name="unlink" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" />
+<glyph unicode="&#xe013;" glyph-name="anchor" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" />
+<glyph unicode="&#xe014;" glyph-name="image" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" />
+<glyph unicode="&#xe015;" glyph-name="media" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
+<glyph unicode="&#xe016;" glyph-name="help" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
+<glyph unicode="&#xe017;" glyph-name="code" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" />
+<glyph unicode="&#xe018;" glyph-name="inserttime" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" />
+<glyph unicode="&#xe019;" glyph-name="preview" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" />
+<glyph unicode="&#xe01a;" glyph-name="forecolor" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" />
+<glyph unicode="&#xe01b;" glyph-name="table" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="&#xe01c;" glyph-name="hr" d="M0 512h1024v-128h-1024z" />
+<glyph unicode="&#xe01d;" glyph-name="removeformat" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" />
+<glyph unicode="&#xe01e;" glyph-name="sub" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe01f;" glyph-name="sup" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe020;" glyph-name="charmap" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" />
+<glyph unicode="&#xe021;" glyph-name="emoticons" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" />
+<glyph unicode="&#xe022;" glyph-name="print" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
+<glyph unicode="&#xe023;" glyph-name="fullscreen" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" />
+<glyph unicode="&#xe024;" glyph-name="spellchecker" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" />
+<glyph unicode="&#xe025;" glyph-name="nonbreaking" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" />
+<glyph unicode="&#xe026;" glyph-name="template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
+<glyph unicode="&#xe027;" glyph-name="pagebreak" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" />
+<glyph unicode="&#xe028;" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
+<glyph unicode="&#xe02a;" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
+<glyph unicode="&#xe02b;" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
+<glyph unicode="&#xe02c;" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" />
+<glyph unicode="&#xe02d;" glyph-name="strikethrough" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" />
+<glyph unicode="&#xe02e;" glyph-name="visualchars" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" />
+<glyph unicode="&#xe02f;" glyph-name="ltr" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" />
+<glyph unicode="&#xe030;" glyph-name="rtl" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" />
+<glyph unicode="&#xe031;" glyph-name="copy" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" />
+<glyph unicode="&#xe032;" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
+<glyph unicode="&#xe033;" glyph-name="checkbox" d="M128 416l288-288 480 480-128 128-352-352-160 160z" />
+<glyph unicode="&#xe034;" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
+<glyph unicode="&#xe035;" glyph-name="pastetext" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" />
+<glyph unicode="&#xe600;" glyph-name="gamma" d="M483.2 320l-147.2 336c-9.6 25.6-19.2 44.8-25.6 54.4s-16 12.8-25.6 12.8c-16 0-25.6-3.2-28.8-3.2v70.4c9.6 6.4 25.6 6.4 38.4 9.6 32 0 57.6-6.4 73.6-22.4 6.4-6.4 12.8-16 19.2-25.6 6.4-12.8 12.8-25.6 16-41.6l121.6-291.2 150.4 371.2h92.8l-198.4-470.4v-224h-86.4v224zM0 960v-1024h1024v1024h-1024zM960 0h-896v896h896v-896z" />
+<glyph unicode="&#xe601;" glyph-name="orientation" d="M627.2 80h-579.2v396.8h579.2v-396.8zM553.6 406.4h-435.2v-256h435.2v256zM259.2 732.8c176 176 457.6 176 633.6 0s176-457.6 0-633.6c-121.6-121.6-297.6-160-454.4-108.8 121.6-28.8 262.4 9.6 361.6 108.8 150.4 150.4 160 384 22.4 521.6-121.6 121.6-320 128-470.4 19.2l86.4-86.4-294.4-22.4 22.4 294.4 92.8-92.8z" />
+<glyph unicode="&#xe602;" glyph-name="invert" d="M892.8-22.4l-89.6 89.6c-70.4-80-172.8-131.2-288-131.2-208 0-380.8 166.4-384 377.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4v0c0 0 0 0 0 3.2 0 0 0 3.2 0 3.2 3.2 105.6 48 211.2 105.6 304l-192 192 44.8 44.8 182.4-182.4c0 0 0 0 0 0l569.6-569.6c0 0 0 0 0 0l99.2-99.2-48-44.8zM896 326.4c0 0 0 0 0 0 0 3.2 0 6.4 0 6.4-9.6 316.8-384 627.2-384 627.2s-108.8-89.6-208-220.8l70.4-70.4c6.4 9.6 16 22.4 22.4 32 41.6 51.2 83.2 96 115.2 128v0c32-32 73.6-76.8 115.2-128 108.8-137.6 169.6-265.6 172.8-371.2 0 0 0-3.2 0-3.2v0 0c0-3.2 0-3.2 0-6.4s0-3.2 0-3.2v0 0c0-22.4-3.2-41.6-9.6-64l76.8-76.8c16 41.6 28.8 89.6 28.8 137.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4z" />
+<glyph unicode="&#xe603;" glyph-name="codesample" d="M199.995 578.002v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-100.518 0-182.003-81.485-182.003-182.003v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-100.515 81.485-182.003 182.003-182.003h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 50.931-20.928 96.966-54.646 130.002 33.716 33.036 54.646 79.072 54.646 130.002zM824.005 578.002v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c100.515 0 182.003-81.485 182.003-182.003v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-100.515-81.488-182.003-182.003-182.003h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 50.931 20.928 96.966 54.646 130.002-33.716 33.036-54.646 79.072-54.646 130.002zM616.002 603.285c0-57.439-46.562-104.002-104.002-104.002s-104.002 46.562-104.002 104.002c0 57.439 46.562 104.002 104.002 104.002s104.002-46.562 104.002-104.002zM512 448.717c-57.439 0-104.002-46.562-104.002-104.002 0-55.845 26-100.115 105.752-103.88-23.719-33.417-59.441-46.612-105.752-50.944v-61.751c0 0 208.003-18.144 208.003 216.577-0.202 57.441-46.56 104.004-104.002 104.004z" />
+<glyph unicode="&#xe604;" glyph-name="tablerowprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="&#xe605;" glyph-name="tablecellprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="&#xe606;" glyph-name="table2" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-896v192h896v-192z" />
+<glyph unicode="&#xe607;" glyph-name="tablemergecells" d="M0 896v-896h1024v896h-1024zM384 64v448h576v-448h-576zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192z" />
+<glyph unicode="&#xe608;" glyph-name="tableinsertcolbefore" d="M320 188.8v182.4h-182.4v89.6h182.4v182.4h86.4v-182.4h185.6v-89.6h-185.6v-182.4zM0 896v-896h1024v896h-1024zM640 64h-576v704h576v-704zM960 64h-256v192h256v-192zM960 320h-256v192h256v-192zM960 576h-256v192h256v-192z" />
+<glyph unicode="&#xe609;" glyph-name="tableinsertcolafter" d="M704 643.2v-182.4h182.4v-89.6h-182.4v-182.4h-86.4v182.4h-185.6v89.6h185.6v182.4zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v704h576v-704z" />
+<glyph unicode="&#xe60a;" glyph-name="tableinsertrowbefore" d="M691.2 508.8h-144v-144h-70.4v144h-144v67.2h144v144h70.4v-144h144zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM640 64h-256v192h256v-192zM960 64h-256v192h256v-192zM960 316.8h-896v451.2h896v-451.2z" />
+<glyph unicode="&#xe60b;" glyph-name="tableinsertrowafter" d="M332.8 323.2h144v144h70.4v-144h144v-67.2h-144v-144h-70.4v144h-144zM0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM64 768h256v-192h-256v192zM960 64h-896v451.2h896v-451.2zM960 576h-256v192h256v-192z" />
+<glyph unicode="&#xe60d;" glyph-name="tablesplitcells" d="M0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v448h576v-448zM960 576h-256v192h256v-192zM864 156.8l-60.8-60.8-131.2 131.2-131.2-131.2-60.8 60.8 131.2 131.2-131.2 131.2 60.8 60.8 131.2-131.2 131.2 131.2 60.8-60.8-131.2-131.2z" />
+<glyph unicode="&#xe60e;" glyph-name="tabledelete" d="M0 896h1024v-896h-1024v896zM60.8 768v-704h899.2v704h-899.2zM809.6 211.2l-96-96-204.8 204.8-204.8-204.8-96 96 204.8 204.8-204.8 204.8 96 96 204.8-204.8 204.8 204.8 96-96-204.8-204.8z" />
+<glyph unicode="&#xe62a;" glyph-name="tableleftheader" d="M0 896v-832h1024v832h-1024zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM640 640h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-256v192h256v-192z" />
+<glyph unicode="&#xe62b;" glyph-name="tabletopheader" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192z" />
+<glyph unicode="&#xe800;" glyph-name="tabledeleterow" d="M886.4 572.8l-156.8-156.8 160-160-76.8-76.8-160 160-156.8-156.8-76.8 73.6 160 160-163.2 163.2 76.8 76.8 163.2-163.2 156.8 156.8 73.6-76.8zM0 896v-896h1024v896h-1024zM960 576h-22.4l-64-64h86.4v-192h-89.6l64-64h25.6v-192h-896v192h310.4l64 64h-374.4v192h371.2l-64 64h-307.2v192h896v-192z" />
+<glyph unicode="&#xe801;" glyph-name="tabledeletecol" d="M320 499.2l64-64v-12.8l-64-64v140.8zM640 422.4l64-64v137.6l-64-64v-9.6zM1024 896v-896h-1024v896h1024zM960 768h-256v-51.2l-12.8 12.8-51.2-51.2v89.6h-256v-89.6l-51.2 51.2-12.8-12.8v51.2h-256v-704h256v118.4l35.2-35.2 28.8 28.8v-115.2h256v115.2l48-48 16 16v-83.2h256v707.2zM672 662.4l-156.8-156.8-163.2 163.2-76.8-76.8 163.2-163.2-156.8-156.8 76.8-76.8 156.8 156.8 160-160 76.8 76.8-160 160 156.8 156.8-76.8 76.8z" />
+<glyph unicode="&#xe900;" glyph-name="a11y" d="M960 704v64l-448-128-448 128v-64l320-128v-256l-128-448h64l192 448 192-448h64l-128 448v256zM416 800q0 40 28 68t68 28 68-28 28-68-28-68-68-28-68 28-28 68z" />
+<glyph unicode="&#xe901;" glyph-name="toc" d="M0 896h128v-128h-128v128zM192 896h832v-128h-832v128zM0 512h128v-128h-128v128zM192 512h832v-128h-832v128zM0 128h128v-128h-128v128zM192 128h832v-128h-832v128zM192 704h128v-128h-128v128zM384 704h640v-128h-640v128zM192 320h128v-128h-128v128zM384 320h640v-128h-640v128z" />
+<glyph unicode="&#xe902;" glyph-name="fill" d="M521.6 915.2l-67.2-67.2-86.4 86.4-86.4-86.4 86.4-86.4-368-368 432-432 518.4 518.4-428.8 435.2zM435.2 134.4l-262.4 262.4 35.2 35.2 576 51.2-348.8-348.8zM953.6 409.6c-6.4-6.4-16-16-28.8-32-28.8-32-41.6-64-41.6-89.6v0 0 0 0 0 0 0c0-16 6.4-35.2 22.4-48 12.8-12.8 32-22.4 48-22.4s35.2 6.4 48 22.4 22.4 32 22.4 48v0 0 0 0 0 0 0c0 25.6-12.8 54.4-41.6 89.6-9.6 16-22.4 25.6-28.8 32v0z" />
+<glyph unicode="&#xe903;" glyph-name="borderwidth" d="M0 265.6h1024v-128h-1024v128zM0 32h1024v-64h-1024v64zM0 566.4h1024v-192h-1024v192zM0 928h1024v-256h-1024v256z" />
+<glyph unicode="&#xe904;" glyph-name="line" d="M739.2 627.2l-502.4-502.4h-185.6v185.6l502.4 502.4 185.6-185.6zM803.2 688l-185.6 185.6 67.2 67.2c22.4 22.4 54.4 22.4 76.8 0l108.8-108.8c22.4-22.4 22.4-54.4 0-76.8l-67.2-67.2zM41.6 48h940.8v-112h-940.8v112z" />
+<glyph unicode="&#xe905;" glyph-name="count" d="M0 480h1024v-64h-1024v64zM304 912v-339.2h-67.2v272h-67.2v67.2zM444.8 694.4v-54.4h134.4v-67.2h-201.6v153.6l134.4 64v54.4h-134.4v67.2h201.6v-153.6zM854.4 912v-339.2h-204.8v67.2h137.6v67.2h-137.6v70.4h137.6v67.2h-137.6v67.2zM115.2 166.4c3.2 57.6 38.4 83.2 108.8 83.2 38.4 0 67.2-9.6 86.4-25.6s25.6-35.2 25.6-70.4v-112c0-25.6 0-28.8 9.6-41.6h-73.6c-3.2 9.6-3.2 9.6-6.4 19.2-22.4-19.2-41.6-25.6-70.4-25.6-54.4 0-89.6 32-89.6 76.8s28.8 70.4 99.2 80l38.4 6.4c16 3.2 22.4 6.4 22.4 16 0 12.8-12.8 22.4-38.4 22.4s-41.6-9.6-44.8-28.8h-67.2zM262.4 115.2c-6.4-3.2-12.8-6.4-25.6-6.4l-25.6-6.4c-25.6-6.4-38.4-16-38.4-28.8 0-16 12.8-25.6 35.2-25.6s41.6 9.6 54.4 32v35.2zM390.4 336h73.6v-112c22.4 16 41.6 22.4 67.2 22.4 64 0 105.6-51.2 105.6-124.8 0-76.8-44.8-134.4-108.8-134.4-32 0-48 9.6-67.2 35.2v-28.8h-70.4v342.4zM460.8 121.6c0-41.6 22.4-70.4 51.2-70.4s51.2 28.8 51.2 70.4c0 44.8-19.2 70.4-51.2 70.4-28.8 0-51.2-28.8-51.2-70.4zM851.2 153.6c-3.2 22.4-19.2 35.2-44.8 35.2-32 0-51.2-25.6-51.2-70.4 0-48 19.2-73.6 51.2-73.6 25.6 0 41.6 12.8 44.8 41.6l70.4-3.2c-9.6-60.8-54.4-96-118.4-96-73.6 0-121.6 51.2-121.6 128 0 80 48 131.2 124.8 131.2 64 0 108.8-35.2 112-96h-67.2z" />
+<glyph unicode="&#xe906;" glyph-name="reload" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" />
+<glyph unicode="&#xe907;" glyph-name="translate" d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8 304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8 48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6 67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816 540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2 214.4l76.8 201.6 76.8-201.6h-153.6z" />
+<glyph unicode="&#xe908;" glyph-name="drag" d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320 640h128v-128h-128v128zM576 384h128v-128h-128v128zM320 384h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM320 896h128v-128h-128v128z" />
+<glyph unicode="&#xe90b;" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" />
+<glyph unicode="&#xe911;" glyph-name="books" d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0 64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384 640h128v-64h-128v64z" />
+<glyph unicode="&#xe914;" glyph-name="upload" d="M839.432 760.57c27.492-27.492 50.554-78.672 55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060 120.568-55.552l142.864-142.862zM512 576v384h-368c-44 0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576 192v-192h-192v192h-160l256 256 256-256h-160z" />
+<glyph unicode="&#xe915;" glyph-name="editimage" d="M768 416v-352h-640v640h352l128 128h-512c-52.8 0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96 96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416 320l-48 48 480 480 48-48-480-480z" />
+<glyph unicode="&#xe91c;" glyph-name="bubble" d="M928 896h-832c-52.8 0-96-43.2-96-96v-512c0-52.8 43.2-96 96-96h160v-256l307.2 256h364.8c52.8 0 96 43.2 96 96v512c0 52.8-43.2 96-96 96zM896 320h-379.142l-196.858-174.714v174.714h-192v448h768v-448z" />
+<glyph unicode="&#xe91d;" glyph-name="user" d="M622.826 257.264c-22.11 3.518-22.614 64.314-22.614 64.314s64.968 64.316 79.128 150.802c38.090 0 61.618 91.946 23.522 124.296 1.59 34.054 48.96 267.324-190.862 267.324s-192.45-233.27-190.864-267.324c-38.094-32.35-14.57-124.296 23.522-124.296 14.158-86.486 79.128-150.802 79.128-150.802s-0.504-60.796-22.614-64.314c-71.22-11.332-337.172-128.634-337.172-257.264h896c0 128.63-265.952 245.932-337.174 257.264z" />
+<glyph unicode="&#xe926;" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" />
+<glyph unicode="&#xe927;" glyph-name="unlock" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" />
+<glyph unicode="&#xe928;" glyph-name="settings" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" />
+<glyph unicode="&#xe92a;" glyph-name="remove2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" />
+<glyph unicode="&#xe92d;" glyph-name="menu" d="M384 896h256v-256h-256zM384 576h256v-256h-256zM384 256h256v-256h-256z" />
+<glyph unicode="&#xe930;" glyph-name="warning" d="M1009.956 44.24l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648s-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.302 0 96.792 48.708 63.302 108.24zM512 64c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64 35.348 0 64-28.652 64-64 0-35.346-28.652-64-64-64zM556 256h-88l-20 256c0 35.346 28.654 64 64 64s64-28.654 64-64l-20-256z" />
+<glyph unicode="&#xe931;" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
+<glyph unicode="&#xe932;" glyph-name="pluscircle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM768 384h-192v-192h-128v192h-192v128h192v192h128v-192h192z" />
+<glyph unicode="&#xe933;" glyph-name="info" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM448 768h128v-128h-128v128zM640 128h-256v64h64v256h-64v64h192v-320h64v-64z" />
+<glyph unicode="&#xe934;" glyph-name="notice" d="M1024 224l-288 736h-448l-288-288v-448l288-288h448l288 288v448l-288 288zM576 128h-128v128h128v-128zM576 384h-128v384h128v-384z" />
+<glyph unicode="&#xe935;" glyph-name="drop" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" />
+<glyph unicode="&#xe939;" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" />
+<glyph unicode="&#xe93a;" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" />
+<glyph unicode="&#xe93b;" glyph-name="arrowup" d="M0 320l192-192 320 320 320-320 192 192-511.998 512z" />
+<glyph unicode="&#xe93c;" glyph-name="arrowright" d="M384 960l-192-192 320-320-320-320 192-192 512 512z" />
+<glyph unicode="&#xe93d;" glyph-name="arrowdown" d="M1024 576l-192 192-320-320-320 320-192-192 512-511.998z" />
+<glyph unicode="&#xe93f;" glyph-name="arrowup2" d="M768 320l-256 256-256-256z" />
+<glyph unicode="&#xe940;" glyph-name="arrowdown2" d="M256 576l256-256 256 256z" />
+<glyph unicode="&#xe941;" glyph-name="menu2" d="M256 704l256-256 256 256zM255.996 384.004l256-256 256 256z" />
+<glyph unicode="&#xe961;" glyph-name="newtab" d="M704 384l128 128v-512h-768v768h512l-128-128h-256v-512h512zM960 896v-352l-130.744 130.744-354.746-354.744h-90.51v90.512l354.744 354.744-130.744 130.744z" />
+<glyph unicode="&#xeaa8;" glyph-name="rotateleft" d="M607.998 831.986c-212.070 0-383.986-171.916-383.986-383.986h-191.994l246.848-246.848 246.848 246.848h-191.994c0 151.478 122.798 274.276 274.276 274.276 151.48 0 274.276-122.798 274.276-274.276 0-151.48-122.796-274.276-274.276-274.276v-109.71c212.070 0 383.986 171.916 383.986 383.986s-171.916 383.986-383.986 383.986z" />
+<glyph unicode="&#xeaa9;" glyph-name="rotateright" d="M416.002 831.986c212.070 0 383.986-171.916 383.986-383.986h191.994l-246.848-246.848-246.848 246.848h191.994c0 151.478-122.798 274.276-274.276 274.276-151.48 0-274.276-122.798-274.276-274.276 0-151.48 122.796-274.276 274.276-274.276v-109.71c-212.070 0-383.986 171.916-383.986 383.986s171.916 383.986 383.986 383.986z" />
+<glyph unicode="&#xeaaa;" glyph-name="flipv" d="M0 576h1024v384zM1024 0v384h-1024z" />
+<glyph unicode="&#xeaac;" glyph-name="fliph" d="M576 960v-1024h384zM0-64h384v1024z" />
+<glyph unicode="&#xeb35;" glyph-name="zoomin" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" />
+<glyph unicode="&#xeb36;" glyph-name="zoomout" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" />
+<glyph unicode="&#xeba7;" glyph-name="sharpen" d="M768 832h-512l-256-256 512-576 512 576-256 256zM512 181.334v2.666h-2.37l-14.222 16h16.592v16h-30.814l-14.222 16h45.036v16h-59.258l-14.222 16h73.48v16h-87.704l-14.222 16h101.926v16h-116.148l-14.222 16h130.37v16h-144.592l-14.222 16h158.814v16h-173.038l-14.222 16h187.26v16h-201.482l-14.222 16h215.704v16h-229.926l-14.222 16h244.148v16h-258.372l-14.222 16h272.594v16h-286.816l-14.222 16h301.038v16h-315.26l-14.222 16h329.482v16h-343.706l-7.344 8.262 139.072 139.072h211.978v-3.334h215.314l16-16h-231.314v-16h247.314l16-16h-263.314v-16h279.314l16-16h-295.314v-16h311.314l16-16h-327.314v-16h343.312l7.738-7.738-351.050-394.928z" />
+<glyph unicode="&#xec6a;" glyph-name="options" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" />
+<glyph unicode="&#xeccc;" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" />
+<glyph unicode="&#xeccd;" glyph-name="moon" d="M715.812 895.52c-60.25 34.784-124.618 55.904-189.572 64.48 122.936-160.082 144.768-384.762 37.574-570.42-107.2-185.67-312.688-279.112-512.788-252.68 39.898-51.958 90.376-97.146 150.628-131.934 245.908-141.974 560.37-57.72 702.344 188.198 141.988 245.924 57.732 560.372-188.186 702.356z" />
+<glyph unicode="&#xecd4;" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" />
+<glyph unicode="&#xed6a;" glyph-name="remove22" d="M893.254 738.746l-90.508 90.508-290.746-290.744-290.746 290.744-90.508-90.506 290.746-290.748-290.746-290.746 90.508-90.508 290.746 290.746 290.746-290.746 90.508 90.51-290.744 290.744z" />
+<glyph unicode="&#xedc0;" glyph-name="arrowleft" d="M672-64l192 192-320 320 320 320-192 192-512-512z" />
+<glyph unicode="&#xedf9;" glyph-name="resize2" d="M0 896v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.488l677.488-677.488h-229.488c-35.346 0-64-28.652-64-64 0-35.346 28.654-64 64-64h384c35.346 0 64 28.654 64 64v384c0 35.348-28.654 64-64 64s-64-28.652-64-64v-229.488l-677.488 677.488h229.488c35.346 0 64 28.654 64 64s-28.652 64-64 64h-384c-35.346 0-64-28.654-64-64z" />
+<glyph unicode="&#xee78;" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" />
+</font></defs></svg>

BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.ttf


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.woff


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/anchor.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/loader.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/object.gif


BIN
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/img/trans.gif


File diff suppressed because it is too large
+ 0 - 0
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/skin.min.css


File diff suppressed because it is too large
+ 0 - 0
mer_mer_admin/public/static/tinymce4.7.5/skins/lightgray/skin.min.css.map


File diff suppressed because it is too large
+ 1 - 0
mer_mer_admin/public/static/tinymce4.7.5/tinymce.min.js


+ 100 - 0
mer_mer_admin/src/App.vue

@@ -0,0 +1,100 @@
+<template>
+  <div id="app">
+    <router-view v-if="isRouterAlive" />
+    <Setings ref="setingsRef" />
+  </div>
+</template>
+
+<script>
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+import { Local } from '@/utils/storage.js';
+import Setings from '@/layout/navBars/breadcrumb/setings.vue';
+
+export default {
+  name: 'App',
+  components: { Setings },
+
+  provide() {
+    return {
+      reload: this.reload,
+    };
+  },
+  data() {
+    return {
+      isRouterAlive: true,
+    };
+  },
+  watch: {
+    // 监听路由 控制侧边栏显示 标记当前顶栏菜单(如需要)
+    $route(to, from) {
+      const onRoutes = to.meta.activeMenu ? to.meta.activeMenu : to.meta.path;
+      this.$store.commit('menu/setActivePath', onRoutes);
+      if (to.name == 'crud_crud') {
+        this.$store.state.user.oneLvRoutes.map((e) => {
+          if (e.path === to.path) {
+            to.meta.title = e.title;
+          }
+        });
+      }
+      //商品添加、优惠券
+      if (['creatProduct', 'coupon'].includes(to.name)) {
+        let route = to.matched[1].path.split(':')[0];
+        this.$store.state.user.oneLvRoutes.map((e) => {
+          if (route.indexOf(e.path) != -1) {
+            to.meta.title = `${e.title} ${to.params.id ? 'ID:' + to.params.id : ''}`;
+          }
+        });
+      }
+      //个人中心、修改密码
+      if (['MaintainUser'].includes(to.name)) {
+        let route = to.matched[1].path.split(':')[0];
+        this.$store.state.user.oneLvRoutes.map((e) => {
+          if (route.indexOf(e.path) != -1) {
+            let params = to.params.type;
+            to.meta.title = params === 'users' ? '个人中心' : '修改密码';
+          }
+        });
+      }
+    },
+  },
+  mounted() {
+    this.openSetingsDrawer();
+    this.getLayoutThemeConfig();
+  },
+  methods: {
+    reload() {
+      this.isRouterAlive = false;
+      this.$nextTick(function () {
+        this.isRouterAlive = true;
+      });
+    },
+    // 布局配置弹窗打开
+    openSetingsDrawer() {
+      this.bus.$on('openSetingsDrawer', () => {
+        this.$refs.setingsRef.openDrawer();
+      });
+    },
+    // 获取缓存中的布局配置
+    getLayoutThemeConfig() {
+      if (Local.get('JavaMerThemeConfigPrev')) {
+        this.$store.dispatch('themeConfig/setThemeConfig', Local.get('JavaMerThemeConfigPrev'));
+        document.documentElement.style.cssText = Local.get('JavaMerThemeConfigStyle');
+      } else {
+        Local.set('JavaMerThemeConfigPrev', this.$store.state.themeConfig.themeConfig);
+      }
+    },
+  },
+  destroyed() {
+    this.bus.$off('openSetingsDrawer');
+  },
+};
+</script>
+<style></style>

+ 52 - 0
mer_mer_admin/src/api/authInformation.js

@@ -0,0 +1,52 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 获取版权信息
+ */
+export function copyrightInfoApi() {
+  return request({
+    url: '/admin/merchant/copyright/get/company/info',
+    method: 'get',
+  });
+}
+
+/**
+ * @description 账号登录检测
+ */
+export function accountDetectionApi(data) {
+  return request({
+    url: '/admin/merchant/login/account/detection',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 获取移动端域名
+ */
+export function frontDomainApi() {
+  return request({
+    url: '/publicly/config/get/front/domain',
+    method: 'get',
+  });
+}
+
+/**
+ * 获取移动端主题色
+ */
+export function getSystemColorApi() {
+  return request({
+    url: '/publicly/config/get/change/color',
+    method: 'get',
+  });
+}

+ 154 - 0
mer_mer_admin/src/api/categoryApi.js

@@ -0,0 +1,154 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 新增分类
+ * @param pram
+ */
+export function addCategroy(pram) {
+  const data = {
+    extra: pram.extra,
+    name: pram.name,
+    pid: pram.pid,
+    sort: pram.sort,
+    status: pram.status,
+    type: pram.type,
+    url: pram.url,
+    owner: pram.owner,
+  };
+  return request({
+    url: '/admin/merchant/category/save',
+    method: 'POST',
+    data: data,
+  });
+}
+
+/**
+ * 分类详情
+ * @param pram
+ */
+export function infoCategroy(pram) {
+  return request({
+    url: `/admin/merchant/category/info/${pram}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 删除分类
+ * @param pram
+ */
+export function deleteCategroy(pram) {
+  return request({
+    url: `/admin/merchant/category/delete/${pram}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 分类列表
+ * @param pram
+ */
+export function listCategroy(pram) {
+  const data = {
+    limit: pram.limit,
+    name: pram.name,
+    page: pram.page,
+    pid: pram.pid,
+    status: pram.status,
+    type: pram.type,
+  };
+  return request({
+    url: '/admin/category/list',
+    method: 'GET',
+    params: data,
+  });
+}
+
+/**
+ * 分类数据tree数据
+ * @param pram
+ */
+export function treeCategroy(pram) {
+  const data = {
+    type: pram.type,
+    status: pram.status,
+    name: pram.name,
+    owner: pram.owner,
+  };
+  return request({
+    url: '/admin/merchant/category/list/tree',
+    method: 'GET',
+    params: data,
+  });
+}
+
+/**
+ * 更新分类
+ * @param pram
+ */
+export function updateCategroy(pram) {
+  const data = {
+    extra: pram.extra,
+    name: pram.name,
+    pid: pram.pid,
+    sort: pram.sort,
+    status: pram.status,
+    type: pram.type,
+    url: pram.url,
+    id: pram.id,
+    owner: pram.owner,
+  };
+  return request({
+    url: `/admin/merchant/category/update/${pram.id}`,
+    method: 'POST',
+    params: data,
+  });
+}
+
+/**
+ * 根据id集合查询对应分类列表
+ * @param pram
+ */
+export function categroyByIds(pram) {
+  const data = {
+    ids: pram.ids,
+  };
+  return request({
+    url: '/admin/merchant/category/list/ids',
+    method: 'GET',
+    params: data,
+  });
+}
+
+/**
+ * 修改 显示关闭状态
+ * @param pram
+ */
+export function categroyUpdateStatus(id) {
+  return request({
+    url: `/admin/merchant/category/updateStatus/${id}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 文章详情
+ * @param pram
+ */
+export function articleInfoApi(params) {
+  return request({
+    url: `/admin/article/info`,
+    method: 'GET',
+    params,
+  });
+}

+ 91 - 0
mer_mer_admin/src/api/dashboard.js

@@ -0,0 +1,91 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+// 首页数据概览
+export function viewModelApi() {
+  return request({
+    url: '/admin/merchant/statistics/home/index',
+    method: 'GET',
+  });
+}
+
+// 用户曲线图
+export function chartUserApi() {
+  return request({
+    url: '/admin/statistics/home/chart/user',
+    method: 'get',
+  });
+}
+
+// 用户购买统计
+export function chartBuyApi() {
+  return request({
+    url: '/admin/statistics/home/chart/user/buy',
+    method: 'get',
+  });
+}
+
+// 订单量趋势 30天
+export function chartOrder30Api() {
+  return request({
+    url: '/admin/statistics/home/chart/order',
+    method: 'get',
+  });
+}
+
+// 订单量趋势 月
+export function chartOrderMonthApi() {
+  return request({
+    url: '/admin/statistics/home/chart/order/month',
+    method: 'get',
+  });
+}
+
+// 订单量趋势 周
+export function chartOrderWeekApi() {
+  return request({
+    url: '/admin/statistics/home/chart/order/week',
+    method: 'get',
+  });
+}
+
+// 订单量趋势 年
+export function chartOrderYearApi() {
+  return request({
+    url: '/admin/statistics/home/chart/order/year',
+    method: 'get',
+  });
+}
+
+// 首页经营数据
+export function businessData() {
+  return request({
+    url: '/admin/merchant/statistics/home/operating/data',
+    method: 'get',
+  });
+}
+
+// 商品浏览量排行榜
+export function pageviewDataApi() {
+  return request({
+    url: '/admin/merchant/statistics/home/product/pageview/ranking',
+    method: 'get',
+  });
+}
+
+// 商品支付排行榜
+export function payDataApi() {
+  return request({
+    url: '/admin/merchant/statistics/home/product/pay/ranking',
+    method: 'get',
+  });
+}

+ 54 - 0
mer_mer_admin/src/api/deliveryPersonnel.js

@@ -0,0 +1,54 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * @description 商户配送人员分页列表
+ */
+export function personnelListApi(params) {
+  return request({
+    url: '/admin/merchant/delivery/personnel/page',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description 新增商户配送人员
+ */
+export function personnelSaveApi(data) {
+  return request({
+    url: '/admin/merchant/delivery/personnel/save',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 编辑商户配送人员
+ */
+export function personnelEditApi(data) {
+  return request({
+    url: '/admin/merchant/delivery/personnel/edit',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 删除商户配送人员
+ */
+export function personnelDeleteApi(id) {
+  return request({
+    url: `admin/merchant/delivery/personnel/delete/${id}`,
+    method: 'post',
+  });
+}

+ 109 - 0
mer_mer_admin/src/api/devise.js

@@ -0,0 +1,109 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * @description 新增商户装修模板
+ */
+export function pagediySaveApi(data) {
+  return request({
+    url: '/admin/merchant/page/diy/save',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 商户装修模板分页列表
+ */
+export function pagediyListApi(params) {
+  return request({
+    url: '/admin/merchant/page/diy/page',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description diy 详情
+ */
+export function pagediyInfoApi(id) {
+  return request({
+    url: `/admin/merchant/page/diy/info/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * @description 编辑商户装修模板
+ */
+export function pagediyUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/page/diy/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 设置商户装修默认首页
+ */
+export function pagediySetdefaultApi(id) {
+  return request({
+    url: `/admin/merchant/page/diy/set/default/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * @description 删除商户装修模板
+ */
+export function pagediyDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/page/diy/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 获取商户装修默认首页ID
+ * @returns {*}
+ */
+export function pagediyGetSetHome() {
+  return request({
+    url: `/admin/merchant/page/diy/get/default/id`,
+    method: 'get',
+  });
+}
+
+/**
+ * 获取小程序二维码
+ * @returns {*}
+ */
+export function wechatQrcodeApi(data) {
+  return request({
+    url: `/publicly/wechat/mini/get/qrcode`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 编辑商户装修模板名称
+ * @returns {*}
+ */
+export function pagediyUpdatenameApi(data) {
+  return request({
+    url: `/admin/merchant/page/diy/update/name`,
+    method: 'post',
+    data,
+  });
+}

+ 166 - 0
mer_mer_admin/src/api/finance.js

@@ -0,0 +1,166 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+import request from '@/utils/request';
+import req from './req';
+
+/**
+ * @description 财务对账 -- 对账单列表
+ */
+export function reconciliationListApi(data) {
+  return request.get(`store/order/reconciliation/lst`, data);
+}
+
+/**
+ * @description 财务对账 -- 确认打款
+ */
+export function reconciliationStatusApi(id, data) {
+  return request.post(`store/order/reconciliation/status/${id}`, data);
+}
+
+/**
+ * @description 财务对账 -- 查看订单
+ */
+export function reconciliationOrderApi(id, data) {
+  return request.get(`store/order/reconciliation/${id}/order`, data);
+}
+
+/**
+ * @description 财务对账 -- 退款订单
+ */
+export function reconciliationRefundApi(id, data) {
+  return request.get(`store/order/reconciliation/${id}/refund`, data);
+}
+
+/**
+ * @description 财务对账 -- 备注
+ */
+export function reconciliationMarkApi(id) {
+  return request.get(`store/order/reconciliation/mark/${id}/form`);
+}
+/**
+ * @description 资金流水 -- 列表
+ */
+export function capitalFlowLstApi(params) {
+  return request({
+    url: `admin/merchant/finance/funds/flow`,
+    method: 'get',
+    params,
+  });
+}
+/**
+ * @description 资金流水 -- 导出
+ */
+export function capitalFlowExportApi(data) {
+  return request.get(`financial_record/export`, data);
+}
+/**
+ * @description 转账记录 -- 导出
+ */
+export function transferRecordsExportApi(data) {
+  return request.get(`financial/export`, data);
+}
+/**
+ * @description 结算申请
+ */
+export function closingApplyApi(data) {
+  return request({
+    url: 'admin/merchant/finance/closing/apply',
+    method: 'post',
+    data,
+  });
+}
+/**
+ * @description 结算记录分页列表
+ */
+export function closingRecordListApi(params) {
+  return request({
+    url: 'admin/merchant/finance/closing/record/list',
+    method: 'GET',
+    params,
+  });
+}
+/**
+ * @description 获取结算申请基础信息
+ */
+export function closingBaseInfoApi() {
+  return request({
+    url: `admin/merchant/finance/closing/base/info`,
+    method: 'GET',
+  });
+}
+
+/**
+ * @description 结算记录详情
+ */
+export function closingDetailApi(id) {
+  return request({
+    url: `admin/merchant/finance/closing/record/detail/${id}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * @description 账单管理 日帐单管理分页列表
+ */
+export function dayStatementApi(params) {
+  return request({
+    url: `admin/merchant/finance/daily/statement/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description 账单管理 月帐单管理分页列表
+ */
+export function monthStatementApi(params) {
+  return request({
+    url: `admin/merchant/finance/month/statement/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description 申请转账 -- 备注
+ */
+export function transferMarkApi(id) {
+  return request.get(`financial/mark/${id}/form`);
+}
+/**
+ * @description 财务账单 -- 列表
+ */
+export function financialLstApi(data) {
+  return request.get(`financial_record/lst`, data);
+}
+/**
+ * @description 财务账单 -- 详情
+ */
+export function financialDetailApi(type, data) {
+  return request.get(`financial_record/detail/${type}`, data);
+}
+/**
+ * @description 财务账单 -- 头部数据
+ */
+export function finaHeaderDataApi(data) {
+  return request.get(`financial_record/title`, data);
+}
+/**
+ * @description 财务账单 -- 下载账单
+ */
+export function downloadFinancialApi(type, data) {
+  return request.get(`financial_record/detail_export/${type}`, data);
+}
+/**
+ * @description 资金流水 -- 统计数据
+ */
+export function getStatisticsApi(data) {
+  return request.get(`financial_record/count`, data);
+}

+ 154 - 0
mer_mer_admin/src/api/group.js

@@ -0,0 +1,154 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+// ------------------------拼团活动----------------------------------------
+
+/**
+ * 新增
+ * @param
+ */
+export function groupBuySave(pram) {
+  return request({
+    url: '/admin/merchant/groupbuy/activity/save',
+    method: 'POST',
+    data: pram,
+  });
+}
+
+/**
+ * 分页列表
+ * @param
+ */
+export function groupBuyList(pram) {
+  const data = {
+    page: pram.page,
+    limit: pram.limit,
+    groupName: pram.groupName,
+    groupProcess: pram.groupProcess,
+    activityStatus: pram.activityStatus,
+    groupStatus: pram.groupStatus,
+    startTime: pram.startTime,
+  };
+  return request({
+    url: '/admin/merchant/groupbuy/activity/list',
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 修改
+ * @param
+ */
+export function groupBuyUpdate(pram) {
+  return request({
+    url: '/admin/merchant/groupbuy/activity/update',
+    method: 'post',
+    data: pram,
+  });
+}
+/**
+ * 删除
+ * @param
+ */
+export function groupBuyDelete(id) {
+  const data = {
+    id: id,
+  };
+  return request({
+    url: '/admin/merchant/groupbuy/activity/delete',
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 详情
+ * @param
+ */
+export function groupBuyInfo(id) {
+  const data = {
+    id: id,
+  };
+  return request({
+    url: `/admin/merchant/groupbuy/activity/info`,
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 拼团头部
+ * @param
+ */
+export function groupBuyListCount(data) {
+  return request({
+    url: '/admin/merchant/groupbuy/activity/list/count',
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 状态变更
+ * @param
+ */
+export function groupActivityStatus(pram) {
+  return request({
+    url: '/admin/merchant/groupbuy/activity/status',
+    method: 'post',
+    data: pram,
+  });
+}
+/**
+ * 撤回审核
+ * @param
+ */
+export function groupbuyActivityRollback(id) {
+  const data = {
+    id: id,
+  };
+  return request({
+    url: '/admin/merchant/groupbuy/activity/activity/rollback',
+    method: 'get',
+    params: data,
+  });
+}
+// ------------------------拼团记录----------------------------------------
+/**
+ * 分页列表
+ * @param
+ */
+export function groupBuyRecordList(data) {
+  return request({
+    url: '/admin/merchant/groupbuy/record/list',
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 详情
+ * @param
+ */
+export function groupRecordInfo(id) {
+  return request({
+    url: `/admin/merchant/groupbuy/record/info/${id}`,
+    method: 'get',
+  });
+}
+/**
+ * 头部
+ * @param
+ */
+export function groupBuyRecordCount(data) {
+  return request({
+    url: '/admin/merchant/groupbuy/record/list/count',
+    method: 'get',
+    params: data,
+  });
+}

+ 161 - 0
mer_mer_admin/src/api/logistics.js

@@ -0,0 +1,161 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * @description 全部物流公司
+ */
+export function expressAllApi(params) {
+  return request({
+    url: 'admin/merchant/express/all',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description 物流运费模板列表
+ */
+export function shippingTemplatesList(data) {
+  return request({
+    url: '/admin/merchant/shipping/templates/list',
+    method: 'get',
+    params: { ...data },
+  });
+}
+
+/**
+ * @description 物流运费模板详情
+ */
+export function templateDetailApi(data) {
+  return request({
+    url: `/admin/merchant/shipping/templates/info/${data.id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * @description 物流运费模板新增
+ */
+export function shippingSave(data) {
+  return request({
+    url: 'admin/merchant/shipping/templates/save',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 物流运费模板更新
+ */
+export function shippingUpdate(data) {
+  return request({
+    url: 'admin/merchant/shipping/templates/update',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 物流运费模板删除
+ */
+export function shippingDetete(data) {
+  return request({
+    url: `admin/merchant/shipping/templates/delete/${data.id}`,
+    method: 'POST',
+  });
+}
+
+/**
+ * @description 城市列表
+ */
+export function cityListTree() {
+  return request({
+    url: '/admin/merchant/city/region/city/tree',
+    method: 'get',
+  });
+}
+
+/**
+ * @description 查询物流公司面单模板
+ */
+export function exportTempApi(params) {
+  return request({
+    url: '/admin/merchant/express/template',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description 商户物流公司默认开关
+ */
+export function expressDefaultAwitchApi(id) {
+  return request({
+    url: `/admin/merchant/express/default/switch/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * @description 商户物流公司删除
+ */
+export function expressDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/express/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * @description 添加电子面单信息
+ * @param data
+ * @returns {*}
+ */
+export function expressUpdate(data) {
+  return request({
+    url: `/admin/merchant/express/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 商户物流公司开关
+ */
+export function expressOpenSwitchApi(id) {
+  return request({
+    url: `/admin/merchant/express/open/switch/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * @description 商户关联物流公司
+ */
+export function expressRelateApi(data) {
+  return request({
+    url: `/admin/merchant/express/relate`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 商户物流公司分页列表
+ */
+export function expressPageApi(params) {
+  return request({
+    url: `/admin/merchant/express/search/page`,
+    method: 'GET',
+    params,
+  });
+}

+ 748 - 0
mer_mer_admin/src/api/marketing.js

@@ -0,0 +1,748 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 会员领取记录 列表
+ * @param pram
+ */
+export function couponUserListApi(params) {
+  return request({
+    url: '/admin/merchant/coupon/user/list',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 视频号 草稿列表
+ */
+export function draftListApi(params) {
+  return request({
+    url: `/admin/merchant/pay/component/draftproduct/draft/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 视频号 过审商品列表
+ */
+export function videoProductListApi(params) {
+  return request({
+    url: `/admin/merchant/pay/component/product/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 视频号 类目
+ */
+export function catListApi(params) {
+  return request({
+    url: `/admin/merchant/pay/component/cat/get/list`,
+    method: 'get',
+  });
+}
+
+/**
+ * 视频号 草稿商品添加
+ */
+export function videoAddApi(data) {
+  return request({
+    url: `/admin/merchant/pay/component/draftproduct/add`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 视频号 过审商品上架
+ */
+export function videoUpApi(proId) {
+  return request({
+    url: `/admin/merchant/pay/component/product/puton/${proId}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 视频号 过审商品下架
+ */
+export function videoDownApi(proId) {
+  return request({
+    url: `/admin/merchant/pay/component/product/putdown/${proId}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 视频号 草稿商品删除
+ */
+export function draftDelApi(id) {
+  return request({
+    url: `/admin/merchant/pay/component/draftproduct/delete/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 视频号 草稿商品详情
+ */
+export function draftInfoApi(id) {
+  return request({
+    url: `/admin/merchant/pay/component/draftproduct/draft/get/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 视频号 草稿商品编辑
+ */
+export function draftUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/pay/component/draftproduct/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 视频号 草稿商品图片上传至微信
+ */
+export function shopImgUploadApi(data) {
+  return request({
+    url: `/admin/merchant/pay/component/shop/img/upload`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 视频号 商家审核草稿商品
+ */
+export function draftReviewApi(data) {
+  return request({
+    url: `/admin/merchant/pay/component/draftproduct/review`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 视频号 品牌列表
+ */
+export function draftBrandlistApi() {
+  return request({
+    url: `/admin/merchant/pay/component/shop/brand/usable/list`,
+    method: 'get',
+  });
+}
+
+/**
+ * 视频号 过审商品删除
+ */
+export function payProductDeleteApi(proId) {
+  return request({
+    url: `/admin/merchant/pay/component/product/delete/${proId}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 视频号 过审商品详情
+ */
+export function payProductGetApi(id) {
+  return request({
+    url: `/admin/merchant/pay/component/product/get/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 秒杀 秒杀活动详情
+ */
+export function seckillActivityDetailApi(id) {
+  return request({
+    url: `/admin/merchant/seckill/activity/detail/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 秒杀 秒杀活动分页列表
+ */
+export function seckillActivityListApi(params) {
+  return request({
+    url: `/admin/merchant/seckill/activity/page`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品列表
+ */
+export function seckillProListApi(params) {
+  return request({
+    url: `/admin/merchant/seckill/product/page`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品删除
+ */
+export function seckillProDelApi(data) {
+  return request({
+    url: `/admin/merchant/seckill/product/delete`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品添加
+ */
+export function seckillProAddApi(data) {
+  return request({
+    url: `/admin/merchant/seckill/product/add`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品下架
+ */
+export function seckillProDownApi(data) {
+  return request({
+    url: `/admin/merchant/seckill/product/down`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品上架
+ */
+export function seckillProUpApi(data) {
+  return request({
+    url: `/admin/merchant/seckill/product/up`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品设置活动价
+ */
+export function seckillProSetPriceApi(data) {
+  return request({
+    url: `/admin/merchant/seckill/product/set/price`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 秒杀 秒杀商品撤回审核
+ */
+export function seckillProWithdrawApi(id) {
+  return request({
+    url: `/admin/merchant/seckill/product/withdraw/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 直播 商品撤回审核
+ */
+export function liveGoodsAuditResetApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/audit/reset/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 重新提交申请
+ */
+export function liveGoodsAuditApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/audit/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 商品 删除
+ */
+export function liveGoodsDelApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/delete/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 商品 详情
+ */
+export function liveGoodsInfoApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/info/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 商品 分页列表
+ */
+export function liveGoodsListApi(params) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 直播 商品 新增并提审
+ */
+export function liveGoodsSaveApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/save`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 商品 修改
+ */
+export function liveGoodsuUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/update`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 商品 微信 - 素材上传
+ */
+export function mediaUploadApi(data, params) {
+  return request({
+    url: `/admin/merchant/mp/media/upload`,
+    method: 'POST',
+    params,
+    data,
+  });
+}
+
+/**
+ * 直播 商品 修改
+ */
+export function liveGoodsUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/update`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 小助手 删除
+ */
+export function liveAssistantDelApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/assistant/delete/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 小助手 详情
+ */
+export function liveAssistantInfoApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/assistant/info/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 小助手 分页列表
+ */
+export function liveAssistantListApi(params) {
+  return request({
+    url: `/admin/merchant/mp/live/assistant/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 直播 小助手 新增
+ */
+export function liveAssistantSaveApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/assistant/save`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 小助手 修改
+ */
+export function liveAssistantUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/assistant/update`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 新增直播间小助手 到直播间
+ */
+export function liveRoomAddasstoroomeApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/addasstoroome`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 新增直播间小助手 到直播间
+ */
+export function liveRoomEditasstoroomeApi(id, assid) {
+  return request({
+    url: `/admin/merchant/mp/live/room/modifyass/${id}/${assid}`,
+    method: 'POST',
+  });
+}
+
+/**
+ * 直播 直播间  删除直播间小助手
+ */
+export function liveRoomRemoveasstoroomeApi(id, assid) {
+  return request({
+    url: `/admin/merchant/mp/live/room/removeass/${id}/${assid}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 导入商品
+ */
+export function liveRoomAddgoodsApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/addgoods`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 新增直播间主播副号
+ */
+export function liveRoomAddsubanchorApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/addsubanchor`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 创建直播室
+ */
+export function liveRoomCreateApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/create`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 删除直播室
+ */
+export function liveRoomDeleteApi(roomId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/delete/${roomId}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 直播 直播间 删除直播间商品
+ */
+export function liveRoomDeletegoodsinroomApi(roomId, goodsId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/deletegoodsinroom/${roomId}/${goodsId}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 直播 直播间 删除直播间主播副号
+ */
+export function liveRoomDeletesubanchorApi(roomId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/deletesubanchor/${roomId}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 直播 直播间 编辑直播室
+ */
+export function liveRoomEditApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/edit`,
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 获取直播间分享二维码
+ */
+export function liveRoomGetsharecodeApi(roomId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/getsharecode/${roomId}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 获取直播间主播副号
+ */
+export function liveRoomGetsubanchorApi(roomId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/getsubanchor/${roomId}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 下载讲解视频
+ */
+export function liveRoomGetvideoApi(id, roomId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/getvideo/${id}/${goodsId}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 商品上下架
+ */
+export function liveRoomGoodsonsaleApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/goodsonsale`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 商品排序
+ */
+export function liveRoomGoodsortApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/goodsort`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 查询直播间小助手
+ */
+export function liveRoomModifyassApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/room/modifyass/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 修改直播间小助手
+ */
+export function liveRoomModifyassUpdateApi(id, assid) {
+  return request({
+    url: `/admin/merchant/mp/live/room/modifyass/${id}/${assid}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 修改直播间主播副号
+ */
+export function liveRoomModifysubanchorApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/modifysubanchor`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 推送商品
+ */
+export function liveRoomPushgoodsApi(roomId, goodsId) {
+  return request({
+    url: `/admin/merchant/mp/live/room/pushgoods/${roomId}/${goodsId}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 删除直播间小助手
+ */
+export function liveRoomRemoveassApi(id, assid) {
+  return request({
+    url: `/admin/merchant/mp/live/room/removeass/${id}/${assid}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 禁言管理
+ */
+export function liveRoomUpdatecommentApi(id, banComment) {
+  return request({
+    url: `/admin/merchant/mp/live/room/updatecomment/${id}/${banComment}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 官方收录管理
+ */
+export function liveRoomIsFeedsPublicApi(id, isFeedsPublic) {
+  return request({
+    url: `/admin/merchant/mp/live/room/updatefeedpublic/${id}/${isFeedsPublic}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 开启回放
+ */
+export function liveRoomUpdatereplayApi(id, closeReplay) {
+  return request({
+    url: `/admin/merchant/mp/live/room/updatereplay/${id}/${closeReplay}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 直播室列表和回放
+ */
+export function liveRoomListApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/list`,
+    method: 'post',
+    data: {
+      pageParamRequest: {
+        limit: data.limit,
+        page: data.page,
+      },
+      searchRequest: {
+        reviewStatus: data.reviewStatus,
+        liveStatus: data.liveStatus,
+        keywords: data.keywords,
+        storeShow: data.storeShow,
+        star: data.star,
+      },
+    },
+  });
+}
+
+/**
+ * 直播 直播间 素材上传本地
+ */
+export function liveMediaUploadlocalApi(data) {
+  return request({
+    url: `/admin/merchant/mp/media/uploadlocal`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 直播间商品列表
+ */
+export function liveRoomGoodslistApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/room/goodslist/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 直播间商品列表
+ */
+export function liveRoomInfoApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/room/info/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 直播间商品列表
+ */
+export function liveRoomGetassApi(id) {
+  return request({
+    url: `/admin/merchant/mp/live/room/getass/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 直播 直播间 管理直播间小助手
+ */
+export function liveRoomMangerassApi(data) {
+  return request({
+    url: `/admin/merchant/mp/live/room/mangerass`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 直播 直播间 客服管理
+ */
+export function liveRoomUpdateclosekfApi(id, closeKf) {
+  return request({
+    url: `/admin/merchant/mp/live/room/updateclosekf/${id}/${closeKf}`,
+    method: 'get',
+  });
+}
+
+/**
+ * @description 直播-商品-修改排序
+ */
+export function liveGoodsSortApi(id, sort) {
+  return request({
+    url: `/admin/merchant/mp/live/goods/sort/${id}/${sort}`,
+    method: 'GET',
+  });
+}

+ 102 - 0
mer_mer_admin/src/api/merchant.js

@@ -0,0 +1,102 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+import request from '@/utils/request';
+
+/**
+ * 商户分类 全部列表
+ */
+export function merchantCategoryAllListApi() {
+  return request({
+    url: '/admin/merchant/category/all/list',
+    method: 'get',
+  });
+}
+
+/**
+ * 店铺类型 全部列表
+ */
+export function merchantTypeAllListApi() {
+  return request({
+    url: '/admin/merchant/type/all/list',
+    method: 'get',
+  });
+}
+
+/**
+ * @description 商户基本设置 -- 商户详情
+ */
+export function getBaseInfoApi() {
+  return request({
+    url: '/admin/merchant/base/info',
+    method: 'get',
+  });
+}
+
+/**
+ * @description 商户基本设置 -- 提交
+ */
+export function merchantUpdateApi(data) {
+  return request({
+    url: '/admin/merchant/config/info/edit',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 商户基本设置 -- 配置信息
+ */
+export function merchantConfigInfoApi() {
+  return request({
+    url: '/admin/merchant/config/info',
+    method: 'get',
+  });
+}
+
+/**
+ * @description 商户基本设置 -- 商户开关
+ */
+export function merchantSwitchApi() {
+  return request({
+    url: '/admin/merchant/switch/update',
+    method: 'post',
+  });
+}
+
+/**
+ * @description 商户基本设置 -- 转账信息
+ */
+export function merchantTransferApi() {
+  return request({
+    url: '/admin/merchant/settlement/info',
+    method: 'GET',
+  });
+}
+
+/**
+ * @description 商户基本设置 -- 转账信息编辑
+ */
+export function merchantTransferEditApi(data) {
+  return request({
+    url: '/admin/merchant/settlement/info/edit',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 获取商户端商户商品审核开关信息
+ */
+export function productAuditSwitchInfoApi() {
+  return request({
+    url: '/admin/merchant/product/audit/switch/info',
+    method: 'get',
+  });
+}

+ 367 - 0
mer_mer_admin/src/api/order.js

@@ -0,0 +1,367 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 订单 列表
+ * @param prams
+ */
+export function orderListApi(params) {
+  return request({
+    url: '/admin/merchant/order/list',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 订单 列表 获取各状态数量
+ * @param params
+ */
+export function orderStatusNumApi(params) {
+  return request({
+    url: '/admin/merchant/order/status/num',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 订单 删除
+ * @param params
+ */
+export function orderDeleteApi(orderNo) {
+  return request({
+    url: `/admin/merchant/order/delete/${orderNo}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 订单 记录
+ * @param prams
+ */
+export function orderLogApi(params) {
+  return request({
+    url: '/admin/store/order/status/list',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 订单 详情
+ * @param prams
+ */
+export function orderDetailApi(orderNo) {
+  return request({
+    url: `/admin/merchant/order/info/${orderNo}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 订单 备注
+ * @param prams
+ */
+export function orderMarkApi(data) {
+  return request({
+    url: '/admin/merchant/order/mark',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 订单 发货
+ * @param prams
+ */
+export function orderSendApi(data) {
+  return request({
+    url: '/admin/merchant/order/send',
+    method: 'post',
+    data,
+  });
+}
+
+export function orderPrintReceiptApi(orderno) {
+  return request({
+    url: '/admin/merchant/order/printreceipt/' + orderno,
+    method: 'get',
+  });
+}
+
+/**
+ * 订单 拒绝退款
+ * @param prams
+ */
+export function orderRefuseApi(params) {
+  return request({
+    url: '/admin/merchant/refund/order/refund/refuse',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 订单 立即退款
+ * @param prams
+ */
+export function orderRefundApi(params) {
+  return request({
+    url: '/admin/merchant/refund/order/refund',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 订单 统计 头部数据
+ */
+export function orderStatisticsApi() {
+  return request({
+    url: `/admin/store/order/statistics`,
+    method: 'get',
+  });
+}
+
+/**
+ * 核销订单 月列表数据
+ */
+export function statisticsDataApi(params) {
+  return request({
+    url: `/admin/store/order/statisticsData`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 一键改价
+ */
+export function updatePriceApi(data) {
+  return request({
+    url: `admin/store/order/update/price`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ *订单统计详情
+ */
+export function orderTimeApi(params) {
+  return request({
+    url: `/admin/store/order/time`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ *面单默认配置信息
+ */
+export function sheetInfoApi() {
+  return request({
+    url: `/admin/store/order/sheet/info`,
+    method: 'get',
+  });
+}
+
+/**
+ *面单默认配置信息
+ */
+export function getLogisticsInfoApi(invoiceId) {
+  return request({
+    url: `/admin/merchant/order/get/${invoiceId}/logistics/info`,
+    method: 'get',
+  });
+}
+
+/**
+ *视频号物流公司
+ */
+export function companyGetListApi() {
+  return request({
+    url: `/admin/pay/component/delivery/company/get/list`,
+    method: 'get',
+  });
+}
+
+/**
+ *视频号物流公司
+ */
+export function videoSendApi(data) {
+  return request({
+    url: `/admin/store/order/video/send`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ *打印小票
+ */
+export function orderPrint(id) {
+  return request({
+    url: `/admin/yly/print/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ *退款列表
+ */
+export function refundListApi(params) {
+  return request({
+    url: `/admin/merchant/refund/order/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ *退商户备注退款订单
+ */
+export function refundMarkApi(data) {
+  return request({
+    url: `/admin/merchant/refund/order/mark`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ *获取退款订单各状态数量
+ */
+export function refundStatusNumApi(params) {
+  return request({
+    url: `/admin/merchant/refund/order/status/num`,
+    method: 'GET',
+    params,
+  });
+}
+
+/**
+ * 订单 核销订单
+ * @param data
+ */
+export function writeUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/order/verification`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 订单细节详情列表(发货使用)
+ * @param orderNo 订单号
+ */
+export function orderProDetailApi(orderNo) {
+  return request({
+    url: `/admin/merchant/order/${orderNo}/detail/list`,
+    method: 'get',
+  });
+}
+
+/**
+ * 获取订单发货单列表
+ * @param orderNo 订单号
+ */
+export function orderInvoiceListApi(orderNo) {
+  return request({
+    url: `/admin/merchant/order/${orderNo}/invoice/list`,
+    method: 'get',
+  });
+}
+
+/**
+ * 平台端退款订单详情
+ * @param refundOrderNo 订单号
+ */
+export function refundOrderDetailApi(refundOrderNo) {
+  return request({
+    url: `/admin/merchant/refund/order/detail/${refundOrderNo}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 平台端退款订单详情
+ * @param params 对象
+ */
+export function orderExcelApi(params) {
+  return request({
+    url: `/admin/merchant/export/order/excel`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 退款单审核
+ * @param data 对象
+ */
+export function orderAuditApi(data) {
+  return request({
+    url: `/admin/merchant/refund/order/audit`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 退款单收到退货
+ * @param refundOrderNo 退款单号
+ */
+export function refundOrderReceivingApi(refundOrderNo) {
+  return request({
+    url: `/admin/merchant/refund/order/receiving/${refundOrderNo}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 退款单拒绝收货
+ * @param data
+ */
+export function refundOrderReceivingRejectApi(data) {
+  return request({
+    url: `/admin/merchant/refund/order/receiving/reject`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商户直接退款
+ * @param data
+ */
+export function orderDirectRefundApi(data) {
+  return request({
+    url: `/admin/merchant/order/direct/refund`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 修改发货单配送信息
+ * @param data
+ */
+export function orderInvoiceUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/order/invoice/update`,
+    method: 'post',
+    data,
+  });
+}

+ 738 - 0
mer_mer_admin/src/api/product.js

@@ -0,0 +1,738 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 新增商品
+ * @param pram
+ */
+export function productCreateApi(data) {
+  return request({
+    url: '/admin/merchant/product/save',
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 编辑商品
+ * @param pram
+ */
+export function productUpdateApi(data) {
+  return request({
+    url: '/admin/merchant/product/update',
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 商品详情
+ * @param pram
+ */
+export function productDetailApi(id) {
+  return request({
+    url: `/admin/merchant/product/info/${id}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 删除商品
+ * @param pram
+ */
+export function productDeleteApi(data) {
+  return request({
+    url: `/admin/merchant/product/delete`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商品列表 表头数量
+ */
+export function productHeadersApi(params) {
+  return request({
+    url: '/admin/merchant/product/tabs/headers',
+    method: 'GET',
+    params,
+  });
+}
+
+/**
+ * 商品列表
+ * @param pram
+ */
+export function productLstApi(params) {
+  return request({
+    url: '/admin/merchant/product/list',
+    method: 'GET',
+    params,
+  });
+}
+/**
+ * 平台端商品分类缓存树
+ * @param pram
+ */
+export function categoryApi() {
+  return request({
+    url: '/admin/merchant/plat/product/category/cache/tree',
+    method: 'GET',
+  });
+}
+/**
+ * 商户端商品分类缓存树
+ * @param pram
+ */
+export function storeCategoryAllApi() {
+  return request({
+    url: '/admin/merchant/store/product/category/cache/tree',
+    method: 'GET',
+  });
+}
+/**
+ * 商品上架
+ * @param pram
+ */
+export function putOnShellApi(id) {
+  return request({
+    url: `/admin/merchant/product/up/${id}`,
+    method: 'post',
+  });
+}
+/**
+ * 商品下架
+ * @param pram
+ */
+export function offShellApi(id) {
+  return request({
+    url: `/admin/merchant/product/down/${id}`,
+    method: 'post',
+  });
+}
+/**
+ * 商品规格 列表
+ * @param pram
+ */
+export function templateListApi(params) {
+  return request({
+    url: '/admin/merchant/product/rule/list',
+    method: 'GET',
+    params,
+  });
+}
+/**
+ * 商品规格 删除
+ * @param pram
+ */
+export function attrDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/product/rule/delete/${id}`,
+    method: 'post',
+  });
+}
+/**
+ * 商品规格 新增
+ * @param pram
+ */
+export function attrCreatApi(data) {
+  return request({
+    url: '/admin/merchant/product/rule/save',
+    method: 'POST',
+    data,
+  });
+}
+/**
+ * 商品规格 编辑
+ * @param pram
+ */
+export function attrEditApi(data) {
+  return request({
+    url: '/admin/merchant/product/rule/update',
+    method: 'POST',
+    data,
+  });
+}
+/**
+ * 商品规格 详情
+ * @param pram
+ */
+export function attrInfoApi(id) {
+  return request({
+    url: `admin/merchant/product/rule/info/${id}`,
+    method: 'GET',
+  });
+}
+/**
+ * 商品评论 列表
+ * @param pram
+ */
+export function replyListApi(params) {
+  return request({
+    url: '/admin/merchant/product/reply/list',
+    method: 'GET',
+    params,
+  });
+}
+/**
+ * 商品评论 新增
+ * @param pram
+ */
+export function replyCreatApi(data) {
+  return request({
+    url: '/admin/merchant/product/reply/virtual',
+    method: 'POST',
+    data,
+  });
+}
+/**
+ * 商品评论 编辑
+ * @param pram
+ */
+export function replyEditApi(data) {
+  return request({
+    url: '/admin/store/product/reply/update',
+    method: 'POST',
+    data,
+  });
+}
+/**
+ * 商品评论 详情
+ * @param pram
+ */
+export function replyInfoApi(id) {
+  return request({
+    url: `/admin/store/product/reply/info/${id}`,
+    method: 'GET',
+  });
+}
+/**
+ * 商品评论 删除
+ * @param pram
+ */
+export function replyDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/product/reply/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 商品评论 回复
+ * @param pram
+ */
+export function replyCommentApi(data) {
+  return request({
+    url: `/admin/merchant/product/reply/comment`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商品评论 导出
+ * @param pram
+ */
+export function productExportApi(params) {
+  return request({
+    url: `/admin/export/excel/product`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 商品复制 99Api
+ * @param pram
+ */
+export function importProductApi(params) {
+  return request({
+    url: `/admin/merchant/product/importProduct`,
+    method: 'post',
+    params,
+  });
+}
+
+/**
+ * 商品复制 一号通
+ * @param pram
+ */
+export function copyProductApi(data) {
+  return request({
+    url: `/admin/merchant/product/copy/product`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 恢复
+ * @param pram
+ */
+export function restoreApi(id) {
+  return request({
+    url: `/admin/merchant/product/restore/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 商品列表 导出
+ * @param pram
+ */
+export function productExcelApi(params) {
+  return request({
+    url: `/admin/export/excel/product`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 商品列表 获取复制商品配置
+ * @param pram
+ */
+export function copyConfigApi() {
+  return request({
+    url: `/admin/merchant/product/copy/config`,
+    method: 'post',
+  });
+}
+
+/**
+ * 订单数据 导出
+ * @param pram
+ */
+export function orderExcelApi(params) {
+  return request({
+    url: `/admin/export/excel/order`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 商品分类 列表
+ * @param pram
+ */
+export function productCategoryListApi(params) {
+  return request({
+    url: '/admin/merchant/store/product/category/list',
+    method: 'GET',
+    params,
+  });
+}
+/**
+ * 商品分类 新增
+ * @param pram
+ */
+export function productCategoryAddApi(data) {
+  return request({
+    url: '/admin/merchant/store/product/category/add',
+    method: 'post',
+    data,
+  });
+}
+/**
+ * 商品分类 编辑
+ * @param pram
+ */
+export function productCategoryUpdateApi(data) {
+  return request({
+    url: '/admin/merchant/store/product/category/update',
+    method: 'post',
+    data,
+  });
+}
+/**
+ * 商品分类 删除
+ * @param pram
+ */
+export function productCategoryDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/store/product/category/delete/${id}`,
+    method: 'post',
+  });
+}
+/**
+ * 商品分类 修改分类显示状态
+ * @param pram
+ */
+export function productCategoryShowApi(id) {
+  return request({
+    url: `/admin/merchant/store/product/category/update/show/${id}`,
+    method: 'post',
+  });
+}
+/**
+ * 保障服务列表
+ * @param pram
+ */
+export function productGuaranteeApi() {
+  return request({
+    url: `/admin/merchant/plat/product/guarantee/list`,
+    method: 'get',
+  });
+}
+/**
+ * 品牌列表 全部
+ * @param pram
+ */
+export function brandAllApi() {
+  return request({
+    url: `/admin/merchant/plat/product/brand/cache/list`,
+    method: 'get',
+  });
+}
+
+/**
+ * 品牌列表
+ * @param pram
+ */
+export function brandListApi(params) {
+  return request({
+    url: `/admin/merchant/plat/product/brand/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 优惠券 列表
+ * @param pram
+ */
+export function marketingListApi(params) {
+  return request({
+    url: '/admin/merchant/coupon/list',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 商品可用优惠券列表
+ * @param pram
+ */
+export function productCouponListApi() {
+  return request({
+    url: '/admin/merchant/coupon/product/usable/list',
+    method: 'get',
+  });
+}
+
+/**
+ * 优惠券 详情
+ * @param pram
+ */
+export function couponInfoApi(id) {
+  return request({
+    url: `/admin/merchant/coupon/info/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 优惠券 修改状态
+ * @param pram
+ */
+export function couponIssueStatusApi(id) {
+  return request({
+    url: `/admin/merchant/coupon/update/status/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 优惠券 删除
+ * @param pram
+ */
+export function couponDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/coupon/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 优惠券 新增
+ * @param pram
+ */
+export function couponSaveApi(data) {
+  return request({
+    url: `/admin/merchant/coupon/save`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 优惠券 商品券关联商品编辑
+ * @param pram
+ */
+export function couponProductEditApi(data) {
+  return request({
+    url: `/admin/merchant/coupon/product/join/edit`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 保障服务组合 列表
+ * @param pram
+ */
+export function guaranteeListApi(params) {
+  return request({
+    url: `/admin/merchant/product/guarantee/group/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 保障服务组合 新增
+ * @param pram
+ */
+export function guaranteeAddApi(data) {
+  return request({
+    url: `/admin/merchant/product/guarantee/group/add`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 保障服务组合 编辑
+ * @param pram
+ */
+export function guaranteeUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/product/guarantee/group/edit`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 保障服务组合 删除
+ * @param pram
+ */
+export function guaranteeDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/product/guarantee/group/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 商品提审
+ * @param pram
+ */
+export function productAuditApi(data) {
+  return request({
+    url: `/admin/merchant/product/submit/audit`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 快捷添加库存
+ * @param pram
+ */
+export function productStockAddApi(data) {
+  return request({
+    url: `/admin/merchant/product/quick/stock/add`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商品免审编辑
+ * @param pram
+ */
+export function productFreeEditApi(data) {
+  return request({
+    url: `/admin/merchant/product/review/free/edit`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商品搜索分页列表(活动,diy、氛围图、除去营销活动的商品列表)
+ * @param pram
+ */
+export function productActivityListApi(params) {
+  return request({
+    url: '/admin/merchant/product/activity/search/page',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 添加回馈券
+ * @param data
+ */
+export function productAddCouponsApi(data) {
+  return request({
+    url: '/admin/merchant/product/add/feedback/coupons',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量添加回馈券
+ * @param data
+ */
+export function productBatchAddCouponsApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/add/feedback/coupons',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量删除商品
+ * @param data
+ */
+export function productBatchDeleteApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/delete',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量商品下架
+ * @param data
+ */
+export function productBatchDownApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/down',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量加入回收站
+ * @param data
+ */
+export function productBatchRecycleApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/recycle',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量恢复回收站商品
+ * @param data
+ */
+export function productBatchRestoreApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/restore',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量设置佣金
+ * @param data
+ */
+export function productBatchBrokerageApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/set/brokerage',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量设置运费模板
+ * @param data
+ */
+export function productBatchFreightApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/set/freight/template',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量提审商品
+ * @param data
+ */
+export function productBatchAuditApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/submit/audit',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量上架商品
+ * @param data
+ */
+export function productBatchUpApi(data) {
+  return request({
+    url: '/admin/merchant/product/batch/up',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 设置佣金
+ * @param data
+ */
+export function productBrokerageApi(data) {
+  return request({
+    url: '/admin/merchant/product/set/brokerage',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 设置运费模板
+ * @param data
+ */
+export function productSetFreightApi(data) {
+  return request({
+    url: '/admin/merchant/product/set/freight/template',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商品搜索分页列表(营销活动,现有秒杀与拼团中调用)
+ * @param pram
+ */
+export function productMarketingListApi(params) {
+  return request({
+    url: '/admin/merchant/product/marketing/search/page',
+    method: 'get',
+    params,
+  });
+}

+ 142 - 0
mer_mer_admin/src/api/productCdkey.js

@@ -0,0 +1,142 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 删除卡密库
+ * @param id
+ */
+export function productCdkeyDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/cdkey/library/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 卡密库分页列表
+ * @param params
+ */
+export function productCdkeyListApi(params) {
+  return request({
+    url: `/admin/merchant/cdkey/library/page/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 新增卡密库
+ * @param data
+ */
+export function productCdkeysaveApi(data) {
+  return request({
+    url: `/admin/merchant/cdkey/library/save`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 未关联卡密库列表
+ * @param params
+ */
+export function productUnrelatedListApi(params) {
+  return request({
+    url: `/admin/merchant/cdkey/library/unrelated/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 修改卡密库
+ * @param data
+ */
+export function productUnrelatedUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/cdkey/library/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 删除卡密
+ * @param id
+ */
+export function cardSecretDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/card/secret/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 导入卡密
+ * @param data
+ */
+export function cardSecretImportExcelApi(data, params) {
+  return request({
+    url: `/admin/merchant/card/secret/import/excel`,
+    method: 'post',
+    data,
+    params,
+  });
+}
+
+/**
+ * 卡密分页列表
+ * @param params
+ */
+export function cardSecretPageListApi(params) {
+  return request({
+    url: `/admin/merchant/card/secret/page/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 新增卡密
+ * @param data
+ */
+export function cardSecretSaveApi(data) {
+  return request({
+    url: `/admin/merchant/card/secret/save`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 修改卡密
+ * @param data
+ */
+export function cardSecretUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/card/secret/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 批量删除卡密
+ * @param data
+ */
+export function cardSecretBatchDeleteApi(data) {
+  return request({
+    url: `/admin/merchant/card/secret/batch/delete`,
+    method: 'post',
+    data,
+  });
+}

+ 42 - 0
mer_mer_admin/src/api/req.js

@@ -0,0 +1,42 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import axios from 'axios';
+
+const service = axios.create({
+  timeout: 40000,
+});
+service.interceptors.request.use(
+  (config) => {
+    return config;
+  },
+  (error) => {
+    Promise.reject(error);
+  },
+);
+
+// response interceptor
+service.interceptors.response.use(
+  (response) => {
+    const res = response;
+    if (res.status !== 200 && res.status !== 401) {
+      Message({
+        message: res.data.msg || 'Error',
+        type: 'error',
+        duration: 5 * 1000,
+      });
+      return Promise.reject();
+    } else {
+      return res.data;
+    }
+  },
+  (error) => {},
+);
+export default service;

+ 112 - 0
mer_mer_admin/src/api/role.js

@@ -0,0 +1,112 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 新增
+ * @param
+ */
+export function addRole(pram) {
+  const data = {
+    roleName: pram.roleName,
+    status: pram.status,
+    rules: pram.rules,
+    merId: pram.merId,
+  };
+  // data.rules = pram.rules.join(',')
+  return request({
+    url: '/admin/merchant/role/save',
+    method: 'POST',
+    data: data,
+  });
+}
+
+/**
+ * 删除
+ * @param
+ */
+export function delRole(id) {
+  return request({
+    url: `admin/merchant/role/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 详情
+ * @param
+ */
+export function getInfo(pram) {
+  return request({
+    url: `/admin/merchant/role/info/${pram}`,
+    method: 'GET',
+  });
+}
+
+/**
+ * 分页列表
+ * @param
+ */
+export function getRoleList(pram) {
+  const data = {
+    page: pram.page,
+    limit: pram.limit,
+    roleName: pram.roleName,
+    status: pram.status,
+  };
+  return request({
+    url: '/admin/merchant/role/list',
+    method: 'get',
+    params: data,
+  });
+}
+
+/**
+ * 修改
+ * @param
+ */
+export function updateRole(pram) {
+  const data = {
+    id: pram.id,
+    roleName: pram.roleName,
+    rules: pram.rules,
+    status: pram.status,
+    merId: pram.merId,
+  };
+  return request({
+    url: '/admin/merchant/role/update',
+    method: 'post',
+    data: data,
+  });
+}
+
+/**
+ * 修改身份状态
+ * @param
+ */
+export function updateRoleStatus(pram) {
+  return request({
+    url: '/admin/merchant/role/updateStatus',
+    method: 'post',
+    data: { id: pram.id, status: pram.status },
+  });
+}
+
+/**
+ * 缓存菜单
+ * @param
+ */
+export function menuCacheList(pram) {
+  return request({
+    url: '/admin/merchant/menu/cache/tree',
+    method: 'get',
+  });
+}

+ 22 - 0
mer_mer_admin/src/api/roleApi.js

@@ -0,0 +1,22 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 菜单
+ * @param pram
+ */
+export function menuListApi() {
+  return request({
+    url: '/admin/merchant/getMenus',
+    method: 'GET',
+  });
+}

+ 93 - 0
mer_mer_admin/src/api/staff.js

@@ -0,0 +1,93 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 分页列表
+ * @param
+ */
+export function employeeRoleList(pram) {
+  const data = {
+    page: pram.page,
+    limit: pram.limit,
+    keywords: pram.keywords,
+    status: pram.status,
+  };
+  return request({
+    url: '/admin/merchant/employee/list',
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 删除
+ * @param
+ */
+export function employeeDelRole(id) {
+  const data = {
+    id: id,
+  };
+  return request({
+    url: 'admin/merchant/employee/delete',
+    method: 'get',
+    params: data,
+  });
+}
+/**
+ * 详情
+ * @param
+ */
+export function employeeGetInfo(pram) {
+  return request({
+    url: `/admin/merchant/employee/info/${pram}`,
+    method: 'GET',
+  });
+}
+/**
+ * 新增
+ * @param
+ */
+export function employeeAddRole(pram) {
+  const data = {
+    avatar: pram.avatar,
+    name: pram.name,
+    phone: pram.phone,
+    role: pram.role,
+    status: pram.status,
+    uid: pram.uid,
+    id: pram.id,
+  };
+  return request({
+    url: '/admin/merchant/employee/save',
+    method: 'POST',
+    data: data,
+  });
+}
+/**
+ * 修改
+ * @param
+ */
+export function employeeUpdateRole(pram) {
+  const data = {
+    avatar: pram.avater,
+    name: pram.name,
+    phone: pram.phone,
+    role: pram.role,
+    status: pram.status,
+    uid: pram.uid,
+    id: pram.id,
+  };
+  return request({
+    url: '/admin/merchant/employee/update',
+    method: 'post',
+    data: data,
+  });
+}

+ 74 - 0
mer_mer_admin/src/api/systemForm.js

@@ -0,0 +1,74 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 添加系统表单
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function systemFormAddApi(data) {
+  return request({
+    url: '/admin/merchant/system/form/add',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 删除系统表单
+ * @param id
+ * @returns {AxiosPromise}
+ */
+export function systemFormDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/system/form/delete/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 系统表单详情
+ * @param id
+ * @returns {AxiosPromise}
+ */
+export function systemFormDetailApi(id) {
+  return request({
+    url: `/admin/merchant/system/form/detail/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 系统表单分页列表
+ * @param params
+ * @returns {AxiosPromise}
+ */
+export function systemFormPageApi(params) {
+  return request({
+    url: `/admin/merchant/system/form/page`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 修改系统表单
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function systemFormUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/system/form/update`,
+    method: 'post',
+    data,
+  });
+}

+ 56 - 0
mer_mer_admin/src/api/systemFormConfig.js

@@ -0,0 +1,56 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+export function getFormConfigInfo(pram) {
+  const data = {
+    id: pram.id,
+  };
+  return request({
+    url: '/admin/merchant/form/temp/info',
+    method: 'GET',
+    params: data,
+  });
+}
+
+/**
+ * 通过名称查询详情
+ * @param pram
+ */
+export function formTempNameInfoApi(params) {
+  return request({
+    url: `/admin/merchant/form/temp/name/info`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * @description 验证行为验证码
+ */
+export function knowUserSmsCaptchaApi(data) {
+  return request({
+    url: '/publicly/safety/check',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * @description 获取行为验证码
+ */
+export function knowUserCaptchaApi(data) {
+  return request({
+    url: '/publicly/safety/get',
+    method: 'post',
+    data,
+  });
+}

+ 34 - 0
mer_mer_admin/src/api/systemPcConfig.js

@@ -0,0 +1,34 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+/**
+ * 获取商户PC商城设置
+ * @param pram
+ */
+export function getPcConfigApi() {
+  return request({
+    url: '/admin/merchant/config/get/pc/shopping/config',
+    method: 'GET',
+  });
+}
+
+/**
+ * 保存商户PC商城设置
+ * @param pram
+ */
+export function savePcConfigApi(data) {
+  return request({
+    url: '/admin/merchant/config/save/pc/shopping/config',
+    method: 'post',
+    data,
+  });
+}

+ 338 - 0
mer_mer_admin/src/api/systemSetting.js

@@ -0,0 +1,338 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+export function systemConfigCheck(pram) {
+  const data = {
+    name: pram.name,
+  };
+  return request({
+    url: '/admin/system/config/check',
+    method: 'GET',
+    params: data,
+  });
+}
+
+export function systemConfigInfo(pram) {
+  const data = {
+    formId: pram.id,
+  };
+  return request({
+    url: '/admin/system/config/info',
+    method: 'GET',
+    params: data,
+  });
+}
+
+export function systemConfigSave(pram) {
+  return request({
+    url: '/admin/system/config/save/form',
+    method: 'POST',
+    data: pram,
+  });
+}
+
+/**
+ * 文件上传
+ * @param data
+ */
+export function fileFileApi(data, params) {
+  return request({
+    url: '/admin/merchant/upload/file',
+    method: 'POST',
+    params,
+    data,
+  });
+}
+
+/**
+ * 图片上传
+ * @param data
+ */
+export function fileImageApi(data, params) {
+  return request({
+    url: '/admin/merchant/upload/image',
+    method: 'POST',
+    params,
+    data,
+  });
+}
+
+/**
+ * 图片列表
+ * @param data
+ */
+export function fileListApi(params) {
+  return request({
+    url: '/admin/merchant/attachment/list',
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 图片列表 删除图片
+ * @param data
+ */
+export function fileDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/attachment/delete`,
+    method: 'post',
+    data: { ids: id },
+  });
+}
+
+/**
+ * 图片列表 移動分類
+ * @param data
+ */
+export function attachmentMoveApi(data) {
+  return request({
+    url: `/admin/merchant/attachment/move`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ *  商家小票打印配置列表
+ * @param pram
+ * @returns {*}
+ */
+export function merchantPrintList(pram) {
+  return request({
+    url: '/admin/merchant/print/list',
+    method: 'GET',
+    params: pram,
+  });
+}
+
+/**
+ * 商家小票打印配置删除
+ * @param id
+ * @returns {*}
+ */
+export function merchantPrintDelete(id) {
+  return request({
+    url: '/admin/merchant/print/delete/' + id,
+    method: 'GET',
+  });
+}
+
+/**
+ * 商家小票打印配置详情
+ * @param pram
+ * @returns {*}
+ */
+export function merchantPrintInfo(pram) {
+  const data = {
+    key: pram.key,
+  };
+  return request({
+    url: '/admin/merchant/print/info/{id}',
+    method: 'GET',
+    params: data,
+  });
+}
+
+/**
+ * 商家小票打印配置新增
+ * @param data
+ * @returns {*}
+ */
+export function merchantPrintSave(data) {
+  return request({
+    url: `/admin/merchant/print/save`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商家小票打印配置更新状态
+ * @param data
+ * @returns {*}
+ */
+export function merchantPrintStatus(data) {
+  return request({
+    url: `/admin/merchant/print/status`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商家小票打印配置编辑
+ * @param data
+ * @returns {*}
+ */
+export function merchantPrintEdit(data) {
+  return request({
+    url: `/admin/merchant/print/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商家电子面单编辑
+ * @param data
+ * @returns {*}
+ */
+export function merchantElectrSheetEdit(data) {
+  return request({
+    url: `/admin/merchant/elect/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商家电子面单新增
+ * @param data
+ * @returns {*}
+ */
+export function merchantElectrSheetAdd(data) {
+  return request({
+    url: `/admin/merchant/elect/save`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 商家电子面单详情
+ * @returns {*}
+ */
+export function merchantElectrSheetInfo() {
+  return request({
+    url: `/admin/merchant/elect/info`,
+    method: 'get',
+  });
+}
+
+/**
+ * 商家电子面单删除
+ * @param id
+ * @returns {*}
+ */
+export function merchantElectrSheetDelete(id) {
+  return request({
+    url: `/admin/merchant/elect/delete/${id}`,
+    method: 'get',
+  });
+}
+
+
+/**
+ * 商户地址分页列表
+ * @param data
+ * @returns {*}
+ */
+export function merchantAddressListApi() {
+  return request({
+    url: `/admin/merchant/address/list`,
+    method: 'get',
+  });
+}
+
+/**
+ * 删除商户地址
+ * @param data
+ * @returns {*}
+ */
+export function merchantAddressDeleteApi(id) {
+  return request({
+    url: `/admin/merchant/address/delete/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 新增商户地址
+ * @param data
+ * @returns {*}
+ */
+export function merchantAddressSaveApi(data) {
+  return request({
+    url: `/admin/merchant/address/save`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 修改商户地址
+ * @param data
+ * @returns {*}
+ */
+export function merchantAddressUpdateApi(data) {
+  return request({
+    url: `/admin/merchant/address/update`,
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 设置商户默认地址
+ * @param data
+ * @returns {*}
+ */
+export function merchantAddressSetDefaultApi(id) {
+  return request({
+    url: `/admin/merchant/address/set/default/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 设置商户地址开启状态
+ * @param data
+ * @returns {*}
+ */
+export function merchantAddressUpdateShowApi(id) {
+  return request({
+    url: `/admin/merchant/address/update/show/${id}`,
+    method: 'post',
+  });
+}
+
+/**
+ * 获取平台当前的素材地址
+ */
+export function mediadomainApi() {
+  return request({
+    url: '/publicly/config/get/admin/mediadomain',
+    method: 'get',
+  });
+}
+
+/**
+ * 获取打印内容配置
+ */
+export function getPrintContentApi(id) {
+  return request({
+    url: `/admin/merchant/print/get/content/${id}`,
+    method: 'get',
+  });
+}
+
+/**
+ * 保存打印内容配置
+ */
+export function savePrintContentApi(data, id) {
+  return request({
+    url: `/admin/merchant/print/save/content/${id}`,
+    method: 'post',
+    data,
+  });
+}

+ 166 - 0
mer_mer_admin/src/api/systemadmin.js

@@ -0,0 +1,166 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+export function adminDel(pram) {
+  const data = {
+    id: pram.id,
+  };
+  return request({
+    url: '/admin/merchant/admin/delete',
+    method: 'GET',
+    params: data,
+  });
+}
+
+export function adminInfo(pram) {
+  const data = {
+    id: pram.id,
+  };
+  return request({
+    url: '/admin/merchant/admin/info',
+    method: 'GET',
+    params: data,
+  });
+}
+
+export function adminList(params) {
+  return request({
+    url: '/admin/merchant/admin/list',
+    method: 'GET',
+    params,
+  });
+}
+
+export function adminAdd(pram) {
+  const data = {
+    account: pram.account,
+    level: pram.level,
+    pwd: pram.pwd,
+    realName: pram.realName,
+    roles: pram.roles.join(','),
+    status: pram.status,
+    phone: pram.phone,
+  };
+  return request({
+    url: '/admin/merchant/admin/save',
+    method: 'POST',
+    data: data,
+  });
+}
+
+export function adminUpdate(pram) {
+  const data = {
+    account: pram.account,
+    phone: pram.phone,
+    pwd: pram.pwd,
+    realName: pram.realName,
+    id: pram.id,
+    roles: pram.roles,
+    status: pram.status,
+  };
+  return request({
+    url: '/admin/merchant/admin/update',
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 修改状态
+ * @param pram
+ */
+export function updateStatusApi(params) {
+  return request({
+    url: `/admin/merchant/admin/updateStatus`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 修改后台管理员是否接收状态
+ * @param pram
+ */
+export function updateIsSmsApi(params) {
+  return request({
+    url: `/admin/merchant/admin/update/isSms`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 敏感操作日志分页列表
+ * @param data
+ */
+export function sensitiveListApi(params) {
+  return request({
+    url: `/admin/merchant/log/sensitive/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ * 修改登录用户信息
+ * @param data
+ */
+export function adminAccountUpdate(pram) {
+  const data = {
+    realName: pram.realName,
+  };
+  return request({
+    url: '/admin/merchant/login/admin/update',
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 修改登录用户密码
+ * @param data
+ */
+export function adminPasswordUpdate(pram) {
+  const data = {
+    confirmPassword: pram.confirmPassword,
+    password: pram.password,
+    oldPassword: pram.oldPassword,
+  };
+  return request({
+    url: '/admin/merchant/login/admin/update/password',
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 修改管理员密码
+ * @param data
+ */
+export function editPassWordApi(data) {
+  return request({
+    url: '/admin/merchant/admin/update/password',
+    method: 'POST',
+    data,
+  });
+}
+
+/**
+ * 商户后台管理员短信开关
+ * @param pram
+ */
+export function updateReceiveSmsApi(id) {
+  return request({
+    url: `/admin/merchant/admin/update/receive/sms/${id}`,
+    method: 'post',
+  });
+}

+ 75 - 0
mer_mer_admin/src/api/user.js

@@ -0,0 +1,75 @@
+// +----------------------------------------------------------------------
+// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+// +----------------------------------------------------------------------
+// | Author: CRMEB Team <admin@crmeb.com>
+// +----------------------------------------------------------------------
+
+import request from '@/utils/request';
+
+export function login(data) {
+  return request({
+    url: '/admin/merchant/login',
+    method: 'post',
+    data,
+  });
+}
+
+export function getAdminInfoByTokenApi() {
+  return request({
+    url: '/admin/merchant/getAdminInfoByToken',
+    method: 'get',
+  });
+}
+
+export function logout() {
+  return request({
+    url: '/admin/merchant/logout',
+    method: 'get',
+  });
+}
+
+/**
+ * 会员管理 列表
+ * @param pram
+ */
+export function userListApi(params) {
+  return request({
+    url: `/admin/merchant/user/list`,
+    method: 'get',
+    params,
+  });
+}
+
+/**
+ *获取登录页图片
+ */
+export function getLoginPicApi() {
+  return request({
+    url: `/admin/merchant/getLoginPic`,
+    method: 'get',
+  });
+}
+
+/**
+ * @description 验证码
+ */
+export function captchaApi() {
+  return request({
+    url: `/publicly/validate/code/get`,
+    method: 'get',
+  });
+}
+
+/**
+ * @description 用户详情列表
+ */
+export function userDetailApi(id) {
+  return request({
+    url: `/admin/merchant/user/detail/${id}`,
+    method: 'get',
+  });
+}

BIN
mer_mer_admin/src/assets/401_images/401.gif


BIN
mer_mer_admin/src/assets/404_images/404.png


BIN
mer_mer_admin/src/assets/404_images/404_cloud.png


File diff suppressed because it is too large
+ 14 - 0
mer_mer_admin/src/assets/iconfont/iconfont-weapp-icon.css


+ 894 - 0
mer_mer_admin/src/assets/iconfont/iconfont.css

@@ -0,0 +1,894 @@
+@font-face {
+  font-family: 'iconfont'; /* Project id 3139466 */
+  src: url('//at.alicdn.com/t/c/font_3139466_jayb4igf1z.woff2?t=1734767396089') format('woff2'),
+    url('//at.alicdn.com/t/c/font_3139466_jayb4igf1z.woff?t=1734767396089') format('woff'),
+    url('//at.alicdn.com/t/c/font_3139466_jayb4igf1z.ttf?t=1734767396089') format('truetype');
+}
+
+.iconfont {
+  font-family: 'iconfont' !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-shangpinliebiaopaixuyangshi:before {
+  content: '\e6f4';
+}
+
+.icon-youhuiquanyangshiyi:before {
+  content: '\e6f5';
+}
+
+.icon-jianbianlianjie:before {
+  content: '\e6e4';
+}
+
+.icon-lianjietubiao:before {
+  content: '\e6e5';
+}
+
+.icon-biaotiwenzijiacu:before {
+  content: '\e6e6';
+}
+
+.icon-pintuanyangshisi:before {
+  content: '\e6e7';
+}
+
+.icon-youhuiquanyangshisi:before {
+  content: '\e6e8';
+}
+
+.icon-fuzhuxian-xuxian:before {
+  content: '\e6e9';
+}
+
+.icon-pintuanyangshiyi:before {
+  content: '\e6ea';
+}
+
+.icon-youhuiquanyangshisan:before {
+  content: '\e6eb';
+}
+
+.icon-youhuiquanyangshier:before {
+  content: '\e6ec';
+}
+
+.icon-biaotiwenzixieti:before {
+  content: '\e6ed';
+}
+
+.icon-requwenzitishi:before {
+  content: '\e6ee';
+}
+
+.icon-biaotiwenziyangshi:before {
+  content: '\e6ef';
+}
+
+.icon-pintuanyangshisan:before {
+  content: '\e6f0';
+}
+
+.icon-fuzhuxian-dianzhuangxian:before {
+  content: '\e6f1';
+}
+
+.icon-fuzhuxian-shixian:before {
+  content: '\e6f2';
+}
+
+.icon-pintuanyangshier:before {
+  content: '\e6f3';
+}
+
+.icon-ic_layout4:before {
+  content: '\e836';
+}
+
+.icon-biaodanzujian-duoxuankuang:before {
+  content: '\e6da';
+}
+
+.icon-biaodanzujian-riqi:before {
+  content: '\e6db';
+}
+
+.icon-biaodanzujian-danxuankuang:before {
+  content: '\e6dc';
+}
+
+.icon-biaodanzujian-danhangwenben:before {
+  content: '\e6dd';
+}
+
+.icon-biaodanzujian-riqifanwei:before {
+  content: '\e6de';
+}
+
+.icon-biaodanzujian-shijian:before {
+  content: '\e6df';
+}
+
+.icon-biaodanzujian-xialakuang:before {
+  content: '\e6e0';
+}
+
+.icon-biaodanzujian-shijianfanwei:before {
+  content: '\e6e1';
+}
+
+.icon-biaodanzujian-tupian:before {
+  content: '\e6e2';
+}
+
+.icon-biaodanzujian-chengshi:before {
+  content: '\e6e3';
+}
+
+.icon-caiwuchazhang:before {
+  content: '\e6d9';
+}
+
+.icon-CPjiesuan:before {
+  content: '\e665';
+}
+
+.icon-dingdan:before {
+  content: '\e61c';
+}
+
+.icon-shanghuliebiao:before {
+  content: '\e61a';
+}
+
+.icon-ic-complete1:before {
+  content: '\e66b';
+}
+
+.icon-ic_close1:before {
+  content: '\e66a';
+}
+
+.icon-tu:before {
+  content: '\e85c';
+}
+
+.icon-dantu:before {
+  content: '\e6d6';
+}
+
+.icon-pingpu:before {
+  content: '\e6d7';
+}
+
+.icon-datu:before {
+  content: '\e6d8';
+}
+
+.icon-a-11:before {
+  content: '\e6d2';
+}
+
+.icon-a-43:before {
+  content: '\e6d3';
+}
+
+.icon-a-34:before {
+  content: '\e6d4';
+}
+
+.icon-a-169:before {
+  content: '\e6d5';
+}
+
+.icon-lianjie:before {
+  content: '\e6d1';
+}
+
+.icon-qingxie:before {
+  content: '\e6ce';
+}
+
+.icon-zhengchang:before {
+  content: '\e6cf';
+}
+
+.icon-jiacu:before {
+  content: '\e6d0';
+}
+
+.icon-xuanze:before {
+  content: '\e6cd';
+}
+
+.icon-dianpujie-yangshiyi:before {
+  content: '\e6c9';
+}
+
+.icon-tianjia1:before {
+  content: '\e6ca';
+}
+
+.icon-xiala1:before {
+  content: '\e6cb';
+}
+
+.icon-youhuiquan-yangshiyi:before {
+  content: '\e6c4';
+}
+
+.icon-guanbi1:before {
+  content: '\e69b';
+}
+
+.icon-fuchuang-youshang:before {
+  content: '\e687';
+}
+
+.icon-fuchuang-zuoshang:before {
+  content: '\e683';
+}
+
+.icon-fuchuang-zuoxia:before {
+  content: '\e68d';
+}
+
+.icon-anniuer:before {
+  content: '\e68e';
+}
+
+.icon-fuchuang-youxia:before {
+  content: '\e695';
+}
+
+.icon-zuhe-sousuokuang:before {
+  content: '\e697';
+}
+
+.icon-anniuyi:before {
+  content: '\e698';
+}
+
+.icon-youhuiquan-yangshier:before {
+  content: '\e699';
+}
+
+.icon-logo:before {
+  content: '\e682';
+}
+
+.icon-cha:before {
+  content: '\e684';
+}
+
+.icon-caozuo-shang:before {
+  content: '\e685';
+}
+
+.icon-bianjiao:before {
+  content: '\e686';
+}
+
+.icon-bianji1:before {
+  content: '\e688';
+}
+
+.icon-caozuo-xianshi:before {
+  content: '\e689';
+}
+
+.icon-caozuo-shanchu:before {
+  content: '\e68a';
+}
+
+.icon-caozuo-xia:before {
+  content: '\e68b';
+}
+
+.icon-caozuo-yincang:before {
+  content: '\e68c';
+}
+
+.icon-daohang-4ge:before {
+  content: '\e68f';
+}
+
+.icon-daohang-3hang:before {
+  content: '\e690';
+}
+
+.icon-daohang-2hang:before {
+  content: '\e691';
+}
+
+.icon-daohang-3ge:before {
+  content: '\e692';
+}
+
+.icon-daohang-4hang:before {
+  content: '\e693';
+}
+
+.icon-dianzhuangxian:before {
+  content: '\e694';
+}
+
+.icon-daohang-5ge:before {
+  content: '\e696';
+}
+
+.icon-buxianshi:before {
+  content: '\e69a';
+}
+
+.icon-jiage:before {
+  content: '\e69c';
+}
+
+.icon-juzhong:before {
+  content: '\e69d';
+}
+
+.icon-juyou:before {
+  content: '\e69e';
+}
+
+.icon-juzuo:before {
+  content: '\e69f';
+}
+
+.icon-shangpin-lianglie:before {
+  content: '\e6a0';
+}
+
+.icon-shangpin-danlie:before {
+  content: '\e6a1';
+}
+
+.icon-shangpin-datu:before {
+  content: '\e6a4';
+}
+
+.icon-shangpin-sanlie:before {
+  content: '\e6a7';
+}
+
+.icon-tupian-yangshier:before {
+  content: '\e6a8';
+}
+
+.icon-shipinlianjie:before {
+  content: '\e6a9';
+}
+
+.icon-tonglan:before {
+  content: '\e6aa';
+}
+
+.icon-shoudongshangchuan:before {
+  content: '\e6ab';
+}
+
+.icon-tupian-yangshiwu:before {
+  content: '\e6ac';
+}
+
+.icon-tupian-yangshiliu:before {
+  content: '\e6ad';
+}
+
+.icon-tupian-yangshiyi:before {
+  content: '\e6ae';
+}
+
+.icon-tupian-yangshisan:before {
+  content: '\e6b0';
+}
+
+.icon-tupian-yangshisi:before {
+  content: '\e6b1';
+}
+
+.icon-xuxian:before {
+  content: '\e6b2';
+}
+
+.icon-tuozhuaidian:before {
+  content: '\e6b3';
+}
+
+.icon-xiaoliang:before {
+  content: '\e6b5';
+}
+
+.icon-xiantiao:before {
+  content: '\e6b8';
+}
+
+.icon-yangshier:before {
+  content: '\e6b9';
+}
+
+.icon-yangshisan:before {
+  content: '\e6ba';
+}
+
+.icon-yangshiyi:before {
+  content: '\e6bb';
+}
+
+.icon-shangxia:before {
+  content: '\e6bc';
+}
+
+.icon-shixian:before {
+  content: '\e6bd';
+}
+
+.icon-zonghe:before {
+  content: '\e6be';
+}
+
+.icon-zuhe-fenlei:before {
+  content: '\e6bf';
+}
+
+.icon-youxiajiao:before {
+  content: '\e6c0';
+}
+
+.icon-zuhe-lunbotu:before {
+  content: '\e6c1';
+}
+
+.icon-zuoyou:before {
+  content: '\e6c2';
+}
+
+.icon-zuoxiajiao:before {
+  content: '\e6c3';
+}
+
+.icon-zuoshangjiao:before {
+  content: '\e6c5';
+}
+
+.icon-zhengti:before {
+  content: '\e6c6';
+}
+
+.icon-youshangjiao:before {
+  content: '\e6c7';
+}
+
+.icon-yuandian:before {
+  content: '\e6c8';
+}
+
+.icon-caozuo-fuzhi1:before {
+  content: '\e6cc';
+}
+
+.icon-shipinico:before {
+  content: '\e707';
+}
+
+.icon-drag2:before {
+  content: '\e61e';
+}
+
+.icon-miaosha:before {
+  content: '\e619';
+}
+
+.icon-shipinhao2:before {
+  content: '\e61b';
+}
+
+.icon-youhuiquan:before {
+  content: '\e63c';
+}
+
+.icon-a-dingdanguanli1:before {
+  content: '\e617';
+}
+
+.icon-daihexiao:before {
+  content: '\e618';
+}
+
+.icon-caiwuguanli:before {
+  content: '\e60b';
+}
+
+.icon-yonghuguanli:before {
+  content: '\e60c';
+}
+
+.icon-xitongshezhi:before {
+  content: '\e60d';
+}
+
+.icon-qiandaopeizhi:before {
+  content: '\e60e';
+}
+
+.icon-daituikuan:before {
+  content: '\e60f';
+}
+
+.icon-yihaotong:before {
+  content: '\e610';
+}
+
+.icon-shangpinguanli:before {
+  content: '\e611';
+}
+
+.icon-shanghuguanli:before {
+  content: '\e612';
+}
+
+.icon-daishenheshangpin:before {
+  content: '\e613';
+}
+
+.icon-fenxiaoshezhi:before {
+  content: '\e614';
+}
+
+.icon-zaishoushangpin:before {
+  content: '\e615';
+}
+
+.icon-daifahuo2:before {
+  content: '\e616';
+}
+
+.icon-shipinhao:before {
+  content: '\e60a';
+}
+
+.icon-yingyeshijian2:before {
+  content: '\e801';
+}
+
+.icon-tianjia:before {
+  content: '\e672';
+}
+
+.icon-shoucang3:before {
+  content: '\e79d';
+}
+
+.icon-shouye8:before {
+  content: '\e79e';
+}
+
+.icon-pinzhong:before {
+  content: '\e6a2';
+}
+
+.icon-hanghuo:before {
+  content: '\e6a3';
+}
+
+.icon-zhifa:before {
+  content: '\e6b6';
+}
+
+.icon-dijia:before {
+  content: '\e6b7';
+}
+
+.icon-yuyanqiehuan:before {
+  content: '\e608';
+}
+
+.icon-gouwuche1:before {
+  content: '\e609';
+}
+
+.icon-xuanzhong4:before {
+  content: '\e6af';
+}
+
+.icon-a-bianzu2:before {
+  content: '\e607';
+}
+
+.icon-daifukuan1:before {
+  content: '\e603';
+}
+
+.icon-daifahuo1:before {
+  content: '\e604';
+}
+
+.icon-wancheng:before {
+  content: '\e605';
+}
+
+.icon-daishouhuo1:before {
+  content: '\e606';
+}
+
+.icon-complete:before {
+  content: '\e646';
+}
+
+.icon-gou:before {
+  content: '\e602';
+}
+
+.icon-duoshanghupc-shuomingdanchuang:before {
+  content: '\e79a';
+}
+
+.icon-zizhi:before {
+  content: '\e601';
+}
+
+.icon-baozhang:before {
+  content: '\e6b4';
+}
+
+.icon-xiangxia:before {
+  content: '\e8ca';
+}
+
+.icon-xiangshang:before {
+  content: '\ebbb';
+}
+
+.icon-shaixuan:before {
+  content: '\e651';
+}
+
+.icon-xuanzhong11:before {
+  content: '\e6a5';
+}
+
+.icon-weixuan:before {
+  content: '\e6a6';
+}
+
+.icon-kefu_o:before {
+  content: '\eb63';
+}
+
+.icon-yingyongAPP_o:before {
+  content: '\eb88';
+}
+
+.icon-huobiliu_o:before {
+  content: '\eb9f';
+}
+
+.icon-yizhan_o:before {
+  content: '\ebc6';
+}
+
+.icon-guanzhu:before {
+  content: '\e645';
+}
+
+.icon-shangjiadingdan:before {
+  content: '\e64a';
+}
+
+.icon-jiantou:before {
+  content: '\e600';
+}
+
+.icon-jiazai:before {
+  content: '\e799';
+}
+
+.icon-shouye1:before {
+  content: '\e798';
+}
+
+.icon-wuliu:before {
+  content: '\e797';
+}
+
+.icon-zhuangshixian:before {
+  content: '\e796';
+}
+
+.icon-xihuan1:before {
+  content: '\e794';
+}
+
+.icon-shezhi:before {
+  content: '\e795';
+}
+
+.icon-pingfen:before {
+  content: '\e792';
+}
+
+.icon-pingweifen:before {
+  content: '\e793';
+}
+
+.icon-more:before {
+  content: '\e791';
+}
+
+.icon-yituikuan:before {
+  content: '\e78f';
+}
+
+.icon-tuikuanzhong:before {
+  content: '\e790';
+}
+
+.icon-sousuo2:before {
+  content: '\e78e';
+}
+
+.icon-guanbi:before {
+  content: '\e78d';
+}
+
+.icon-fenlei:before {
+  content: '\e788';
+}
+
+.icon-yuyan:before {
+  content: '\e78c';
+}
+
+.icon-gouwuche:before {
+  content: '\e789';
+}
+
+.icon-xihuan:before {
+  content: '\e78a';
+}
+
+.icon-gerenzhongxin:before {
+  content: '\e78b';
+}
+
+.icon-zhifushibai:before {
+  content: '\e785';
+}
+
+.icon-zhifuchenggong:before {
+  content: '\e786';
+}
+
+.icon-shouji:before {
+  content: '\e784';
+}
+
+.icon-mima:before {
+  content: '\e781';
+}
+
+.icon-youxiang:before {
+  content: '\e782';
+}
+
+.icon-yanzhengma:before {
+  content: '\e783';
+}
+
+.icon-fenxiang:before {
+  content: '\e77f';
+}
+
+.icon-yangshi1:before {
+  content: '\e780';
+}
+
+.icon-gengduo:before {
+  content: '\e776';
+}
+
+.icon-qingkong:before {
+  content: '\e777';
+}
+
+.icon-dingbufanhui:before {
+  content: '\e778';
+}
+
+.icon-xiala:before {
+  content: '\e779';
+}
+
+.icon-kefu:before {
+  content: '\e77a';
+}
+
+.icon-sousuo:before {
+  content: '\e77b';
+}
+
+.icon-paizhao:before {
+  content: '\e77c';
+}
+
+.icon-sousuo1:before {
+  content: '\e77d';
+}
+
+.icon-yangshi2:before {
+  content: '\e77e';
+}
+
+.icon-facebook:before {
+  content: '\e773';
+}
+
+.icon-guge:before {
+  content: '\e774';
+}
+
+.icon-twitter:before {
+  content: '\e775';
+}
+
+.icon-suozi:before {
+  content: '\e772';
+}
+
+.icon-dizhi:before {
+  content: '\e76c';
+}
+
+.icon-a-411ditu:before {
+  content: '\e76d';
+}
+
+.icon-shuoming:before {
+  content: '\e76e';
+}
+
+.icon-shanchu:before {
+  content: '\e76f';
+}
+
+.icon-yonghu:before {
+  content: '\e770';
+}
+
+.icon-bianji:before {
+  content: '\e771';
+}
+
+.icon-daifahuo:before {
+  content: '\e76b';
+}
+
+.icon-daipingjia-2:before {
+  content: '\e767';
+}
+
+.icon-daifukuan:before {
+  content: '\e768';
+}
+
+.icon-shouhou_tuikuan-2:before {
+  content: '\e769';
+}
+
+.icon-daishouhuo:before {
+  content: '\e76a';
+}
+
+.icon-jia:before {
+  content: '\e766';
+}
+
+.icon-jian:before {
+  content: '\e765';
+}

BIN
mer_mer_admin/src/assets/imgs/app.png


BIN
mer_mer_admin/src/assets/imgs/bg.jpg


BIN
mer_mer_admin/src/assets/imgs/capsule.png


BIN
mer_mer_admin/src/assets/imgs/couponBg.png


BIN
mer_mer_admin/src/assets/imgs/couponBg2.png


Some files were not shown because too many files changed in this diff