vue2-client 1.15.24 → 1.15.26-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,203 @@
1
+ <template>
2
+ <div id="beingProcessed">
3
+ <x-form-table
4
+ title="我的工单"
5
+ ref="xFormTable"
6
+ :queryParamsName="queryParamsName"
7
+ :fixed-query-form="{
8
+ users_f_handler_id: currUser.id,
9
+ }"
10
+ @action="toDetail">
11
+ <template slot="button">
12
+ <a-button @click="addApply">
13
+ <a-icon type="plus"/>
14
+ 发起报建
15
+ </a-button>
16
+ </template>
17
+ </x-form-table>
18
+ <a-modal
19
+ v-model="applyAddFlag"
20
+ :footer="null"
21
+ :dialog-style="{ top: '5rem' }"
22
+ :z-index="1001"
23
+ title="发起报建"
24
+ :destroyOnClose="true">
25
+ <x-add-native-form ref="xForm" @onSubmit="applySubmit"/>
26
+ </a-modal>
27
+ <WorkflowDetail
28
+ ref="workFlow"
29
+ @success="success"
30
+ @nextClick="nextClick"
31
+ @x-form-item-emit-func="handleFormItemEvent"
32
+ >
33
+ </WorkflowDetail>
34
+ <!-- 地址选择器 -->
35
+ <address-select ref="addressSelect" @setAddress="setForm"></address-select>
36
+ </div>
37
+ </template>
38
+
39
+ <script>
40
+ import WorkflowDetail from '@vue2-client/pages/WorkflowDetail/WorkflowDetail.vue'
41
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
42
+ import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
43
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
44
+ import { mapState } from 'vuex'
45
+ import AddressSelect from '@vue2-client/pages/addressSelect/index.vue'
46
+ import XFormGroup from '@vue2-client/base-client/components/common/XFormGroup'
47
+
48
+ export default {
49
+ name: 'Apply',
50
+ components: {
51
+ XFormTable,
52
+ XAddNativeForm,
53
+ WorkflowDetail,
54
+ AddressSelect,
55
+ XFormGroup,
56
+ },
57
+ // 透传给子组件的方法(目前XFormTable接了)
58
+ provide () {
59
+ return {
60
+ generalFunction: {
61
+ setCancel: this.setCancel,
62
+ chargeAdd: this.chargeAdd,
63
+ addUser: this.addUser,
64
+ editUser: this.editUser,
65
+ addContract: this.addContract,
66
+ addcharge: this.addcharge,
67
+ updateFormData: this.updateFormData,
68
+ chargeCancel: this.chargeCancel,
69
+ chargeBatchRefund: this.chargeBatchRefund,
70
+ }
71
+ }
72
+ },
73
+ data () {
74
+ return {
75
+ // 查询配置文件名
76
+ queryParamsName: 'ApplyProcessCRUD',
77
+ // 发起报建弹框控制
78
+ applyAddFlag: false,
79
+ // 提交加载动画
80
+ confirmLoading: false,
81
+ refreshFn: null,
82
+ chargeVisible: false
83
+ }
84
+ },
85
+ computed: {
86
+ ...mapState('account', { currUser: 'user' }),
87
+ },
88
+ methods: {
89
+ addApply () {
90
+ console.log('打开了吗')
91
+ this.applyAddFlag = true
92
+ this.$nextTick(
93
+ () => {
94
+ getConfigByName('addApplyForm', 'af-apply', (res) => {
95
+ this.$refs.xForm.init({
96
+ businessType: '新增',
97
+ title: '发起报建',
98
+ ...res
99
+ })
100
+ })
101
+ }
102
+ )
103
+ },
104
+ applySubmit (formData) {
105
+ runLogic('addApply', formData).then(
106
+ res => {
107
+ this.$message.success('发起报建成功')
108
+ this.$refs.xFormTable.refreshTable(true)
109
+ this.applyAddFlag = false
110
+ }
111
+ ).catch(() => {
112
+ this.applyAddFlag = false
113
+ })
114
+ },
115
+ success () {
116
+ console.log('完工')
117
+ },
118
+ toDetail (record, id) {
119
+ this.$refs.workFlow.init({
120
+ workflowId: record.ab_f_workflow_id
121
+ })
122
+ },
123
+ handleFormItemEvent (func, data, value) {
124
+ console.log('打印一下:', func, data, value)
125
+ if (func === 'selectAddress') {
126
+ this.$refs.addressSelect.setFormShow()
127
+ }
128
+ },
129
+ setForm (record) {
130
+ this.$refs.workFlow.setFormValue({ address: record.f_address, address_id: record.f_address_id })
131
+ },
132
+ nextClick ({ form, formStep, workflowId }) {
133
+ console.log('success', form, formStep, workflowId)
134
+ const data = {
135
+ workflowId,
136
+ form,
137
+ formStep
138
+ }
139
+ runLogic('applySubmitAfter', data, 'af-apply').then(
140
+ res => {
141
+ if (res) {
142
+ // this.$message.success('提交成功!')
143
+ this.$refs.xFormTable.refreshTable(true)
144
+ }
145
+ }
146
+ )
147
+ },
148
+ // 协议作废
149
+ setCancel (record, refreshFn) {
150
+ this.$refs.cancelContract.setCancel(record, refreshFn)
151
+ },
152
+ // 增值收费新增
153
+ chargeAdd (refreshFn) {
154
+ this.$refs.addCharge.chargeAdd(this.$refs.workFlow.workflowId, refreshFn)
155
+ },
156
+ // 协议新增
157
+ addContract (refreshFn) {
158
+ this.$refs.addContract.addContract(this.$refs.workFlow.workflowId, refreshFn)
159
+ },
160
+ // 新增用户
161
+ addUser (refreshFn) {
162
+ if (this.$refs.workFlow.$refs.baseInformation.details.f_workflow_define_name != '团购报建流程') {
163
+ this.$message.success('只有团购报建流程才可以新增用户信息!')
164
+ return
165
+ }
166
+ this.$refs.addUser.addUser(this.$refs.workFlow.workflowId, refreshFn)
167
+ },
168
+ // 编辑用户
169
+ editUser (record, refreshFn) {
170
+ this.$refs.addUser.editUser(record, refreshFn)
171
+ },
172
+ // 新增收费
173
+ addcharge (refreshFn) {
174
+ this.$refs.addApplyCharge.addcharge(this.$refs.workFlow.workflowId, refreshFn)
175
+ },
176
+ // 报装缴费页面初始化
177
+ updateFormData (workflowId) {
178
+ if (this.$refs.workFlow.$refs.baseInformation.details.f_sub_state == '报装缴费') {
179
+ runLogic('getApplyBusinessrecode', { f_workflow_id: workflowId }, 'af-apply').then((res) => {
180
+ this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(res)
181
+ })
182
+ } else if (this.$refs.workFlow.$refs.baseInformation.details.f_sub_state == '合同签订') {
183
+ runLogic('queryAgreementAmount', { workflowId: workflowId }, 'af-apply').then((res) => {
184
+ this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm({ add_amount: res[0].f_contract_money })
185
+ })
186
+ }
187
+ },
188
+ // 增值收费单个数据的撤销功能
189
+ chargeCancel (record, refreshFn) {
190
+ this.$refs.cancel.chargeCancel(record, refreshFn)
191
+ },
192
+ // 批量撤销(退费)
193
+ chargeBatchRefund (selectedRowKeys, selectedRows, refreshFn) {
194
+ if (selectedRowKeys.length === 0 || selectedRows.length === 0) {
195
+ this.$message.warn('请选择要退费的记录', 5)
196
+ return
197
+ }
198
+ const workflowId = this.$refs.workFlow.workflowId
199
+ this.$refs.batchRefund.selectRow(selectedRowKeys, selectedRows, refreshFn, workflowId)
200
+ }
201
+ }
202
+ }
203
+ </script>
@@ -67,6 +67,7 @@
67
67
  <a-card :bordered="false" :loading="loadingHistory" :body-style="{ paddingTop: 0 }">
68
68
  <x-tab
69
69
  v-if="showTab"
70
+ :compProp="{ buttonState: { extra: true }, disableAction: false }"
70
71
  :local-config="tabDesigner"
71
72
  :extra-data="{ workflowId:workflowId }"
72
73
  :body-style="{ padding: 0 }"
@@ -390,9 +391,14 @@ export default {
390
391
  return true
391
392
  }
392
393
  } else {
394
+ // 当前进行节点的数据
393
395
  const step = this.stepsForChild.find(item => item.id === this.activeStepId)
394
396
  // 检查角色和部门权限
395
397
  if (step && step.properties && step.properties.chargePerson) {
398
+ // 如果当前节点的负责人选项中有设置选择人员 当前节点就只能由上一步设置的负责人操作
399
+ if (step.properties.chargePerson.needSelectPerson) {
400
+ return step.handler === this.currUser.name
401
+ }
396
402
  if (step.properties.chargePerson.personList && step.properties.chargePerson.personList.length > 0) {
397
403
  // 使用some方法判断当前人员是否满足任一条件
398
404
  return step.properties.chargePerson.personList.some(item => {
@@ -774,6 +780,12 @@ export default {
774
780
  this.loadingHistory = true
775
781
  this.currentStepId = this.preBtnTo
776
782
  this.activeStepId = this.preBtnTo
783
+
784
+ // 新增:重置按钮状态
785
+ this.stepDone = false
786
+ this.beforeStepActive = false
787
+ this.operationType = 'submit'
788
+
777
789
  this.$emit('refresh')
778
790
  this.onClose()
779
791
  this.init()
@@ -1,67 +1,67 @@
1
- <template>
2
- <x-tree-view ref="xTreeView" @itemChecked="itemChecked">
3
- <x-add-native-form ref="nativeForm" />
4
- </x-tree-view>
5
- </template>
6
-
7
- <script>
8
-
9
- import XTreeView from '@vue2-client/base-client/components/layout/XTreeView'
10
- import { mapState } from 'vuex'
11
- import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
12
- import { getConfigByName } from '@vue2-client/services/api/common'
13
-
14
- export default {
15
- components: {
16
- XAddNativeForm,
17
- XTreeView,
18
- },
19
- data () {
20
- return {
21
- currentItem: undefined,
22
- }
23
- },
24
- computed: {
25
- ...mapState('account', { currUser: 'user' }),
26
- ...mapState('setting', ['isMobile'])
27
- },
28
- mounted () {
29
- this.initView()
30
- },
31
- methods: {
32
- // 初始化组件
33
- initView () {
34
- this.$refs.xTreeView.init({
35
- configName: 'templateTreeConfig',
36
- serviceName: 'af-his',
37
- env: 'dev',
38
- })
39
- },
40
- itemChecked (node) {
41
- this.currentItem = node
42
- if (node.type === 'all' || node.type === 'folder') {
43
- this.$refs.nativeForm.close()
44
- return
45
- }
46
- getConfigByName('编辑模板数据Form', 'af-his', (res) => {
47
- this.$refs.nativeForm.init({
48
- serviceName: 'af-his',
49
- formItems: res.formJson,
50
- showSubmitBtn: false,
51
- title: '收费',
52
- businessType: '新增',
53
- getDataParams: {
54
- content: {
55
- pms_patient_id: 1,
56
- template_id: node.id
57
- }
58
- }
59
- })
60
- })
61
- }
62
- }
63
- }
64
- </script>
65
-
66
- <style>
67
- </style>
1
+ <template>
2
+ <x-tree-view ref="xTreeView" @itemChecked="itemChecked">
3
+ <x-add-native-form ref="nativeForm" />
4
+ </x-tree-view>
5
+ </template>
6
+
7
+ <script>
8
+
9
+ import XTreeView from '@vue2-client/base-client/components/layout/XTreeView'
10
+ import { mapState } from 'vuex'
11
+ import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
12
+ import { getConfigByName } from '@vue2-client/services/api/common'
13
+
14
+ export default {
15
+ components: {
16
+ XAddNativeForm,
17
+ XTreeView,
18
+ },
19
+ data () {
20
+ return {
21
+ currentItem: undefined,
22
+ }
23
+ },
24
+ computed: {
25
+ ...mapState('account', { currUser: 'user' }),
26
+ ...mapState('setting', ['isMobile'])
27
+ },
28
+ mounted () {
29
+ this.initView()
30
+ },
31
+ methods: {
32
+ // 初始化组件
33
+ initView () {
34
+ this.$refs.xTreeView.init({
35
+ configName: 'templateTreeConfig',
36
+ serviceName: 'af-his',
37
+ env: 'dev',
38
+ })
39
+ },
40
+ itemChecked (node) {
41
+ this.currentItem = node
42
+ if (node.type === 'all' || node.type === 'folder') {
43
+ this.$refs.nativeForm.close()
44
+ return
45
+ }
46
+ getConfigByName('编辑模板数据Form', 'af-his', (res) => {
47
+ this.$refs.nativeForm.init({
48
+ serviceName: 'af-his',
49
+ formItems: res.formJson,
50
+ showSubmitBtn: false,
51
+ title: '收费',
52
+ businessType: '新增',
53
+ getDataParams: {
54
+ content: {
55
+ pms_patient_id: 1,
56
+ template_id: node.id
57
+ }
58
+ }
59
+ })
60
+ })
61
+ }
62
+ }
63
+ }
64
+ </script>
65
+
66
+ <style>
67
+ </style>
@@ -1,27 +1,27 @@
1
- import { formatRoutes } from '@vue2-client/utils/routerUtil'
2
-
3
- // 不需要登录拦截的路由配置
4
- const loginIgnore = {
5
- names: ['404', '403'], // 根据路由名称匹配
6
- paths: ['/login', '/example', '/system/example', '/system/example/default', '/system/example/sub-example', '/submitTicket', '/submitTicket/', '/ServiceReview', '/DynamicStatistics', '/NewDynamicStatistics'], // 根据路由fullPath匹配
7
- /**
8
- * 判断路由是否包含在该配置中
9
- * @param route vue-router 的 route 对象
10
- * @returns {boolean}
11
- */
12
- includes (route) {
13
- return this.names.includes(route.name) || this.paths.includes(route.path)
14
- }
15
- }
16
-
17
- /**
18
- * 初始化路由实例
19
- * @param isAsync 是否异步路由模式
20
- * @returns {RouterOptions}
21
- */
22
- function initRouter (isAsync) {
23
- const options = require('./async/config.async').default
24
- formatRoutes(options.routes)
25
- return options
26
- }
27
- export { loginIgnore, initRouter }
1
+ import { formatRoutes } from '@vue2-client/utils/routerUtil'
2
+
3
+ // 不需要登录拦截的路由配置
4
+ const loginIgnore = {
5
+ names: ['404', '403'], // 根据路由名称匹配
6
+ paths: ['/login', '/example', '/system/example', '/system/example/default', '/system/example/sub-example', '/submitTicket', '/submitTicket/', '/ServiceReview', '/DynamicStatistics', '/NewDynamicStatistics'], // 根据路由fullPath匹配
7
+ /**
8
+ * 判断路由是否包含在该配置中
9
+ * @param route vue-router 的 route 对象
10
+ * @returns {boolean}
11
+ */
12
+ includes (route) {
13
+ return this.names.includes(route.name) || this.paths.includes(route.path)
14
+ }
15
+ }
16
+
17
+ /**
18
+ * 初始化路由实例
19
+ * @param isAsync 是否异步路由模式
20
+ * @returns {RouterOptions}
21
+ */
22
+ function initRouter (isAsync) {
23
+ const options = require('./async/config.async').default
24
+ formatRoutes(options.routes)
25
+ return options
26
+ }
27
+ export { loginIgnore, initRouter }
@@ -1,17 +1,17 @@
1
- import EncryptUtil from '@vue2-client/utils/EncryptUtil'
2
- import { test, describe } from '@jest/globals'
3
-
4
- describe('请求加密模块', () => {
5
- const VALID_KEY = 'a964287a2cef8781ed76bd63dcadd578'
6
- const TEST_PAYLOAD = {
7
- username: 'admin',
8
- password: 'P@ssw0rd_测试',
9
- timestamp: Date.now()
10
- }
11
-
12
- // CBC加密测试
13
- test('应生成有效的加密字符串', () => {
14
- const encrypted = EncryptUtil.AESEncryptCBC(TEST_PAYLOAD, VALID_KEY)
15
- console.log(encrypted)
16
- })
17
- })
1
+ import EncryptUtil from '@vue2-client/utils/EncryptUtil'
2
+ import { test, describe } from '@jest/globals'
3
+
4
+ describe('请求加密模块', () => {
5
+ const VALID_KEY = 'a964287a2cef8781ed76bd63dcadd578'
6
+ const TEST_PAYLOAD = {
7
+ username: 'admin',
8
+ password: 'P@ssw0rd_测试',
9
+ timestamp: Date.now()
10
+ }
11
+
12
+ // CBC加密测试
13
+ test('应生成有效的加密字符串', () => {
14
+ const encrypted = EncryptUtil.AESEncryptCBC(TEST_PAYLOAD, VALID_KEY)
15
+ console.log(encrypted)
16
+ })
17
+ })