whx 2 kuukautta sitten
vanhempi
commit
983b740938
71 muutettua tiedostoa jossa 1030 lisäystä ja 85 poistoa
  1. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/index.html
  2. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/4353.c7153a1f.css
  3. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/1055.b8ec6015.css
  4. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.4b10f312.css
  5. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.61388afc.css
  6. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/118.a8d9d701.js
  7. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1296.84790232.js
  8. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1660.669df7cb.js
  9. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1736.193d8eb1.js
  10. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1764.1789e6e7.js
  11. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2156.b12cecd1.js
  12. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/224.39716042.js
  13. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/224.67fd6c9e.js
  14. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2288.fae3db32.js
  15. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.70081c8f.js
  16. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2657.629dcf04.js
  17. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2725.7c9917fe.js
  18. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2912.c6cbf799.js
  19. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2925.b35777e0.js
  20. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3249.878dcb29.js
  21. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3419.017b9a01.js
  22. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3768.b66d246d.js
  23. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4353.305839b4.js
  24. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/518.04db3141.js
  25. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/555.75bf17e0.js
  26. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6077.1ec7d1c1.js
  27. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6103.153f9d57.js
  28. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6329.522ef7e3.js
  29. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6466.a49b1060.js
  30. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.a5b55035.js
  31. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6991.da5327dd.js
  32. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7218.9c7603a1.js
  33. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7268.53a432dd.js
  34. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7883.84d909fe.js
  35. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.ccf1830d.js
  36. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.d1219fb9.js
  37. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8375.9d2db53d.js
  38. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8484.8d6a5d8a.js
  39. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8710.a2bc264b.js
  40. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.9531ecdc.js
  41. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9073.69e5873f.js
  42. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9076.960768a1.js
  43. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9183.eba736ed.js
  44. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9279.329280fa.js
  45. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9293.e5ff6996.js
  46. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9372.e0286144.js
  47. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1055.08579aff.js
  48. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9542.17e1a24d.js
  49. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.7c0b90ce.js
  50. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9709.08466898.js
  51. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/app.21de2beb.js
  52. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/app.baaf8455.js
  53. 117 0
      virgo.wzfrontend/workark/src/api/finace.js
  54. 11 0
      virgo.wzfrontend/workark/src/api/serve.js
  55. 6 1
      virgo.wzfrontend/workark/src/assets/css/common.scss
  56. 1 1
      virgo.wzfrontend/workark/src/components/common/upload.vue
  57. 111 0
      virgo.wzfrontend/workark/src/components/work/finace/invoice/apply/detail.vue
  58. 120 0
      virgo.wzfrontend/workark/src/components/work/finace/invoice/apply/edit.vue
  59. 62 0
      virgo.wzfrontend/workark/src/components/work/finace/invoice/header/detail.vue
  60. 87 0
      virgo.wzfrontend/workark/src/components/work/finace/invoice/header/edit.vue
  61. 134 0
      virgo.wzfrontend/workark/src/components/work/finace/invoice/invoiceHeader.vue
  62. 1 1
      virgo.wzfrontend/workark/src/components/work/serve/content/detail.vue
  63. 1 1
      virgo.wzfrontend/workark/src/components/work/serve/content/edit.vue
  64. 37 20
      virgo.wzfrontend/workark/src/components/work/serve/list/detail.vue
  65. 15 6
      virgo.wzfrontend/workark/src/components/work/system/serveSet/processSet.vue
  66. 28 17
      virgo.wzfrontend/workark/src/components/work/system/serveSet/processSetItem.vue
  67. 9 1
      virgo.wzfrontend/workark/src/config/field.js
  68. 16 0
      virgo.wzfrontend/workark/src/router/modules/work/finance.js
  69. 156 0
      virgo.wzfrontend/workark/src/views/work/finance/invoice.vue
  70. 25 0
      virgo.wzfrontend/workark/src/views/work/finance/invoiceHeader.vue
  71. 52 8
      virgo.wzfrontend/workark/src/views/work/serve/list.vue

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/index.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/4353.c7153a1f.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/1055.b8ec6015.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.4b10f312.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.61388afc.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/118.a8d9d701.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1296.84790232.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1660.669df7cb.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1736.193d8eb1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1764.1789e6e7.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2156.b12cecd1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/224.39716042.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/224.67fd6c9e.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2288.fae3db32.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.70081c8f.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2657.629dcf04.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2725.7c9917fe.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2912.c6cbf799.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/2925.b35777e0.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/3249.878dcb29.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3419.017b9a01.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3768.b66d246d.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4353.305839b4.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/518.04db3141.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/555.75bf17e0.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6077.1ec7d1c1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/6103.153f9d57.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/6329.522ef7e3.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6466.a49b1060.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.a5b55035.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/6991.da5327dd.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/7218.9c7603a1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/7268.53a432dd.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/7883.84d909fe.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.ccf1830d.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8083.d1219fb9.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8375.9d2db53d.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8484.8d6a5d8a.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8710.a2bc264b.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.9531ecdc.js


virgo.wzfrontend/src/main/resources/static/workark/static/js/9073.e2daa9cb.js → virgo.wzfrontend/src/main/resources/static/workark/static/js/9073.69e5873f.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9076.960768a1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/9183.eba736ed.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/9279.329280fa.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/9293.e5ff6996.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/9372.e0286144.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1055.08579aff.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9542.17e1a24d.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.7c0b90ce.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9709.08466898.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/app.21de2beb.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/app.baaf8455.js


+ 117 - 0
virgo.wzfrontend/workark/src/api/finace.js

@@ -0,0 +1,117 @@
+import request from '@/axios'
+/* 
+ * 通过条件获取发票抬头列表
+ * 
+ * 
+ */
+export function getInvoiceModelListByQuery(data) {
+	return request({
+		url: `/api/workarkInvoice/model/query`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增发票抬头
+ * 
+ * 
+ */
+export function insertInvoiceModel(data) {
+	return request({
+		url: `/api/workarkInvoice/model`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 编辑发票抬头
+ * 
+ * 
+ */
+export function updateInvoiceModel(data) {
+	return request({
+		url: `/api/workarkInvoice/update`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 通过ID获取发票抬头
+ * 
+ * 
+ */
+export function getInvoiceModelDetailById(id) {
+	return request({
+		url: `/api/workarkInvoice/model/details/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 删除发票抬头
+ * 
+ * 
+ */
+export function deleteInvoiceModelById(id) {
+	return request({
+		url: `/api/workarkInvoice/model/delete/${id}`,
+		method: 'delete'
+	})
+}
+/* 
+ * 通过条件分页获取发票列表
+ * 
+ * 
+ */
+export function getInvoiceListByQueryAndPage(currPage, pageSize, data) {
+	return request({
+		url: `/api/workarkInvoice/${currPage}/${pageSize}`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增发票
+ * 
+ * 
+ */
+export function insertInvoice(data) {
+	return request({
+		url: `/api/workarkInvoice`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 更新发票
+ * 
+ * 
+ */
+export function updateInvoice(data) {
+	return request({
+		url: `/api/workarkInvoice/update`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 通过ID获取发票详情
+ * 
+ * 
+ */
+export function getInvoiceDetailById(id) {
+	return request({
+		url: `/api/workarkInvoice/details/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 删除发票
+ * 
+ * 
+ */
+export function deleteInvoiceById(id) {
+	return request({
+		url: `/api/workarkInvoice/delete/${id}`,
+		method: 'delete'
+	})
+}

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

@@ -127,6 +127,17 @@ export function getOrederDetail(id) {
 		method: 'get'
 	})
 }
+/* 
+ * 通过订单编号获取订单详情
+ * 
+ * 
+ */
+export function getOrederDetailByOrderNo(orderNo) {
+	return request({
+		url: `/api/workarkOrderInfo/orderNo/${orderNo}`,
+		method: 'get'
+	})
+}
 /* 
  * 修改订单金额
  * 

+ 6 - 1
virgo.wzfrontend/workark/src/assets/css/common.scss

@@ -252,7 +252,8 @@
 	.el-dialog__body {
 		padding: 0;
 		flex: 1;
-		height: 0;
+		height: 0;
+		overflow-y: auto;
 	}
 }
 
@@ -319,6 +320,10 @@
 
 	.hui-state-primary {
 		background: $--color-primary;
+	}
+	
+	.hui-state-waiting {
+		background: $--color-warning;
 	}
 }
 

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

@@ -289,7 +289,7 @@
 			width: 100%;
 			height: 100%;
 			border-radius: 4px;
-			background: #253642;
+			background: #38556a;
 			position: relative;
 
 			.file-download {

+ 111 - 0
virgo.wzfrontend/workark/src/components/work/finace/invoice/apply/detail.vue

@@ -0,0 +1,111 @@
+<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">{{detail.createTime}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">发票类型</div>
+							<div class="hui-detail-value">{{$field.findTypeName('invoiceType',detail.type)}}</div>
+						</div>
+						<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.taxpayerIdentificationNumber}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">注册电话</div>
+							<div class="hui-detail-value">{{detail.phone}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">开户银行</div>
+							<div class="hui-detail-value">{{detail.bankAccount}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">银行账号</div>
+							<div class="hui-detail-value">{{detail.bankAccountNumber}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">发票内容</div>
+							<div class="hui-detail-value">{{detail.content}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">发票金额</div>
+							<div class="hui-detail-value">{{detail.amount}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">注册地址</div>
+							<div class="hui-detail-value">{{detail.address}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">状态</div>
+							<div class="hui-detail-value">
+								<span class="color-warning" v-if="!detail.state">开具中</span>
+								<span class="color-success" v-else>
+									已开具
+								</span>
+							</div>
+						</div>
+					</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>
+	</div>
+</template>
+
+<script>
+	import {
+		getInvoiceDetailById
+	} from '@/api/finace'
+	export default {
+		props: ['detailId', 'type'],
+		data() {
+			return {
+				detail: {},
+				activeList: []
+			}
+		},
+		mounted() {
+			if (this.detailId) this.init();
+		},
+		methods: {
+			init() {
+				getInvoiceDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.detail = res.data;
+						if (this.type === 2 && !this.detail.state) this.activeList = [{
+							id: 1,
+							type: 'primary',
+							name: '开具发票'
+						}];
+					}
+				})
+			},
+			action(item) {
+				switch (item.state) {
+					case 1:
+						this.$message.warning('功能开发中');
+						break;
+					default:
+						break;
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 120 - 0
virgo.wzfrontend/workark/src/components/work/finace/invoice/apply/edit.vue

@@ -0,0 +1,120 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" :model="form" label-position="top">
+				<el-form-item label="发票类型" prop="type" :rules="[{required: true, message: '请选择发票类型'}]">
+					<el-select v-model="form.type" placeholder="请选择发票类型">
+						<el-option :label="item.name" :value="item.id" v-for="(item,index) in $field.field.invoiceType"
+							:key="item.id">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="单位名称" prop="name" :rules="[{required: true, message: '请输入单位名称'}]">
+					<div style="display: flex;align-items: center;">
+						<el-input type="text" v-model="form.name" placeholder="请输入单位名称"></el-input>
+						<div style="margin-left: 10px;">
+							<el-button size="small" type="primary" @click="visible = true">选择发票抬头</el-button>
+						</div>
+					</div>
+				</el-form-item>
+				<el-form-item label="纳税人识别号" prop="taxpayerIdentificationNumber"
+					:rules="[{required: true, message: '请输入纳税人识别号'}]">
+					<el-input type="text" v-model="form.taxpayerIdentificationNumber" placeholder="请输入纳税人识别号">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="注册地址">
+					<el-input type="text" v-model="form.address" placeholder="请输入注册地址"></el-input>
+				</el-form-item>
+				<el-form-item label="注册电话">
+					<el-input type="text" v-model="form.phone" placeholder="请输入注册电话"></el-input>
+				</el-form-item>
+				<el-form-item label="开户银行">
+					<el-input type="text" v-model="form.bankAccount" placeholder="请输入开户银行"></el-input>
+				</el-form-item>
+				<el-form-item label="银行账号">
+					<el-input type="text" v-model="form.bankAccountNumber" placeholder="请输入银行账号"></el-input>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="small" @click="$emit('callback')">取 消</el-button>
+			<el-button size="small" type="primary" @click="submit" :loading="loading">保 存</el-button>
+		</div>
+		<el-dialog :close-on-click-modal="false" title="选择发票抬头" :visible.sync="visible" width="1100px"
+			:append-to-body="true">
+			<div class="hui-flex hui-content hui-dialog">
+				<invoice-header ref="selectInvoiceHeader" v-if="visible" type="filter"></invoice-header>
+				<div class="hui-dialog-submit">
+					<el-button size="small" @click="visible = false">取 消</el-button>
+					<el-button size="small" type="primary" @click="selectInvoiceHeader">确定</el-button>
+				</div>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		insertInvoice
+	} from '@/api/finace'
+	const invoiceHeader = () => import('@/components/work/finace/invoice/invoiceHeader');
+	export default {
+		props: ['orderNo'],
+		data() {
+			return {
+				form: {
+					type: 1,
+					name: '',
+					taxpayerIdentificationNumber: '',
+					address: '',
+					phone: '',
+					bankAccount: '',
+					bankAccountNumber: ''
+				},
+				visible: false,
+				loading: false,
+			}
+		},
+		mounted() {
+			this.form['userId'] = this.$store.getters.user.userId;
+			this.form['organizationId'] = this.$store.getters.organization.id;
+			this.form['orderNo'] = this.orderNo;
+		},
+		methods: {
+			submit() {
+				this.$refs.form.validate(valid => {
+					if (valid) {
+						this.loading = true;
+						let postData = JSON.parse(JSON.stringify(this.form));
+						insertInvoice(postData).then(this.successFunc)
+					}
+				});
+			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			},
+			selectInvoiceHeader() {
+				this.visible = false;
+				if (!this.$refs.selectInvoiceHeader) return;
+				let data = this.$refs.selectInvoiceHeader.currentRow;
+				if (!data) return;
+				this.form['invoiceModelId'] = data.id;
+				this.form['name'] = data.name;
+				this.form['taxpayerIdentificationNumber'] = data.taxpayerIdentificationNumber;
+				this.form['address'] = data.address;
+				this.form['phone'] = data.phone;
+				this.form['bankAccount'] = data.bankAccount;
+				this.form['bankAccountNumber'] = data.bankAccountNumber;
+			}
+		},
+		components: {
+			invoiceHeader
+		}
+	}
+</script>
+
+<style lang="scss"></style>

+ 62 - 0
virgo.wzfrontend/workark/src/components/work/finace/invoice/header/detail.vue

@@ -0,0 +1,62 @@
+<template>
+	<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">{{detail.name}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">纳税人识别号</div>
+					<div class="hui-detail-value">{{detail.taxpayerIdentificationNumber}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">注册电话</div>
+					<div class="hui-detail-value">{{detail.phone}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">开户银行</div>
+					<div class="hui-detail-value">{{detail.bankAccount}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">银行账号</div>
+					<div class="hui-detail-value">{{detail.bankAccountNumber}}</div>
+				</div>
+				<div class="hui-detail-item">
+					<div class="hui-detail-label">注册地址</div>
+					<div class="hui-detail-value">{{detail.address}}</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getInvoiceModelDetailById
+	} from '@/api/finace'
+	export default {
+		props: ['detailId'],
+		data() {
+			return {
+				detail: {}
+			}
+		},
+		mounted() {
+			if (this.detailId) this.init();
+		},
+		methods: {
+			init() {
+				getInvoiceModelDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.detail = res.data;
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 87 - 0
virgo.wzfrontend/workark/src/components/work/finace/invoice/header/edit.vue

@@ -0,0 +1,87 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form :model="form" label-position="top">
+				<el-form-item label="单位名称">
+					<el-input type="text" v-model="form.name" placeholder="请输入单位名称"></el-input>
+				</el-form-item>
+				<el-form-item label="纳税人识别号">
+					<el-input type="text" v-model="form.taxpayerIdentificationNumber" placeholder="请输入纳税人识别号">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="注册地址">
+					<el-input type="text" v-model="form.address" placeholder="请输入注册地址"></el-input>
+				</el-form-item>
+				<el-form-item label="注册电话">
+					<el-input type="text" v-model="form.phone" placeholder="请输入注册电话"></el-input>
+				</el-form-item>
+				<el-form-item label="开户银行">
+					<el-input type="text" v-model="form.bankAccount" placeholder="请输入开户银行"></el-input>
+				</el-form-item>
+				<el-form-item label="银行账号">
+					<el-input type="text" v-model="form.bankAccountNumber" placeholder="请输入银行账号"></el-input>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="small" @click="$emit('callback')">取 消</el-button>
+			<el-button size="small" type="primary" @click="submit" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		insertInvoiceModel,
+		updateInvoiceModel,
+		getInvoiceModelDetailById
+	} from '@/api/finace'
+	export default {
+		props: ['isUpdate', 'detailId'],
+		data() {
+			return {
+				form: {
+					name: '',
+					taxpayerIdentificationNumber: '',
+					address: '',
+					phone: '',
+					bankAccount: '',
+					bankAccountNumber: ''
+				},
+				loading: false,
+			}
+		},
+		mounted() {
+			if (this.isUpdate) {
+				getInvoiceModelDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.form = res.data;
+					}
+				})
+			} else {
+				this.form['userId'] = this.$store.getters.user.userId;
+				this.form['organizationId'] = this.$store.getters.organization.id;
+			}
+		},
+		methods: {
+			submit() {
+				this.loading = true;
+				let postData = JSON.parse(JSON.stringify(this.form));
+				if (this.isUpdate) {
+					updateInvoiceModel(postData).then(this.successFunc)
+				} else {
+					insertInvoiceModel(postData).then(this.successFunc)
+				}
+			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss"></style>

+ 134 - 0
virgo.wzfrontend/workark/src/components/work/finace/invoice/invoiceHeader.vue

@@ -0,0 +1,134 @@
+<template>
+	<div class="hui-flex-box hui-flex hui-table">
+		<div class="hui-content-insert">
+			<el-button v-permission="'/work/organization/user/add'" type="primary" size="small" @click="insertItem">
+				发票抬头
+			</el-button>
+		</div>
+		<div class="hui-flex-box">
+			<el-table :data="tableData" row-key="id" height="100%" v-loading="loading"
+				@current-change="handleCurrentChange">
+				<el-table-column width="35" v-if="type === 'filter'">
+					<template slot-scope="scope">
+						<el-radio class="radio" :label="scope.row" v-model="currentRow">{{""}}</el-radio>
+					</template>
+				</el-table-column>
+				<el-table-column label="序号" width="50" v-else>
+					<template slot-scope="scope">
+						<div style="text-align: center;">{{scope.$index + 1}}</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="单位名称" prop="name"></el-table-column>
+				<el-table-column label="纳税人识别号" prop="taxpayerIdentificationNumber"></el-table-column>
+				<el-table-column label="开户银行" prop="bankAccount"></el-table-column>
+				<el-table-column label="银行账号" prop="bankAccountNumber"></el-table-column>
+				<el-table-column label="操作" width="150" align="center" v-if="type === 'list'">
+					<template slot-scope="scope">
+						<div class="hui-table-operation">
+							<span class="table-operation" @click="lookItem(scope.row)">
+								详情
+							</span>
+							<span class="table-operation" @click="updateItem(scope.row)">
+								编辑
+							</span>
+							<span class="table-operation" @click="deleteItem(scope.row)">
+								删除
+							</span>
+						</div>
+					</template>
+				</el-table-column>
+				<template slot="empty">
+					<el-empty description="暂无数据"></el-empty>
+				</template>
+			</el-table>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<edit v-if="visible" :isUpdate="isUpdate" @callback="callback" :detailId="detailId">
+			</edit>
+		</el-dialog>
+		<el-drawer title="发票抬头详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :detailId="detailId"></detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	import {
+		getInvoiceModelListByQuery,
+		deleteInvoiceModelById
+	} from '@/api/finace'
+	const edit = () => import('./header/edit');
+	const detail = () => import('./header/detail');
+	export default {
+		props: ['type'],
+		data() {
+			return {
+				tableData: [],
+				loading: false,
+				filterOption: {},
+				visible: false,
+				isUpdate: false,
+				detailId: '',
+				drawer: false,
+				currentRow: ''
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				this.loading = true;
+				let filterOption = {
+					organizationId: this.$store.getters.organization.id
+				};
+				filterOption = Object.assign(filterOption, this.filterOption);
+				getInvoiceModelListByQuery(filterOption).then(res => {
+					if (res.state) {
+						this.tableData = res.data;
+						if (this.type === 'filter') this.currentRow = this.tableData[0];
+					}
+					this.loading = false;
+				})
+			},
+			handleCurrentChange(row) {
+				this.currentRow = row;
+			},
+			insertItem() {
+				this.visible = true;
+				this.isUpdate = false;
+			},
+			updateItem(val) {
+				this.detailId = val.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			lookItem(val) {
+				this.detailId = val.id;
+				this.drawer = true;
+			},
+			deleteItem(val) {
+				this.$confirm('确定要删除该发票抬头?', () => {
+					deleteInvoiceModelById(val.id).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			edit,
+			detail
+		}
+	}
+</script>
+
+<style>
+</style>

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

@@ -13,7 +13,7 @@
 				</div>
 				<div class="hui-detail-item">
 					<div class="hui-detail-label">价格(元)</div>
-					<div class="hui-detail-value">{{detail.price}}</div>
+					<div class="hui-detail-value color-danger">{{detail.price}}</div>
 				</div>
 			</div>
 		</div>

+ 1 - 1
virgo.wzfrontend/workark/src/components/work/serve/content/edit.vue

@@ -37,7 +37,7 @@
 		getServeById
 	} from '@/api/serve'
 	const upload = () => import('@/components/common/upload');
-	import customData from '@/components/common/customData'
+	const customData = () => import('@/components/common/customData');
 	export default {
 		props: ['isUpdate', 'detailId', 'productLevelId'],
 		data() {

+ 37 - 20
virgo.wzfrontend/workark/src/components/work/serve/list/detail.vue

@@ -5,6 +5,10 @@
 				<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.createTime}}</div>
+						</div>
 						<div class="hui-detail-item">
 							<div class="hui-detail-label">订单编号</div>
 							<div class="hui-detail-value">{{part.orderNo}}</div>
@@ -15,11 +19,7 @@
 						</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 class="hui-detail-value color-danger">{{part.totalFee}}</div>
 						</div>
 						<div class="hui-detail-item">
 							<div class="hui-detail-label">支付状态</div>
@@ -37,8 +37,12 @@
 									<div class="hui-state-label">待确认</div>
 								</div>
 								<div class="hui-state" v-else-if="part.status === 1">
+									<div class="hui-state-bage hui-state-waiting"></div>
+									<div class="hui-state-label">过程进行中</div>
+								</div>
+								<div class="hui-state" v-else-if="part.status === 2">
 									<div class="hui-state-bage hui-state-success"></div>
-									<div class="hui-state-label">已确认</div>
+									<div class="hui-state-label">已交付</div>
 								</div>
 							</div>
 						</div>
@@ -47,8 +51,9 @@
 				<div class="hui-detail-box">
 					<div class="hui-detail-title">订单过程</div>
 					<div class="hui-detail-content" style="padding:0;">
-						<process-set ref="processSet" v-if="part.id" :part="part" type="product"
-							:key="reloadKey"></process-set>
+						<process-set ref="processSet" @callback="callback" v-if="part.id" :part="part" type="product"
+							:key="reloadKey" :roleType="type">
+						</process-set>
 					</div>
 				</div>
 			</div>
@@ -74,12 +79,13 @@
 	import {
 		getOrederDetail,
 		changeOrderPrice,
-		changeOrderStatus
+		changeOrderStatus,
+		getOrederDetailByOrderNo
 	} from '@/api/serve'
 	const processSet = () => import('@/components/work/system/serveSet/processSet');
 	const payOrder = () => import('@/components/website/payOrder');
 	export default {
-		props: ['detailId', 'type'],
+		props: ['detailId', 'type', 'detailType'],
 		data() {
 			return {
 				part: {},
@@ -101,14 +107,21 @@
 		methods: {
 			init() {
 				this.activeList = [];
-				getOrederDetail(this.detailId).then(res => {
-					if (res.state) {
-						this.part = res.data;
-						this.type === 1 ? this.initCustomerRole() : this.initFacilitatorRole();
-					}
-				})
+				if (this.detailType === 'orderNo') {
+					getOrederDetailByOrderNo(this.detailId).then(this.initSuccessFunc)
+				} else {
+					getOrederDetail(this.detailId).then(this.initSuccessFunc)
+				}
+			},
+			initSuccessFunc(res) {
+				if (res.state) {
+					this.part = res.data;
+					if (this.detailType === 'orderNo') return;
+					this.type === 1 ? this.initCustomerRole() : this.initFacilitatorRole();
+				}
 			},
 			initFacilitatorRole() {
+				//status   0-待服务商确认  1-服务商已确认,过程开始   2.过程结束,已交付
 				//服务商
 				if (this.part.orderStatus === '未支付') this.activeList.push({
 					id: 1,
@@ -143,9 +156,7 @@
 						this.visible = true;
 						break;
 					case 3:
-						this.$confirm('是否确定订单,确认订单后将不能再修改', () => {
-							console.log('-----');
-							console.log(this.$refs.processSet);
+						this.$confirm('是否确定订单,确认订单后将不能再修改', () => {
 							this.$refs.processSet.initStatus();
 							changeOrderStatus({
 								orderNo: this.part.orderNo,
@@ -191,9 +202,9 @@
 				if (done) done();
 			},
 			callback(type) {
+				if (type === 'reloadKey') return this.reloadKey = !this.reloadKey;
 				this.visible = false;
 				if (type === 'init') this.init();
-				if (type === 'reloadKey') this.reloadKey = !this.reloadKey;
 				if (type === 'payState') {
 					this.activeList = [];
 					this.timeOut = setTimeout(() => {
@@ -203,6 +214,12 @@
 						this.timeOut = null;
 					}, 5000)
 				}
+				if (type === 'processSuccess') {
+					changeOrderStatus({
+						orderNo: this.part.orderNo,
+						status: 2
+					}).then(this.updateOrderSuccessFunc);
+				}
 			}
 		},
 		components: {

+ 15 - 6
virgo.wzfrontend/workark/src/components/work/system/serveSet/processSet.vue

@@ -1,6 +1,6 @@
 <template>
 	<div :class="'process-set '+type" v-loading="loading">
-		<process-set-item :list="list" :type="operationType"></process-set-item>
+		<process-set-item :list="list" :type="operationType" :roleType="roleType"></process-set-item>
 		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="800px"
 			:append-to-body="true">
 			<process-form v-if="visible" @callback="callback" :isUpdate="isUpdate" :itemId="itemId" :type="type"
@@ -24,7 +24,7 @@
 		mapGetters
 	} from 'vuex';
 	export default {
-		props: ['part', 'type', 'operationType'],
+		props: ['part', 'type', 'operationType', 'roleType'],
 		data() {
 			return {
 				list: [],
@@ -84,7 +84,8 @@
 			},
 			deleteSUccessFunc(res) {
 				if (res.state) {
-					this.$message.success('操作成功');
+					this.$message.success('操作成功');
+					this.$emit('callback', 'reloadKey');
 					this.init();
 				}
 			},
@@ -99,7 +100,7 @@
 			initStatus(num) {
 				let len = num || 0;
 				if (this.childList.length === 0) return;
-				let arr = this.childList[num];
+				let arr = this.childList[len];
 				updateProcessStatus(1, arr.id).then(res => {
 					if (res.state) {
 						this.init();
@@ -145,13 +146,15 @@
 					this.edit();
 				} else {
 					let data = this.$store.getters.processSet;
-					console.log(data);
 					if (data.type === 'reload') {
 						if (!data.id) {
 							this.init();
 						} else {
 							let index = this.childList.findIndex(node => node.id == data.id);
-							if (index === -1 || index === (this.childList.length - 1)) {
+							if (index === -1) {
+								this.init();
+							} else if (index === (this.childList.length - 1)) { //全部通过
+								this.$emit('callback', 'processSuccess');
 								this.init();
 							} else {
 								this.initStatus(index + 1);
@@ -201,6 +204,12 @@
 			margin-top: 10px;
 		}
 
+		.operation-buttons {
+			text-align: right;
+			padding-top: 10px;
+			margin-top: 10px;
+		}
+
 		.process-item-title {
 			padding: 5px 0;
 			display: flex;

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

@@ -15,29 +15,40 @@
 					@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="" v-if="item.attachment === 1 && (item.status === 1 || item.status === 4)">
-				<upload ref="upload" :list="!item.attachmentContent?[]:JSON.parse(item.attachmentContent)" type="edit"
-					text="上传文件" accept="*">
-				</upload>
-				<div class="operation-button">
-					<el-button size="mini" @click="submit(item)">保存草稿</el-button>
-					<el-button size="mini" type="primary" @click="submit(item, 2)">提交</el-button>
+			<!-- 可添加附件 -->
+			<div v-if="item.attachment === 1">
+				<div v-if="(item.status === 1 || item.status === 4) && item.roleId === roleType">
+					<upload ref="upload" :list="!item.attachmentContent?[]:JSON.parse(item.attachmentContent)"
+						type="edit" text="上传文件" accept="*">
+					</upload>
+					<div class="operation-button">
+						<el-button size="mini" @click="submit(item)">保存草稿</el-button>
+						<el-button size="mini" type="primary" @click="submit(item, 2)">提交</el-button>
+					</div>
+				</div>
+				<div v-else-if="item.status === 2 && roleType === 2">
+					<upload :list="!item.attachmentContent ? [] : JSON.parse(item.attachmentContent)">
+					</upload>
+					<div class="operation-button">
+						<el-button size="mini" type="primary" @click="updateStatus(item,3)">通过</el-button>
+						<el-button size="mini" type="danger" @click="updateStatus(item,4)">不通过</el-button>
+					</div>
+				</div>
+				<!-- 展示 -->
+				<div v-else-if="item.attachment === 1 && item.attachmentContent">
+					<upload :list="!item.attachmentContent ? [] : JSON.parse(item.attachmentContent)">
+					</upload>
 				</div>
 			</div>
-			<div class="" v-else-if="item.attachment === 1 && item.status === 2">
-				<upload :list="!item.attachmentContent ? [] : JSON.parse(item.attachmentContent)">
-				</upload>
-				<div class="operation-button">
+			<!-- 不可添加附件 -->
+			<div v-else-if="item.children.length === 0">
+				<div class="operation-buttons" v-if="item.status === 1 && roleType === 2">
 					<el-button size="mini" type="primary" @click="updateStatus(item,3)">通过</el-button>
 					<el-button size="mini" type="danger" @click="updateStatus(item,4)">不通过</el-button>
 				</div>
 			</div>
-			<div class="" v-else-if="item.attachment === 1 && item.attachmentContent">
-				<upload :list="!item.attachmentContent?[]:JSON.parse(item.attachmentContent)">
-				</upload>
-			</div>
 			<div class="process-item-content" v-if="item.children">
-				<process-set-item :list="item.children" :type="type" :parentId="item.id">
+				<process-set-item :list="item.children" :type="type" :parentId="item.id" :roleType="roleType">
 				</process-set-item>
 			</div>
 		</div>
@@ -53,7 +64,7 @@
 		updateProcessStatus
 	} from '@/api/system'
 	export default {
-		props: ['list', 'type', 'parentId'],
+		props: ['list', 'type', 'parentId', 'roleType'],
 		data() {
 			return {}
 		},

+ 9 - 1
virgo.wzfrontend/workark/src/config/field.js

@@ -17,6 +17,13 @@ const sealType = [{
 	id: 6,
 	name: '资料章'
 }];
+const invoiceType = [{
+	id: 1,
+	name: '增值税普通发票'
+}, {
+	id: 2,
+	name: '增值税电子普通发票'
+}];
 const findItem = (type, id) => {
 	return eval(type).find(node => node.id == id) || {
 		id: 0,
@@ -26,7 +33,8 @@ const findItem = (type, id) => {
 
 export default {
 	field: {
-		sealType
+		sealType,
+		invoiceType
 	},
 	findTypeName(type, id) {
 		return findItem(type, id).name;

+ 16 - 0
virgo.wzfrontend/workark/src/router/modules/work/finance.js

@@ -0,0 +1,16 @@
+const finance = [{
+	path: 'finance/invoice',
+	component: () => import('@/views/work/finance/invoice'),
+	name: '发票管理',
+	meta: {
+		title: '发票管理'
+	}
+}, {
+	path: 'finance/invoiceHeader',
+	component: () => import('@/views/work/finance/invoiceHeader'),
+	name: '发票抬头',
+	meta: {
+		title: '发票抬头'
+	}
+}]
+export default finance;

+ 156 - 0
virgo.wzfrontend/workark/src/views/work/finance/invoice.vue

@@ -0,0 +1,156 @@
+<template>
+	<div class="hui-flex hui-content border-box">
+		<div class="hui-content-title">
+			<div :class="nowTitle.id === item.id?'hui-title-item active':'hui-title-item'"
+				v-for="(item,index) in titleData" :key="index" @click="changeTitle(item)">
+				{{item.name}}
+			</div>
+		</div>
+		<div class="hui-flex-box hui-flex hui-table">
+			<div class="hui-flex-box">
+				<el-table :data="tableData" row-key="id" height="100%" v-loading="loading">
+					<el-table-column label="序号" width="50">
+						<template slot-scope="scope">
+							<div style="text-align: center;">{{scope.$index + 1}}</div>
+						</template>
+					</el-table-column>
+					<el-table-column label="单位名称" prop="name"></el-table-column>
+					<el-table-column label="纳税人识别号" prop="taxpayerIdentificationNumber"></el-table-column>
+					<el-table-column label="开户银行" prop="bankAccount"></el-table-column>
+					<el-table-column label="银行账号" prop="bankAccountNumber"></el-table-column>
+					<el-table-column label="状态">
+						<template slot-scope="scope">
+							<div class="hui-table-operation">
+								<span class="color-warning" v-if="!scope.row.state">开具中</span>
+								<span class="color-success" v-else>
+									已开具
+								</span>
+							</div>
+						</template>
+					</el-table-column>
+					<el-table-column label="操作" width="150" align="center">
+						<template slot-scope="scope">
+							<div class="hui-table-operation">
+								<span class="table-operation" @click="lookItem(scope.row,2)">
+									详情
+								</span>
+								<span class="table-operation" @click="lookOrder(scope.row,1)">
+									查看订单
+								</span>
+							</div>
+						</template>
+					</el-table-column>
+					<template slot="empty">
+						<el-empty description="暂无数据"></el-empty>
+					</template>
+				</el-table>
+			</div>
+			<div class="hui-content-pagination">
+				<el-pagination :pager-count="9" layout="prev, pager, next" :page-size="pageSize" :total="totalCount"
+					@current-change="currentChange" background>
+				</el-pagination>
+			</div>
+		</div>
+		<el-drawer :title=" type === 1?'订单详情':'发票详情'" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer && type === 1" :detailId="detailId" detailType="orderNo"></detail>
+			<invoice-detail v-if="drawer && type === 2" :detailId="detailId" :type="nowTitle.id"></invoice-detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	import {
+		getInvoiceListByQueryAndPage,
+		deleteInvoiceById
+	} from '@/api/finace'
+	const detail = () => import('@/components/work/serve/list/detail');
+	const invoiceDetail = () => import('@/components/work/finace/invoice/apply/detail');
+	export default {
+		data() {
+			return {
+				titleData: [],
+				nowTitle: {},
+				tableData: [],
+				currPage: 1,
+				pageSize: 15,
+				totalCount: 0,
+				loading: false,
+				detailId: '',
+				drawer: false,
+				type: 1
+			}
+		},
+		mounted() {
+			this.titleData = [{
+				id: 1,
+				name: '我的发票'
+			}]
+			if (this.$store.getters.organization.facilitator === 1) {
+				this.titleData.push({
+					id: 2,
+					name: '待我开具'
+				})
+			}
+			this.nowTitle = this.titleData[0];
+			this.init();
+		},
+		methods: {
+			init() {
+				this.loading = true;
+				let filterOption = {};
+				if (this.nowTitle.id === 1) filterOption['organizationId'] = this.$store.getters.organization.id;
+				if (this.nowTitle.id === 2) filterOption['providerId'] = this.$store.getters.organization.id;
+				filterOption = Object.assign(filterOption, this.filterOption);
+				getInvoiceListByQueryAndPage(this.currPage, this.pageSize, filterOption).then(res => {
+					if (res.state) {
+						this.tableData = res.data.dataList;
+						this.totalCount = res.data.totalCount;
+					}
+					this.loading = false;
+				})
+			},
+			changeTitle(item) {
+				if (this.nowTitle.id === item.id) return;
+				this.nowTitle = item;
+				this.pageSize = 10;
+				this.currPage = 1;
+				this.init();
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			lookItem(data, type) {
+				this.type = type;
+				this.detailId = data.id;
+				this.drawer = true;
+			},
+			lookOrder(data, type) {
+				this.type = type;
+				this.detailId = data.orderNo;
+				this.drawer = true;
+			},
+			deleteItem(data) {
+				this.$confirm('确定要删除该发票?', () => {
+					deleteInvoiceById(data.id).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			detail,
+			invoiceDetail
+		}
+	}
+</script>
+
+<style>
+</style>

+ 25 - 0
virgo.wzfrontend/workark/src/views/work/finance/invoiceHeader.vue

@@ -0,0 +1,25 @@
+<template>
+	<div class="hui-flex hui-content border-box">
+		<div class="hui-content-title">
+			<div class="hui-title-item active">发票管理</div>
+		</div>
+		<invoice-header type="list"></invoice-header>
+	</div>
+</template>
+
+<script>
+	const invoiceHeader = () => import('@/components/work/finace/invoice/invoiceHeader');
+	export default {
+		data() {
+			return {}
+		},
+		mounted() {},
+		methods: {},
+		components: {
+			invoiceHeader
+		}
+	}
+</script>
+
+<style>
+</style>

+ 52 - 8
virgo.wzfrontend/workark/src/views/work/serve/list.vue

@@ -32,8 +32,28 @@
 								<div class="hui-state-label">待确认</div>
 							</div>
 							<div class="hui-state" v-else-if="scope.row.status === 1">
+								<div class="hui-state-bage hui-state-waiting"></div>
+								<div class="hui-state-label">过程进行中</div>
+							</div>
+							<div class="hui-state" v-else-if="scope.row.status === 2">
 								<div class="hui-state-bage hui-state-success"></div>
-								<div class="hui-state-label">已确认</div>
+								<div class="hui-state-label">已交付</div>
+							</div>
+						</template>
+					</el-table-column>
+					<el-table-column label="订单发票" align="center" v-if="nowTitle.id === 1">
+						<template slot-scope="scope">
+							<div class="hui-table-operation">
+								<span v-if="nowTitle.id === 1 && scope.row.orderStatus === '支付成功'">
+									<span class="table-operation" v-if="!scope.row.invoice"
+										@click="applyInvoice(scope.row)">
+										开具发票
+									</span>
+									<span class="color-warning" v-else-if="!scope.row.invoice.state">开具中</span>
+									<span class="color-success" v-else @click="lookOrder(scope.row,2)">
+										查看发票
+									</span>
+								</span>
 							</div>
 						</template>
 					</el-table-column>
@@ -41,7 +61,7 @@
 						<template slot-scope="scope">
 							<div class="hui-table-operation">
 								<span class="table-operation" v-permission="'/work/property/change/detail'"
-									@click="lookItem(scope.row)">
+									@click="lookItem(scope.row,1)">
 									详情
 								</span>
 							</div>
@@ -59,9 +79,15 @@
 				</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 :title=" type === 1?'订单详情':'发票详情'" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer && type === 1" :detailId="detailId" :type="nowTitle.id" @callback="callback"></detail>
+			<invoice-detail v-if="drawer && type === 2" :detailId="detailId"></invoice-detail>
 		</el-drawer>
+		<el-dialog :close-on-click-modal="false" title="开具发票" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<edit v-if="visible" @callback="callback" :orderNo="orderNo">
+			</edit>
+		</el-dialog>
 	</div>
 </template>
 
@@ -73,6 +99,8 @@
 		getOrderListByQueryAndSize
 	} from '@/api/serve'
 	const detail = () => import('@/components/work/serve/list/detail');
+	const edit = () => import('@/components/work/finace/invoice/apply/edit');
+	const invoiceDetail = () => import('@/components/work/finace/invoice/apply/detail');
 	export default {
 		data() {
 			return {
@@ -86,7 +114,10 @@
 				filterOption: {},
 				loading: false,
 				drawer: false,
-				detailId: ''
+				detailId: '',
+				visible: false,
+				orderNo: '',
+				type: 1
 			}
 		},
 		mounted() {
@@ -109,7 +140,9 @@
 			})
 		},
 		components: {
-			detail
+			detail,
+			edit,
+			invoiceDetail
 		},
 		methods: {
 			init() {
@@ -144,9 +177,19 @@
 				this.currPage = currPage;
 				this.init();
 			},
-			lookItem(data) {
+			lookItem(data, type) {
+				this.type = type;
 				this.detailId = data.id;
-				this.drawer = true
+				this.drawer = true;
+			},
+			lookOrder(data, type) {
+				this.type = type;
+				this.detailId = data.orderNo;
+				this.drawer = true;
+			},
+			applyInvoice(data) {
+				this.orderNo = data.orderNo;
+				this.visible = true;
 			},
 			deleteItem(val) {
 				this.$confirm('确定要删除服务?', () => {
@@ -159,6 +202,7 @@
 				});
 			},
 			callback(type) {
+				this.visible = false;
 				if (type === 'init') this.init();
 			}
 		}