Browse Source

Merge branch 'master' of http://101.37.21.97:3000/wash/wash_server_v2

# Conflicts:
#	admin-ui/src/views/order/cloth/component/cashCloth.vue
DESKTOP-T5C0CIA\lhch 2 tháng trước cách đây
mục cha
commit
b401bd5712
100 tập tin đã thay đổi với 1289 bổ sung243 xóa
  1. BIN
      .DS_Store
  2. 3 3
      admin-ui/src/api/settlement/bill.js
  3. 7 2
      admin-ui/src/api/settlement/statistics.js
  4. 65 0
      admin-ui/src/api/settlement/storeStatistics.js
  5. 15 4
      admin-ui/src/components/Breadcrumb/index.vue
  6. 3 1
      admin-ui/src/layout/components/Sidebar/SidebarItem.vue
  7. 4 0
      admin-ui/src/layout/components/Sidebar/index.vue
  8. 29 7
      admin-ui/src/layout/components/TagsView/index.vue
  9. 23 3
      admin-ui/src/permission.js
  10. 22 3
      admin-ui/src/router/index.js
  11. 16 0
      admin-ui/src/store/modules/permission.js
  12. 7 3
      admin-ui/src/store/modules/user.js
  13. 1 1
      admin-ui/src/views/activity/clothInfo/index.vue
  14. 1 1
      admin-ui/src/views/activity/clothItem/index.vue
  15. 1 1
      admin-ui/src/views/activity/couponInfo/index.vue
  16. 3 3
      admin-ui/src/views/activity/couponItem/index.vue
  17. 1 1
      admin-ui/src/views/activity/discountInfo/index.vue
  18. 1 1
      admin-ui/src/views/activity/groupInfo/index.vue
  19. 1 1
      admin-ui/src/views/activity/rechargeInfo/index.vue
  20. 1 1
      admin-ui/src/views/activity/rechargeItem/index.vue
  21. 1 1
      admin-ui/src/views/app/banner/index.vue
  22. 3 4
      admin-ui/src/views/app/delivery/index.vue
  23. 1 1
      admin-ui/src/views/app/feedback/index.vue
  24. 1 1
      admin-ui/src/views/app/notify/index.vue
  25. 1 1
      admin-ui/src/views/app/user/index.vue
  26. 1 1
      admin-ui/src/views/cloth/adjunct/index.vue
  27. 1 1
      admin-ui/src/views/cloth/clothBrand/index.vue
  28. 1 1
      admin-ui/src/views/cloth/clothItem/index.vue
  29. 1 1
      admin-ui/src/views/cloth/clothType/index.vue
  30. 1 1
      admin-ui/src/views/cloth/color/index.vue
  31. 1 1
      admin-ui/src/views/cloth/craft/index.vue
  32. 1 1
      admin-ui/src/views/cloth/customItem/index.vue
  33. 1 1
      admin-ui/src/views/cloth/flaw/index.vue
  34. 1 1
      admin-ui/src/views/cloth/flawTop/index.vue
  35. 1 1
      admin-ui/src/views/cloth/flawType/index.vue
  36. 1 1
      admin-ui/src/views/cloth/hanger/detail.vue
  37. 1 1
      admin-ui/src/views/cloth/hanger/index.vue
  38. 7 4
      admin-ui/src/views/cloth/hanger/upHanger.vue
  39. 1 1
      admin-ui/src/views/cloth/inquiry/queryEntryRecord.vue
  40. 1 1
      admin-ui/src/views/cloth/inquiry/queryFactoryClothing.vue
  41. 1 1
      admin-ui/src/views/cloth/inquiry/queryFactoryRecords.vue
  42. 1 1
      admin-ui/src/views/cloth/inquiry/queryInspectRecords.vue
  43. 2 2
      admin-ui/src/views/cloth/laundryPrice/index.vue
  44. 1 1
      admin-ui/src/views/cloth/laundryPrice/index_.vue
  45. 1 1
      admin-ui/src/views/cloth/rewashReason/index.vue
  46. 1 1
      admin-ui/src/views/cloth/rewashType/index.vue
  47. 1 1
      admin-ui/src/views/cloth/speed/index.vue
  48. 1 1
      admin-ui/src/views/cloth/texture/index.vue
  49. 1 1
      admin-ui/src/views/cloth/unitPrice/index.vue
  50. 1 1
      admin-ui/src/views/cloth/washMode/index.vue
  51. 1 1
      admin-ui/src/views/cloth/washProblem/index.vue
  52. 101 0
      admin-ui/src/views/components/ChargeTrendChart.vue
  53. 113 0
      admin-ui/src/views/components/OrderTrendChart.vue
  54. 1 1
      admin-ui/src/views/coupon/item/index.vue
  55. 4 4
      admin-ui/src/views/coupon/item/storeSendCoupon.vue
  56. 1 1
      admin-ui/src/views/coupon/sendCouponCount/index.vue
  57. 1 1
      admin-ui/src/views/coupon/thirdParty/index.vue
  58. 1 1
      admin-ui/src/views/coupon/type/index.vue
  59. 1 1
      admin-ui/src/views/coupon/typeApplyCloth/index.vue
  60. 1 1
      admin-ui/src/views/express/index.vue
  61. 1 1
      admin-ui/src/views/generator/form/index.vue
  62. 1 1
      admin-ui/src/views/goods/brand/index.vue
  63. 1 1
      admin-ui/src/views/goods/carBeaut/index.vue
  64. 2 2
      admin-ui/src/views/goods/category/index.vue
  65. 20 7
      admin-ui/src/views/goods/commonGoods/index.vue
  66. 1 1
      admin-ui/src/views/goods/commonGoods/stockRecord.vue
  67. 9 2
      admin-ui/src/views/goods/goodsComment/index.vue
  68. 1 1
      admin-ui/src/views/goods/lifeService/index.vue
  69. 232 73
      admin-ui/src/views/index.vue
  70. 7 8
      admin-ui/src/views/index_factory.vue
  71. 475 0
      admin-ui/src/views/index_store.vue
  72. 1 0
      admin-ui/src/views/login.vue
  73. 1 1
      admin-ui/src/views/monitor/job/index.vue
  74. 1 1
      admin-ui/src/views/monitor/job/log.vue
  75. 1 1
      admin-ui/src/views/monitor/logininfor/index.vue
  76. 1 1
      admin-ui/src/views/monitor/online/index.vue
  77. 1 1
      admin-ui/src/views/monitor/operlog/index.vue
  78. 1 1
      admin-ui/src/views/order/activity/index.vue
  79. 1 1
      admin-ui/src/views/order/cloth/checkCloth.vue
  80. 1 1
      admin-ui/src/views/order/cloth/cloudAppointmentClothOrder.vue
  81. 24 15
      admin-ui/src/views/order/cloth/collectCloth.vue
  82. 20 21
      admin-ui/src/views/order/cloth/component/cashCloth.vue
  83. 1 1
      admin-ui/src/views/order/cloth/countConsume.vue
  84. 1 1
      admin-ui/src/views/order/cloth/countNoConsume.vue
  85. 1 1
      admin-ui/src/views/order/cloth/inFactory.vue
  86. 1 1
      admin-ui/src/views/order/cloth/orderList.vue
  87. 1 1
      admin-ui/src/views/order/cloth/outFactory.vue
  88. 1 1
      admin-ui/src/views/order/cloth/searchCloth.vue
  89. 1 1
      admin-ui/src/views/order/cloth/sendCloth.vue
  90. 1 1
      admin-ui/src/views/order/delivery/index.vue
  91. 1 1
      admin-ui/src/views/order/factoryFinancial/factoryManageCount.vue
  92. 1 1
      admin-ui/src/views/order/factoryFinancial/factoryManageDay.vue
  93. 1 1
      admin-ui/src/views/order/factoryFinancial/factoryManageDetail.vue
  94. 1 1
      admin-ui/src/views/order/financial/manageDay.vue
  95. 1 1
      admin-ui/src/views/order/financial/manageFactory.vue
  96. 1 1
      admin-ui/src/views/order/financial/manageMonth.vue
  97. 1 1
      admin-ui/src/views/order/financial/managePay.vue
  98. 1 1
      admin-ui/src/views/order/retailOrder/index.vue
  99. 1 1
      admin-ui/src/views/order/serviceOrder/carBeautyOrder.vue
  100. 1 1
      admin-ui/src/views/order/serviceOrder/lifeServicesOrder.vue

BIN
.DS_Store


+ 3 - 3
admin-ui/src/api/settlement/bill.js

@@ -74,7 +74,7 @@ export function submitStoreSettlement(data) {
 // 获取门店经营日报数据
 export function getDailyStatistics(query) {
   return request({
-    url: '/settlement/store/statistics/daily',
+    url: '/mapi/settlement/store/statistics/daily',
     method: 'get',
     params: query
   })
@@ -83,8 +83,8 @@ export function getDailyStatistics(query) {
 // 获取门店经营日报趋势数据
 export function getDailyTrend(query) {
   return request({
-    url: '/settlement/store/statistics/trend',
+    url: '/mapi/settlement/store/statistics/trend',
     method: 'get',
     params: query
   })
-}
+}

+ 7 - 2
admin-ui/src/api/settlement/statistics.js

@@ -74,7 +74,6 @@ export function listFactoryStatisticsByStore(query) {
 }
 
 
-
 // 查询工厂按日期统计列表
 export function listStatisticsByDate(query) {
   return request({
@@ -114,4 +113,10 @@ export function exportStatisticsByStore(query) {
   )
 }
 
-
+//工厂端首页dashboard
+export function factoryDashborad() {
+  return request({
+    url: '/mapi/settlement/factory/statistics/dashborad',
+    method: 'get'
+  })
+}

+ 65 - 0
admin-ui/src/api/settlement/storeStatistics.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+/**
+ * 获取门店经营日报数据
+ * @returns {Promise} 返回门店经营日报数据
+ */
+export function getStoreDashboard() {
+  return request({
+    url: '/mapi/settlement/store/statistics/dashboard',
+    method: 'get'
+  })
+}
+
+/**
+ * 获取门店经营日报数据
+ * @param {string} date 日期,格式:yyyy-MM-dd
+ * @returns {Promise} 返回门店经营日报数据
+ */
+export function getStoreDailyStatistics(date) {
+  return request({
+    url: '/mapi/settlement/store/statistics/daily',
+    method: 'get',
+    params: { date }
+  })
+}
+
+/**
+ * 获取门店经营日报趋势数据
+ * @param {string} startDate 开始日期,格式:yyyy-MM-dd
+ * @param {string} endDate 结束日期,格式:yyyy-MM-dd
+ * @returns {Promise} 返回门店经营日报趋势数据
+ */
+export function getStoreDailyTrend(startDate, endDate) {
+  return request({
+    url: '/mapi/settlement/store/statistics/trend',
+    method: 'get',
+    params: { startDate, endDate }
+  })
+}
+
+/**
+ * 获取门店每日交易统计列表
+ * @param {Object} query 查询参数
+ * @returns {Promise} 返回门店每日交易统计列表
+ */
+export function listStoreStatistics(query) {
+  return request({
+    url: '/mapi/settlement/store/statistics/list',
+    method: 'get',
+    params: query
+  })
+}
+
+/**
+ * 获取门店每日充值统计列表
+ * @param {Object} query 查询参数
+ * @returns {Promise} 返回门店每日充值统计列表
+ */
+export function listStoreChargeStatistics(query) {
+  return request({
+    url: '/mapi/settlement/store/statistics/charge/list',
+    method: 'get',
+    params: query
+  })
+} 

+ 15 - 4
admin-ui/src/components/Breadcrumb/index.vue

@@ -31,13 +31,24 @@ export default {
   methods: {
     getBreadcrumb() {
       // only show routes with meta.title
-      let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
-      const first = matched[0]
+      console.log(this.$route.matched)
+      let matched = this.$route.matched.filter(item => item.meta && item.meta.title && item.meta.title !== '首页')
+      const first = this.$route.matched[0]
 
       if (!this.isDashboard(first)) {
-        matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched)
+        let userInfo = this.getUserInfo()
+        if (userInfo && userInfo.userType === '00') {
+          matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched)
+        }
+        if (userInfo && userInfo.userType === '01') {
+          matched = [{ path: '/factory', meta: { title: '首页' }}].concat(matched)
+        }
+        if (userInfo && userInfo.userType === '02') {
+          matched = [{ path: '/store', meta: { title: '首页' }}].concat(matched)
+        }
+        // matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched)
       }
-
+      console.log('aaa', matched)
       this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
     },
     isDashboard(route) {

+ 3 - 1
admin-ui/src/layout/components/Sidebar/SidebarItem.vue

@@ -57,9 +57,10 @@ export default {
   methods: {
     hasOneShowingChild(children = [], parent) {
       if (!children) {
-        children = [];
+        children = []
       }
       const showingChildren = children.filter(item => {
+
         if (item.hidden) {
           return false
         } else {
@@ -82,6 +83,7 @@ export default {
 
       return false
     },
+    
     resolvePath(routePath, routeQuery) {
       if (isExternal(routePath)) {
         return routePath

+ 4 - 0
admin-ui/src/layout/components/Sidebar/index.vue

@@ -52,6 +52,10 @@ export default {
         isCollapse() {
             return !this.sidebar.opened;
         }
+    },
+
+    created() {
+        console.log(this.sidebarRouters)
     }
 };
 </script>

+ 29 - 7
admin-ui/src/layout/components/TagsView/index.vue

@@ -101,15 +101,37 @@ export default {
     },
     filterAffixTags(routes, basePath = '/') {
       let tags = []
+      const userInfo = this.getUserInfo()
       routes.forEach(route => {
         if (route.meta && route.meta.affix) {
-          const tagPath = path.resolve(basePath, route.path)
-          tags.push({
-            fullPath: tagPath,
-            path: tagPath,
-            name: route.name,
-            meta: { ...route.meta }
-          })
+          if (userInfo && userInfo.userType === '00' && route.path == '/index') {
+            const tagPath = path.resolve(basePath, route.path)
+            tags.push({
+              fullPath: tagPath,
+              path: tagPath,
+              name: route.name,
+              meta: { ...route.meta }
+            })
+          }
+          if (userInfo && userInfo.userType === '01' && route.path == '/factory') {
+            const tagPath = path.resolve(basePath, route.path)
+            tags.push({
+              fullPath: tagPath,
+              path: tagPath,
+              name: route.name,
+              meta: { ...route.meta }
+            })
+          }
+          if (userInfo && userInfo.userType === '02' && route.path == '/store') {
+            const tagPath = path.resolve(basePath, route.path)
+            tags.push({
+              fullPath: tagPath,
+              path: tagPath,
+              name: route.name,
+              meta: { ...route.meta }
+            })
+          }
+          
         }
         if (route.children) {
           const tempTags = this.filterAffixTags(route.children, route.path)

+ 23 - 3
admin-ui/src/permission.js

@@ -3,7 +3,7 @@ import store from './store'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import { getToken } from '@/utils/auth'
+import { getToken, getUserInfo } from '@/utils/auth'
 import { isRelogin } from '@/utils/request'
 
 NProgress.configure({ showSpinner: false })
@@ -16,7 +16,14 @@ router.beforeEach((to, from, next) => {
     to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
     /* has token*/
     if (to.path === '/login') {
-      next({ path: '/' })
+      const userType = getUserInfo().userType;
+      if (userType === '00') {
+        next({ path: '/' })
+      } else if (userType === '01') {
+        next({ path: '/factory' })
+      } else if (userType === '02') {
+        next({ path: '/store' })
+      } 
       NProgress.done()
     } else {
       if (store.getters.roles.length === 0) {
@@ -28,7 +35,20 @@ router.beforeEach((to, from, next) => {
           store.dispatch('GenerateRoutes').then(accessRoutes => {
             // 根据roles权限生成可访问的路由表
             router.addRoutes(accessRoutes) // 动态添加可访问路由表
-            next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
+            console.log('运行',to.path)
+            if (to.path === '/index') {
+              const userType = getUserInfo().userType;
+              console.log('运行1',userType)
+              if (userType === '00') {
+                next({ path: '/', replace: true })
+              } else if (userType === '01') {
+                next({ path: '/factory', replace: true })
+              } else if (userType === '02') {
+                next({ path: '/store', replace: true })
+              } 
+            } else {
+              next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
+            }
           })
         }).catch(err => {
             store.dispatch('LogOut').then(() => {

+ 22 - 3
admin-ui/src/router/index.js

@@ -70,6 +70,7 @@ export const constantRoutes = [
     path: '',
     component: Layout,
     redirect: 'index',
+    meta: { title: '首页', icon: 'dashboard', affix: true },
     children: [
       {
         path: 'index',
@@ -77,12 +78,29 @@ export const constantRoutes = [
         name: 'Index',
         meta: { title: '首页', icon: 'dashboard', affix: true }
       }
-    ]
+    ],
+    hidden: true
+  },
+  {
+    path: '',
+    component: Layout,
+    redirect: 'store',
+    meta: { title: '首页', icon: 'dashboard', affix: true },
+    hidden: true,
+    children: [
+      {
+        path: 'store',
+        component: () => import('@/views/index_store'),
+        name: 'Store',
+        meta: { title: '首页', icon: 'dashboard', affix: true }
+      }
+    ],
   },
   {
     path: '',
     component: Layout,
     redirect: 'factory',
+    meta: { title: '首页', icon: 'dashboard', affix: true },
     children: [
       {
         path: 'factory',
@@ -90,7 +108,8 @@ export const constantRoutes = [
         name: 'factory',
         meta: { title: '首页', icon: 'dashboard', affix: true }
       }
-    ]
+    ],
+    hidden: true
   },
   {
     path: '/user',
@@ -104,7 +123,7 @@ export const constantRoutes = [
         name: 'Profile',
         meta: { title: '个人中心', icon: 'user' }
       }
-    ]
+    ],
   }
 ]
 

+ 16 - 0
admin-ui/src/store/modules/permission.js

@@ -4,6 +4,8 @@ import { getRouters } from '@/api/menu'
 import Layout from '@/layout/index'
 import ParentView from '@/components/ParentView'
 import InnerLink from '@/layout/components/InnerLink'
+import { getUserInfo } from '@/utils/auth'
+
 
 const permission = {
   state: {
@@ -34,6 +36,20 @@ const permission = {
       return new Promise(resolve => {
         // 向后端请求路由数据
         getRouters().then(res => {
+          let userInfo = getUserInfo()
+          console.log('a1',constantRoutes)
+          constantRoutes.forEach(item => {
+            if (userInfo.userType === '00' && item.redirect === 'index') {
+              item.hidden = false
+            }
+            if (userInfo.userType === '01' && item.redirect === 'factory') {
+              item.hidden = false
+            }
+            if (userInfo.userType === '02' && item.redirect === 'store') {
+              item.hidden = false
+            }
+          })
+          console.log('a2',constantRoutes)
           const sdata = JSON.parse(JSON.stringify(res.data))
           const rdata = JSON.parse(JSON.stringify(res.data))
           const sidebarRoutes = filterAsyncRouter(sdata)

+ 7 - 3
admin-ui/src/store/modules/user.js

@@ -51,10 +51,14 @@ const user = {
       return new Promise((resolve, reject) => {
         console.log("GetInfo")
         getInfo().then(res => {
-          console.log('aasss', res.user)
           const user = res.user
-          console.log('user', user)
-          setUserInfo(user)
+          let obj = {}
+          for (let key in user) {
+            if (key !== "roles") {
+              obj[key] = user[key]
+            }
+          }
+          setUserInfo(obj)
           const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
           if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
             commit('SET_ROLES', res.roles)

+ 1 - 1
admin-ui/src/views/activity/clothInfo/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="title">
                 <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/activity/clothItem/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="clothItemId">
                 <el-select v-model="queryParams.clothItemId" filterable placeholder="选择衣服" clearable>
                     <el-option v-for="item in clothItemList" :label="item.name" :value="item.id" :key="item.name"> </el-option>

+ 1 - 1
admin-ui/src/views/activity/couponInfo/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="search-wrapper" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch">
                 <el-form-item label="活动标题" prop="title">
                     <el-input v-model="queryParams.title" placeholder="请输入活动标题" clearable style="width: 240px" @keyup.enter.native="handleQuery">
                         <i slot="prefix" class="el-input__icon el-icon-search"></i>

+ 3 - 3
admin-ui/src/views/activity/couponItem/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域卡片 -->
         <el-card class="box-card" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
                 <el-form-item label="优惠券名称" prop="couponTypeTitle">
                     <el-input v-model="queryParams.couponTypeTitle" placeholder="请输入优惠券名称" clearable prefix-icon="el-icon-ticket" style="width: 240px" @keyup.enter.native="handleQuery" />
                 </el-form-item>
@@ -58,7 +58,7 @@
         </el-card>
 
         <!-- 添加或修改注册送券活动优惠券明细对话框 -->
-        <el-dialog :title="title" :visible.sync="open" width="650px" :close-on-click-modal="false" :before-close="handleClose">
+        <el-dialog :title="title" :visible.sync="open" width="650px" :close-on-click-modal="false" :before-close="handleClose" append-to-body>
             <el-form ref="form" :model="form" :rules="rules" label-width="120px">
                 <el-card class="box-card" shadow="never">
                     <div slot="header">
@@ -106,7 +106,7 @@
         </el-dialog>
 
         <!-- 库存调整对话框 -->
-        <el-dialog :title="stockTitle" :visible.sync="stockOpen" width="500px" :close-on-click-modal="false" :before-close="handleStockClose">
+        <el-dialog :title="stockTitle" :visible.sync="stockOpen" width="500px" :close-on-click-modal="false" :before-close="handleStockClose" append-to-body>
             <el-form ref="stockForm" :model="stockForm" :rules="stockRoles" label-width="120px">
                 <el-form-item :label="stockTitle + '数量'" prop="stockNum">
                     <el-input-number v-model="stockForm.stockNum" placeholder="请输入库存数量" :min="0" style="width: 200px" />

+ 1 - 1
admin-ui/src/views/activity/discountInfo/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="search-wrapper" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px">
                 <el-form-item label="活动标题" prop="title">
                     <el-input v-model="queryParams.title" placeholder="请输入活动标题" clearable style="width: 240px" @keyup.enter.native="handleQuery">
                         <i slot="prefix" class="el-input__icon el-icon-search"></i>

+ 1 - 1
admin-ui/src/views/activity/groupInfo/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="标题" prop="title">
                 <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/activity/rechargeInfo/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="search-wrapper" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px">
                 <el-form-item label="活动标题" prop="title">
                     <el-input v-model="queryParams.title" placeholder="请输入活动标题" clearable style="width: 240px" @keyup.enter.native="handleQuery">
                         <i slot="prefix" class="el-input__icon el-icon-search"></i>

+ 1 - 1
admin-ui/src/views/activity/rechargeItem/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <!--    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">-->
+        <!--    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">-->
         <!--      <el-form-item label="标题" prop="title">-->
         <!--        <el-input-->
         <!--          v-model="queryParams.title"-->

+ 1 - 1
admin-ui/src/views/app/banner/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <!--      <el-form-item label="轮播图类型" prop="bannerType" label-width="120px">-->
             <!--        <el-select v-model="queryParams.bannerType" placeholder="轮播图类型" clearable>-->
             <!--          <el-option-->

+ 3 - 4
admin-ui/src/views/app/delivery/index.vue

@@ -2,7 +2,7 @@
   <div class="app-container">
     <!-- 搜索区域 -->
     <el-card class="search-card" shadow="never">
-      <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="90px">
+      <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="90px">
         <el-form-item label="派送员" prop="appUserName">
           <el-input
             v-model="queryParams.appUserName"
@@ -249,9 +249,9 @@
       title="接单记录"
       :visible.sync="openDetail"
       width="900px"
-      :before-close="handleDetailClose"
+      :before-close="handleDetailClose" append-to-body
     >
-      <div class="record-list" v-loading="loading">
+      <div class="record-list" >
         <el-table
           :data="recordDetailList"
           border
@@ -673,7 +673,6 @@ export default {
           } else {
               this.queryDetailParams.appUserId = this.appUserId
           }
-          console.log(this.appUserId)
           getDeliveryOrderRecordList(this.queryDetailParams).then((response) => {
               this.recordDetailList = response.rows
               this.recordTotal = response.total

+ 1 - 1
admin-ui/src/views/app/feedback/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="feedbackType">
                 <el-select v-model="queryParams.feedbackType" placeholder="请选择反馈类型" clearable>
                     <el-option v-for="dict in dict.type.feedback_type" :key="dict.value" :label="dict.label" :value="dict.value" />

+ 1 - 1
admin-ui/src/views/app/notify/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="title">
                 <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/app/user/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="search-card" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="80px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="80px">
                 <el-form-item label="手机号" prop="phoneNumber">
                     <el-input v-model="queryParams.phoneNumber" placeholder="请输入手机号" clearable prefix-icon="el-icon-mobile-phone" style="width: 200px" @keyup.enter.native="handleQuery" />
                 </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/adjunct/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="code">
                 <el-input v-model="queryParams.code" placeholder="请输入编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/clothBrand/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入品牌名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/clothItem/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="filter-container" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="68px">
                 <el-form-item prop="name">
                     <el-input v-model="queryParams.name" placeholder="请输入衣服名称" clearable @keyup.enter.native="handleQuery">
                         <i slot="prefix" class="el-input__icon el-icon-search"></i>

+ 1 - 1
admin-ui/src/views/cloth/clothType/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入衣服种类名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/color/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入衣服颜色名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/craft/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="craftName">
                 <el-input v-model="queryParams.craftName" placeholder="请输入工艺名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/customItem/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入衣物名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/flaw/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入衣服瑕疵名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/flawTop/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="flawId">
                 <el-select v-model="queryParams.flawId" placeholder="瑕疵" clearable>
                     <el-option v-for="item in flawList" :label="item.name" :value="item.id" :key="item.name"> </el-option>

+ 1 - 1
admin-ui/src/views/cloth/flawType/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入瑕疵类型名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/hanger/detail.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <!--    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">-->
+        <!--    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">-->
         <!--      <el-form-item>-->
         <!--        <el-button type="primary" icon="el-icon-search"   @click="handleQuery">搜索</el-button>-->
         <!--        <el-button icon="el-icon-refresh"   @click="resetQuery">重置</el-button>-->

+ 1 - 1
admin-ui/src/views/cloth/hanger/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label-width="120px" prop="orgIndex" v-if="userInfoVO.userType == '00'">
                 <el-select v-model="queryParams.orgIndex" placeholder="请选择" clearable>
                     <el-option-group label="工厂">

+ 7 - 4
admin-ui/src/views/cloth/hanger/upHanger.vue

@@ -5,7 +5,7 @@
                 <el-card class="box-card custom-card">
                     <el-row :gutter="10">
                         <el-col :span="24">
-                            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+                            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
                                 <el-form-item prop="washCode">
                                     <el-input v-model="queryParams.washCode" placeholder="请输入衣物条码" clearable @keyup.enter.native="handleQuery" />
                                 </el-form-item>
@@ -158,7 +158,7 @@
         </el-row>
 
         <!-- 选择上挂位置页面 -->
-        <el-dialog :title="title" :visible.sync="open" size="70%">
+        <el-dialog :title="title" :visible.sync="open" size="70%" append-to-body>
             <div style="margin-left: 5%; margin-top: 1%; margin-right: 5%">
                 <el-row :gutter="20">
                     <el-descriptions title="衣物信息" v-if="clothItemInfoWithIn" :column="2">
@@ -218,14 +218,17 @@
                     <el-col :span="19">
                         <div class="head-upHanger-two" :style="{ border: '1px solid #ddd' }">
                             <el-radio-group v-model="detailId" size="medium">
-                                <el-radio-button v-for="detail in detailList" :key="detail.id" :label="detail.id" border style="margin-top: 10px; margin-left: 10px" :style="{ border: '1px solid #ddd' }">{{ detail.code }}# {{ detail.isHangerCount }} 件 </el-radio-button>
+                              <el-radio-button v-for="detail in detailList" :key="detail.id" :label="detail.id" border
+                                               :class="detail.isHangerCount>0 ? 'hasCloth' : 'nocloth'"
+                                               :style="detail.isHangerCount>0 ?  {'background-color': '#00ff00', 'border': '1px solid #ddd', 'margin-top': '10px', 'margin-left': '10px' } :  { border: '1px solid #ddd', 'margin-top': '10px', 'margin-left': '10px'}">
+                                {{ detail.code }}# {{ detail.isHangerCount }} 件 </el-radio-button>
                             </el-radio-group>
                         </div>
                     </el-col>
                 </el-row>
                 <el-row>
                     <el-col :span="3">
-                        <el-button type="primary" style="width: 50%; height: 40px; margin-top: 30px; text-align: center" size="small" @click="submitForm">提交 </el-button>
+                        <el-button type="primary" style="height: 40px; margin-top: 30px; text-align: center" size="small" @click="submitForm">提交 </el-button>
                     </el-col>
                 </el-row>
             </div>

+ 1 - 1
admin-ui/src/views/cloth/inquiry/queryEntryRecord.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="washCode">
                 <el-input v-model="queryParams.washCode" placeholder="请输入衣服条码" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/inquiry/queryFactoryClothing.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="washCode">
                 <el-input v-model="queryParams.washCode" placeholder="请输入衣服条码" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/inquiry/queryFactoryRecords.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="washCode">
                 <el-input v-model="queryParams.washCode" placeholder="请输入衣服条码" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/inquiry/queryInspectRecords.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="washCode">
                 <el-input v-model="queryParams.washCode" placeholder="请输入衣服条码" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 2 - 2
admin-ui/src/views/cloth/laundryPrice/index.vue

@@ -10,7 +10,7 @@
         </div>
       </el-col>
       <el-col :span="22" :xs="24">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="68px">
           <el-form-item prop="checkStoreAreaId">
             <el-tabs v-model="checkStoreAreaId" @tab-click="handleQuery">
               <el-tab-pane v-for="item in areaList" :label="item.name" :name="item.id + ''"></el-tab-pane>
@@ -60,7 +60,7 @@
       </el-col>
     </el-row>
     <!--  设置价格  -->
-    <el-dialog title="设置价格" :visible.sync="unitPriceType" width="30%" :before-close="handleClose">
+    <el-dialog title="设置价格" :visible.sync="unitPriceType" width="30%" :before-close="handleClose" append-to-body>
       <form ref="unitpriceForm">
         <el-input-number v-model="unitpriceForm.price" :min="1" :max="99999" :step="1" style="width: 100%" />
       </form>

+ 1 - 1
admin-ui/src/views/cloth/laundryPrice/index_.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入衣服名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/rewashReason/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入重洗原因名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/rewashType/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入类别名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/speed/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name" label-width="180">
                 <el-input v-model="queryParams.name" placeholder="请输入洗衣快慢名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/texture/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="code">
                 <el-input v-model="queryParams.code" placeholder="请输入编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/unitPrice/index.vue

@@ -10,7 +10,7 @@
                 </div>
             </el-col>
             <el-col :span="22" :xs="24">
-                <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+                <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="68px">
                     <el-form-item prop="checkStoreAreaId">
                         <el-tabs v-model="checkStoreAreaId" @tab-click="handleQuery">
                             <el-tab-pane v-for="item in areaList" :label="item.name" :name="item.id + ''"></el-tab-pane>

+ 1 - 1
admin-ui/src/views/cloth/washMode/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入洗衣方式名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/cloth/washProblem/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="content">
                 <el-input v-model="queryParams.content" placeholder="请输入内容" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 101 - 0
admin-ui/src/views/components/ChargeTrendChart.vue

@@ -0,0 +1,101 @@
+<template>
+  <div ref="chart" style="width: 100%; height: 100%"></div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+
+export default {
+  name: 'ChargeTrendChart',
+  props: {
+    data: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      chart: null
+    }
+  },
+  watch: {
+    data: {
+      handler(val) {
+        this.initChart()
+      },
+      deep: true
+    }
+  },
+  mounted() {
+    this.initChart()
+    window.addEventListener('resize', this.resizeChart)
+  },
+  beforeDestroy() {
+    if (this.chart) {
+      this.chart.dispose()
+    }
+    window.removeEventListener('resize', this.resizeChart)
+  },
+  methods: {
+    initChart() {
+      if (!this.chart) {
+        this.chart = echarts.init(this.$refs.chart)
+      }
+
+      const option = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+            label: {
+              backgroundColor: '#6a7985'
+            }
+          }
+        },
+        legend: {
+          data: ['充值金额']
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: this.data.map(item => item.day)
+        },
+        yAxis: {
+          type: 'value',
+          name: '金额',
+          axisLabel: {
+            formatter: '{value} 元'
+          }
+        },
+        series: [
+          {
+            name: '充值金额',
+            type: 'line',
+            stack: 'Total',
+            areaStyle: {
+              opacity: 0.3
+            },
+            emphasis: {
+              focus: 'series'
+            },
+            data: this.data.map(item => item.rechargePayAmount || 0)
+          }
+        ]
+      }
+
+      this.chart.setOption(option)
+    },
+    resizeChart() {
+      if (this.chart) {
+        this.chart.resize()
+      }
+    }
+  }
+}
+</script>

+ 113 - 0
admin-ui/src/views/components/OrderTrendChart.vue

@@ -0,0 +1,113 @@
+<template>
+  <div ref="chart" style="width: 100%; height: 100%"></div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+
+export default {
+  name: 'OrderTrendChart',
+  props: {
+    data: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      chart: null
+    }
+  },
+  watch: {
+    data: {
+      handler(val) {
+        this.initChart()
+      },
+      deep: true
+    }
+  },
+  mounted() {
+    this.initChart()
+    window.addEventListener('resize', this.resizeChart)
+  },
+  beforeDestroy() {
+    if (this.chart) {
+      this.chart.dispose()
+    }
+    window.removeEventListener('resize', this.resizeChart)
+  },
+  methods: {
+    initChart() {
+      if (!this.chart) {
+        this.chart = echarts.init(this.$refs.chart)
+      }
+      
+      const option = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+            label: {
+              backgroundColor: '#6a7985'
+            }
+          }
+        },
+        legend: {
+          data: ['洗衣金额', '撤单金额']
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: this.data.map(item => item.statisticsDate)
+        },
+        yAxis: {
+          type: 'value',
+          name: '金额',
+          axisLabel: {
+            formatter: '{value} 元'
+          }
+        },
+        series: [
+          {
+            name: '洗衣金额',
+            type: 'line',
+            stack: 'Total',
+            areaStyle: {
+              opacity: 0.3
+            },
+            emphasis: {
+              focus: 'series'
+            },
+            data: this.data.map(item => item.dailyInFactoryAmount || 0)
+          },
+          {
+            name: '撤单金额',
+            type: 'line',
+            stack: 'Total',
+            areaStyle: {
+              opacity: 0.3
+            },
+            emphasis: {
+              focus: 'series'
+            },
+            data: this.data.map(item => item.dailyRefundAmount || 0)
+          }
+        ]
+      }
+      
+      this.chart.setOption(option)
+    },
+    resizeChart() {
+      if (this.chart) {
+        this.chart.resize()
+      }
+    }
+  }
+}
+</script> 

+ 1 - 1
admin-ui/src/views/coupon/item/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域卡片 -->
         <el-card class="box-card" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
                 <el-form-item label-width="120px" prop="orgIndex" v-if="userInfoVO.userType == '00'">
                     <el-select v-model="queryParams.orgIndex" placeholder="请选择门店" clearable filterable prefix-icon="el-icon-office-building" style="width: 240px">
                         <el-option v-for="store in storeList" :key="store.id + store.sourceType" :label="store.name" :value="store.id + ',' + store.sourceType"> </el-option>

+ 4 - 4
admin-ui/src/views/coupon/item/storeSendCoupon.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域卡片 -->
         <el-card class="box-card" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
                 <el-form-item label="优惠券类型" prop="discountWay">
                     <el-select v-model="queryParams.discountWay" placeholder="请选择优惠券类型" clearable style="width: 240px">
                         <el-option v-for="dict in dict.type.coupon_type" :key="dict.value" :label="dict.label" :value="dict.value">
@@ -98,7 +98,7 @@
 
         <!-- 发送优惠券对话框 -->
         <el-dialog :title="sendCouponTitle" :visible.sync="sendCouponOpen" width="500px" 
-            :close-on-click-modal="false" :before-close="handleDialogClose">
+            :close-on-click-modal="false" :before-close="handleDialogClose" append-to-body>
             <el-form ref="form" :model="sendCouponForm" :rules="rules" label-width="120px">
                 <el-card class="box-card" shadow="never">
                     <div slot="header">
@@ -109,14 +109,14 @@
                             <el-form-item label="客户手机号" prop="appUserPhoneNumber">
                                 <el-input v-model="sendCouponForm.appUserPhoneNumber" 
                                     placeholder="请输入手机号" clearable maxlength="11"
-                                    prefix-icon="el-icon-mobile-phone" style="width: 100%" />
+                                    prefix-icon="el-icon-mobile-phone" style="width: 300px" />
                             </el-form-item>
                         </el-col>
                         <el-col :span="12">
                             <el-form-item label="发送数量" prop="sendNum">
                                 <el-input-number v-model="sendCouponForm.sendNum" 
                                     placeholder="请输入发送数量" :min="1" :max="100"
-                                    style="width: 100%" />
+                                    style="width: 300px" />
                             </el-form-item>
                         </el-col>
                     </el-row>

+ 1 - 1
admin-ui/src/views/coupon/sendCouponCount/index.vue

@@ -6,7 +6,7 @@
                 <el-descriptions-item label="今日核销券数量(张)">{{ hxCount }}</el-descriptions-item>
             </el-descriptions>
         </el-card>
-        <!--    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">-->
+        <!--    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">-->
 
         <!--      <el-form-item>-->
         <!--        <el-button type="primary" icon="el-icon-search"   @click="handleQuery">搜索</el-button>-->

+ 1 - 1
admin-ui/src/views/coupon/thirdParty/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name" label-width="90px">
                 <el-input v-model="queryParams.name" placeholder="请输入三方品牌名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/coupon/type/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域卡片 -->
         <el-card class="box-card" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
                 <el-form-item label="优惠券名称" prop="title">
                     <el-input v-model="queryParams.title" placeholder="请输入优惠券类型名称" clearable prefix-icon="el-icon-ticket" style="width: 240px" @keyup.enter.native="handleQuery" />
                 </el-form-item>

+ 1 - 1
admin-ui/src/views/coupon/typeApplyCloth/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="name">
                 <el-input v-model="queryParams.name" placeholder="请输入衣服名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/express/index.vue

@@ -10,7 +10,7 @@
                 >
             </el-descriptions>
         </el-card>
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px" style="margin-top: 10px">
             <el-form-item label="查询日期">
                 <el-date-picker v-model="queryParams.searchDate" style="width: 240px" value-format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
             </el-form-item>

+ 1 - 1
admin-ui/src/views/generator/form/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="表单名称" prop="title">
                 <el-input v-model="queryParams.title" placeholder="请输入表单名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/goods/brand/index.vue

@@ -4,7 +4,7 @@
             <el-tab-pane v-for="dict in dict.type.goods_type" :key="dict.value" :label="dict.label" :name="dict.value"></el-tab-pane>
         </el-tabs>
 
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="brandName">
                 <el-input v-model="queryParams.brandName" placeholder="请输入品牌名称" clearable maxlenth="20" @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/goods/carBeaut/index.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="app-container">
         <!-- 查询 -->
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="goodsName">
                 <el-input v-model="queryParams.goodsName" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 2 - 2
admin-ui/src/views/goods/category/index.vue

@@ -3,9 +3,9 @@
         <el-tabs v-model="goodsType" @tab-click="onChangeGoodsType">
             <el-tab-pane v-for="dict in dict.type.goods_type" :label="dict.label" :name="dict.value"></el-tab-pane>
         </el-tabs>
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="categoryName">
-                <el-input v-model="queryParams.categoryName" placeholder="请输入分类名称" clearable maxlenth="20" @keyup.enter.native="handleQuery" />
+                <el-input v-model="queryParams.categoryName" placeholder="请输入分类名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
             <el-form-item>
                 <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>

+ 20 - 7
admin-ui/src/views/goods/commonGoods/index.vue

@@ -1,8 +1,11 @@
 <template>
   <div class="app-container">
+    <el-tabs v-model="goodsType" @tab-click="onChangeGoodsType">
+      <el-tab-pane v-for="dict in dict.type.goods_type" :label="dict.label" :name="dict.value"></el-tab-pane>
+    </el-tabs>
     <!-- 查询 -->
     <el-card class="search-card" shadow="never">
-      <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
         <el-form-item prop="goodsName">
           <el-input v-model="queryParams.goodsName" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
         </el-form-item>
@@ -193,7 +196,7 @@
             <!-- 多规格设置 -->
             <template v-if="form.skuType === 1">
               <!-- 规格项设置 -->
-              <div class="spec-group" v-for="(spec, index) in form.specList" :key="index">
+              <div class="spec-group" v-for="(spec, index) in form.specList" :key="index" v-if="form.id==null">
                 <el-row :gutter="10">
                   <el-col :span="8">
                     <el-form-item :label="'规格项' + (index + 1)">
@@ -220,7 +223,7 @@
                 </el-row>
               </div>
 
-              <el-button type="primary" plain @click="addSpec">添加规格项</el-button>
+              <el-button type="primary" plain @click="addSpec" v-if="form.id==null">添加规格项</el-button>
 
               <!-- 规格组合列表 -->
               <el-table :data="form.skuList" border style="margin-top: 20px">
@@ -229,6 +232,11 @@
                     {{scope.row.specValLists[index]}}
                   </template>
                 </el-table-column>
+                <el-table-column label="规格编码" align="center" width="150">
+                  <template slot-scope="scope">
+                    <el-input v-model="scope.row.skuCode" placeholder="请输入规格编码" size="mini" />
+                  </template>
+                </el-table-column>
                 <el-table-column label="销售价格" align="center" width="150">
                   <template slot-scope="scope">
                     <el-input-number v-model="scope.row.salePrice" :precision="2" :step="0.1" :min="0" controls-position="right" size="mini" />
@@ -457,6 +465,13 @@ export default {
     handleUser() {
       this.userInfoVO = this.getUserInfo()
     },
+    onChangeGoodsType() {
+      this.queryParams.goodsType = this.goodsType
+      this.handleQuery()
+      // 重新获取品牌和分类列表
+      this.getBrandList()
+      this.getCategoryList()
+    },
     getBrandList() {
       listBrand({ ...this.queryParams2, goodsType: this.goodsType }).then(response => {
         this.brandList = response.rows || []
@@ -534,9 +549,6 @@ export default {
       this.reset()
       this.open = true
       this.title = '添加商品管理'
-      // 重新获取品牌和分类列表
-      this.getBrandList()
-      this.getCategoryList()
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -707,7 +719,7 @@ export default {
       this.$message.error('最多上传9个图片!')
     },
     gotoComment(row) {
-      this.$router.push({ path: `/platform/goodsComment/appGoodsComment?goodsType=${this.goodsType}&goodsId=${row.id}` })
+      this.$router.push({ path: `/system/goodsComment/appGoodsComment?goodsType=${this.goodsType}&goodsId=${row.id}` })
     },
     handleSkuTypeChange(val) {
       if (val === 0) {
@@ -804,6 +816,7 @@ export default {
 
         return {
           specValLists: specs,
+          skuCode: existingSku ? existingSku.skuCode : '',
           salePrice: existingSku ? existingSku.salePrice : 0,
           costPrice: existingSku ? existingSku.costPrice : 0,
           purchasePrice: existingSku ? existingSku.purchasePrice : 0,

+ 1 - 1
admin-ui/src/views/goods/commonGoods/stockRecord.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="订单编号" prop="orderNo">
                 <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 9 - 2
admin-ui/src/views/goods/goodsComment/index.vue

@@ -1,8 +1,11 @@
 <template>
     <div class="app-container">
+      <el-tabs v-model="goodsType" @tab-click="onChangeGoodsType">
+        <el-tab-pane v-for="dict in dict.type.goods_type" :label="dict.label" :name="dict.value"></el-tab-pane>
+      </el-tabs>
         <!-- 搜索区域卡片 -->
         <el-card class="search-card" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="100px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="100px">
                 <el-form-item prop="goodsId">
                     <el-select v-model="queryParams.goodsId" placeholder="选择商品" clearable filterable style="width: 220px" @change="handleQuery">
                         <el-option v-for="item in goodsList" :key="item.id" :label="item.goodsName" :value="item.id" />
@@ -288,7 +291,7 @@ import { listGoodsComment, getGoodsComment, delGoodsComment, addGoodsComment, up
 
 export default {
     name: 'GoodsComment',
-    dicts: ['sys_normal_disable', 'sys_yes_no', 'sys_job_status'],
+    dicts: ['sys_normal_disable','goods_type', 'sys_yes_no', 'sys_job_status'],
     data() {
         return {
             // 遮罩层
@@ -379,6 +382,10 @@ export default {
                 this.queryParams.createTimeTo = this.queryCreateTime[1]
             }
         },
+      onChangeGoodsType() {
+        this.queryParams.goodsType = this.goodsType
+        this.handleQuery()
+      },
         /** 查询商品评论列表 */
         getList() {
             this.$nextTick(() => {

+ 1 - 1
admin-ui/src/views/goods/lifeService/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 查询 -->
         <el-card class="search-card" shadow="never">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="goodsName">
                 <el-input v-model="queryParams.goodsName" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 232 - 73
admin-ui/src/views/index.vue

@@ -3,52 +3,40 @@
     <!-- 累积统计卡片行 -->
     <el-row :gutter="20" class="panel-group">
       <el-col :xs="12" :sm="12" :lg="6">
-        <div class="card-panel">
-          <div class="card-panel-icon-wrapper icon-orders">
-            <svg-icon icon-class="form" class-name="card-panel-icon" />
-          </div>
-          <div class="card-panel-description">
-            <div class="card-panel-text">累积洗衣件数</div>
-            <count-to :start-val="0" :end-val="statistics.totalClothCount" :duration="2600" class="card-panel-num"/>
+        <div class="stat-card stat-card-blue">
+          <div class="stat-card-title">累积洗衣件数</div>
+          <div class="stat-card-value">
+            <count-to :start-val="0" :end-val="statistics.dailyInFactoryCount" :duration="2600" />
           </div>
         </div>
       </el-col>
       <el-col :xs="12" :sm="12" :lg="6">
-        <div class="card-panel">
-          <div class="card-panel-icon-wrapper icon-revenue">
-            <svg-icon icon-class="money" class-name="card-panel-icon" />
-          </div>
-          <div class="card-panel-description">
-            <div class="card-panel-text">累积洗衣金额</div>
-            <count-to :start-val="0" :end-val="statistics.totalClothAmount" :duration="2600" class="card-panel-num" prefix="¥"/>
+        <div class="stat-card stat-card-green">
+          <div class="stat-card-title">累积洗衣金额</div>
+          <div class="stat-card-value">
+            <count-to :start-val="0" :end-val="statistics.dailyInFactoryAmount" :duration="2600" prefix="¥" />
           </div>
         </div>
       </el-col>
       <el-col :xs="12" :sm="12" :lg="6">
-        <div class="card-panel">
-          <div class="card-panel-icon-wrapper icon-cancel">
-            <svg-icon icon-class="close" class-name="card-panel-icon" />
-          </div>
-          <div class="card-panel-description">
-            <div class="card-panel-text">累积撤单件数</div>
-            <count-to :start-val="0" :end-val="statistics.totalCancelCount" :duration="2600" class="card-panel-num"/>
+        <div class="stat-card stat-card-red">
+          <div class="stat-card-title">累积撤衣件数</div>
+          <div class="stat-card-value">
+            <count-to :start-val="0" :end-val="statistics.dailyRefundCount" :duration="2600" />
           </div>
         </div>
       </el-col>
       <el-col :xs="12" :sm="12" :lg="6">
-        <div class="card-panel">
-          <div class="card-panel-icon-wrapper icon-cancel-amount">
-            <svg-icon icon-class="money" class-name="card-panel-icon" />
-          </div>
-          <div class="card-panel-description">
-            <div class="card-panel-text">累积撤单金额</div>
-            <count-to :start-val="0" :end-val="statistics.totalCancelAmount" :duration="2600" class="card-panel-num" prefix="¥"/>
+        <div class="stat-card stat-card-orange">
+          <div class="stat-card-title">累积撤衣金额</div>
+          <div class="stat-card-value">
+            <count-to :start-val="0" :end-val="statistics.dailyRefundAmount" :duration="2600" prefix="¥" />
           </div>
         </div>
       </el-col>
     </el-row>
 
-    <!-- 今日营收概览 -->
+    <!-- 营收概览 -->
     <el-row :gutter="20" class="panel-group" style="margin-top: 20px">
       <el-col :span="24">
         <div class="chart-wrapper">
@@ -56,14 +44,60 @@
             <div class="chart-title">营收概览</div>
             <div class="chart-actions">
               <el-radio-group v-model="revenueTimeRange" size="small" @change="handleRevenueTimeRangeChange">
+                <el-radio-button label="today">今日</el-radio-button>
                 <el-radio-button label="week">近一周</el-radio-button>
                 <el-radio-button label="halfMonth">近半个月</el-radio-button>
                 <el-radio-button label="month">近一个月</el-radio-button>
               </el-radio-group>
             </div>
           </div>
-          <div class="chart-content">
-            <revenue-chart :data="revenueData" />
+          <div class="chart-content-1">
+            <el-row :gutter="20" class="panel-group">
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-orders">
+                    <svg-icon icon-class="form" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">洗衣件数</div>
+                    <count-to :start-val="0" :end-val="factoryStatistics.dailyInFactoryCount" :duration="2600" class="card-panel-num" />
+                  </div>
+                </div>
+              </el-col>
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-revenue">
+                    <svg-icon icon-class="money" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">洗衣金额</div>
+                    <count-to :start-val="0" :end-val="factoryStatistics.dailyInFactoryAmount" :duration="2600" class="card-panel-num" prefix="¥" />
+                  </div>
+                </div>
+              </el-col>
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-cancel">
+                    <svg-icon icon-class="form" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">撤单件数</div>
+                    <count-to :start-val="0" :end-val="factoryStatistics.dailyRefundCount" :duration="2600" class="card-panel-num" />
+                  </div>
+                </div>
+              </el-col>
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-cancel-amount">
+                    <svg-icon icon-class="money" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">撤单金额</div>
+                    <count-to :start-val="0" :end-val="factoryStatistics.dailyRefundAmount" :duration="2600" class="card-panel-num" prefix="¥" />
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
           </div>
         </div>
       </el-col>
@@ -94,7 +128,7 @@
       <el-col :xs="24" :sm="24" :lg="24">
         <div class="chart-wrapper">
           <div class="chart-header">
-            <div class="chart-title">门店业绩排行</div>
+            <div class="chart-title">门店洗衣排行</div>
             <div class="chart-actions">
               <el-radio-group v-model="rankingTimeRange" size="small" @change="handleRankingTimeRangeChange">
                 <el-radio-button label="week">近一周</el-radio-button>
@@ -105,12 +139,21 @@
           </div>
           <div class="chart-content">
             <el-table :data="storeRankings" style="width: 100%" :show-header="true">
-              <el-table-column prop="rank" label="排名" width="80"/>
-              <el-table-column prop="storeName" label="门店名称"/>
-              <el-table-column prop="orderCount" label="订单数" width="120"/>
-              <el-table-column prop="clothCount" label="洗衣件数" width="120"/>
-              <el-table-column prop="revenue" label="营收额" width="150"/>
-              <el-table-column prop="completionRate" label="完成率" width="120"/>
+              <el-table-column prop="index" type="index" label="排名" width="80" />
+              <el-table-column label="门店名称" align="center" prop="storeName" />
+              <el-table-column label="入厂金额" align="center" prop="dailyInFactoryAmount">
+                <template slot-scope="scope">
+                  ¥{{ scope.row.dailyInFactoryAmount }}
+                </template>
+              </el-table-column>
+              <el-table-column label="退单金额" align="center" prop="dailyRefundAmount">
+                <template slot-scope="scope">
+                  ¥{{ scope.row.dailyRefundAmount }}
+                </template>
+              </el-table-column>
+              <el-table-column label="入厂衣服数" align="center" prop="dailyInFactoryCount" />
+              <el-table-column label="检查衣服数" align="center" prop="dailyCheckedCount" />
+              <el-table-column label="出厂衣服数" align="center" prop="dailyOutFactoryCount" />
             </el-table>
           </div>
         </div>
@@ -121,19 +164,16 @@
 
 <script>
 import CountTo from 'vue-count-to'
-import { getTimeoutClothing } from "@/api/statistics/reception"
-import { listFinancialStatisticsByClothOrderDay, listFinancialStatisticsByClothOrderMonth } from "@/api/order/cloth"
-import { listStatistics } from "@/api/settlement/statistics"
-import RevenueChart from './components/RevenueChart'
+import { getTotalStatistics, listStatisticsByDate, listFactoryStatisticsByStore, factoryDashborad } from '@/api/settlement/statistics'
+import { getTimeoutClothing } from '@/api/statistics/reception'
 import AmountTrendChart from './components/AmountTrendChart'
 import CountTrendChart from './components/CountTrendChart'
 
 export default {
-  name: "Index",
+  name: 'Index',
   dicts: ['sys_source_type'],
   components: {
     CountTo,
-    RevenueChart,
     AmountTrendChart,
     CountTrendChart
   },
@@ -148,71 +188,142 @@ export default {
         totalCancelCount: 0,
         totalCancelAmount: 0
       },
-      revenueTimeRange: 'week',
+      factoryStatistics: {
+        dailyInFactoryCount: 0,
+        dailyInFactoryAmount: 0,
+        dailyRefundCount: 0,
+        dailyRefundAmount: 0,
+        dailyActualSettlementAmount: 0
+      },
+      revenueTimeRange: 'today',
       rankingTimeRange: 'week',
-      revenueData: [],
       amountTrendData: [],
       countTrendData: [],
       storeRankings: []
     }
   },
-  mounted() {
-    this.getroletype()
-    this.getTimeout()
+  created() {
+    // this.getroletype()
+    // this.getTimeout()
     this.getStatistics()
-    this.getRevenueData()
+    this.getFactoryStatisticsData()
     this.getStoreRankings()
+    this.getTrendData()
   },
   methods: {
-    getroletype(){
+    getroletype() {
       let name = ''
-      this.dict.type.sys_source_type.map(item=>{
-        if( item.value === this.$store.getters.user.userType ){
+      this.dict.type.sys_source_type.map(item => {
+        if (item.value === this.$store.getters.user.userType) {
           name = item.label
         }
       })
-      
-      if( name === '工厂' || name === '门店' ){
-        this.roleType = true;
-      }
     },
     goTarget(href) {
       window.open(href, "_blank");
     },
-    getTimeout(){
+    getTimeout() {
       getTimeoutClothing(this.queryParams).then(response => {
         this.timeoutClothing = response.data;
       });
     },
-    btn_goto(type){
+    btn_goto(type) {
       this.$router.push({ path: '/query/overtimeOrders' })
     },
     getStatistics() {
       // 获取累积统计数据
-      listFinancialStatisticsByClothOrderMonth({}).then(response => {
+      factoryDashborad({}).then(response => {
         this.statistics = response.data
       })
     },
     handleRevenueTimeRangeChange() {
-      this.getRevenueData()
+      this.getFactoryStatisticsData()
     },
     handleRankingTimeRangeChange() {
       this.getStoreRankings()
     },
-    getRevenueData() {
+    getFactoryStatisticsData() {
+      // 根据选择的时间范围获取工厂统计数据
       const params = {
-        timeRange: this.revenueTimeRange
+        startDate: this.getStartDateByTimeRange(),
+        endDate: this.formatDate(new Date())
       }
-      listFinancialStatisticsByClothOrderDay(params).then(response => {
-        this.revenueData = response.data
+      getTotalStatistics(params).then(response => {
+        this.factoryStatistics = response.data
       })
     },
+    getStartDateByTimeRange() {
+      const today = new Date()
+      let startDate = new Date()
+
+      switch (this.revenueTimeRange) {
+        case 'today':
+          startDate = today
+          break
+        case 'week':
+          startDate.setDate(today.getDate() - 7)
+          break
+        case 'halfMonth':
+          startDate.setDate(today.getDate() - 15)
+          break
+        case 'month':
+          startDate.setDate(today.getDate() - 30)
+          break
+      }
+
+      return this.formatDate(startDate)
+    },
+    formatDate(date) {
+      const year = date.getFullYear()
+      const month = String(date.getMonth() + 1).padStart(2, '0')
+      const day = String(date.getDate()).padStart(2, '0')
+      return `${year}-${month}-${day}`
+    },
     getStoreRankings() {
+      // 获取最近一周的日期范围
+      const endDate = new Date()
+      const startDate = new Date()
+      startDate.setDate(endDate.getDate() - 7)
+
       const params = {
-        timeRange: this.rankingTimeRange
+        startDate: this.formatDate(startDate),
+        endDate: this.formatDate(endDate),
+        pageSize: 10
       }
-      listStatistics(params).then(response => {
-        this.storeRankings = response.data
+
+      // 使用 listFactoryStatisticsByStore 方法获取门店排行数据
+      listFactoryStatisticsByStore(params).then(response => {
+        this.storeRankings = response.rows || []
+      })
+    },
+    getTrendData() {
+      // 获取最近一周的日期范围
+      const endDate = new Date()
+      const startDate = new Date()
+      startDate.setDate(endDate.getDate() - 7)
+
+      const params = {
+        startDate: this.formatDate(startDate),
+        endDate: this.formatDate(endDate)
+      }
+
+      // 获取趋势数据
+      listStatisticsByDate(params).then(response => {
+        const data = response.rows || []
+
+        // 处理金额趋势数据
+        this.amountTrendData = data.map(item => ({
+          date: item.statisticsDate,
+          value: item.dailyInFactoryAmount || 0
+        }))
+
+        // 处理件数趋势数据 - 确保格式正确
+        this.countTrendData = {
+          dates: data.map(item => item.statisticsDate || ''),
+          inFactory: data.map(item => item.dailyInFactoryCount || 0),
+          checked: data.map(item => item.dailyCheckedCount || 0),
+          outFactory: data.map(item => item.dailyOutFactoryCount || 0)
+        }
       })
     }
   }
@@ -223,6 +334,51 @@ export default {
 .home {
   .panel-group {
     margin-top: 18px;
+
+    .stat-card {
+      height: 120px;
+      border-radius: 8px;
+      padding: 20px;
+      color: #fff;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+      transition: all 0.3s;
+
+      &:hover {
+        transform: translateY(-5px);
+        box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
+      }
+
+      .stat-card-title {
+        font-size: 16px;
+        margin-bottom: 10px;
+        opacity: 0.9;
+      }
+
+      .stat-card-value {
+        font-size: 28px;
+        font-weight: bold;
+      }
+    }
+
+    .stat-card-blue {
+      background: linear-gradient(135deg, #1890ff, #36cfc9);
+    }
+
+    .stat-card-green {
+      background: linear-gradient(135deg, #52c41a, #73d13d);
+    }
+
+    .stat-card-red {
+      background: linear-gradient(135deg, #f5222d, #ff4d4f);
+    }
+
+    .stat-card-orange {
+      background: linear-gradient(135deg, #fa8c16, #ffa940);
+    }
+
     .card-panel {
       height: 108px;
       cursor: pointer;
@@ -278,31 +434,34 @@ export default {
       }
     }
   }
-  
+
   .chart-wrapper {
     background: #fff;
     padding: 20px;
     border-radius: 4px;
     box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
-    
+
     .chart-header {
       display: flex;
       justify-content: space-between;
       align-items: center;
       margin-bottom: 20px;
-      
+
       .chart-title {
         font-size: 16px;
         font-weight: bold;
         color: #303133;
       }
     }
-    
+
     .chart-content {
       height: 300px;
     }
+
+    .chart-content-1 {
+      height: 130px;
+    }
   }
 }
 </style>
 
-

+ 7 - 8
admin-ui/src/views/index_factory.vue

@@ -6,7 +6,7 @@
         <div class="stat-card stat-card-blue">
           <div class="stat-card-title">累积洗衣件数</div>
           <div class="stat-card-value">
-            <count-to :start-val="0" :end-val="statistics.totalClothCount" :duration="2600" />
+            <count-to :start-val="0" :end-val="statistics.dailyInFactoryCount" :duration="2600" />
           </div>
         </div>
       </el-col>
@@ -14,7 +14,7 @@
         <div class="stat-card stat-card-green">
           <div class="stat-card-title">累积洗衣金额</div>
           <div class="stat-card-value">
-            <count-to :start-val="0" :end-val="statistics.totalClothAmount" :duration="2600" prefix="¥" />
+            <count-to :start-val="0" :end-val="statistics.dailyInFactoryAmount" :duration="2600" prefix="¥" />
           </div>
         </div>
       </el-col>
@@ -22,7 +22,7 @@
         <div class="stat-card stat-card-red">
           <div class="stat-card-title">累积撤衣件数</div>
           <div class="stat-card-value">
-            <count-to :start-val="0" :end-val="statistics.totalCancelCount" :duration="2600" />
+            <count-to :start-val="0" :end-val="statistics.dailyRefundCount" :duration="2600" />
           </div>
         </div>
       </el-col>
@@ -30,7 +30,7 @@
         <div class="stat-card stat-card-orange">
           <div class="stat-card-title">累积撤衣金额</div>
           <div class="stat-card-value">
-            <count-to :start-val="0" :end-val="statistics.totalCancelAmount" :duration="2600" prefix="¥" />
+            <count-to :start-val="0" :end-val="statistics.dailyRefundAmount" :duration="2600" prefix="¥" />
           </div>
         </div>
       </el-col>
@@ -164,9 +164,8 @@
 
 <script>
 import CountTo from 'vue-count-to'
-import { getTotalStatistics, listStatisticsByDate, listFactoryStatisticsByStore } from '@/api/settlement/statistics'
+import { getTotalStatistics, listStatisticsByDate, listFactoryStatisticsByStore, factoryDashborad } from '@/api/settlement/statistics'
 import { getTimeoutClothing } from '@/api/statistics/reception'
-import { listFinancialStatisticsByClothOrderMonth } from '@/api/order/cloth'
 import AmountTrendChart from './components/AmountTrendChart'
 import CountTrendChart from './components/CountTrendChart'
 
@@ -206,7 +205,7 @@ export default {
   created() {
     // this.getroletype()
     // this.getTimeout()
-    // this.getStatistics()
+    this.getStatistics()
     this.getFactoryStatisticsData()
     this.getStoreRankings()
     this.getTrendData()
@@ -233,7 +232,7 @@ export default {
     },
     getStatistics() {
       // 获取累积统计数据
-      listFinancialStatisticsByClothOrderMonth({}).then(response => {
+      factoryDashborad({}).then(response => {
         this.statistics = response.data
       })
     },

+ 475 - 0
admin-ui/src/views/index_store.vue

@@ -0,0 +1,475 @@
+<template>
+  <div class="app-container home">
+    <!-- 统计卡片行 -->
+    <el-row :gutter="20" class="panel-group">
+      <!-- 订单统计卡片 -->
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="stat-section">
+          <div class="section-title">订单统计</div>
+          <el-row :gutter="20">
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-blue">
+                <div class="stat-card-title">洗衣件数</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="orderStats.clothCount || 0" :duration="2600" />
+                </div>
+              </div>
+            </el-col>
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-green">
+                <div class="stat-card-title">洗衣金额</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="orderStats.clothCashAmount || 0" :duration="2600" prefix="¥" />
+                </div>
+              </div>
+            </el-col>
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-red">
+                <div class="stat-card-title">商品笔数</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="orderStats.goodsOrderCount || 0" :duration="2600" />
+                </div>
+              </div>
+            </el-col>
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-orange">
+                <div class="stat-card-title">商品金额</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="orderStats.goodsOrderAmount || 0" :duration="2600" prefix="¥" />
+                </div>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+      </el-col>
+
+      <!-- 充值统计卡片 -->
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="stat-section">
+          <div class="section-title">充值统计</div>
+          <el-row :gutter="20">
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-purple">
+                <div class="stat-card-title">付款金额</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="chargeStats.rechargePayAmount || 0" :duration="2600" prefix="¥" />
+                </div>
+              </div>
+            </el-col>
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-cyan">
+                <div class="stat-card-title">充值笔数</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="chargeStats.rechargeCount || 0" :duration="2600" />
+                </div>
+              </div>
+            </el-col>
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-teal">
+                <div class="stat-card-title">退款金额</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="chargeStats.chargeRefundAmount || 0" :duration="2600" prefix="¥" />
+                </div>
+              </div>
+            </el-col>
+            <el-col :xs="12" :sm="12" :lg="6">
+              <div class="stat-card stat-card-indigo">
+                <div class="stat-card-title">退款笔数</div>
+                <div class="stat-card-value">
+                  <count-to :start-val="0" :end-val="chargeStats.refundCount || 0" :duration="2600" prefix="¥" />
+                </div>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+      </el-col>
+    </el-row>
+
+    <!-- 今日概览 -->
+    <el-row :gutter="20" class="panel-group" style="margin-top: 20px">
+      <el-col :span="24">
+        <div class="chart-wrapper">
+          <div class="chart-header">
+            <div class="chart-title">今日概览</div>
+            <div class="chart-actions">
+              <el-radio-group v-model="dailyTimeRange" size="small" @change="handleDailyTimeRangeChange">
+                <el-radio-button label="today">今日</el-radio-button>
+                <el-radio-button label="yesterday">昨日</el-radio-button>
+              </el-radio-group>
+            </div>
+          </div>
+          <div class="chart-content-1">
+            <el-row :gutter="20" class="panel-group">
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-orders">
+                    <svg-icon icon-class="form" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">洗衣件数</div>
+                    <count-to :start-val="0" :end-val="dailyOrderStats.clothOrderCount || 0" :duration="2600" class="card-panel-num" />
+                  </div>
+                </div>
+              </el-col>
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-revenue">
+                    <svg-icon icon-class="money" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">洗衣金额</div>
+                    <count-to :start-val="0" :end-val="dailyOrderStats.clothOrderAmount || 0" :duration="2600" class="card-panel-num" prefix="¥" />
+                  </div>
+                </div>
+              </el-col>
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-charge">
+                    <svg-icon icon-class="money" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">充值金额</div>
+                    <count-to :start-val="0" :end-val="dailyChargeStats.rechargePayAmount || 0" :duration="2600" class="card-panel-num" prefix="¥" />
+                  </div>
+                </div>
+              </el-col>
+              <el-col :xs="12" :sm="12" :lg="6">
+                <div class="card-panel">
+                  <div class="card-panel-icon-wrapper icon-charge-count">
+                    <svg-icon icon-class="form" class-name="card-panel-icon" />
+                  </div>
+                  <div class="card-panel-description">
+                    <div class="card-panel-text">充值笔数</div>
+                    <count-to :start-val="0" :end-val="dailyChargeStats.rechargeCount || 0" :duration="2600" class="card-panel-num" />
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+      </el-col>
+    </el-row>
+
+    <!-- 经营趋势图表 -->
+    <el-row :gutter="32" style="margin-top: 32px">
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="chart-wrapper">
+          <div class="chart-title">订单趋势</div>
+          <div class="chart-content">
+            <order-trend-chart :data="orderTrendData" />
+          </div>
+        </div>
+      </el-col>
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="chart-wrapper">
+          <div class="chart-title">充值趋势</div>
+          <div class="chart-content">
+            <charge-trend-chart :data="chargeTrendData" />
+          </div>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import CountTo from 'vue-count-to'
+import { getStoreDashboard, getStoreDailyStatistics, getStoreDailyTrend, listStoreStatistics, listStoreChargeStatistics } from '@/api/settlement/storeStatistics'
+import OrderTrendChart from './components/OrderTrendChart'
+import ChargeTrendChart from './components/ChargeTrendChart'
+
+export default {
+  name: 'Index',
+  components: {
+    CountTo,
+    OrderTrendChart,
+    ChargeTrendChart
+  },
+  data() {
+    return {
+      // 订单统计数据
+      orderStats: {
+        dailyInFactoryCount: 0,
+        dailyInFactoryAmount: 0,
+        dailyRefundCount: 0,
+        dailyRefundAmount: 0
+      },
+      // 充值统计数据
+      chargeStats: {
+        dailyChargeAmount: 0,
+        dailyChargeCount: 0,
+        dailyMemberChargeAmount: 0
+      },
+      // 今日概览数据
+      dailyOrderStats: {
+        dailyInFactoryCount: 0,
+        dailyInFactoryAmount: 0
+      },
+      dailyChargeStats: {
+        dailyChargeAmount: 0,
+        dailyChargeCount: 0
+      },
+      // 时间范围选择
+      dailyTimeRange: 'today',
+      // 趋势数据
+      orderTrendData: [],
+      chargeTrendData: []
+    }
+  },
+  created() {
+    this.getDashboardData()
+    this.getDailyStatistics()
+    this.getTrendData()
+  },
+  methods: {
+    /**
+     * 获取仪表盘数据
+     */
+    getDashboardData() {
+      getStoreDashboard().then(response => {
+        if (response.code === 200) {
+          this.orderStats = response.data.orderStats || {}
+          this.chargeStats = response.data.chargeStats || {}
+        }
+      })
+    },
+
+    /**
+     * 处理今日概览时间范围变化
+     */
+    handleDailyTimeRangeChange() {
+      this.getDailyStatistics()
+    },
+
+    /**
+     * 获取今日概览数据
+     */
+    getDailyStatistics() {
+      const date = this.dailyTimeRange === 'today'
+        ? this.formatDate(new Date())
+        : this.formatDate(this.getYesterday())
+
+      getStoreDailyStatistics(date).then(response => {
+        if (response.code === 200) {
+          this.dailyOrderStats = response.data.orderStats || {}
+          this.dailyChargeStats = response.data.chargeStats || {}
+        }
+      })
+    },
+
+    /**
+     * 获取趋势数据
+     */
+    getTrendData() {
+      // 获取最近15天的日期范围
+      const endDate = new Date()
+      const startDate = new Date()
+      startDate.setDate(endDate.getDate() - 14)
+
+      const params = {
+        startDate: this.formatDate(startDate),
+        endDate: this.formatDate(endDate)
+      }
+
+      // 获取订单趋势数据
+      listStoreStatistics(params).then(response => {
+        if (response.code === 200) {
+          this.orderTrendData = response.rows || []
+        }
+      })
+
+      // 获取充值趋势数据
+      listStoreChargeStatistics(params).then(response => {
+        if (response.code === 200) {
+          this.chargeTrendData = response.rows || []
+        }
+      })
+    },
+
+    /**
+     * 获取昨天的日期
+     */
+    getYesterday() {
+      const yesterday = new Date()
+      yesterday.setDate(yesterday.getDate() - 1)
+      return yesterday
+    },
+
+    /**
+     * 格式化日期为 yyyy-MM-dd
+     */
+    formatDate(date) {
+      const year = date.getFullYear()
+      const month = String(date.getMonth() + 1).padStart(2, '0')
+      const day = String(date.getDate()).padStart(2, '0')
+      return `${year}-${month}-${day}`
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.home {
+  .panel-group {
+    margin-top: 18px;
+
+    .stat-section {
+      background: #fff;
+      padding: 20px;
+      border-radius: 8px;
+      box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+
+      .section-title {
+        font-size: 16px;
+        font-weight: bold;
+        color: #303133;
+        margin-bottom: 20px;
+      }
+    }
+
+    .stat-card {
+      height: 120px;
+      border-radius: 8px;
+      padding: 20px;
+      color: #fff;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+      transition: all 0.3s;
+
+      &:hover {
+        transform: translateY(-5px);
+        box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
+      }
+
+      .stat-card-title {
+        font-size: 16px;
+        margin-bottom: 10px;
+        opacity: 0.9;
+      }
+
+      .stat-card-value {
+        font-size: 28px;
+        font-weight: bold;
+      }
+    }
+
+    .stat-card-blue {
+      background: linear-gradient(135deg, #1890ff, #36cfc9);
+    }
+
+    .stat-card-green {
+      background: linear-gradient(135deg, #52c41a, #73d13d);
+    }
+
+    .stat-card-red {
+      background: linear-gradient(135deg, #f5222d, #ff4d4f);
+    }
+
+    .stat-card-orange {
+      background: linear-gradient(135deg, #fa8c16, #ffa940);
+    }
+
+    .stat-card-purple {
+      background: linear-gradient(135deg, #722ed1, #b37feb);
+    }
+
+    .stat-card-cyan {
+      background: linear-gradient(135deg, #13c2c2, #5cdbd3);
+    }
+
+    .stat-card-teal {
+      background: linear-gradient(135deg, #006d75, #08979c);
+    }
+
+    .stat-card-indigo {
+      background: linear-gradient(135deg, #2f54eb, #597ef7);
+    }
+
+    .card-panel {
+      height: 108px;
+      cursor: pointer;
+      font-size: 12px;
+      position: relative;
+      overflow: hidden;
+      color: #666;
+      background: #fff;
+      box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
+      border-color: rgba(0, 0, 0, .05);
+      &:hover {
+        .card-panel-icon-wrapper {
+          color: #fff;
+        }
+        .icon-orders {
+          background: #40c9c6;
+        }
+        .icon-revenue {
+          background: #34bfa3;
+        }
+        .icon-charge {
+          background: #722ed1;
+        }
+        .icon-charge-count {
+          background: #13c2c2;
+        }
+      }
+      .card-panel-icon-wrapper {
+        float: left;
+        margin: 14px 0 0 14px;
+        padding: 16px;
+        transition: all 0.38s ease-out;
+        border-radius: 6px;
+      }
+      .card-panel-icon {
+        float: left;
+        font-size: 48px;
+      }
+      .card-panel-description {
+        float: right;
+        font-weight: bold;
+        margin: 26px;
+        margin-left: 0px;
+        .card-panel-text {
+          line-height: 18px;
+          color: rgba(0, 0, 0, 0.45);
+          font-size: 16px;
+          margin-bottom: 12px;
+        }
+        .card-panel-num {
+          font-size: 20px;
+        }
+      }
+    }
+  }
+
+  .chart-wrapper {
+    background: #fff;
+    padding: 20px;
+    border-radius: 4px;
+    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+
+    .chart-header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 20px;
+
+      .chart-title {
+        font-size: 16px;
+        font-weight: bold;
+        color: #303133;
+      }
+    }
+
+    .chart-content {
+      height: 300px;
+    }
+
+    .chart-content-1 {
+      height: 130px;
+    }
+  }
+}
+</style>
+

+ 1 - 0
admin-ui/src/views/login.vue

@@ -173,6 +173,7 @@ export default {
           this.$store.dispatch("Login", this.loginForm).then(() => {
             this.getPrinter();
             this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
+            
           }).catch(() => {
             this.loading = false;
             if (this.captchaEnabled) {

+ 1 - 1
admin-ui/src/views/monitor/job/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="jobName">
                 <el-input v-model="queryParams.jobName" placeholder="请输入任务名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/monitor/job/log.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="任务名称" prop="jobName">
                 <el-input v-model="queryParams.jobName" placeholder="请输入任务名称" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/monitor/logininfor/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="登录地址" prop="ipaddr">
         <el-input
           v-model="queryParams.ipaddr"

+ 1 - 1
admin-ui/src/views/monitor/online/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="68px">
             <el-form-item prop="ipaddr">
                 <el-input v-model="queryParams.ipaddr" placeholder="请输入登录地址" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/monitor/operlog/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="系统模块" prop="title">
         <el-input
           v-model="queryParams.title"

+ 1 - 1
admin-ui/src/views/order/activity/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
             <el-form-item label-width="120px" prop="orgId" v-if="userInfoVO.userType == '00'">
                 <el-select v-model="queryParams.orgId" filterable placeholder="请选择" clearable>
                     <el-option-group label="门店">

+ 1 - 1
admin-ui/src/views/order/cloth/checkCloth.vue

@@ -50,7 +50,7 @@
                         <span>衣服信息</span>
                     </div>
 
-                    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="40px">
+                    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="40px">
                         <el-form-item label="条码" prop="washCode">
                             <el-input v-model="queryParams.washCode" placeholder="请输入条码" clearable @keyup.enter.native="searchCloth" />
                         </el-form-item>

+ 1 - 1
admin-ui/src/views/order/cloth/cloudAppointmentClothOrder.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
             <el-form-item label="工厂名称" label-width="120px" prop="orgIndex" v-if="userInfoVO.userType == '00'">
                 <el-select v-model="queryParams.orgIndex" filterable placeholder="请选择" clearable>
                     <el-option-group label="工厂">

+ 24 - 15
admin-ui/src/views/order/cloth/collectCloth.vue

@@ -6,9 +6,9 @@
                 <div slot="header" class="clearfix">
                     <span>选择客户</span>
                 </div>
-                
+
                 <!-- 搜索区域 -->
-                <el-form :model="queryParams" ref="queryForm" @submit.native.prevent>
+                <el-form :model="queryParams"  @submit.native.prevent  ref="queryForm">
                     <div class="search-box">
                         <el-input
                             v-model="queryParams.phoneNumber"
@@ -22,10 +22,10 @@
                 </el-form>
 
                 <!-- 用户信息展示 -->
-                <el-descriptions 
-                    v-if="appUserInfo" 
+                <el-descriptions
+                    v-if="appUserInfo"
                     class="user-info"
-                    :column="1" 
+                    :column="1"
                     border>
                     <el-descriptions-item label="用户名">
                         {{ appUserInfo.realName }}
@@ -71,7 +71,7 @@
 
                 <!-- 衣物列表 -->
                 <div class="cloth-list">
-                    <el-table 
+                    <el-table
                         :data="orderClothItemDTOS"
                         border
                         stripe
@@ -114,8 +114,8 @@
                         </el-table-column>
                         <el-table-column label="特殊处理" width="120">
                             <template slot-scope="scope">
-                                <el-button 
-                                    type="text" 
+                                <el-button
+                                    type="text"
                                     class="price-text"
                                     @click="changeClothSpecialPriceEvent(scope.$index)">
                                     ¥{{ calculateClothSpecialPrice(scope.$index) }}
@@ -125,8 +125,8 @@
                         <el-table-column label="单价" width="100">
                             <template slot-scope="scope">
                                 <template v-if="scope.row.isChangePrice == 'Y'">
-                                    <el-button 
-                                        type="text" 
+                                    <el-button
+                                        type="text"
                                         class="price-text"
                                         @click="changeClothDefaultPriceEvent(scope.$index)">
                                         ¥{{ scope.row.defaultPrice }}
@@ -139,7 +139,7 @@
                             <template slot-scope="scope">
                                 <div class="operation-buttons">
                                     <el-button type="text" @click="handleAddClothFlaw(scope.$index)">
-                                        附件({{ scope.row.orderClothAdjunctDTOS.length }})
+                                        附件({{ getFlawCount(scope.row.orderClothAdjunctDTOS)  }})
                                     </el-button>
                                     <el-button type="text" icon="el-icon-camera" @click="handphotograph(scope.$index)">
                                         拍照({{ scope.row.picNum }})
@@ -187,7 +187,7 @@
                                     </el-select>
                                 </el-form-item>
 
-                                <el-form-item 
+                                <el-form-item
                                     v-if="orderForm.isAppointment == 'Y'"
                                     label="取衣方式">
                                     <el-select v-model="orderForm.sendClothWay" placeholder="请选择" clearable>
@@ -207,7 +207,7 @@
                     </div>
 
                     <div class="action-area">
-                        <el-button 
+                        <el-button
                             type="danger"
                             class="checkout-btn"
                             icon="el-icon-shopping-cart-2"
@@ -481,7 +481,7 @@
             </span>
         </el-dialog>
 
-        <el-dialog title="收银" :visible.sync="confirmPayOpen" size="80%" :before-close="handleClose" destroy-on-close append-to-body>
+        <el-dialog title="收银" :visible.sync="confirmPayOpen" size="90%" :before-close="handleClose" destroy-on-close append-to-body>
             <CashCloth ref="cashCloth" :orderForm="orderForm" :orderClothItemDTOS="orderClothItemDTOS" :appUserInfo="appUserInfo" :clothSpeeds="clothSpeeds" :deductCouponVOS="deductCouponVOS" :discountCouponVOS="discountCouponVOS" @onPaySuccess="onPaySuccess" @initOrderList="initOrderList" @confirm="handelPaySuccess"/>
         </el-dialog>
 
@@ -710,6 +710,15 @@ export default {
         })
     },
     methods: {
+        // 展示附件数量
+        getFlawCount(e) {
+            let count = 0
+            e.forEach((item) => {
+                count += item.num
+            })
+            return count
+        },
+
         // 添加衣物过滤数据
         searchCloth(k1, k2) {
             if (!this.defaultList[k1]) {
@@ -1932,4 +1941,4 @@ export default {
         }
     }
 }
-</style>
+</style>

+ 20 - 21
admin-ui/src/views/order/cloth/component/cashCloth.vue

@@ -62,10 +62,10 @@
                             </div>
 
                             <div class="payment-methods">
-                                <el-radio-group v-model="orderForm.payType" size="large" @change="changePayType">
-                                    <el-radio-button label="3"> <i class="el-icon-wallet"></i> 余额 </el-radio-button>
-                                    <el-radio-button label="2"> <i class="el-icon-money"></i> 现金 </el-radio-button>
-                                    <el-radio-button label="0"> <i class="el-icon-mobile-phone"></i> 扫码 </el-radio-button>
+                                <el-radio-group v-model="orderForm.payType" size="large" @change="changePayType" >
+                                    <el-radio-button label="3" style="width: 80px"> <i class="el-icon-wallet"></i> 余额 </el-radio-button>
+                                    <el-radio-button label="2" style="width: 80px"> <i class="el-icon-money"></i> 现金 </el-radio-button>
+                                    <el-radio-button label="0" style="width: 80px"> <i class="el-icon-mobile-phone"></i> 扫码 </el-radio-button>
                                 </el-radio-group>
                             </div>
 
@@ -83,8 +83,7 @@
                     </div>
 
                     <!-- 右侧优惠信息区域 -->
-                    <!-- v-if="orderForm.isAppointment === 'N'" -->
-                    <div class="discount-section" >
+                    <div class="discount-section" style="width: 600px">
                         <el-card class="discount-card">
                             <el-tabs v-model="confirmCouponTabIndex" type="border-card">
                                 <!-- 优惠券 tab -->
@@ -95,7 +94,7 @@
                                     <!-- 已选优惠券列表 -->
                                     <div class="selected-coupons">
                                         <el-table :data="selectCoupons" size="small" border height="calc(100vh - 400px)" style="width: 100%">
-                                            <el-table-column label="优惠券" align="center" prop="couponTypeTitle" width="120" />
+                                            <el-table-column label="优惠券" align="center" prop="couponTypeTitle" width="80" />
                                             <el-table-column label="类型" align="center" width="80">
                                                 <template slot-scope="scope">
                                                     <el-tag size="mini" :type="getTagType(scope.row.discountWay)">
@@ -103,7 +102,7 @@
                                                     </el-tag>
                                                 </template>
                                             </el-table-column>
-                                            <el-table-column label="优惠内容" align="center" width="150">
+                                            <el-table-column label="优惠内容" align="center" width="120">
                                                 <template slot-scope="scope">
                                                     <div class="discount-content">
                                                         <template v-if="scope.row.discountWay == '0'">
@@ -137,7 +136,7 @@
                                                     </el-popover>
                                                 </template>
                                             </el-table-column>
-                                            <el-table-column label="操作" align="center" width="120" fixed="right">
+                                            <el-table-column label="操作" align="center" width="100" fixed="right">
                                                 <template slot-scope="scope">
                                                     <el-button type="text" @click="changeCouponDiscountCloth(scope.$index)" v-if="canModifyCoupon(scope.row, scope.$index)"> 修改 </el-button>
                                                     <el-button type="text" style="color: #ff4949" @click="removeSelectCoupon(scope.$index)" v-if="scope.$index == selectCoupons.length - 1"> 删除 </el-button>
@@ -173,15 +172,15 @@
                             <span v-if="scope.row.discountWay == '2'">优惠{{ getDiscountStr(scope.row.discountRate) }},最多折扣{{ scope.row.deductAmount }}元</span>
                         </template>
                     </el-table-column>
-                    <el-table-column label="是否单件" align="center" prop="isUnique">
-                        <template slot-scope="scope">
-                            <span v-if="scope.row.discountWay == '2'">
-                                <span v-if="scope.row.isUnique == 'Y'">单件</span>
-                                <span v-if="scope.row.isUnique == 'N'">非单件</span>
-                            </span>
-                            <span v-else>--</span>
-                        </template>
-                    </el-table-column>
+<!--                    <el-table-column label="是否单件" align="center" prop="isUnique">-->
+<!--                        <template slot-scope="scope">-->
+<!--                            <span v-if="scope.row.discountWay == '2'">-->
+<!--                                <span v-if="scope.row.isUnique == 'Y'">单件</span>-->
+<!--                                <span v-if="scope.row.isUnique == 'N'">非单件</span>-->
+<!--                            </span>-->
+<!--                            <span v-else>&#45;&#45;</span>-->
+<!--                        </template>-->
+<!--                    </el-table-column>-->
                     <el-table-column label="适用衣服" align="center">
                         <template slot-scope="scope">
                             <template v-for="(item, index) in scope.row.appCouponTypeApplyClothVOS" v-key="index">
@@ -949,10 +948,10 @@ export default {
         display: flex;
         gap: 20px;
         height: 100%;
-        padding: 20px;
+        padding: 5px;
 
         .info-section {
-            width: 320px; /* 减小左侧宽度 */
+            width: 300px; /* 减小左侧宽度 */
             display: flex;
             flex-direction: column;
             gap: 20px;
@@ -1011,7 +1010,7 @@ export default {
         }
 
         .payment-methods {
-            margin: 20px 0;
+            margin: 10px 0;
             text-align: center;
         }
 

+ 1 - 1
admin-ui/src/views/order/cloth/countConsume.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="订单条码" prop="orderNo">
                 <el-input v-model="queryParams.orderNo" placeholder="请输入订单条码" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/cloth/countNoConsume.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="订单条码" prop="orderNo">
                 <el-input v-model="queryParams.orderNo" placeholder="请输入订单条码" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/cloth/inFactory.vue

@@ -55,7 +55,7 @@
                         <span>衣服信息</span>
                     </div>
 
-                    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="40px">
+                    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="40px">
                         <el-form-item label="条码" prop="washCode">
                             <el-input v-model="queryParams.washCode" placeholder="请输入条码" clearable @keyup.enter.native="searchCloth" />
                         </el-form-item>

+ 1 - 1
admin-ui/src/views/order/cloth/orderList.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="search-wrapper" shadow="never">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
                 <el-form-item label-width="120px" prop="orgIndex" v-if="userInfoVO.userType == '00'">
                     <el-select v-model="queryParams.orgIndex" filterable placeholder="请选择门店" clearable style="width: 240px">
                         <template>

+ 1 - 1
admin-ui/src/views/order/cloth/outFactory.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="app-container">
         <!-- 查询 -->
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="brandId">
                 <el-select v-model="queryParams.orgId" placeholder="请选择门店" clearable filterable>
                     <el-option v-for="org in orgList" :key="org.id" :label="org.name" :value="org.id" />

+ 1 - 1
admin-ui/src/views/order/cloth/searchCloth.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="app-container">
         <el-card class="search-wrapper" shadow="never">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item prop="flowStatus">
                 <el-select v-model="queryParams.flowStatus" placeholder="请选择衣服状态" clearable>
                     <el-option key="0" label="待入厂" value="0" />

+ 1 - 1
admin-ui/src/views/order/cloth/sendCloth.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <!-- 搜索区域 -->
         <el-card class="search-card">
-            <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="80px">
+            <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" label-width="80px">
                 <el-form-item label="订单状态" prop="orderStatus">
                     <el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable style="width: 160px">
                         <el-option key="6" label="清洗中" value="6" />

+ 1 - 1
admin-ui/src/views/order/delivery/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label-width="120px" prop="orgId">
         <el-select v-if="userInfoVO.userType == '00'" v-model="queryParams.storeId" placeholder="请选择门店" clearable filterable>
           <el-option v-for="store in storeList" :key="store.id + store.sourceType" :label="store.name" :value="store.id"> </el-option>

+ 1 - 1
admin-ui/src/views/order/factoryFinancial/factoryManageCount.vue

@@ -6,7 +6,7 @@
                 <el-descriptions-item label="结算金额(元)">{{ totalStatementPrice }}</el-descriptions-item>
             </el-descriptions>
         </el-card>
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
             <el-form-item label="创建时间">
                 <el-date-picker v-model="createTimeRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="false" :picker-options="pickerOptions"></el-date-picker>
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/factoryFinancial/factoryManageDay.vue

@@ -7,7 +7,7 @@
                 <el-descriptions-item label="今日出厂数(元)">{{ outFactoryCount }}</el-descriptions-item>
             </el-descriptions>
         </el-card>
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
             <el-form-item label="入厂时间">
                 <el-date-picker v-model="createTimeRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="false" :picker-options="pickerOptions"></el-date-picker>
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/factoryFinancial/factoryManageDetail.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
             <el-form-item label="入厂时间">
                 <el-date-picker v-model="createTimeRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/financial/manageDay.vue

@@ -35,7 +35,7 @@
       </el-row>
 
       <!-- 查询条件 -->
-      <el-form :model="queryParams" ref="queryForm" :inline="true" class="mb8">
+      <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" class="mb8">
         <el-form-item label="统计日期">
           <el-date-picker
             v-model="queryParams.date"

+ 1 - 1
admin-ui/src/views/order/financial/manageFactory.vue

@@ -7,7 +7,7 @@
                 <el-descriptions-item label="结算金额(元)">{{ totalStatementMoney }}</el-descriptions-item>
             </el-descriptions>
         </el-card>
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px" style="margin-top: 10px">
             <el-form-item label="创建时间">
                 <el-date-picker v-model="createTimeRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/financial/manageMonth.vue

@@ -12,7 +12,7 @@
                 <el-descriptions-item label="券消费(元)">{{ todayCouponAmount }}</el-descriptions-item>
             </el-descriptions>
         </el-card>
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px" style="margin-top: 10px">
             <el-form-item label="创建时间">
                 <el-date-picker v-model="monthTime" value-format="yyyy-MM" type="month" placeholder="选择月"> </el-date-picker>
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/financial/managePay.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="80px" style="margin-top: 10px">
             <el-form-item label="交易通道" prop="payType">
                 <el-radio-group v-model="queryParams.payType">
                     <el-radio-button label="0">微信</el-radio-button>

+ 1 - 1
admin-ui/src/views/order/retailOrder/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="100px">
             <el-form-item prop="orderNo">
                 <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/serviceOrder/carBeautyOrder.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="订单编号" prop="orderNo">
                 <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

+ 1 - 1
admin-ui/src/views/order/serviceOrder/lifeServicesOrder.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form :model="queryParams" ref="queryForm" @submit.native.prevent :inline="true" v-show="showSearch" label-width="68px">
             <el-form-item label="订单编号" prop="orderNo">
                 <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác