xiaoxin пре 1 година
родитељ
комит
73d9139d25
4 измењених фајлова са 4492 додато и 2890 уклоњено
  1. 587 189
      src/router/index.js
  2. 1 1
      src/views/integral/integral.vue
  3. 616 0
      src/views/shopsList/shopPrintSet.vue
  4. 3288 2700
      src/views/shopsList/shopsList.vue

+ 587 - 189
src/router/index.js

@@ -4,222 +4,614 @@
  * 建议:
  * 建议:
  * 1. 代码中路由统一使用name属性跳转(不使用path属性)
  * 1. 代码中路由统一使用name属性跳转(不使用path属性)
  */
  */
-import Vue from 'vue'
-import Router from 'vue-router'
-import http from '@/utils/httpRequest'
-import { isURL } from '@/utils/validate'
-import { clearLoginInfo } from '@/utils'
+import Vue from "vue";
+import Router from "vue-router";
+import http from "@/utils/httpRequest";
+import { isURL } from "@/utils/validate";
+import { clearLoginInfo } from "@/utils";
 
 
-Vue.use(Router)
+Vue.use(Router);
 
 
 // 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
 // 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
-const _import = require('./import-' + process.env.NODE_ENV)
+const _import = require("./import-" + process.env.NODE_ENV);
 
 
 // 全局路由(无需嵌套上左右整体布局)
 // 全局路由(无需嵌套上左右整体布局)
 const globalRoutes = [
 const globalRoutes = [
-  { path: '/404', component: _import('common/404'), name: '404', meta: { title: '404未找到' } },
-  { path: '/login', component: _import('common/login'), name: 'login', meta: { title: '登录' } }
-]
+  {
+    path: "/404",
+    component: _import("common/404"),
+    name: "404",
+    meta: { title: "404未找到" }
+  },
+  {
+    path: "/login",
+    component: _import("common/login"),
+    name: "login",
+    meta: { title: "登录" }
+  }
+];
 
 
 // 主入口路由(需嵌套上左右整体布局)
 // 主入口路由(需嵌套上左右整体布局)
 const mainRoutes = {
 const mainRoutes = {
-  path: '/',
-  component: _import('main'),
-  name: 'main',
-  redirect: { name: 'home' },
-  meta: { title: '主入口整体布局' },
+  path: "/",
+  component: _import("main"),
+  name: "main",
+  redirect: { name: "home" },
+  meta: { title: "主入口整体布局" },
   children: [
   children: [
     // 通过meta对象设置路由展示方式
     // 通过meta对象设置路由展示方式
     // 1. isTab: 是否通过tab展示内容, true: 是, false: 否
     // 1. isTab: 是否通过tab展示内容, true: 是, false: 否
     // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
     // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
     // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
     // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
-    { path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } },
-	{ path: '/userList', component: _import('user/userList'), name: 'userList', meta: { title: '用户列表',isTab: true} },
-	{ path: '/allocationList', component: _import('allocation/allocationList'), name: 'allocationList', meta: { title: '配置列表',isTab: true} },
-	{ path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: { title: '财务中心',isTab: true} },
-	{ path: '/message', component: _import('message/message'), name: 'message', meta: { title: '消息中心',isTab: true} },
-	{ path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: { title: '任务配置',isTab: true} },
-	{ path: '/bannerList', component: _import('banner/bannerList'), name: 'bannerList', meta: { title: '商城配置',isTab: true} },
-	{ path: '/mission', component: _import('mission/mission'), name: 'mission', meta: { title: '订单中心',isTab: true} },
-	{ path: '/system', component: _import('mission/system'), name: 'system', meta: { title: '系统任务',isTab: true} },
-	{ path: '/missionsye', component: _import('sysmission/missionsye'), name: 'missionsye', meta: { title: '活动派送',isTab: true} },
-	{ path: '/materialsList', component: _import('materials/materialsList'), name: 'materialsList', meta: { title: '好物圈',isTab: true} },
-	{ path: '/missionAdd', component: _import('sysmission/missionAdd'), name: 'missionAdd', meta: { title: '发布任务',isTab: false} },
-	{ path: '/missionRedact', component: _import('sysmission/missionRedact'), name: 'missionRedact', meta: { title: '修改任务',isTab: false} },
-	{ path: '/userDetail', component: _import('user/userDetail'), name: 'userDetail', meta: { title: '用户详情',isTab: false} },
-	{ path: '/userDetail1', component: _import('user/userDetail1'), name: 'userDetail1', meta: { title: '用户详情',isTab: false} },
-	{ path: '/missionDetails', component: _import('mission/missionDetails'), name: 'missionDetails', meta: { title: '任务详情',isTab: false} },
-	{ path: '/fitmentList', component: _import('fitment/fitmentList'), name: 'fitmentList', meta: { title: '首页装修',isTab: false} },
-
-	{ path: '/coupon', component: _import('coupon/coupon'), name: 'coupon', meta: { title: '优惠券管理',isTab: true} },
-  { path: '/couponList', component: _import('coupon/couponList'), name: 'couponList', meta: { title: '优惠券列表',isTab: true} },
-  { path: '/huodongList', component: _import('coupon/huodongList'), name: 'huodongList', meta: { title: '活动参与记录',isTab: true} },
+    {
+      path: "/home",
+      component: _import("common/home"),
+      name: "home",
+      meta: { title: "首页" }
+    },
+    {
+      path: "/userList",
+      component: _import("user/userList"),
+      name: "userList",
+      meta: { title: "用户列表", isTab: true }
+    },
+    {
+      path: "/allocationList",
+      component: _import("allocation/allocationList"),
+      name: "allocationList",
+      meta: { title: "配置列表", isTab: true }
+    },
+    {
+      path: "/financeList",
+      component: _import("finance/financeList"),
+      name: "financeList",
+      meta: { title: "财务中心", isTab: true }
+    },
+    {
+      path: "/message",
+      component: _import("message/message"),
+      name: "message",
+      meta: { title: "消息中心", isTab: true }
+    },
+    {
+      path: "/taskConfig",
+      component: _import("taskConfig/taskConfig"),
+      name: "taskConfig",
+      meta: { title: "任务配置", isTab: true }
+    },
+    {
+      path: "/bannerList",
+      component: _import("banner/bannerList"),
+      name: "bannerList",
+      meta: { title: "商城配置", isTab: true }
+    },
+    {
+      path: "/mission",
+      component: _import("mission/mission"),
+      name: "mission",
+      meta: { title: "订单中心", isTab: true }
+    },
+    {
+      path: "/system",
+      component: _import("mission/system"),
+      name: "system",
+      meta: { title: "系统任务", isTab: true }
+    },
+    {
+      path: "/missionsye",
+      component: _import("sysmission/missionsye"),
+      name: "missionsye",
+      meta: { title: "活动派送", isTab: true }
+    },
+    {
+      path: "/materialsList",
+      component: _import("materials/materialsList"),
+      name: "materialsList",
+      meta: { title: "好物圈", isTab: true }
+    },
+    {
+      path: "/missionAdd",
+      component: _import("sysmission/missionAdd"),
+      name: "missionAdd",
+      meta: { title: "发布任务", isTab: false }
+    },
+    {
+      path: "/missionRedact",
+      component: _import("sysmission/missionRedact"),
+      name: "missionRedact",
+      meta: { title: "修改任务", isTab: false }
+    },
+    {
+      path: "/userDetail",
+      component: _import("user/userDetail"),
+      name: "userDetail",
+      meta: { title: "用户详情", isTab: false }
+    },
+    {
+      path: "/userDetail1",
+      component: _import("user/userDetail1"),
+      name: "userDetail1",
+      meta: { title: "用户详情", isTab: false }
+    },
+    {
+      path: "/missionDetails",
+      component: _import("mission/missionDetails"),
+      name: "missionDetails",
+      meta: { title: "任务详情", isTab: false }
+    },
+    {
+      path: "/fitmentList",
+      component: _import("fitment/fitmentList"),
+      name: "fitmentList",
+      meta: { title: "首页装修", isTab: false }
+    },
 
 
-	{ path: '/missionComplain', component: _import('mission/missionComplain'), name: 'missionComplain', meta: { title: '任务投诉',isTab: true} },
+    {
+      path: "/coupon",
+      component: _import("coupon/coupon"),
+      name: "coupon",
+      meta: { title: "优惠券管理", isTab: true }
+    },
+    {
+      path: "/couponList",
+      component: _import("coupon/couponList"),
+      name: "couponList",
+      meta: { title: "优惠券列表", isTab: true }
+    },
+    {
+      path: "/huodongList",
+      component: _import("coupon/huodongList"),
+      name: "huodongList",
+      meta: { title: "活动参与记录", isTab: true }
+    },
 
 
+    {
+      path: "/missionComplain",
+      component: _import("mission/missionComplain"),
+      name: "missionComplain",
+      meta: { title: "任务投诉", isTab: true }
+    },
 
 
-  {path: '/classifyAdmin', component: _import('selfShop/classifyAdmin'), name: 'classifyAdmin', meta: {title: '商品分类', isTab: true}},
-  {path: '/orderAdmin', component: _import('selfShop/orderAdmin'), name: 'orderAdmin', meta: {title: '自营订单', isTab: true}},
-  {path: '/addressAamin', component: _import('selfShop/addressAamin'), name: 'addressAamin', meta: {title: '地址管理', isTab: true}},
-  {path: '/shopAdmin', component: _import('selfShop/shopAdmin'), name: 'shopAdmin', meta: {title: '商品管理', isTab: true}},
-  {path: '/fenxiaoOrder', component: _import('selfShop/fenxiaoOrder'), name: 'fenxiaoOrder', meta: {title: '分销订单', isTab: true},},
-  {path: '/disposeOrder', component: _import('selfShop/disposeOrder'), name: 'disposeOrder', meta: {title: '待处理订单', isTab: true},},
-  {path: '/shopConfig', component: _import('selfShop/shopConfig'), name: 'shopConfig', meta: {title: '自营商城配置', isTab: true}},
-  {path: '/shopPublish', component: _import('selfShop/shopPublish'), name: 'shopPublish', meta: {title: '发布商品', isTab: false}},
-  {path: '/shopAmend', component: _import('selfShop/shopAmend'), name: 'shopAmend', meta: {title: '修改商品', isTab: false}},
-  {path: '/specification', component: _import('selfShop/specification'), name: 'specification', meta: {title: '商品规格', isTab: true}},
-  {path: '/orderDetails', component: _import('selfShop/orderDetails'), name: 'orderDetails', meta: {title: '订单详情', isTab: true}},
+    {
+      path: "/classifyAdmin",
+      component: _import("selfShop/classifyAdmin"),
+      name: "classifyAdmin",
+      meta: { title: "商品分类", isTab: true }
+    },
+    {
+      path: "/orderAdmin",
+      component: _import("selfShop/orderAdmin"),
+      name: "orderAdmin",
+      meta: { title: "自营订单", isTab: true }
+    },
+    {
+      path: "/addressAamin",
+      component: _import("selfShop/addressAamin"),
+      name: "addressAamin",
+      meta: { title: "地址管理", isTab: true }
+    },
+    {
+      path: "/shopAdmin",
+      component: _import("selfShop/shopAdmin"),
+      name: "shopAdmin",
+      meta: { title: "商品管理", isTab: true }
+    },
+    {
+      path: "/fenxiaoOrder",
+      component: _import("selfShop/fenxiaoOrder"),
+      name: "fenxiaoOrder",
+      meta: { title: "分销订单", isTab: true }
+    },
+    {
+      path: "/disposeOrder",
+      component: _import("selfShop/disposeOrder"),
+      name: "disposeOrder",
+      meta: { title: "待处理订单", isTab: true }
+    },
+    {
+      path: "/shopConfig",
+      component: _import("selfShop/shopConfig"),
+      name: "shopConfig",
+      meta: { title: "自营商城配置", isTab: true }
+    },
+    {
+      path: "/shopPublish",
+      component: _import("selfShop/shopPublish"),
+      name: "shopPublish",
+      meta: { title: "发布商品", isTab: false }
+    },
+    {
+      path: "/shopAmend",
+      component: _import("selfShop/shopAmend"),
+      name: "shopAmend",
+      meta: { title: "修改商品", isTab: false }
+    },
+    {
+      path: "/specification",
+      component: _import("selfShop/specification"),
+      name: "specification",
+      meta: { title: "商品规格", isTab: true }
+    },
+    {
+      path: "/orderDetails",
+      component: _import("selfShop/orderDetails"),
+      name: "orderDetails",
+      meta: { title: "订单详情", isTab: true }
+    },
 
 
-  {path: '/shopsList', component: _import('shopsList/shopsList'), name: 'shopsList', meta: {title: '商铺中心', isTab: true}},
-  {path: '/shopDatas', component: _import('shopsList/shopDatas'), name: 'shopDatas', meta: {title: '商铺数据', isTab: false}},
+    {
+      path: "/shopsList",
+      component: _import("shopsList/shopsList"),
+      name: "shopsList",
+      meta: { title: "商铺中心", isTab: true }
+    },
+    {
+      path: "/shopDatas",
+      component: _import("shopsList/shopDatas"),
+      name: "shopDatas",
+      meta: { title: "商铺数据", isTab: false }
+    },
 
 
-  {path: '/shopsListAdmin', component: _import('shopsList/shopAdmin'), name: 'shopsListAdmin', meta: {title: '商铺商品管理', isTab: false}},
-  {path: '/shopsOrder', component: _import('shopsList/shopsOrder'), name: 'shopsOrder', meta: { title: '商铺订单',isTab: false} },
-  {path: '/topupmoney', component: _import('topupmoney/topupmoney'), name: 'topupmoney', meta: {title: '充值配置', isTab: true}},
+    {
+      path: "/shopsListAdmin",
+      component: _import("shopsList/shopAdmin"),
+      name: "shopsListAdmin",
+      meta: { title: "商铺商品管理", isTab: false }
+    },
+    {
+      path: "/shopsOrder",
+      component: _import("shopsList/shopsOrder"),
+      name: "shopsOrder",
+      meta: { title: "商铺订单", isTab: false }
+    },
+    {
+      path: "/shopPrintSet",
+      component: _import("shopsList/shopPrintSet"),
+      name: "shopPrintSet",
+      meta: { title: "打印配置", isTab: false }
+    },
+    {
+      path: "/topupmoney",
+      component: _import("topupmoney/topupmoney"),
+      name: "topupmoney",
+      meta: { title: "充值配置", isTab: true }
+    },
 
 
-  {path: '/shopsListSm', component: _import('shopManagement/shopsList'), name: 'shopsListSm', meta: {title: '商铺中心', isTab: false}},
-  {path: '/shopsListAdminSm', component: _import('shopManagement/shopAdmin'), name: 'shopsListAdminSm', meta: {title: '商铺商品管理', isTab: true}},
-  {path: '/missionSm', component: _import('shopManagement/mission'), name: 'missionSm', meta: { title: '订单中心',isTab: false} },
-  {path: '/shopsOrderSm', component: _import('shopManagement/shopsOrder'), name: 'shopsOrderSm', meta: { title: '商铺订单',isTab: true} },
-  {path: '/shopDatasSm', component: _import('shopsList/shopDatas'), name: 'shopDatasSm', meta: {title: '商铺数据', isTab: true}},
-  {path: '/shopAutonym', component: _import('shopAutonym/shopAutonym'), name: 'shopAutonym', meta: { title: '商户审核',isTab: true} },
-  {path: '/shopduanxinlistRun', component: _import('shopManagement/duanxinlist'), name: 'shopduanxinlistRun', meta: { title: '商家短信记录',isTab: true} },
+    {
+      path: "/shopsListSm",
+      component: _import("shopManagement/shopsList"),
+      name: "shopsListSm",
+      meta: { title: "商铺中心", isTab: false }
+    },
+    {
+      path: "/shopsListAdminSm",
+      component: _import("shopManagement/shopAdmin"),
+      name: "shopsListAdminSm",
+      meta: { title: "商铺商品管理", isTab: true }
+    },
+    {
+      path: "/missionSm",
+      component: _import("shopManagement/mission"),
+      name: "missionSm",
+      meta: { title: "订单中心", isTab: false }
+    },
+    {
+      path: "/shopsOrderSm",
+      component: _import("shopManagement/shopsOrder"),
+      name: "shopsOrderSm",
+      meta: { title: "商铺订单", isTab: true }
+    },
+    {
+      path: "/shopDatasSm",
+      component: _import("shopsList/shopDatas"),
+      name: "shopDatasSm",
+      meta: { title: "商铺数据", isTab: true }
+    },
+    {
+      path: "/shopAutonym",
+      component: _import("shopAutonym/shopAutonym"),
+      name: "shopAutonym",
+      meta: { title: "商户审核", isTab: true }
+    },
+    {
+      path: "/shopduanxinlistRun",
+      component: _import("shopManagement/duanxinlist"),
+      name: "shopduanxinlistRun",
+      meta: { title: "商家短信记录", isTab: true }
+    },
 
 
-  {path: '/missionRun', component: _import('runErrands/mission'), name: 'missionRun', meta: { title: '跑腿任务',isTab: true} },
-  {path: '/orderCenterRun', component: _import('runErrands/orderCenter'), name: 'orderCenterRun', meta: { title: '跑腿订单',isTab: true} },
+    {
+      path: "/missionRun",
+      component: _import("runErrands/mission"),
+      name: "missionRun",
+      meta: { title: "跑腿任务", isTab: true }
+    },
+    {
+      path: "/orderCenterRun",
+      component: _import("runErrands/orderCenter"),
+      name: "orderCenterRun",
+      meta: { title: "跑腿订单", isTab: true }
+    },
 
 
-  {path: '/duanxinlistRun', component: _import('runErrands/duanxinlist'), name: 'duanxinlistRun', meta: { title: '短信记录',isTab: true} },
-  {path: '/duanxinmobanRun', component: _import('runErrands/duanxinmoban'), name: 'duanxinmobanRun', meta: { title: '短信模板记录',isTab: true} },
+    {
+      path: "/duanxinlistRun",
+      component: _import("runErrands/duanxinlist"),
+      name: "duanxinlistRun",
+      meta: { title: "短信记录", isTab: true }
+    },
+    {
+      path: "/duanxinmobanRun",
+      component: _import("runErrands/duanxinmoban"),
+      name: "duanxinmobanRun",
+      meta: { title: "短信模板记录", isTab: true }
+    },
 
 
-  {path: '/financeListRun', component: _import('runErrands/financeList'), name: 'financeListRun', meta: { title: '跑腿财务中心',isTab: true} },
-  {path: '/business', component: _import('business/business'), name: 'business', meta: {title: '申诉中心', isTab: true}},
-  {path: '/autonym', component: _import('autonym/autonym'), name: 'autonym', meta: { title: '实名认证',isTab: true} },
-  {path: '/riderScheduling',component: _import('riderScheduling/riderScheduling'),name: 'riderScheduling',meta: {title: '骑手调度', isTab: true}},
+    {
+      path: "/financeListRun",
+      component: _import("runErrands/financeList"),
+      name: "financeListRun",
+      meta: { title: "跑腿财务中心", isTab: true }
+    },
+    {
+      path: "/business",
+      component: _import("business/business"),
+      name: "business",
+      meta: { title: "申诉中心", isTab: true }
+    },
+    {
+      path: "/autonym",
+      component: _import("autonym/autonym"),
+      name: "autonym",
+      meta: { title: "实名认证", isTab: true }
+    },
+    {
+      path: "/riderScheduling",
+      component: _import("riderScheduling/riderScheduling"),
+      name: "riderScheduling",
+      meta: { title: "骑手调度", isTab: true }
+    },
 
 
-  {path: '/messageRun', component: _import('runErrands/message'), name: 'messageRun', meta: { title: '消息中心',isTab: true} },
-  {path: '/feedback', component: _import('runErrands/feedback'), name: 'feedback', meta: {title: '反馈中心', isTab: true}},
-  {path: '/serviceType', component: _import('serviceType/serviceType'), name: 'serviceType', meta: {title: '同城服务类型', isTab: true}},
-  {path: '/riderTop', component: _import('riderTop/riderTop'), name: 'riderTop', meta: {title: '骑手排行榜', isTab: true}},
-  {path: '/materialLink', component: _import('allocation/materialLink'), name: 'materialLink', meta: {title: '帮助中心', isTab: true}},
-  {path: '/vueMchat',component: _import('vueMchat/vueMchat'),name: 'vueMchat',meta: {title: '聊天会话',isTab: true}},
+    {
+      path: "/messageRun",
+      component: _import("runErrands/message"),
+      name: "messageRun",
+      meta: { title: "消息中心", isTab: true }
+    },
+    {
+      path: "/feedback",
+      component: _import("runErrands/feedback"),
+      name: "feedback",
+      meta: { title: "反馈中心", isTab: true }
+    },
+    {
+      path: "/serviceType",
+      component: _import("serviceType/serviceType"),
+      name: "serviceType",
+      meta: { title: "同城服务类型", isTab: true }
+    },
+    {
+      path: "/riderTop",
+      component: _import("riderTop/riderTop"),
+      name: "riderTop",
+      meta: { title: "骑手排行榜", isTab: true }
+    },
+    {
+      path: "/materialLink",
+      component: _import("allocation/materialLink"),
+      name: "materialLink",
+      meta: { title: "帮助中心", isTab: true }
+    },
+    {
+      path: "/vueMchat",
+      component: _import("vueMchat/vueMchat"),
+      name: "vueMchat",
+      meta: { title: "聊天会话", isTab: true }
+    },
 
 
-  {path: '/app', component: _import('app/app'), name: 'app', meta: { title: '升级配置', isTab: true } },
-  {path: '/memberDetails',component: _import('members/memberDetails'),name: 'memberDetails',meta: {title: '会员配置',isTab: true}},
-  {path: '/vipPrivilege',component: _import('members/vipPrivilege'),name: 'vipPrivilege',meta: {title: '会员特权',isTab: true}},
-  {path: '/bondList', component: _import('shopsList/bondList'), name: 'bondList', meta: {title: '保证金明细', isTab: false}},
-  {path: '/pingjiaList', component: _import('shopsList/pingjiaList'), name: 'pingjiaList', meta: {title: '评价明细', isTab: false}},
-  {path: '/shopWallet', component: _import('shopsList/shopWallet'), name: 'shopWallet', meta: {title: '商铺钱包', isTab: false}},
-  {path: '/bannerListRun', component: _import('runErrands/bannerList'), name: 'bannerListRun', meta: {title: '跑腿首页装修', isTab: true}},
-	// 2022.11.07 新增
-	{ path: '/comment', component: _import('comment/comment'), name: 'comment', meta: { title: '评价中心',isTab: true} },
-	{ path: '/chatRecord',component: _import('chatRecord/chatRecord'),name: 'chatRecord',meta: {title: '聊天记录',isTab: true}},
-	{ path: '/integral', component: _import('integral/integral'), name: 'integral', meta: { title: '活动管理',isTab: true} },
-	{ path: '/integralDetail', component: _import('integral/integralDetail'), name: 'integralDetail', meta: { title: '活动详情',isTab: false} },
+    {
+      path: "/app",
+      component: _import("app/app"),
+      name: "app",
+      meta: { title: "升级配置", isTab: true }
+    },
+    {
+      path: "/memberDetails",
+      component: _import("members/memberDetails"),
+      name: "memberDetails",
+      meta: { title: "会员配置", isTab: true }
+    },
+    {
+      path: "/vipPrivilege",
+      component: _import("members/vipPrivilege"),
+      name: "vipPrivilege",
+      meta: { title: "会员特权", isTab: true }
+    },
+    {
+      path: "/bondList",
+      component: _import("shopsList/bondList"),
+      name: "bondList",
+      meta: { title: "保证金明细", isTab: false }
+    },
+    {
+      path: "/pingjiaList",
+      component: _import("shopsList/pingjiaList"),
+      name: "pingjiaList",
+      meta: { title: "评价明细", isTab: false }
+    },
+    {
+      path: "/shopWallet",
+      component: _import("shopsList/shopWallet"),
+      name: "shopWallet",
+      meta: { title: "商铺钱包", isTab: false }
+    },
+    {
+      path: "/bannerListRun",
+      component: _import("runErrands/bannerList"),
+      name: "bannerListRun",
+      meta: { title: "跑腿首页装修", isTab: true }
+    },
+    // 2022.11.07 新增
+    {
+      path: "/comment",
+      component: _import("comment/comment"),
+      name: "comment",
+      meta: { title: "评价中心", isTab: true }
+    },
+    {
+      path: "/chatRecord",
+      component: _import("chatRecord/chatRecord"),
+      name: "chatRecord",
+      meta: { title: "聊天记录", isTab: true }
+    },
+    {
+      path: "/integral",
+      component: _import("integral/integral"),
+      name: "integral",
+      meta: { title: "活动管理", isTab: true }
+    },
+    {
+      path: "/integralDetail",
+      component: _import("integral/integralDetail"),
+      name: "integralDetail",
+      meta: { title: "活动详情", isTab: false }
+    },
 
 
-	{ path: '/couponShop', component: _import('coupon/couponShop'), name: 'couponShop', meta: { title: '优惠券管理',isTab: false} },
-  {path: '/commentList', component: _import('message/commentList'), name: 'commentList', meta: {title: '评价列表', isTab: true}},
-	],
-  beforeEnter (to, from, next) {
-    let token = Vue.cookie.get('token')
+    {
+      path: "/couponShop",
+      component: _import("coupon/couponShop"),
+      name: "couponShop",
+      meta: { title: "优惠券管理", isTab: false }
+    },
+    {
+      path: "/commentList",
+      component: _import("message/commentList"),
+      name: "commentList",
+      meta: { title: "评价列表", isTab: true }
+    }
+  ],
+  beforeEnter(to, from, next) {
+    let token = Vue.cookie.get("token");
     if (!token || !/\S/.test(token)) {
     if (!token || !/\S/.test(token)) {
-      clearLoginInfo()
-      next({ name: 'login' })
+      clearLoginInfo();
+      next({ name: "login" });
     }
     }
-    next()
+    next();
   }
   }
-}
+};
 
 
 const router = new Router({
 const router = new Router({
-  mode: 'hash', //  hash
-  scrollBehavior(to,from,savedPosition){
-
-  if (savedPosition){
-
-  return savedPosition // 按下 后退/前进 按钮时,类似浏览器的原生表现
-
-  }else {
-
-  return {x:0,y:0} // 让页面滚动到顶部
-
-  }
-
+  mode: "hash", //  hash
+  scrollBehavior(to, from, savedPosition) {
+    if (savedPosition) {
+      return savedPosition; // 按下 后退/前进 按钮时,类似浏览器的原生表现
+    } else {
+      return { x: 0, y: 0 }; // 让页面滚动到顶部
+    }
   },
   },
   isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由
   isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由
   routes: globalRoutes.concat(mainRoutes)
   routes: globalRoutes.concat(mainRoutes)
-})
+});
 
 
 router.beforeEach((to, from, next) => {
 router.beforeEach((to, from, next) => {
-  let userId = Vue.cookie.get('userId')
+  let userId = Vue.cookie.get("userId");
   let menuList = sessionStorage.getItem("menuList");
   let menuList = sessionStorage.getItem("menuList");
   // 添加动态(菜单)路由
   // 添加动态(菜单)路由
   // 1. 已经添加 or 全局路由, 直接访问
   // 1. 已经添加 or 全局路由, 直接访问
   // 2. 获取菜单列表, 添加并保存本地存储
   // 2. 获取菜单列表, 添加并保存本地存储
-  console.log(userId,'测试',menuList)
-  if(userId!='' && menuList &&( menuList=='[]' || menuList.length==0)){
-    console.log(userId,'测试1221')
-  	http({
-  		url: http.adornUrl('sys/menu/nav'),
-  		method: 'get',
-  		params: http.adornParams()
-  	}).then(({data}) => {
-  		if (data && data.code === 0) {
-  			fnAddDynamicMenuRoutes(data.menuList)
-  			router.options.isAddDynamicMenuRoutes = true
-  			sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))
-  			sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
+  // console.log(userId, "测试", menuList);
+  if (userId != "" && menuList && (menuList == "[]" || menuList.length == 0)) {
+    console.log(userId, "测试1221");
+    http({
+      url: http.adornUrl("sys/menu/nav"),
+      method: "get",
+      params: http.adornParams()
+    })
+      .then(({ data }) => {
+        if (data && data.code === 0) {
+          fnAddDynamicMenuRoutes(data.menuList);
+          router.options.isAddDynamicMenuRoutes = true;
+          sessionStorage.setItem(
+            "menuList",
+            JSON.stringify(data.menuList || "[]")
+          );
+          sessionStorage.setItem(
+            "permissions",
+            JSON.stringify(data.permissions || "[]")
+          );
 
 
-  			next({...to, replace: true})
-  		} else {
-  			sessionStorage.setItem('menuList', '[]')
-  			sessionStorage.setItem('permissions', '[]')
-  			next()
-  		}
-  	}).catch((e) => {
-  		console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue')
-  		router.push({name: 'login'})
-  	})
-  }else if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
-    console.log(userId,'测试12')
-    next()
+          next({ ...to, replace: true });
+        } else {
+          sessionStorage.setItem("menuList", "[]");
+          sessionStorage.setItem("permissions", "[]");
+          next();
+        }
+      })
+      .catch(e => {
+        console.log(
+          `%c${e} 请求菜单列表和权限失败,跳转至登录页!!`,
+          "color:blue"
+        );
+        router.push({ name: "login" });
+      });
+  } else if (
+    router.options.isAddDynamicMenuRoutes ||
+    fnCurrentRouteType(to, globalRoutes) === "global"
+  ) {
+    console.log(userId, "测试12");
+    next();
   } else {
   } else {
-    console.log(userId,'测试123')
+    console.log(userId, "测试123");
     http({
     http({
-      url: http.adornUrl('sys/menu/nav'),
-      method: 'get',
+      url: http.adornUrl("sys/menu/nav"),
+      method: "get",
       params: http.adornParams()
       params: http.adornParams()
-    }).then(({data}) => {
-      if (data && data.code === 0) {
-        fnAddDynamicMenuRoutes(data.menuList)
-        router.options.isAddDynamicMenuRoutes = true
-        sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))
-        sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
-        next({ ...to, replace: true })
-      } else {
-        sessionStorage.setItem('menuList', '[]')
-        sessionStorage.setItem('permissions', '[]')
-        next()
-      }
-    }).catch((e) => {
-      console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue')
-      router.push({ name: 'login' })
     })
     })
+      .then(({ data }) => {
+        if (data && data.code === 0) {
+          fnAddDynamicMenuRoutes(data.menuList);
+          router.options.isAddDynamicMenuRoutes = true;
+          sessionStorage.setItem(
+            "menuList",
+            JSON.stringify(data.menuList || "[]")
+          );
+          sessionStorage.setItem(
+            "permissions",
+            JSON.stringify(data.permissions || "[]")
+          );
+          next({ ...to, replace: true });
+        } else {
+          sessionStorage.setItem("menuList", "[]");
+          sessionStorage.setItem("permissions", "[]");
+          next();
+        }
+      })
+      .catch(e => {
+        console.log(
+          `%c${e} 请求菜单列表和权限失败,跳转至登录页!!`,
+          "color:blue"
+        );
+        router.push({ name: "login" });
+      });
   }
   }
-})
+});
 
 
 /**
 /**
  * 判断当前路由类型, global: 全局路由, main: 主入口路由
  * 判断当前路由类型, global: 全局路由, main: 主入口路由
  * @param {*} route 当前路由
  * @param {*} route 当前路由
  */
  */
-function fnCurrentRouteType (route, globalRoutes = []) {
-  var temp = []
+function fnCurrentRouteType(route, globalRoutes = []) {
+  var temp = [];
   for (var i = 0; i < globalRoutes.length; i++) {
   for (var i = 0; i < globalRoutes.length; i++) {
     if (route.path === globalRoutes[i].path) {
     if (route.path === globalRoutes[i].path) {
-      return 'global'
-    } else if (globalRoutes[i].children && globalRoutes[i].children.length >= 1) {
-      temp = temp.concat(globalRoutes[i].children)
+      return "global";
+    } else if (
+      globalRoutes[i].children &&
+      globalRoutes[i].children.length >= 1
+    ) {
+      temp = temp.concat(globalRoutes[i].children);
     }
     }
   }
   }
-  return temp.length >= 1 ? fnCurrentRouteType(route, temp) : 'main'
+  return temp.length >= 1 ? fnCurrentRouteType(route, temp) : "main";
 }
 }
 
 
 /**
 /**
@@ -227,55 +619,61 @@ function fnCurrentRouteType (route, globalRoutes = []) {
  * @param {*} menuList 菜单列表
  * @param {*} menuList 菜单列表
  * @param {*} routes 递归创建的动态(菜单)路由
  * @param {*} routes 递归创建的动态(菜单)路由
  */
  */
-function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
-  var temp = []
-  console.log(menuList,'list列表')
+function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
+  var temp = [];
+  console.log(menuList, "list列表");
   for (var i = 0; i < menuList.length; i++) {
   for (var i = 0; i < menuList.length; i++) {
     if (menuList[i].list && menuList[i].list.length >= 1) {
     if (menuList[i].list && menuList[i].list.length >= 1) {
-      temp = temp.concat(menuList[i].list)
+      temp = temp.concat(menuList[i].list);
     } else if (menuList[i].url && /\S/.test(menuList[i].url)) {
     } else if (menuList[i].url && /\S/.test(menuList[i].url)) {
-      menuList[i].url = menuList[i].url.replace(/^\//, '')
+      menuList[i].url = menuList[i].url.replace(/^\//, "");
       var route = {
       var route = {
-        path: menuList[i].url.replace('/', '-'),
+        path: menuList[i].url.replace("/", "-"),
         component: null,
         component: null,
-        name: menuList[i].url.replace('/', '-'),
+        name: menuList[i].url.replace("/", "-"),
         meta: {
         meta: {
           menuId: menuList[i].menuId,
           menuId: menuList[i].menuId,
           title: menuList[i].name,
           title: menuList[i].name,
           isDynamic: true,
           isDynamic: true,
           isTab: true,
           isTab: true,
-          iframeUrl: ''
+          iframeUrl: ""
         }
         }
-      }
+      };
       // url以http[s]://开头, 通过iframe展示
       // url以http[s]://开头, 通过iframe展示
       if (isURL(menuList[i].url)) {
       if (isURL(menuList[i].url)) {
-        route['path'] = `i-${menuList[i].menuId}`
-        route['name'] = `i-${menuList[i].menuId}`
-        route['meta']['iframeUrl'] = menuList[i].url
+        route["path"] = `i-${menuList[i].menuId}`;
+        route["name"] = `i-${menuList[i].menuId}`;
+        route["meta"]["iframeUrl"] = menuList[i].url;
       } else {
       } else {
         try {
         try {
-          route['component'] = _import(`modules/${menuList[i].url}`) || null
+          route["component"] = _import(`modules/${menuList[i].url}`) || null;
         } catch (e) {}
         } catch (e) {}
       }
       }
-      routes.push(route)
+      routes.push(route);
     }
     }
   }
   }
-  console.log(temp,'路由')
+  console.log(temp, "路由");
   if (temp.length >= 1) {
   if (temp.length >= 1) {
-    fnAddDynamicMenuRoutes(temp, routes)
+    fnAddDynamicMenuRoutes(temp, routes);
   } else {
   } else {
-    mainRoutes.name = 'main-dynamic'
-    mainRoutes.children = routes
-    router.addRoutes([
-      mainRoutes,
-      { path: '*', redirect: { name: '404' } }
-    ])
-    sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]'))
-    console.log('\n')
-    console.log('%c!<-------------------- 动态(菜单)路由 s -------------------->', 'color:blue')
-    console.log(mainRoutes.children)
-    console.log('%c!<-------------------- 动态(菜单)路由 e -------------------->', 'color:blue')
+    mainRoutes.name = "main-dynamic";
+    mainRoutes.children = routes;
+    router.addRoutes([mainRoutes, { path: "*", redirect: { name: "404" } }]);
+    sessionStorage.setItem(
+      "dynamicMenuRoutes",
+      JSON.stringify(mainRoutes.children || "[]")
+    );
+    console.log("\n");
+    console.log(
+      "%c!<-------------------- 动态(菜单)路由 s -------------------->",
+      "color:blue"
+    );
+    console.log(mainRoutes.children);
+    console.log(
+      "%c!<-------------------- 动态(菜单)路由 e -------------------->",
+      "color:blue"
+    );
   }
   }
 }
 }
 
 
-export default router
+export default router;

+ 1 - 1
src/views/integral/integral.vue

@@ -323,7 +323,7 @@
 				<!-- 全场优惠 -->
 				<!-- 全场优惠 -->
 				<div style="margin-bottom: 10px;margin-left: 200px;" v-if="form.activityType==4">
 				<div style="margin-bottom: 10px;margin-left: 200px;" v-if="form.activityType==4">
 					<span>全场打</span>
 					<span>全场打</span>
-					<el-input v-model="form.quanchangyou.discountRate" type="number" style="width:13%;display: inline-table;margin-bottom: 10px;"></el-input>
+					<el-input v-model="quanchangyou.discountRate" type="number" style="width:13%;display: inline-table;margin-bottom: 10px;"></el-input>
 					<span>折</span>
 					<span>折</span>
 				</div>
 				</div>
 
 

+ 616 - 0
src/views/shopsList/shopPrintSet.vue

@@ -0,0 +1,616 @@
+<template>
+  <div>
+    <div style="font-size:18px;margin-bottom: 15px;">
+      <a href="#" @click="prev" style="text-decoration:none;font-size: 14px;">
+        <icon-svg
+          name="jiantou"
+          style="width: 1.2em;height: 1.2em;position: relative;top: 0.3em;"
+        ></icon-svg>
+        返回
+      </a>
+      <span style="display: inline-block;margin: 0 15px;color: #D9D9D9;"
+        >|</span
+      >
+      <span>打印配置</span>
+    </div>
+
+    <div class="body">
+      <!-- 左边预览效果 -->
+      <div class="body_left">
+        <div class="left_title">预览效果</div>
+
+        <el-card class="left_card" v-if="list1">
+          <!-- 基本信息区域 -->
+          <div
+            v-for="(item, index) in list1.details"
+            :key="item.id + 'list1'"
+            class="card_box"
+            :style="
+              `fontSize:${
+                list1.types[index].wordSize == 2 ? 20 : 16
+              }px;fontWeight:${list1.types[index].isBlod == 1 ? 'bold' : '400'}`
+            "
+          >
+            <div v-if="item.isCheck == 0">
+              {{ item.printName }}
+              <span v-if="item.printName == '订单号'">:xxxxxxxxx</span>
+              <span v-if="item.printName == '订单类型'">:xxxxxxxxx</span>
+            </div>
+          </div>
+
+          <hr />
+
+          <!-- 商品信息区域 -->
+          <div class="card_table">
+            <div
+              class="table_box"
+              v-for="item in list2.details.filter(
+                ele => ele.printName != '备注'
+              )"
+              :key="item.id"
+              :style="
+                `fontSize:${
+                  list2.types.find(ele => ele.printName == item.printName)
+                    .wordSize == 2
+                    ? 20
+                    : 16
+                }px;fontWeight:${
+                  list2.types.find(ele => ele.printName == item.printName)
+                    .isBlod == 1
+                    ? 'bold'
+                    : '400'
+                }`
+              "
+            >
+              <div v-if="item.printName != '备注' && item.isCheck == 0">
+                {{ item.printName }}
+              </div>
+            </div>
+          </div>
+          <hr />
+          <div class="card_table">
+            <div
+              class="table_box"
+              v-for="item in list2.details.filter(
+                ele => ele.printName != '备注'
+              )"
+              :key="item.id"
+              :style="
+                `fontSize:${
+                  list2.types.find(ele => ele.printName == item.printName)
+                    .wordSize == 2
+                    ? 20
+                    : 16
+                }px;fontWeight:${
+                  list2.types.find(ele => ele.printName == item.printName)
+                    .isBlod == 1
+                    ? 'bold'
+                    : '400'
+                }`
+              "
+            >
+              <div v-if="item.printName != '备注' && item.isCheck == 0">
+                xx
+              </div>
+            </div>
+          </div>
+          <hr />
+          <div
+            class="card_box2"
+            :style="
+              `fontSize:${
+                list2.types.find(ele => ele.printName == '备注').wordSize == 2
+                  ? 20
+                  : 16
+              }px;fontWeight:${
+                list2.types.find(ele => ele.printName == '备注').isBlod == 1
+                  ? 'bold'
+                  : '400'
+              }`
+            "
+          >
+            备注
+          </div>
+
+          <hr />
+
+          <!-- 支付信息区域 -->
+          <div
+            v-for="(item, index) in list3.details"
+            :key="item.id"
+            class="card_box2"
+            :style="
+              `fontSize:${
+                list3.types[index].wordSize == 2 ? 20 : 16
+              }px;fontWeight:${list3.types[index].isBlod == 1 ? 'bold' : '400'}`
+            "
+          >
+            <div v-if="item.isCheck == 0">{{ item.printName }}:xx</div>
+          </div>
+
+          <hr />
+
+          <!-- 用户信息区域 -->
+          <div
+            v-for="(item, index) in list4.details"
+            :key="item.id"
+            class="card_box2"
+            :style="
+              `fontSize:${
+                list4.types[index].wordSize == 2 ? 20 : 16
+              }px;fontWeight:${list4.types[index].isBlod == 1 ? 'bold' : '400'}`
+            "
+          >
+            <div v-if="item.isCheck == 0">{{ item.printName }}:xxx</div>
+          </div>
+        </el-card>
+      </div>
+
+      <!-- 编辑区域 -->
+      <div class="body_right">
+        <div class="right_title">
+          小票编辑
+          <el-button size="mini" type="primary" @click="handleAdd"
+            >添加打印信息</el-button
+          >
+        </div>
+
+        <el-tabs v-model="activeName" @tab-click="handleClick">
+          <el-tab-pane
+            v-for="item in modelDatas"
+            :key="item.id"
+            :label="item.name"
+            :name="item.name"
+          >
+            <div class="title">
+              <div class="dot"></div>
+              <div class="title_text">基本信息</div>
+              <div class="title_desc">
+                ({{ defaultMsg }}为小票必须展示的信息)
+              </div>
+            </div>
+
+            <div class="check_box">
+              <el-checkbox
+                v-for="ele in item.details"
+                :key="ele.id"
+                :value="ele.isCheck == 0"
+                :disabled="
+                  ele.printName == '平台名称' ||
+                    ele.printName == '店铺名' ||
+                    ele.printName == '订单号' ||
+                    ele.printName == '商品名称' ||
+                    ele.printName == '单价' ||
+                    ele.printName == '数量' ||
+                    ele.printName == '备注' ||
+                    ele.printName == '打包费' ||
+                    ele.printName == '商品费' ||
+                    ele.printName == '优惠券' ||
+                    ele.printName == '跑腿费' ||
+                    ele.printName == '优惠活动' ||
+                    ele.printName == '合计' ||
+                    ele.printName == '姓名' ||
+                    ele.printName == '电话号' ||
+                    ele.printName == '地址' ||
+                    ele.printName == '订餐时间'
+                "
+                @change="changeType($event, ele)"
+              >
+                {{ ele.printName }}
+              </el-checkbox>
+            </div>
+
+            <div class="title">
+              <div class="dot"></div>
+              <div class="title_text">自定义样式</div>
+            </div>
+
+            <div v-for="element in item.types" :key="element.id">
+              <div class="radio_box">{{ element.printName }}</div>
+              <div class="radio_list">
+                打印字号:
+                <el-radio-group v-model="element.wordSize">
+                  <el-radio :label="1">正常</el-radio>
+                  <el-radio :label="2">放大</el-radio>
+                </el-radio-group>
+              </div>
+
+              <div class="radio_list">
+                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字体:
+                <el-radio-group v-model="element.isBlod">
+                  <el-radio :label="0">正常</el-radio>
+                  <el-radio :label="1">加粗</el-radio>
+                </el-radio-group>
+              </div>
+              <hr />
+            </div>
+
+            <div class="btn">
+              <el-button size="mini" type="primary" @click="handleSave"
+                >保存</el-button
+              >
+            </div>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+
+    <!-- 添加打印信息弹窗区域 -->
+    <el-dialog
+      title="添加打印信息"
+      :close-on-click-modal="false"
+      :visible.sync="centerDialogVisible"
+      width="36%"
+      center
+    >
+      <div>
+        <el-form :model="form" :rules="rules" ref="ruleForm">
+          <el-form-item
+            prop="typeId"
+            label="打印信息类型:"
+            :label-width="formLabelWidth"
+          >
+            <el-select
+              v-model="form.typeId"
+              placeholder="请选择打印信息类型"
+              style="width: 270px;"
+            >
+              <el-option
+                v-for="item in form.typesList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            prop="printName"
+            label="打印信息名称:"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="form.printName"
+              autocomplete="off"
+              placeholder="请输入打印信息名称"
+              style="width: 270px;"
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="printField"
+            label="打印信息字段名:"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="form.printField"
+              autocomplete="off"
+              placeholder="请输入打印信息字段名"
+              style="width: 270px;"
+            ></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="centerDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="handleConfirm('ruleForm')"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    let checkPrintField = (rule, value, callback) => {
+      let reg = /^[a-zA-Z_]+$/;
+      let flag = reg.test(value);
+      if (flag) {
+        callback();
+      } else {
+        callback(new Error("只能输入英文字母和下划线"));
+      }
+    };
+    return {
+      // 店铺id
+      shopId: "",
+      // 打印数据id
+      printId: "",
+      // 当前激活选项卡
+      activeName: "",
+      // 小票模板数据
+      modelDatas: [],
+      defaultMsg: "平台名称、店铺名、订单号",
+      // 弹窗显示隐藏控制
+      centerDialogVisible: false,
+      // 弹窗数据
+      form: {
+        typeId: "",
+        typesList: [],
+        printField: "",
+        printName: ""
+      },
+      formLabelWidth: "150px",
+      rules: {
+        typeId: [
+          { required: true, message: "请选择打印信息类型", trigger: "change" }
+        ],
+        printName: [
+          { required: true, message: "请输入打印信息名称", trigger: "change" }
+        ],
+        printField: [
+          {
+            required: true,
+            message: "请输入打印信息字段名",
+            trigger: "change"
+          },
+          { validator: checkPrintField, trigger: "change" }
+        ]
+      }
+    };
+  },
+  mounted() {
+    this.shopId = this.$route.query.shopId;
+
+    // 根据店铺ID获取小票模板数据
+    this.getModelDatas();
+
+    // this.test2();
+    // this.test3();
+  },
+  computed: {
+    // 基本信息
+    list1() {
+      return this.modelDatas.find(ele => ele.name == "基本信息");
+    },
+    // 商品信息
+    list2() {
+      return this.modelDatas.find(ele => ele.name == "商品信息");
+    },
+    // 支付信息
+    list3() {
+      return this.modelDatas.find(ele => ele.name == "支付信息");
+    },
+    // 用户信息
+    list4() {
+      return this.modelDatas.find(ele => ele.name == "用户信息");
+    }
+  },
+  methods: {
+    async test2() {
+      const res = await this.$http({
+        url: this.$http.adornUrl("/admin/printInfo/getPrintInfo"),
+        params: this.$http.adornParams({
+          id: 1
+        })
+      });
+      // console.log(res);
+    },
+    async test3() {
+      const res = await this.$http({
+        url: this.$http.adornUrl("/admin/printInfo/getPrintInfoList"),
+        params: this.$http.adornParams({
+          page: 1,
+          limit: 6
+        })
+      });
+      // console.log(res);
+    },
+    // 根据店铺ID获取小票模板数据
+    async getModelDatas() {
+      const res = await this.$http({
+        url: this.$http.adornUrl("/admin/printInfo/getPrintModelData"),
+        params: this.$http.adornParams({
+          shopId: this.shopId
+        })
+      });
+      // console.log(res);
+      if (res.data.code == 0) {
+        this.printId = res.data.data.id;
+        this.modelDatas = res.data.data.modelDatas;
+        this.activeName = this.modelDatas[0].name;
+        console.log(this.modelDatas);
+      }
+    },
+    // 添加打印信息按钮回调
+    handleAdd() {
+      this.centerDialogVisible = true;
+      this.$nextTick(() => {
+        this.$refs.ruleForm.resetFields();
+      });
+      // 获取打印信息类型下拉列表
+      this.getTypesList();
+    },
+    // 获取打印信息类型下拉列表
+    async getTypesList() {
+      const res = await this.$http({
+        url: this.$http.adornUrl("/admin/printInfo/getPrintDropList")
+      });
+      // console.log(res);
+      if (res.data.code == 0) {
+        this.form.typesList = res.data.data;
+      }
+    },
+    // 弹窗确定按钮回调
+    handleConfirm(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.handleAddReq();
+        }
+      });
+    },
+    // 添加打印信息请求
+    async handleAddReq() {
+      // console.log(this.form);
+      const res = await this.$http({
+        url: this.$http.adornUrl("/admin/printInfo/insertPrintInfo"),
+        method: "post",
+        data: this.$http.adornParams({
+          printField: this.form.printField,
+          printName: this.form.printName,
+          typeId: this.form.typeId,
+          typeName: this.form.typesList[this.form.typeId].name
+        })
+      });
+      console.log(res);
+      if (res.data.code == 0) {
+        this.centerDialogVisible = false;
+        this.$message.success("添加成功");
+        this.getModelDatas();
+      }
+    },
+    // 保存按钮回调
+    async handleSave() {
+      const res = await this.$http({
+        url: this.$http.adornUrl(
+          this.printId
+            ? "/admin/printInfo/updatePrintModelData"
+            : "/admin/printInfo/insertPrintModelData"
+        ),
+        method: "post",
+        data: this.$http.adornParams({
+          id: this.printId,
+          modelDatas: this.modelDatas,
+          shopId: this.shopId
+        })
+      });
+      // console.log(res);
+      if (res.data.code == 0) {
+        this.$message.success("保存成功");
+      }
+    },
+    // 选项卡切换回调
+    handleClick(tab) {
+      // console.log(tab);
+      if (tab._props.label == "基本信息") {
+        this.defaultMsg = "平台名称、店铺名、订单号";
+      } else if (tab._props.label == "商品信息") {
+        this.defaultMsg = "商品名称、单价、数量、备注";
+      } else if (tab._props.label == "支付信息") {
+        this.defaultMsg = "打包费、商品费、优惠券、跑腿费、优惠活动和合计";
+      } else if (tab._props.label == "用户信息") {
+        this.defaultMsg = "姓名、电话号、地址 、订餐时间";
+      }
+    },
+    // 基本信息切换回调
+    changeType(e, ele) {
+      if (e) {
+        ele.isCheck = 0;
+      } else {
+        ele.isCheck = 1;
+      }
+    },
+    // 返回上一级
+    prev() {
+      this.$router.back();
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.body {
+  display: flex;
+  justify-content: space-around;
+  padding: 0 50px;
+
+  .body_left {
+    width: 400px;
+
+    .left_title {
+      margin-bottom: 16px;
+      font-size: 16px;
+      font-weight: bold;
+      color: #000;
+    }
+
+    .left_card {
+      display: flex;
+      justify-content: center;
+      font-size: 16px;
+
+      .card_box {
+        margin-bottom: 10px;
+        width: 350px;
+      }
+
+      .card_box2 {
+        margin-bottom: 10px;
+      }
+
+      .card_table {
+        display: flex;
+        justify-content: space-between;
+        margin-bottom: 10px;
+
+        .table_box {
+          flex: 1;
+          text-align: center;
+        }
+      }
+    }
+  }
+
+  .body_right {
+    width: 500px;
+
+    .right_title {
+      display: flex;
+      justify-content: space-between;
+      margin-bottom: 16px;
+      font-size: 16px;
+      font-weight: bold;
+      color: #000;
+    }
+
+    .title {
+      display: flex;
+      align-items: center;
+      height: 34px;
+      background-color: #edf1f7;
+
+      .dot {
+        margin: 0 7px 0 14px;
+        width: 10px;
+        height: 10px;
+        background-color: #0061ff;
+      }
+
+      .title_text {
+        font-size: 16px;
+        font-weight: bold;
+      }
+
+      .title_desc {
+        flex: 1;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        font-size: 12px;
+      }
+    }
+
+    .check_box {
+      margin: 15px 0;
+      line-height: 30px;
+    }
+
+    .radio_box {
+      margin-top: 13px;
+      font-size: 16px;
+      font-weight: bold;
+    }
+
+    .radio_list {
+      margin-top: 12px;
+      font-size: 16px;
+    }
+
+    .btn {
+      display: flex;
+      justify-content: flex-end;
+      margin-top: 20px;
+    }
+  }
+}
+</style>

Разлика између датотеке није приказан због своје велике величине
+ 3288 - 2700
src/views/shopsList/shopsList.vue