whx 3 月之前
父節點
當前提交
5c47e8eae5
共有 91 個文件被更改,包括 1415 次插入941 次删除
  1. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/index.html
  2. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/1296.9b7308b5.css
  3. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/1764.1d4254f7.css
  4. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/1948.98ad7857.css
  5. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/2664.c45ff686.css
  6. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/5062.78375eb0.css
  7. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/5493.b30a4b75.css
  8. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/8337.0e574057.css
  9. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.457214b2.css
  10. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.8db62de3.css
  11. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1148.ce9bcf70.js
  12. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/118.6ba54514.js
  13. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1296.c718e0ed.js
  14. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1316.67b7e8a0.js
  15. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1522.c88a1f7c.js
  16. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1749.82c0523a.js
  17. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1755.a7220732.js
  18. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1764.d0f1d499.js
  19. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1869.6af51ca3.js
  20. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6837.05924eb9.js
  21. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/196.080b8bcb.js
  22. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1985.2d1a222a.js
  23. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2122.6f0a253e.js
  24. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2204.628043c5.js
  25. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2213.889dcb44.js
  26. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/224.db244f9f.js
  27. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2352.462745cc.js
  28. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/238.2da254c3.js
  29. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.56be1d79.js
  30. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2657.193eda88.js
  31. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2664.a5cf52c5.js
  32. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2847.b0fc8b45.js
  33. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2911.635256a9.js
  34. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2925.726790ad.js
  35. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3256.39d50761.js
  36. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3419.9061ff65.js
  37. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3661.bd24a79f.js
  38. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.213ad22d.js
  39. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4824.1ed80eaa.js
  40. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4844.19574734.js
  41. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4844.bce8077c.js
  42. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.bc8e69d1.js
  43. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5062.ab676531.js
  44. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5211.068d8432.js
  45. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5211.387337b1.js
  46. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5493.38a614ae.js
  47. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/555.4aa1341d.js
  48. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6340.413aff44.js
  49. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6466.a1c26558.js
  50. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6523.045ec674.js
  51. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6625.5502d876.js
  52. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.26c82b51.js
  53. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6749.47102021.js
  54. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7218.102a50c6.js
  55. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.cc74e14c.js
  56. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.dda6f40d.js
  57. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8337.e8605ad5.js
  58. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8375.77c8f413.js
  59. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.00873852.js
  60. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.a947c8d7.js
  61. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.2fdc26e4.js
  62. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9042.b5e62a18.js
  63. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9542.053c11c5.js
  64. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.73f359f8.js
  65. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9709.b0dfb833.js
  66. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7081.82b3c400.js
  67. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9991.660775e7.js
  68. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/app.8927b524.js
  69. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/app.8ca0cfe7.js
  70. 1 1
      virgo.wzfrontend/workark/public/index.html
  71. 25 0
      virgo.wzfrontend/workark/src/api/pay.js
  72. 11 0
      virgo.wzfrontend/workark/src/api/serve.js
  73. 59 2
      virgo.wzfrontend/workark/src/api/system.js
  74. 32 11
      virgo.wzfrontend/workark/src/assets/css/common.scss
  75. 358 358
      virgo.wzfrontend/workark/src/components/common/upload.vue
  76. 30 27
      virgo.wzfrontend/workark/src/components/flow/flowDetail.vue
  77. 99 12
      virgo.wzfrontend/workark/src/components/website/createOrder.vue
  78. 90 0
      virgo.wzfrontend/workark/src/components/website/payOrder.vue
  79. 43 43
      virgo.wzfrontend/workark/src/components/work/discount/coupon/detail.vue
  80. 31 32
      virgo.wzfrontend/workark/src/components/work/organization/depart/detail.vue
  81. 18 20
      virgo.wzfrontend/workark/src/components/work/organization/seal/detail.vue
  82. 29 30
      virgo.wzfrontend/workark/src/components/work/organization/user/detail.vue
  83. 40 40
      virgo.wzfrontend/workark/src/components/work/serve/content/detail.vue
  84. 150 0
      virgo.wzfrontend/workark/src/components/work/serve/list/detail.vue
  85. 32 11
      virgo.wzfrontend/workark/src/components/work/system/serveSet/processForm.vue
  86. 35 20
      virgo.wzfrontend/workark/src/components/work/system/serveSet/processSet.vue
  87. 56 56
      virgo.wzfrontend/workark/src/components/work/system/serveSet/processSetItem.vue
  88. 202 202
      virgo.wzfrontend/workark/src/layout/components/indexNav.vue
  89. 2 2
      virgo.wzfrontend/workark/src/views/website/serveDetail.vue
  90. 1 1
      virgo.wzfrontend/workark/src/views/work/organization/manager.vue
  91. 26 31
      virgo.wzfrontend/workark/src/views/work/serve/list.vue

文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/index.html


virgo.wzfrontend/src/main/resources/static/workark/static/css/1148.9b7308b5.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/1296.9b7308b5.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/1749.1d4254f7.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/1764.1d4254f7.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/6837.98ad7857.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/1948.98ad7857.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/9991.c45ff686.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/2664.c45ff686.css


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/5062.78375eb0.css


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/5493.b30a4b75.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/9042.0e574057.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/8337.0e574057.css


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.457214b2.css


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.8db62de3.css


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1148.ce9bcf70.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/118.6ba54514.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1296.c718e0ed.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1316.67b7e8a0.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1522.c88a1f7c.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1749.82c0523a.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1755.a7220732.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1764.d0f1d499.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1869.6af51ca3.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6837.05924eb9.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/196.080b8bcb.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1985.2d1a222a.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2122.6f0a253e.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2204.628043c5.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2213.889dcb44.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/224.db244f9f.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2352.462745cc.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/238.2da254c3.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.56be1d79.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2657.193eda88.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2664.a5cf52c5.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2847.b0fc8b45.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2911.635256a9.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2925.726790ad.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3256.39d50761.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/3419.9061ff65.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3661.bd24a79f.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.213ad22d.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4824.1ed80eaa.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4844.19574734.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/4844.bce8077c.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.bc8e69d1.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/5062.ab676531.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/5211.068d8432.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/5211.387337b1.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/5493.38a614ae.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/555.4aa1341d.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/6340.413aff44.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/6466.a1c26558.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6523.045ec674.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6625.5502d876.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.26c82b51.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6749.47102021.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/7218.102a50c6.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.cc74e14c.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.dda6f40d.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8337.e8605ad5.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8375.77c8f413.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.00873852.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.a947c8d7.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.2fdc26e4.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9042.b5e62a18.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9542.053c11c5.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.73f359f8.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9709.b0dfb833.js


文件差異過大導致無法顯示
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/7081.82b3c400.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9991.660775e7.js


文件差異過大導致無法顯示
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/app.8927b524.js


文件差異過大導致無法顯示
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/app.8ca0cfe7.js


+ 1 - 1
virgo.wzfrontend/workark/public/index.html

@@ -7,7 +7,7 @@
 		<link rel="icon" href="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01">
 		<title>WORKARK</title>
 		<link rel="stylesheet" type="text/css" href="<%= BASE_URL %>reset.css" />
-		<link rel="stylesheet" href="//at.alicdn.com/t/c/font_4358860_kxdl3dm4e3a.css">
+		<link rel="stylesheet" href="//at.alicdn.com/t/c/font_4358860_x6rz68eryv.css">
 		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/css/swiper.min.css">
 		<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script>
 	</head>

+ 25 - 0
virgo.wzfrontend/workark/src/api/pay.js

@@ -0,0 +1,25 @@
+import request from '@/axios'
+//微信支付
+/* 
+ * 生辰二维码
+ * 
+ * 
+ */
+export function createPayQR(orderNo) {
+	return request({
+		url: `/api/workarkWxPay/native/${orderNo}`,
+		method: 'post',
+		data: {}
+	})
+}
+/* 
+ * 查询订单支付状态
+ * 
+ * 
+ */
+export function getOrderPayState(orderNo) {
+	return request({
+		url: `/api/workarkWxPay/query/${orderNo}`,
+		method: 'get'
+	})
+}

+ 11 - 0
virgo.wzfrontend/workark/src/api/serve.js

@@ -115,4 +115,15 @@ export function getOrderListByQueryAndSize(currPage, pageSize, data) {
 		method: 'post',
 		data: data
 	})
+}
+/* 
+ * 订单详情
+ * 
+ * 
+ */
+export function getOrederDetail(id) {
+	return request({
+		url: `/api/workarkOrderInfo/${id}`,
+		method: 'get'
+	})
 }

+ 59 - 2
virgo.wzfrontend/workark/src/api/system.js

@@ -97,7 +97,7 @@ export function deleteServeDepartment(id) {
 		url: `/api/workarkProductLevel/${id}`,
 		method: 'delete'
 	})
-}
+}
 /* 
  * 根据id获取服务
  * 
@@ -153,7 +153,7 @@ export function insertProcessSetData(data) {
 		method: 'post',
 		data: data
 	})
-}
+}
 /* 
  * 通过ID获取过程设置模板数据详情
  * 
@@ -187,4 +187,61 @@ export function deleteProcessSetData(id) {
 		url: `/api/workarkProceModel/${id}`,
 		method: 'delete'
 	})
+}
+/* 
+ * 获取过程设置数据
+ * 
+ * 
+ */
+export function getProcessData(orderId) {
+	return request({
+		url: `/api/workarkProce/list/${orderId}`,
+		method: 'get'
+	})
+}
+/* 
+ * 新增过程设置模板数据
+ * 
+ * 
+ */
+export function insertProcessData(data) {
+	return request({
+		url: `/api/workarkProce`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 通过ID获取过程设置数据详情
+ * 
+ * 
+ */
+export function getProcessDataById(id) {
+	return request({
+		url: `/api/workarkProce/get/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 编辑过程设置数据
+ * 
+ * 
+ */
+export function updateProcessData(data) {
+	return request({
+		url: `/api/workarkProce`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 删除过程设置数据
+ * 
+ * 
+ */
+export function deleteProcessData(id) {
+	return request({
+		url: `/api/workarkProce/${id}`,
+		method: 'delete'
+	})
 }

+ 32 - 11
virgo.wzfrontend/workark/src/assets/css/common.scss

@@ -273,12 +273,20 @@
 	background: $--color-white;
 }
 
-.color-red {
-	color: $--color-danger;
+.color-primary{
+	color: $--color-primary;
 }
 
-.color-blue{
-	color: $--color-primary;
+.color-success{
+	color: $--color-success;
+}
+
+.color-warning{
+	color: $--color-warning;
+}
+
+.color-danger {
+	color: $--color-danger;
 }
 
 .yui-tree-box {
@@ -463,11 +471,25 @@
 }
 
 .hui-detail {
-	padding:0 20px;
-
-	.hui-detail-content {
+	padding:15px;
+	
+	.hui-detail-box{
+		border-radius: 4px;
+		box-shadow: 0px 1px 12px rgba(3, 3, 3, 0.1);
+		margin-bottom: 15px;
+	}
+	.hui-detail-title{
+		font-weight: bold;
+		line-height: 44px;
+		padding: 0 15px;
+		border-bottom: 1px solid $--border-color-lighter;
+	}
+	
+	.hui-detail-content {
+		padding:15px;
+		
 		.hui-detail-item {
-			padding-bottom: 16px;
+			padding-bottom: 15px;
 			
 			.hui-detail-label {
 				min-height: 22px;
@@ -481,9 +503,8 @@
 				line-height: 22px;
 				white-space: normal;
 			}
-			
-			&.hui-detail-item-top{
-				align-items: start;
+			&:last-child{
+				padding-bottom: 0;
 			}
 		}
 	}

+ 358 - 358
virgo.wzfrontend/workark/src/components/common/upload.vue

@@ -1,359 +1,359 @@
-<template>
-	<div class="common-update">
-		<div v-if="type === 'preview'">
-			<div class="no-tips" v-if="fileList.length === 0">暂无附件</div>
-			<div class="common-perview-image" v-else>
-				<div class="common-update-image-box" v-for="(item,index) in fileList" :key="item.id">
-					<div class="el-image video-image" v-if="item.type === 'mp4'">
-						<div class="video-icon">
-							<i class="el-icon-video-play" @click="openVideo(item)"></i>
-						</div>
-						<img :src="videoPreviewList[item.id]" class="el-image__inner">
-					</div>
-					<el-image :src="item.url" :preview-src-list="[item.url]" v-else>
-						<div slot="error" class="image-slot">
-							<el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
-								<div class="image-text">
-									<span>{{item.type.toUpperCase()}}</span>
-									<div class="file-download">
-										<i class="el-icon-download" @click="download(item)"></i>
-									</div>
-								</div>
-							</el-tooltip>
-						</div>
-					</el-image>
-				</div>
-			</div>
-		</div>
-		<div v-else>
-			<div class="common-update-image">
-				<div class="common-update-image-box" v-for="(item,index) in fileList" :key="item.id">
-					<div class="el-image video-image" v-if="item.type === 'mp4'">
-						<div class="video-icon">
-							<i class="el-icon-video-play" @click="openVideo(item)"></i>
-						</div>
-						<img :src="videoPreviewList[item.id]" class="el-image__inner">
-					</div>
-					<el-image :src="item.url" :preview-src-list="[item.url]" v-else>
-						<div slot="error" class="image-slot">
-							<el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
-								<div class="image-text">{{item.type.toUpperCase()}}</div>
-							</el-tooltip>
-						</div>
-					</el-image>
-					<div class="common-update-close" @click="removeFile(index)">
-						<i class="el-icon-close"></i>
-					</div>
-				</div>
-				<el-upload :action="action" :headers="headers" :show-file-list="false" name="uploadFile"
-					:before-upload="beforeUpload" :on-success="successFile" :on-error="errorFile" :accept="accept"
-					v-if="fileList.length < maxLen" :on-progress="progress" :limit="maxLen" :on-exceed="handleExceed"
-					:multiple="maxLen === 1 ? false : true">
-					<div class="common-update-button">
-						<i class="iconfont huifont-xinzeng"></i>
-						<div class="common-update-button-label">{{text}}</div>
-					</div>
-				</el-upload>
-			</div>
-			<div class="update-image-tips"><span class="color-red">*</span> 请上传小于10M的文件</div>
-		</div>
-		<el-dialog :close-on-click-modal="false" :title="video.name" custom-class="monitor-dialog"
-			:visible.sync="visible" width="900px" height="500px" :append-to-body="true">
-			<div class="video-box">
-				<video v-if="visible" width="900" height="445" controls>
-					<source :src="video.url" type="video/mp4" />
-				</video>
-			</div>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import config from '@/config';
-	import {
-		getToken
-	} from '@/uitls/auth';
-	export default {
-		props: {
-			list: {
-				type: Array,
-				default: () => {
-					return []
-				}
-			},
-			type: {
-				type: String,
-				default: 'preview'
-			},
-			maxLen: {
-				type: Number,
-				default: 5
-			},
-			text: {
-				type: String,
-				default: '上传图片'
-			},
-			accept: {
-				type: String,
-				default: '.png, .jpg, .jpeg'
-			},
-		},
-		data() {
-			return {
-				action: config.baseURL + '/file/filenode/-1', //上传地址
-				headers: {
-					token: ''
-				},
-				url: '',
-				srcList: [],
-				fileList: [],
-				videoPreviewList: {},
-				visible: false,
-				video: {}
-			};
-		},
-		mounted() {
-			this.headers.token = getToken();
-			this.fileList = JSON.parse(JSON.stringify(this.list));
-		},
-		methods: {
-			beforeUpload(file) {
-				//上传前
-				if ((parseInt(file.size) / 1024 / 1024) > 10) {
-					//判断上传的文件不大于30M
-					this.$message.warning('请上传小于10M的文件');
-					return false;
-				}
-			},
-			progress(e) {
-				let percent = e.percent >= 100 ? 99 : parseInt(e.percent)
-				this.$loading({
-					percent: (percent + '%')
-				});
-			},
-			successFile(response, file, fileList) {
-				//上传成功
-				if (!response.data) return this.errorFile();
-				this.$message.success('上传成功');
-				let data = response.data;
-				let typeList = data.name.split('.');
-				this.fileList.push({
-					id: data.id,
-					name: data.name,
-					url: data.node.url,
-					type: typeList[typeList.length - 1]
-				});
-				this.$loading.close();
-			},
-			errorFile() {
-				//上传失败
-				this.$message.error('上传失败');
-				this.$loading.close();
-			},
-			removeFile(index) {
-				this.$confirm('确定要删除该文件?', () => {
-					this.fileList.splice(index, 1);
-				});
-			},
-			download(item) {
-				window.location.href = config.baseURL + '/file/filenode/' + item.id;
-			},
-			openVideo(item) {
-				this.video = item;
-				this.visible = true;
-			},
-			handleExceed(files, fileList) {
-				this.$message.warning('最多上传' + this.maxLen + '个文件,当前已上传' + fileList.length + '个文件,请重新选择');
-			},
-			mp4Preview(item) {
-				const video = document.createElement('video') // 也可以自己创建video
-				video.src = item.url // url地址 url跟 视频流是一样的
-				video.crossOrigin = '*' // 解决跨域问题,也就是提示污染资源无法转换视频
-				video.currentTime = 1 // 第一帧
-				video.oncanplay = () => {
-					let canvas = document.createElement('canvas') // 获取 canvas 对象
-					const ctx = canvas.getContext('2d') // 绘制2d
-					canvas.width = video.clientWidth ? video.clientWidth : 320 // 获取视频宽度
-					canvas.height = video.clientHeight ? video.clientHeight : 320 //获取视频高度
-					// 利用canvas对象方法绘图
-					ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
-					// 转换成base64形式
-					const videoFirstImgsrc = canvas.toDataURL('image/png') // 截取后的视频封面
-					this.videoPreviewList[item.id] = videoFirstImgsrc;
-					this.$forceUpdate();
-					video.remove()
-					canvas.remove();
-				}
-			}
-		},
-		watch: {
-			list(val) {
-				this.fileList = JSON.parse(JSON.stringify(val));
-			},
-			fileList() {
-				for (let i = 0; i < this.fileList.length; i++) {
-					if (this.fileList[i].type === 'mp4') {
-						this.mp4Preview(this.fileList[i])
-					}
-				}
-			}
-		},
-	}
-</script>
-
-<style lang="scss">
-	.el-dialog.monitor-dialog {
-		height: 500px;
-		margin-top: 20vh !important;
-	}
-
-	.common-update {
-		display: flex;
-		flex-wrap: wrap;
-
-		.update-image-tips {
-			font-size: 12px;
-			opacity: 0.7;
-		}
-
-		.video-image {
-			cursor: pointer;
-			position: relative;
-
-			&:hover {
-				.video-icon {
-					opacity: 1;
-				}
-			}
-
-			.video-icon {
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				background: rgba(0, 0, 0, 0.6);
-				opacity: 0;
-				transition: opacity 200ms;
-
-				i {
-					font-size: 24px;
-				}
-			}
-		}
-
-		.common-update-button {
-			width: 100px;
-			height: 100px;
-			border: 1px dashed $--border-color-base;
-			display: flex;
-			flex-direction: column;
-			justify-content: center;
-			margin: 4px 0;
-
-			.huifont-xinzeng {
-				line-height: 20px;
-				font-size: 20px;
-			}
-
-			.common-update-button-label {
-				font-size: 14px;
-				line-height: 20px;
-				padding-top: 10px;
-			}
-		}
-
-		.common-perview-image {
-			display: flex;
-			flex-wrap: wrap;
-
-			.el-image {
-				width: 64px;
-				height: 64px;
-				border-radius: 2px;
-				background: transparent;
-			}
-		}
-
-		.image-slot {
-			width: 100%;
-			height: 100%;
-			border-radius: 4px;
-			background: #253642;
-			position: relative;
-
-			.file-download {
-				position: absolute;
-				display: none;
-				align-items: center;
-				justify-content: center;
-				font-size: 20px;
-				background: rgba(0, 0, 0, 0.8);
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				color: #fff;
-				cursor: pointer;
-			}
-
-			.image-text {
-				font-size: 20px;
-				width: 100%;
-				height: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				color: #fff;
-				font-weight: bold;
-
-				&:hover {
-					.file-download {
-						display: flex;
-					}
-				}
-			}
-
-		}
-
-		.common-update-image-box {
-			display: flex;
-			position: relative;
-			margin-right: 5px;
-		}
-
-		.common-update-image {
-			display: flex;
-			flex-wrap: wrap;
-
-			.common-update-image-box {
-				margin: 4px 8px 4px 0;
-			}
-
-			.el-image {
-				width: 100px;
-				height: 100px;
-				border-radius: 2px;
-				background: transparent;
-			}
-
-			.common-update-close {
-				position: absolute;
-				right: -7px;
-				top: -7px;
-				background: $--color-danger;
-				width: 14px;
-				height: 14px;
-				line-height: 14px;
-				text-align: center;
-				border-radius: 50%;
-				font-size: 10px;
-				cursor: pointer;
-				color: #fff;
-			}
-		}
-	}
+<template>
+	<div class="common-update">
+		<div v-if="type === 'preview'">
+			<div class="no-tips" v-if="fileList.length === 0">暂无附件</div>
+			<div class="common-perview-image" v-else>
+				<div class="common-update-image-box" v-for="(item,index) in fileList" :key="item.id">
+					<div class="el-image video-image" v-if="item.type === 'mp4'">
+						<div class="video-icon">
+							<i class="el-icon-video-play" @click="openVideo(item)"></i>
+						</div>
+						<img :src="videoPreviewList[item.id]" class="el-image__inner">
+					</div>
+					<el-image :src="item.url" :preview-src-list="[item.url]" v-else>
+						<div slot="error" class="image-slot">
+							<el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
+								<div class="image-text">
+									<span>{{item.type.toUpperCase()}}</span>
+									<div class="file-download">
+										<i class="el-icon-download" @click="download(item)"></i>
+									</div>
+								</div>
+							</el-tooltip>
+						</div>
+					</el-image>
+				</div>
+			</div>
+		</div>
+		<div v-else>
+			<div class="common-update-image">
+				<div class="common-update-image-box" v-for="(item,index) in fileList" :key="item.id">
+					<div class="el-image video-image" v-if="item.type === 'mp4'">
+						<div class="video-icon">
+							<i class="el-icon-video-play" @click="openVideo(item)"></i>
+						</div>
+						<img :src="videoPreviewList[item.id]" class="el-image__inner">
+					</div>
+					<el-image :src="item.url" :preview-src-list="[item.url]" v-else>
+						<div slot="error" class="image-slot">
+							<el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
+								<div class="image-text">{{item.type.toUpperCase()}}</div>
+							</el-tooltip>
+						</div>
+					</el-image>
+					<div class="common-update-close" @click="removeFile(index)">
+						<i class="el-icon-close"></i>
+					</div>
+				</div>
+				<el-upload :action="action" :headers="headers" :show-file-list="false" name="uploadFile"
+					:before-upload="beforeUpload" :on-success="successFile" :on-error="errorFile" :accept="accept"
+					v-if="fileList.length < maxLen" :on-progress="progress" :limit="maxLen" :on-exceed="handleExceed"
+					:multiple="maxLen === 1 ? false : true">
+					<div class="common-update-button">
+						<i class="iconfont huifont-xinzeng"></i>
+						<div class="common-update-button-label">{{text}}</div>
+					</div>
+				</el-upload>
+			</div>
+			<div class="update-image-tips"><span class="color-danger">*</span> 请上传小于10M的文件</div>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="video.name" custom-class="monitor-dialog"
+			:visible.sync="visible" width="900px" height="500px" :append-to-body="true">
+			<div class="video-box">
+				<video v-if="visible" width="900" height="445" controls>
+					<source :src="video.url" type="video/mp4" />
+				</video>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import config from '@/config';
+	import {
+		getToken
+	} from '@/uitls/auth';
+	export default {
+		props: {
+			list: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+			type: {
+				type: String,
+				default: 'preview'
+			},
+			maxLen: {
+				type: Number,
+				default: 5
+			},
+			text: {
+				type: String,
+				default: '上传图片'
+			},
+			accept: {
+				type: String,
+				default: '.png, .jpg, .jpeg'
+			},
+		},
+		data() {
+			return {
+				action: config.baseURL + '/file/filenode/-1', //上传地址
+				headers: {
+					token: ''
+				},
+				url: '',
+				srcList: [],
+				fileList: [],
+				videoPreviewList: {},
+				visible: false,
+				video: {}
+			};
+		},
+		mounted() {
+			this.headers.token = getToken();
+			this.fileList = JSON.parse(JSON.stringify(this.list));
+		},
+		methods: {
+			beforeUpload(file) {
+				//上传前
+				if ((parseInt(file.size) / 1024 / 1024) > 10) {
+					//判断上传的文件不大于30M
+					this.$message.warning('请上传小于10M的文件');
+					return false;
+				}
+			},
+			progress(e) {
+				let percent = e.percent >= 100 ? 99 : parseInt(e.percent)
+				this.$loading({
+					percent: (percent + '%')
+				});
+			},
+			successFile(response, file, fileList) {
+				//上传成功
+				if (!response.data) return this.errorFile();
+				this.$message.success('上传成功');
+				let data = response.data;
+				let typeList = data.name.split('.');
+				this.fileList.push({
+					id: data.id,
+					name: data.name,
+					url: data.node.url,
+					type: typeList[typeList.length - 1]
+				});
+				this.$loading.close();
+			},
+			errorFile() {
+				//上传失败
+				this.$message.error('上传失败');
+				this.$loading.close();
+			},
+			removeFile(index) {
+				this.$confirm('确定要删除该文件?', () => {
+					this.fileList.splice(index, 1);
+				});
+			},
+			download(item) {
+				window.location.href = config.baseURL + '/file/filenode/' + item.id;
+			},
+			openVideo(item) {
+				this.video = item;
+				this.visible = true;
+			},
+			handleExceed(files, fileList) {
+				this.$message.warning('最多上传' + this.maxLen + '个文件,当前已上传' + fileList.length + '个文件,请重新选择');
+			},
+			mp4Preview(item) {
+				const video = document.createElement('video') // 也可以自己创建video
+				video.src = item.url // url地址 url跟 视频流是一样的
+				video.crossOrigin = '*' // 解决跨域问题,也就是提示污染资源无法转换视频
+				video.currentTime = 1 // 第一帧
+				video.oncanplay = () => {
+					let canvas = document.createElement('canvas') // 获取 canvas 对象
+					const ctx = canvas.getContext('2d') // 绘制2d
+					canvas.width = video.clientWidth ? video.clientWidth : 320 // 获取视频宽度
+					canvas.height = video.clientHeight ? video.clientHeight : 320 //获取视频高度
+					// 利用canvas对象方法绘图
+					ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
+					// 转换成base64形式
+					const videoFirstImgsrc = canvas.toDataURL('image/png') // 截取后的视频封面
+					this.videoPreviewList[item.id] = videoFirstImgsrc;
+					this.$forceUpdate();
+					video.remove()
+					canvas.remove();
+				}
+			}
+		},
+		watch: {
+			list(val) {
+				this.fileList = JSON.parse(JSON.stringify(val));
+			},
+			fileList() {
+				for (let i = 0; i < this.fileList.length; i++) {
+					if (this.fileList[i].type === 'mp4') {
+						this.mp4Preview(this.fileList[i])
+					}
+				}
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.el-dialog.monitor-dialog {
+		height: 500px;
+		margin-top: 20vh !important;
+	}
+
+	.common-update {
+		display: flex;
+		flex-wrap: wrap;
+
+		.update-image-tips {
+			font-size: 12px;
+			opacity: 0.7;
+		}
+
+		.video-image {
+			cursor: pointer;
+			position: relative;
+
+			&:hover {
+				.video-icon {
+					opacity: 1;
+				}
+			}
+
+			.video-icon {
+				position: absolute;
+				top: 0;
+				left: 0;
+				right: 0;
+				bottom: 0;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				background: rgba(0, 0, 0, 0.6);
+				opacity: 0;
+				transition: opacity 200ms;
+
+				i {
+					font-size: 24px;
+				}
+			}
+		}
+
+		.common-update-button {
+			width: 100px;
+			height: 100px;
+			border: 1px dashed $--border-color-base;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			margin: 4px 0;
+
+			.huifont-xinzeng {
+				line-height: 20px;
+				font-size: 20px;
+			}
+
+			.common-update-button-label {
+				font-size: 14px;
+				line-height: 20px;
+				padding-top: 10px;
+			}
+		}
+
+		.common-perview-image {
+			display: flex;
+			flex-wrap: wrap;
+
+			.el-image {
+				width: 64px;
+				height: 64px;
+				border-radius: 2px;
+				background: transparent;
+			}
+		}
+
+		.image-slot {
+			width: 100%;
+			height: 100%;
+			border-radius: 4px;
+			background: #253642;
+			position: relative;
+
+			.file-download {
+				position: absolute;
+				display: none;
+				align-items: center;
+				justify-content: center;
+				font-size: 20px;
+				background: rgba(0, 0, 0, 0.8);
+				top: 0;
+				left: 0;
+				right: 0;
+				bottom: 0;
+				color: #fff;
+				cursor: pointer;
+			}
+
+			.image-text {
+				font-size: 20px;
+				width: 100%;
+				height: 100%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				color: #fff;
+				font-weight: bold;
+
+				&:hover {
+					.file-download {
+						display: flex;
+					}
+				}
+			}
+
+		}
+
+		.common-update-image-box {
+			display: flex;
+			position: relative;
+			margin-right: 5px;
+		}
+
+		.common-update-image {
+			display: flex;
+			flex-wrap: wrap;
+
+			.common-update-image-box {
+				margin: 4px 8px 4px 0;
+			}
+
+			.el-image {
+				width: 100px;
+				height: 100px;
+				border-radius: 2px;
+				background: transparent;
+			}
+
+			.common-update-close {
+				position: absolute;
+				right: -7px;
+				top: -7px;
+				background: $--color-danger;
+				width: 14px;
+				height: 14px;
+				line-height: 14px;
+				text-align: center;
+				border-radius: 50%;
+				font-size: 10px;
+				cursor: pointer;
+				color: #fff;
+			}
+		}
+	}
 </style>

+ 30 - 27
virgo.wzfrontend/workark/src/components/flow/flowDetail.vue

@@ -2,37 +2,40 @@
 	<div class="hui-flex">
 		<div class="hui-flex-box">
 			<div class="hui-detail">
-				<el-tabs>
-					<el-tab-pane label="基础信息">
-						<property-flow-detail v-if="detail.flowType === 1" :formData="detail"></property-flow-detail>
-						<change-flow-detail v-if="detail.flowType === 2" :formData="detail"></change-flow-detail>
-						<depreciation-flow-detail v-if="detail.flowType === 3"
-							:formData="detail"></depreciation-flow-detail>
-						<inventory-flow-detail v-if="detail.flowType === 4" :formData="detail"></inventory-flow-detail>
-						<device-flow-detail v-if="detail.flowType === 5" :formData="detail"></device-flow-detail>
-					</el-tab-pane>
-					<el-tab-pane label="流程文件">
-						<div class="hui-detail-content">
-							<div class="hui-detail-item">
-								<div class="hui-detail-label">流程附件</div>
-								<div class="hui-detail-value">
-									<upload ref="upload" :list="detail.attachment ? JSON.parse(detail.attachment) : []"
-										type="preview">
-									</upload>
-								</div>
+				<div class="hui-detail-box">
+					<div class="hui-detail-title">基础信息</div>
+					<property-flow-detail v-if="detail.flowType === 1" :formData="detail"></property-flow-detail>
+					<change-flow-detail v-if="detail.flowType === 2" :formData="detail"></change-flow-detail>
+					<depreciation-flow-detail v-if="detail.flowType === 3"
+						:formData="detail"></depreciation-flow-detail>
+					<inventory-flow-detail v-if="detail.flowType === 4" :formData="detail"></inventory-flow-detail>
+					<device-flow-detail v-if="detail.flowType === 5" :formData="detail"></device-flow-detail>
+				</div>
+				<div class="hui-detail-box">
+					<div class="hui-detail-title">附件抄送</div>
+					<div class="hui-detail-content">
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">流程附件</div>
+							<div class="hui-detail-value">
+								<upload ref="upload" :list="detail.attachment ? JSON.parse(detail.attachment) : []"
+									type="preview">
+								</upload>
 							</div>
-							<div class="hui-detail-item">
-								<div class="hui-detail-label">抄送人</div>
-								<div class="hui-detail-value">
-									<cc :ccList="detail.receiver ? JSON.parse(detail.receiver) : []"></cc>
-								</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">抄送人</div>
+							<div class="hui-detail-value">
+								<cc :ccList="detail.receiver ? JSON.parse(detail.receiver) : []"></cc>
 							</div>
 						</div>
-					</el-tab-pane>
-					<el-tab-pane label="审核流程">
+					</div>
+				</div>
+				<div class="hui-detail-box">
+					<div class="hui-detail-title">审核流程</div>
+					<div class="hui-detail-content">
 						<flow :flowlist="flowUserList"></flow>
-					</el-tab-pane>
-				</el-tabs>
+					</div>
+				</div>
 			</div>
 		</div>
 		<div class="hui-drawer-submit" v-if="activeList.length>0">

+ 99 - 12
virgo.wzfrontend/workark/src/components/website/createOrder.vue

@@ -12,7 +12,7 @@
 							</el-table-column>
 							<el-table-column label="价格" prop="price" width="100">
 								<template slot-scope="scope">
-									<span class="color-red">{{scope.row.price}}</span>
+									<span class="color-danger">{{scope.row.price}}</span>
 								</template>
 							</el-table-column>
 						</el-table>
@@ -51,17 +51,17 @@
 			</div>
 			<div class="create-order-submit">
 				<div class="create-order-price">
-					<div v-if="isCount" class="color-red">
+					<div v-if="isCount" class="color-danger">
 						正在计算...
 					</div>
 					<div v-else>
 						<div>
 							<span>应付费用:</span>
-							<span class="color-red">¥</span>
-							<span class="color-red">{{countPriceData.totalFee}}</span>
+							<span class="color-danger">¥</span>
+							<span class="color-danger">{{countPriceData.totalFee}}</span>
 						</div>
 						<div class="discount-num">
-							<span class="color-red">减 ¥ <span>{{minus}}</span></span>
+							<span class="color-danger">减 ¥ <span>{{minus}}</span></span>
 						</div>
 					</div>
 				</div>
@@ -71,12 +71,32 @@
 			</div>
 		</div>
 		<div class="hui-flex" v-else>
-			<el-result icon="success" title="订单创建成功" :subTitle="subTitle">
+			<el-result icon="success" title="订单创建成功,请支付" :subTitle="`订单编号:${order.orderNo}`">
 				<template slot="extra">
-					<el-button size="small" @click="lookOrder">查看订单</el-button>
+					<div class="extra-box">
+						<div class="pay-list">
+							<div class="pay-item active">
+								<i class="iconfont huifont-weixinzhifu"></i>
+								<span class="label">微信支付</span>
+								<div class="icon-check">
+									<i class="el-icon-check"></i>
+								</div>
+							</div>
+						</div>
+						<div class="pay-button">
+							<el-button size="small" @click="lookOrder">查看订单</el-button>
+							<el-button type="primary" size="small" @click="dialogVisible = true">立即支付</el-button>
+						</div>
+					</div>
 				</template>
 			</el-result>
 		</div>
+		<el-dialog :close-on-click-modal="false" title="支付订单" :visible.sync="dialogVisible" width="600px"
+			:append-to-body="true">
+			<pay-order v-if="dialogVisible" :orderNo="order.orderNo">
+				<el-button size="small" @click="lookOrder">查看订单</el-button>
+			</pay-order>
+		</el-dialog>
 	</div>
 </template>
 
@@ -92,7 +112,7 @@
 	import {
 		getServeDepartmentById
 	} from '@/api/system'
-
+	const payOrder = () => import('@/components/website/payOrder');
 	export default {
 		props: ['serveId'],
 		data() {
@@ -108,8 +128,9 @@
 				productData: {},
 				loading: false,
 				isCreate: false,
-				subTitle: '',
-				isStacking: false
+				isStacking: false,
+				order: {},
+				dialogVisible: false
 			}
 		},
 		mounted() {
@@ -125,6 +146,9 @@
 				return num;
 			}
 		},
+		components: {
+			payOrder
+		},
 		methods: {
 			init() {
 				getServeById(this.serveId).then(res => {
@@ -179,9 +203,9 @@
 				createOreder(this.productData.id, this.$store.getters.organization.id, couponIds).then(res => {
 					this.loading = false;
 					if (res.state) {
-						this.$message.success('操作成功');
-						this.subTitle = '订单编号:' + res.data.orderNo;
+						this.order = res.data;
 						this.isCreate = true;
+						this.$message.success('操作成功');
 					}
 				})
 			},
@@ -204,6 +228,69 @@
 		background: $--background-color-base;
 		padding: 15px;
 
+		.pay-list {
+			display: flex;
+			margin-bottom: 20px;
+
+			.pay-item {
+				display: flex;
+				align-items: center;
+				border: 1px solid $--border-color-light;
+				padding: 5px 20px 5px 10px;
+				background: $--color-white;
+				position: relative;
+				overflow: hidden;
+
+				.el-icon-check {
+					font-size: 12px;
+				}
+
+				.icon-check {
+					color: #fff;
+					white-space: nowrap;
+					transform: rotate(45deg);
+					position: absolute;
+					top: -6px;
+					right: -15px;
+					background: #165dff;
+					width: 40px;
+					text-align: center;
+					height: 20px;
+					display: flex;
+					align-items: flex-end;
+					justify-content: center;
+
+				}
+
+				&.active {
+					border-color: $--color-primary;
+				}
+
+				.huifont-weixinzhifu {
+					color: #57b050;
+					font-size: 30px;
+					margin-right: 10px;
+				}
+
+				.label {
+					font-weight: bold;
+					cursor: pointer;
+				}
+			}
+
+			.pay-button {
+				.el-button:first-child {
+					margin-right: 20px;
+				}
+			}
+		}
+
+		.extra-box {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+		}
+
 		.create-order-submit {
 			background: #fff;
 			display: flex;

+ 90 - 0
virgo.wzfrontend/workark/src/components/website/payOrder.vue

@@ -0,0 +1,90 @@
+<template>
+	<div class="pay-order-box">
+		<div class="pay-order-item"><span class="label">订单编号:</span><span>{{orderNo}}</span></div>
+		<div class="pay-order-item"><span class="label">支付方式:</span><span>微信支付</span></div>
+		<div v-if="state === 'NOTPAY'">
+			<div class="pay-img" v-if="payUrl">
+				<img :src="payUrl" alt="pay.png" />
+			</div>
+		</div>
+		<div v-else-if="state === 'SUCCESS'">
+			<el-result icon="success" title="支付成功">
+				<template slot="extra">
+					<slot></slot>
+				</template>
+			</el-result>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		createPayQR,
+		getOrderPayState
+	} from '@/api/pay'
+	export default {
+		props: ['orderNo'],
+		data() {
+			return {
+				payUrl: '',
+				timer: null,
+				state: ''
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		beforeDestroy() {
+			this.stopTimer();
+		},
+		methods: {
+			init() {
+				createPayQR(this.orderNo).then(res => {
+					if (res.state) {
+						this.payUrl = res.data.base64;
+						this.findState();
+					}
+				})
+			},
+			findState() {
+				this.timer = setInterval(() => {
+					getOrderPayState(this.orderNo).then(res => {
+						if (res.state) {
+							this.state = res.data;
+							if (this.state !== 'NOTPAY') this.stopTimer();
+							if (this.state === 'SUCCESS') this.$emit('callback', 'payState');
+						}
+					})
+				}, 3000)
+			},
+			stopTimer() {
+				if (!this.timer) return;
+				clearTimeout(this.timer);
+				this.timer = null;
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.pay-order-box {
+		padding: 20px;
+
+		.pay-order-item {
+			margin-bottom: 10px;
+
+			.label {
+				font-weight: bold;
+			}
+		}
+
+		.pay-img {
+			text-align: center;
+
+			img {
+				width: 300px;
+				height: 300px;
+			}
+		}
+	}
+</style>

+ 43 - 43
virgo.wzfrontend/workark/src/components/work/discount/coupon/detail.vue

@@ -1,50 +1,50 @@
 <template>
 	<div class="hui-detail">
-		<el-tabs>
-			<el-tab-pane label="基础信息">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">优惠标题</div>
-						<div class="hui-detail-value">{{detail.title}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">优惠类型</div>
-						<div class="hui-detail-value">{{detail.type === 1?'现金折扣':'打折折扣'}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">叠加使用</div>
-						<div class="hui-detail-value">{{detail.onverlayUse === 0?'不可叠加':'可叠加'}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">门槛金额(元)</div>
-						<div class="hui-detail-value">{{detail.threshold}}元</div>
-					</div>
-					<div class="hui-detail-item" v-if="detail.type === 1">
-						<div class="hui-detail-label">优惠金额(元)</div>
-						<div class="hui-detail-value">{{detail.couponAmount}}元</div>
-					</div>
-					<div class="hui-detail-item" v-if="detail.type === 2">
-						<div class="hui-detail-label">折扣</div>
-						<div class="hui-detail-value">{{detail.discount*100}}折</div>
-					</div>
-					<div class="hui-detail-item" v-if="detail.type === 2">
-						<div class="hui-detail-label">最高抵扣(元)</div>
-						<div class="hui-detail-value">{{detail.mostConstraint}}元</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">有效期(小时)</div>
-						<div class="hui-detail-value">{{detail.lifespan}}小时</div>
-					</div>
+		<div class="hui-detail-box">
+			<div class="hui-detail-title">基础信息</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">优惠标题</div>
+					<div class="hui-detail-value">{{detail.title}}</div>
 				</div>
-			</el-tab-pane>
-			<el-tab-pane label="使用规则" v-if="detail.description && detail.description != '[]'">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item" v-for="(item,index) in JSON.parse(detail.description)" :key="index">
-						<div class="hui-detail-value">{{(index+1)+'.'+item.content}}</div>
-					</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">优惠类型</div>
+					<div class="hui-detail-value">{{detail.type === 1?'现金折扣':'打折折扣'}}</div>
 				</div>
-			</el-tab-pane>
-		</el-tabs>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">叠加使用</div>
+					<div class="hui-detail-value">{{detail.onverlayUse === 0?'不可叠加':'可叠加'}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">门槛金额(元)</div>
+					<div class="hui-detail-value">{{detail.threshold}}元</div>
+				</div>
+				<div class="hui-detail-item" v-if="detail.type === 1">
+					<div class="hui-detail-label">优惠金额(元)</div>
+					<div class="hui-detail-value">{{detail.couponAmount}}元</div>
+				</div>
+				<div class="hui-detail-item" v-if="detail.type === 2">
+					<div class="hui-detail-label">折扣</div>
+					<div class="hui-detail-value">{{detail.discount*100}}折</div>
+				</div>
+				<div class="hui-detail-item" v-if="detail.type === 2">
+					<div class="hui-detail-label">最高抵扣(元)</div>
+					<div class="hui-detail-value">{{detail.mostConstraint}}元</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">有效期(小时)</div>
+					<div class="hui-detail-value">{{detail.lifespan}}小时</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-detail-box" v-if="detail.description && detail.description != '[]'">
+			<div class="hui-detail-title">使用规则</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item" v-for="(item,index) in JSON.parse(detail.description)" :key="index">
+					<div class="hui-detail-value">{{(index+1)+'.'+item.content}}</div>
+				</div>
+			</div>
+		</div>
 	</div>
 </template>
 

+ 31 - 32
virgo.wzfrontend/workark/src/components/work/organization/depart/detail.vue

@@ -1,37 +1,36 @@
 <template>
 	<div class="hui-detail">
-		<el-tabs>
-			<el-tab-pane label="基础信息">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">部门名称</div>
-						<div class="hui-detail-value">{{detail.name}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">部门人数</div>
-						<div class="hui-detail-value">{{!detail.users ? 0 : detail.users.length}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">部门描述</div>
-						<div class="hui-detail-value"> {{detail.remark}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">负责人</div>
-						<div class="hui-detail-value">
-							<cc :ccList="detail.responsible ? JSON.parse(detail.responsible) : []"></cc>
-						</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">项目职责</div>
-						<div class="hui-detail-value">
-							<upload ref="upload" :list="detail.responsibility ? JSON.parse(detail.responsibility) : []"
-								type="preview">
-							</upload>
-						</div>
-					</div>
-				</div>
-			</el-tab-pane>
-		</el-tabs>
+		<div class="hui-detail-box">
+			<div class="hui-detail-title">基础信息</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">部门名称</div>
+					<div class="hui-detail-value">{{detail.name}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">部门人数</div>
+					<div class="hui-detail-value">{{!detail.users ? 0 : detail.users.length}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">部门描述</div>
+					<div class="hui-detail-value"> {{detail.remark}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">负责人</div>
+					<div class="hui-detail-value">
+						<cc :ccList="detail.responsible ? JSON.parse(detail.responsible) : []"></cc>
+					</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">项目职责</div>
+					<div class="hui-detail-value">
+						<upload ref="upload" :list="detail.responsibility ? JSON.parse(detail.responsibility) : []"
+							type="preview">
+						</upload>
+					</div>
+				</div>
+			</div>
+		</div>
 	</div>
 </template>
 

+ 18 - 20
virgo.wzfrontend/workark/src/components/work/organization/seal/detail.vue

@@ -1,27 +1,25 @@
 <template>
 	<div class="hui-detail">
-		<el-tabs>
-			<el-tab-pane label="基础信息">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">印章名称</div>
-						<div class="hui-detail-value">{{detail.name}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">印章描述</div>
-						<div class="hui-detail-value"> {{detail.comment}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">印章图片</div>
-						<div class="hui-detail-value">
-							<upload ref="upload" :list="responsibility" type="preview">
-							</upload>
-						</div>
+		<div class="hui-detail-box">
+			<div class="hui-detail-title">基础信息</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">印章名称</div>
+					<div class="hui-detail-value">{{detail.name}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">印章描述</div>
+					<div class="hui-detail-value"> {{detail.comment}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">印章图片</div>
+					<div class="hui-detail-value">
+						<upload ref="upload" :list="responsibility" type="preview">
+						</upload>
 					</div>
 				</div>
-			</el-tab-pane>
-		</el-tabs>
-		<div class="hui-detail-title"></div>
+			</div>
+		</div>
 	</div>
 </template>
 

+ 29 - 30
virgo.wzfrontend/workark/src/components/work/organization/user/detail.vue

@@ -1,35 +1,34 @@
 <template>
 	<div class="hui-detail">
-		<el-tabs>
-			<el-tab-pane label="基础信息">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">头像</div>
-						<div class="hui-detail-value">
-							<div style="width: 40px;height: 40px;border-radius: 4px;overflow: hidden;">
-								<avatar :user="user" :size="18"></avatar>
-							</div>
-						</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">名称</div>
-						<div class="hui-detail-value">{{user.name}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">性别</div>
-						<div class="hui-detail-value">{{user.sex == 'M'?'男':'女'}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">电话</div>
-						<div class="hui-detail-value">{{user.phone}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">部门</div>
-						<div class="hui-detail-value">{{user.partName}}</div>
-					</div>
-				</div>
-			</el-tab-pane>
-		</el-tabs>
+		<div class="hui-detail-box">
+			<div class="hui-detail-title">基础信息</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">头像</div>
+					<div class="hui-detail-value">
+						<div style="width: 40px;height: 40px;border-radius: 4px;overflow: hidden;">
+							<avatar :user="user" :size="18"></avatar>
+						</div>
+					</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">名称</div>
+					<div class="hui-detail-value">{{user.name}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">性别</div>
+					<div class="hui-detail-value">{{user.sex == 'M'?'男':'女'}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">电话</div>
+					<div class="hui-detail-value">{{user.phone}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">部门</div>
+					<div class="hui-detail-value">{{user.partName}}</div>
+				</div>
+			</div>
+		</div>
 	</div>
 </template>
 

+ 40 - 40
virgo.wzfrontend/workark/src/components/work/serve/content/detail.vue

@@ -1,50 +1,50 @@
 <template>
 	<div class="hui-detail">
-		<el-tabs>
-			<el-tab-pane label="基础信息">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">主标题</div>
-						<div class="hui-detail-value">{{detail.name}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">副标题</div>
-						<div class="hui-detail-value">{{detail.subtitle}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">价格(元)</div>
-						<div class="hui-detail-value">{{detail.price}}</div>
-					</div>
+		<div class="hui-detail-box">
+			<div class="hui-detail-title">基础信息</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">主标题</div>
+					<div class="hui-detail-value">{{detail.name}}</div>
 				</div>
-			</el-tab-pane>
-			<el-tab-pane label="商品附件">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">商品配图</div>
-						<div class="hui-detail-value">
-							<upload :list="detail.rotatingImages ? JSON.parse(detail.rotatingImages) : []"
-								type="preview">
-							</upload>
-						</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">详情配图</div>
-						<div class="hui-detail-value">
-							<upload :list="detail.detailedImage ? JSON.parse(detail.detailedImage) : []" type="preview">
-							</upload>
-						</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">副标题</div>
+					<div class="hui-detail-value">{{detail.subtitle}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">价格(元)</div>
+					<div class="hui-detail-value">{{detail.price}}</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-detail-box">
+			<div class="hui-detail-title">商品附件</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">商品配图</div>
+					<div class="hui-detail-value">
+						<upload :list="detail.rotatingImages ? JSON.parse(detail.rotatingImages) : []" type="preview">
+						</upload>
 					</div>
 				</div>
-			</el-tab-pane>
-			<el-tab-pane label="商品介绍" v-if="detail.intro && detail.intro != '[]'">
-				<div class="hui-detail-content">
-					<div class="hui-detail-item" v-for="(item,index) in JSON.parse(detail.intro)" :key="index">
-						<div class="hui-detail-label">{{item.title}}</div>
-						<div class="hui-detail-value">{{item.content}}</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">详情配图</div>
+					<div class="hui-detail-value">
+						<upload :list="detail.detailedImage ? JSON.parse(detail.detailedImage) : []" type="preview">
+						</upload>
 					</div>
 				</div>
-			</el-tab-pane>
-		</el-tabs>
+			</div>
+		</div>
+		<div class="hui-detail-box" v-if="detail.intro && detail.intro != '[]'">
+			<div class="hui-detail-title">商品介绍</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item" v-for="(item,index) in JSON.parse(detail.intro)" :key="index">
+					<div class="hui-detail-label">{{item.title}}</div>
+					<div class="hui-detail-value">{{item.content}}</div>
+				</div>
+			</div>
+		</div>
 	</div>
 </template>
 

+ 150 - 0
virgo.wzfrontend/workark/src/components/work/serve/list/detail.vue

@@ -0,0 +1,150 @@
+<template>
+	<div class="hui-flex">
+		<div class="hui-flex-box">
+			<div class="hui-detail">
+				<div class="hui-detail-box">
+					<div class="hui-detail-title">基础信息</div>
+					<div class="hui-detail-content">
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">订单编号</div>
+							<div class="hui-detail-value">{{part.orderNo}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">商品名称</div>
+							<div class="hui-detail-value">{{part.title}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">价格(元)</div>
+							<div class="hui-detail-value">{{part.totalFee}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">创建时间</div>
+							<div class="hui-detail-value">{{part.createTime}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">支付状态</div>
+							<div class="hui-detail-value">
+								<span :class="part.orderStatus === '未支付'?'color-warning':'color-success'">
+									{{part.orderStatus}}
+								</span>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="hui-detail-box">
+					<div class="hui-detail-title">订单过程</div>
+					<div class="hui-detail-content" style="min-height: 300px;padding:0;">
+						<process-set v-if="part.id" :part="part" type="product" :key="reloadKey"></process-set>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-drawer-submit" v-if="activeList.length > 0">
+			<el-button size="small" :type="item.type" v-for="item in activeList" :key="item.id" @click="action(item)">
+				{{item.name}}
+			</el-button>
+		</div>
+		<el-dialog :close-on-click-modal="false" title="过程修改" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<process-set v-if="visible" @callback="callback" :part="part" type="product" operationType="edit">
+			</process-set>
+		</el-dialog>
+		<el-dialog :close-on-click-modal="false" title="支付订单" :visible.sync="dialogVisible" width="600px"
+			:append-to-body="true">
+			<pay-order v-if="dialogVisible" :orderNo="part.orderNo" @callback="callback"></pay-order>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		getOrederDetail
+	} from '@/api/serve'
+	const processSet = () => import('@/components/work/system/serveSet/processSet');
+	const payOrder = () => import('@/components/website/payOrder');
+	export default {
+		props: ['detailId', 'type'],
+		data() {
+			return {
+				part: {},
+				activeList: [],
+				visible: false,
+				reloadKey: false,
+				dialogVisible: false,
+				timeOut: null
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		beforeDestroy() {
+			if (!this.timeOut) return;
+			clearTimeout(this.timeOut);
+			this.timeOut = null
+		},
+		methods: {
+			init() {
+				this.activeList = [];
+				getOrederDetail(this.detailId).then(res => {
+					if (res.state) {
+						this.part = res.data;
+						if (this.type === 2) { //服务商
+							this.activeList = [{
+								id: 1,
+								type: 'warning',
+								name: '修改过程'
+							}, {
+								id: 2,
+								type: 'primary',
+								name: '确认过程'
+							}]
+						}
+						if (this.type === 1) { //客户
+							if (this.part.orderStatus === '未支付') {
+								this.activeList = [{
+									id: 3,
+									type: 'primary',
+									name: '立即支付'
+								}]
+							}
+						}
+					}
+				})
+			},
+			action(item) {
+				switch (item.id) {
+					case 1:
+						this.visible = true;
+						break;
+					case 2:
+						break;
+					case 3:
+						this.dialogVisible = true;
+						break;
+					default:
+						break;
+				}
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+				if (type === 'reloadKey') this.reloadKey = !this.reloadKey;
+				if (type === 'payState') {
+					this.activeList = [];
+					this.timeOut = setTimeout(() => {
+						this.$emit('callback', 'init');
+						clearTimeout(this.timeOut);
+						this.timeOut = null
+					}, 3000)
+				}
+			}
+		},
+		components: {
+			processSet,
+			payOrder
+		}
+	}
+</script>
+
+<style>
+</style>

+ 32 - 11
virgo.wzfrontend/workark/src/components/work/system/serveSet/processForm.vue

@@ -36,11 +36,14 @@
 <script>
 	import {
 		insertProcessSetData,
+		insertProcessData,
 		getProcessSetDataById,
-		updateProcessSetData
+		getProcessDataById,
+		updateProcessSetData,
+		updateProcessData
 	} from '@/api/system'
 	export default {
-		props: ['isUpdate', 'itemId', 'productCouponModelId'],
+		props: ['isUpdate', 'itemId', 'partId', 'type'],
 		data() {
 			return {
 				departmentForm: {
@@ -59,17 +62,26 @@
 		},
 		mounted() {
 			if (this.isUpdate) {
-				getProcessSetDataById(this.itemId).then(res => {
-					if (res.state) {
-						this.departmentForm = res.data;
-					}
-				})
+				if (this.type === 'model') {
+					getProcessSetDataById(this.itemId).then(this.initSuccess);
+				} else {
+					getProcessDataById(this.itemId).then(this.initSuccess);
+				}
 			} else {
 				this.departmentForm['parentId'] = this.itemId;
-				this.departmentForm['productCouponModelId'] = this.productCouponModelId;
+				if (this.type === 'model') {
+					this.departmentForm['productLevelId'] = this.partId;
+				} else {
+					this.departmentForm['orderId'] = this.partId;
+				}
 			}
 		},
 		methods: {
+			initSuccess(res) {
+				if (res.state) {
+					this.departmentForm = res.data;
+				}
+			},
 			submit() {
 				this.loading = true;
 				let postData = JSON.parse(JSON.stringify(this.departmentForm));
@@ -78,10 +90,19 @@
 					delete postData.roleId;
 				}
 				if (postData.sequence === 0) delete postData.sequence;
-				if (this.isUpdate) {
-					updateProcessSetData(postData).then(this.successFunc)
+
+				if (this.type === 'model') {
+					if (this.isUpdate) {
+						updateProcessSetData(postData).then(this.successFunc)
+					} else {
+						insertProcessSetData(postData).then(this.successFunc)
+					}
 				} else {
-					insertProcessSetData(postData).then(this.successFunc)
+					if (this.isUpdate) {
+						updateProcessData(postData).then(this.successFunc)
+					} else {
+						insertProcessData(postData).then(this.successFunc)
+					}
 				}
 			},
 			successFunc(res) {

+ 35 - 20
virgo.wzfrontend/workark/src/components/work/system/serveSet/processSet.vue

@@ -1,10 +1,10 @@
 <template>
-	<div class="process-set">
-		<process-set-item v-loading="loading" :list="list" type="edit" @callback="callback"></process-set-item>
+	<div class="process-set" v-loading="loading">
+		<process-set-item :list="list" :type="operationType"></process-set-item>
 		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
 			:append-to-body="true">
-			<process-form v-if="visible" @callback="callback" :isUpdate="isUpdate" :itemId="itemId"
-				:productCouponModelId="part.id">
+			<process-form v-if="visible" @callback="callback" :isUpdate="isUpdate" :itemId="itemId" :type="type"
+				:partId="part.id">
 			</process-form>
 		</el-dialog>
 	</div>
@@ -15,13 +15,15 @@
 	const processForm = () => import('./processForm');
 	import {
 		getProcessSetData,
-		deleteProcessSetData
+		deleteProcessSetData,
+		getProcessData,
+		deleteProcessData,
 	} from '@/api/system'
 	import {
 		mapGetters
 	} from 'vuex';
 	export default {
-		props: ['part'],
+		props: ['part', 'type', 'operationType'],
 		data() {
 			return {
 				list: [],
@@ -37,12 +39,17 @@
 		methods: {
 			init() {
 				this.loading = true;
-				getProcessSetData(this.part.id).then(res => {
-					if (res.state) {
-						this.list = res.data;
-					}
-					this.loading = false;
-				})
+				if (this.type === 'model') {
+					getProcessSetData(this.part.id).then(this.initSuccess);
+				} else {
+					getProcessData(this.part.id).then(this.initSuccess);
+				}
+			},
+			initSuccess(res) {
+				if (res.state) {
+					this.list = res.data;
+				}
+				this.loading = false;
 			},
 			edit() {
 				let data = this.$store.getters.processSet;
@@ -65,17 +72,25 @@
 			},
 			deleteDepartment() {
 				this.$confirm('确定要删除该过程?', () => {
-					deleteProcessSetData(this.itemId).then(res => {
-						if (res.state) {
-							this.$message.success('操作成功');
-							this.init();
-						}
-					})
+					if (this.type === 'model') {
+						deleteProcessSetData(this.itemId).then(this.deleteSUccessFunc);
+					} else {
+						deleteProcessData(this.itemId).then(this.deleteSUccessFunc);
+					}
 				});
 			},
+			deleteSUccessFunc(res) {
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.init();
+				}
+			},
 			callback(type) {
 				this.visible = false;
-				if (type === 'init') this.init();
+				if (type === 'init') {
+					this.init();
+					this.$emit('callback', 'reloadKey');
+				}
 			}
 		},
 		computed: {
@@ -87,7 +102,7 @@
 		},
 		watch: {
 			processSet() {
-				this.edit()
+				if (this.operationType === 'edit') this.edit();
 			}
 		},
 	}

+ 56 - 56
virgo.wzfrontend/workark/src/components/work/system/serveSet/processSetItem.vue

@@ -1,57 +1,57 @@
-<template>
-	<div>
-		<div :class="returnItemClass(item)" v-for="(item,index) in list" :key="item.id">
-			<div class="process-set-state">
-				<div class="process-set-state-2">
-					<div class="process-set-state-1"></div>
-				</div>
-			</div>
-			<div class="line line-top" v-if="index >0"></div>
-			<div class="line line-bottom" v-if="index < list.length-1 || type === 'edit'"></div>
-			<div class="process-item-title">
-				<span class="label">{{index+1}}.{{item.name}}</span>
-				<i class="el-icon-edit-outline color-blue" v-if="type === 'edit'" @click="edit('update', item.id)"></i>
-				<i class="el-icon-delete color-red" v-if="type === 'edit'" @click="edit('delete', item.id)"></i>
-			</div>
-			<div class="process-item-content" v-if="item.children">
-				<process-set-item :list="item.children" :type="type" :parentId="item.id">
-				</process-set-item>
-			</div>
-		</div>
-		<div class="process-set-insert" @click="edit('insert', parentId || -1)">新增</div>
-	</div>
-</template>
-
-<script>
-	const processSetItem = () => import('./processSetItem.vue');
-	export default {
-		props: ['list', 'type', 'parentId'],
-		mounted() {},
-		methods: {
-			returnItemClass(item) {
-				let str = '';
-				switch (item.state) {
-					case 1:
-						str = 'success'
-						break;
-					default:
-						str = 'info'
-						break;
-				}
-				return 'process-set-item ' + str;
-			},
-			edit(type, id) {
-				this.$store.dispatch('app/changeProcessSet', {
-					type,
-					id
-				});
-			}
-		},
-		components: {
-			processSetItem
-		}
-	}
-</script>
-
-<style>
+<template>
+	<div>
+		<div :class="returnItemClass(item)" v-for="(item,index) in list" :key="item.id">
+			<div class="process-set-state">
+				<div class="process-set-state-2">
+					<div class="process-set-state-1"></div>
+				</div>
+			</div>
+			<div class="line line-top" v-if="index >0"></div>
+			<div class="line line-bottom" v-if="index < list.length-1 || type === 'edit'"></div>
+			<div class="process-item-title">
+				<span class="label">{{index+1}}.{{item.name}}</span>
+				<i class="el-icon-edit-outline color-primary" v-if="type === 'edit'" @click="edit('update', item.id)"></i>
+				<i class="el-icon-delete color-danger" v-if="type === 'edit'" @click="edit('delete', item.id)"></i>
+			</div>
+			<div class="process-item-content" v-if="item.children">
+				<process-set-item :list="item.children" :type="type" :parentId="item.id">
+				</process-set-item>
+			</div>
+		</div>
+		<div class="process-set-insert" @click="edit('insert', parentId || -1)" v-if="type === 'edit'">新增</div>
+	</div>
+</template>
+
+<script>
+	const processSetItem = () => import('./processSetItem.vue');
+	export default {
+		props: ['list', 'type', 'parentId'],
+		mounted() {},
+		methods: {
+			returnItemClass(item) {
+				let str = '';
+				switch (item.state) {
+					case 1:
+						str = 'success'
+						break;
+					default:
+						str = 'info'
+						break;
+				}
+				return 'process-set-item ' + str;
+			},
+			edit(type, id) {
+				this.$store.dispatch('app/changeProcessSet', {
+					type,
+					id
+				});
+			}
+		},
+		components: {
+			processSetItem
+		}
+	}
+</script>
+
+<style>
 </style>

+ 202 - 202
virgo.wzfrontend/workark/src/layout/components/indexNav.vue

@@ -1,203 +1,203 @@
-<template>
-	<div class="layout-title">
-		<div class="title-box">
-			<div class="title-logo">
-				<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01"
-					alt="logo.png" @click="$router.push('/')">
-				<div class="title-label" @click="$router.push('/')">
-					<div class="title-name">红链WORKARK</div>
-					<div class="title-sub-name">SMART PARK SYSTEM</div>
-				</div>
-			</div>
-			<div class="login" v-if="user.userId">
-				<div class="login-avatar">
-					<avatar :user="user"></avatar>
-				</div>
-				<span class="login-name">{{user.userName}}</span>
-				<span class="color-blue logout" @click="logout">退出</span>
-				<span class="admin-system" @click="$router.push('/work')">控制台</span>
-			</div>
-			<div class="login" v-else>
-				<div class="login-icon">
-					<i class="el-icon-s-custom"></i>
-				</div>
-				<span class="login-name" @click="loginFunc">登录 / 注册</span>
-				<span class="admin-system" @click="$router.push('/work')">控制台</span>
-			</div>
-		</div>
-		<el-dialog custom-class="login-custom" :close-on-click-modal="false" :visible.sync="dialogVisible"
-			:append-to-body="true">
-			<login v-if="dialogVisible" @callback="callback"></login>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import {
-		removeToken
-	} from '@/uitls/auth';
-	import {
-		mapGetters
-	} from 'vuex';
-	const login = () => import('./login');
-	export default {
-		data() {
-			return {
-				user: {},
-				dialogVisible: false
-			}
-		},
-		mounted() {
-			this.init();
-		},
-		methods: {
-			init() {
-				this.user = this.$store.getters.user;
-			},
-			loginFunc() {
-				this.dialogVisible = true;
-			},
-			logout() {
-				this.$confirm('是否要退出登录?', () => {
-					removeToken();
-					this.$store.dispatch('app/resetState');
-					this.$message.success('退出成功');
-					this.init();
-				});
-			},
-			callback(type) {
-				this.dialogVisible = false;
-				if (type == 'init') this.init();
-			}
-		},
-		computed: {
-			...mapGetters(['loginVisible'])
-		},
-		watch: {
-			loginVisible(val) {
-				this.dialogVisible = true;
-			}
-		},
-		components: {
-			login
-		}
-	}
-</script>
-
-<style lang="scss">
-	.login-custom {
-		width: 440px !important;
-		height: auto !important;
-
-		.el-dialog__header {
-			display: none;
-		}
-	}
-
-	.layout-title {
-		width: 100%;
-		height: 60px;
-		z-index: 9;
-		background: $--color-white;
-		box-shadow: 0px 1px 12px rgba(3, 3, 3, 0.1);
-
-		.title-box {
-			width: 1200px;
-			height: 100%;
-			margin: 0 auto;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-		}
-
-		.title-logo {
-			display: flex;
-			align-items: center;
-
-			img {
-				width: 44px;
-				height: 44px;
-				border-radius: 4px;
-				margin-right: 10px;
-				cursor: pointer;
-			}
-
-		}
-
-		.title-label {
-			width: 130px;
-			cursor: pointer;
-		}
-
-		.title-name {
-			font-size: 16px;
-			line-height: 22px;
-			font-weight: 500;
-		}
-
-		.title-sub-name {
-			font-size: 12px;
-			transform: scale(.68) translateX(-28px);
-			opacity: .75;
-		}
-
-		.location {
-			border: 2px solid #fff;
-			border-radius: 26px;
-			height: 26px;
-			padding: 0 10px;
-			display: flex;
-			align-items: center;
-			cursor: pointer;
-		}
-
-		.location-name {
-			font-size: 12px;
-			margin-left: 3px;
-		}
-
-		.login {
-			display: flex;
-			align-items: center;
-		}
-
-		.logout {
-			font-size: 12px;
-			margin-left: 5px;
-			cursor: pointer;
-		}
-
-		.login-avatar {
-			width: 32px;
-			height: 32px;
-			border-radius: 32px;
-			margin-right: 10px;
-			overflow: hidden;
-		}
-
-		.login-icon {
-			width: 32px;
-			height: 32px;
-			border: 2px solid #fff;
-			border-radius: 32px;
-			text-align: center;
-			line-height: 32px;
-
-			.el-icon-s-custom {
-				font-size: 20px;
-			}
-		}
-
-		.login-name {
-			cursor: pointer;
-			font-weight: 500;
-		}
-
-		.admin-system {
-			margin-left: 20px;
-			cursor: pointer;
-			font-weight: 500;
-		}
-	}
+<template>
+	<div class="layout-title">
+		<div class="title-box">
+			<div class="title-logo">
+				<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01"
+					alt="logo.png" @click="$router.push('/')">
+				<div class="title-label" @click="$router.push('/')">
+					<div class="title-name">红链WORKARK</div>
+					<div class="title-sub-name">SMART PARK SYSTEM</div>
+				</div>
+			</div>
+			<div class="login" v-if="user.userId">
+				<div class="login-avatar">
+					<avatar :user="user"></avatar>
+				</div>
+				<span class="login-name">{{user.userName}}</span>
+				<span class="color-primary logout" @click="logout">退出</span>
+				<span class="admin-system" @click="$router.push('/work')">控制台</span>
+			</div>
+			<div class="login" v-else>
+				<div class="login-icon">
+					<i class="el-icon-s-custom"></i>
+				</div>
+				<span class="login-name" @click="loginFunc">登录 / 注册</span>
+				<span class="admin-system" @click="$router.push('/work')">控制台</span>
+			</div>
+		</div>
+		<el-dialog custom-class="login-custom" :close-on-click-modal="false" :visible.sync="dialogVisible"
+			:append-to-body="true">
+			<login v-if="dialogVisible" @callback="callback"></login>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		removeToken
+	} from '@/uitls/auth';
+	import {
+		mapGetters
+	} from 'vuex';
+	const login = () => import('./login');
+	export default {
+		data() {
+			return {
+				user: {},
+				dialogVisible: false
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				this.user = this.$store.getters.user;
+			},
+			loginFunc() {
+				this.dialogVisible = true;
+			},
+			logout() {
+				this.$confirm('是否要退出登录?', () => {
+					removeToken();
+					this.$store.dispatch('app/resetState');
+					this.$message.success('退出成功');
+					this.init();
+				});
+			},
+			callback(type) {
+				this.dialogVisible = false;
+				if (type == 'init') this.init();
+			}
+		},
+		computed: {
+			...mapGetters(['loginVisible'])
+		},
+		watch: {
+			loginVisible(val) {
+				this.dialogVisible = true;
+			}
+		},
+		components: {
+			login
+		}
+	}
+</script>
+
+<style lang="scss">
+	.login-custom {
+		width: 440px !important;
+		height: auto !important;
+
+		.el-dialog__header {
+			display: none;
+		}
+	}
+
+	.layout-title {
+		width: 100%;
+		height: 60px;
+		z-index: 9;
+		background: $--color-white;
+		box-shadow: 0px 1px 12px rgba(3, 3, 3, 0.1);
+
+		.title-box {
+			width: 1200px;
+			height: 100%;
+			margin: 0 auto;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+		}
+
+		.title-logo {
+			display: flex;
+			align-items: center;
+
+			img {
+				width: 44px;
+				height: 44px;
+				border-radius: 4px;
+				margin-right: 10px;
+				cursor: pointer;
+			}
+
+		}
+
+		.title-label {
+			width: 130px;
+			cursor: pointer;
+		}
+
+		.title-name {
+			font-size: 16px;
+			line-height: 22px;
+			font-weight: 500;
+		}
+
+		.title-sub-name {
+			font-size: 12px;
+			transform: scale(.68) translateX(-28px);
+			opacity: .75;
+		}
+
+		.location {
+			border: 2px solid #fff;
+			border-radius: 26px;
+			height: 26px;
+			padding: 0 10px;
+			display: flex;
+			align-items: center;
+			cursor: pointer;
+		}
+
+		.location-name {
+			font-size: 12px;
+			margin-left: 3px;
+		}
+
+		.login {
+			display: flex;
+			align-items: center;
+		}
+
+		.logout {
+			font-size: 12px;
+			margin-left: 5px;
+			cursor: pointer;
+		}
+
+		.login-avatar {
+			width: 32px;
+			height: 32px;
+			border-radius: 32px;
+			margin-right: 10px;
+			overflow: hidden;
+		}
+
+		.login-icon {
+			width: 32px;
+			height: 32px;
+			border: 2px solid #fff;
+			border-radius: 32px;
+			text-align: center;
+			line-height: 32px;
+
+			.el-icon-s-custom {
+				font-size: 20px;
+			}
+		}
+
+		.login-name {
+			cursor: pointer;
+			font-weight: 500;
+		}
+
+		.admin-system {
+			margin-left: 20px;
+			cursor: pointer;
+			font-weight: 500;
+		}
+	}
 </style>

+ 2 - 2
virgo.wzfrontend/workark/src/views/website/serveDetail.vue

@@ -18,7 +18,7 @@
 						<div class="house-name">{{detail.name}}</div>
 						<div class="sub-title">{{detail.subtitle}}</div>
 						<div class="house-price">
-							<div class="color-red price">
+							<div class="color-danger price">
 								<span class="average alibaba">{{detail.price}}</span><span class="unit">元/次</span>
 							</div>
 							<div class="button-box">
@@ -89,7 +89,7 @@
 					if (res.state) {
 						if (res.data.length === 0) return this.loading = false;
 						this.list = res.data;
-						this.initDetail(0);
+						this.initDetail(this.list.length - 1);
 					} else {
 						this.loading = false;
 					}

+ 1 - 1
virgo.wzfrontend/workark/src/views/work/organization/manager.vue

@@ -24,7 +24,7 @@
 								<div class="manager-label">公司代码</div>
 								<div class="manager-value">
 									{{organization.organizationCode}}
-									<i class="el-icon-copy-document color-blue" title="点击复制"
+									<i class="el-icon-copy-document color-primary" title="点击复制"
 										@click="copyText(organization.organizationCode)"></i>
 								</div>
 							</div>

+ 26 - 31
virgo.wzfrontend/workark/src/views/work/serve/list.vue

@@ -18,9 +18,11 @@
 					<el-table-column label="商品名称" prop="title"></el-table-column>
 					<el-table-column label="价格" prop="totalFee"></el-table-column>
 					<el-table-column label="创建时间" prop="createTime"></el-table-column>
-					<el-table-column label="状态" align="center">
+					<el-table-column label="支付状态" align="center">
 						<template slot-scope="scope">
-							<span>{{scope.row.orderStatus}}</span>
+							<span :class="scope.row.orderStatus === '未支付'?'color-warning':'color-success'">
+								{{scope.row.orderStatus}}
+							</span>
 						</template>
 					</el-table-column>
 					<el-table-column label="操作" width="150">
@@ -30,14 +32,6 @@
 									@click="lookItem(scope.row)">
 									详情
 								</span>
-								<span class="table-operation" v-permission="'/work/property/change/update'"
-									v-if="nowTitle.id === 2" @click="updateItem(scope.row)">
-									编辑
-								</span>
-								<span class="table-operation" v-permission="'/work/property/change/delete'"
-									@click="deleteItem(scope.row)">
-									删除
-								</span>
 							</div>
 						</template>
 					</el-table-column>
@@ -52,6 +46,9 @@
 				</el-pagination>
 			</div>
 		</div>
+		<el-drawer title="订单过程详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :detailId="detailId" :type="nowTitle.id" @callback="callback"></detail>
+		</el-drawer>
 	</div>
 </template>
 
@@ -62,6 +59,7 @@
 	import {
 		getOrderListByQueryAndSize
 	} from '@/api/serve'
+	const detail = () => import('@/components/work/serve/list/detail');
 	export default {
 		data() {
 			return {
@@ -73,7 +71,9 @@
 				totalCount: 0,
 				level: {},
 				filterOption: {},
-				loading: false
+				loading: false,
+				drawer: false,
+				detailId: ''
 			}
 		},
 		mounted() {
@@ -84,15 +84,20 @@
 						id: 1,
 						name: res.data.name
 					}]
-					if (this.$store.getters.organization.facilitator === 1) this.titleData.push({
-						id: 2,
-						name: '订单管理'
-					})
+					if (this.$store.getters.organization.facilitator === 1) {
+						this.titleData.push({
+							id: 2,
+							name: '订单管理'
+						})
+					}
 					this.nowTitle = this.titleData[0];
 					this.init();
 				}
 			})
 		},
+		components: {
+			detail
+		},
 		methods: {
 			init() {
 				let filterOption = {
@@ -120,22 +125,9 @@
 				this.currPage = currPage;
 				this.init();
 			},
-			updateItem(val) {
-				this.detailId = val.id;
-				this.isUpdate = true;
-				this.visible = true;
-			},
-			updateItemFunc(val, data) {
-				this.loading = true;
-				updateServe({
-					id: data.id,
-					state: val
-				}).then(res => {
-					if (res.state) {
-						this.$message.success('操作成功');
-						this.init();
-					}
-				})
+			lookItem(data) {
+				this.detailId = data.id;
+				this.drawer = true
 			},
 			deleteItem(val) {
 				this.$confirm('确定要删除服务?', () => {
@@ -146,6 +138,9 @@
 						}
 					})
 				});
+			},
+			callback(type) {
+				if (type === 'init') this.init();
 			}
 		}
 	}