vue2-client 1.15.23 → 1.15.25

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.
package/jest.config.js CHANGED
@@ -1,22 +1,22 @@
1
- const path = require('path')
2
- require('dotenv').config({ path: path.resolve(__dirname, '.env') })
3
-
4
- module.exports = {
5
- setupFiles: ['<rootDir>/jest.setup.js'],
6
- moduleNameMapper: {
7
- '^@vue2-client/(.*)$': '<rootDir>/src/$1',
8
- '^@/(.*)$': '<rootDir>/src/$1',
9
- '\\.(css|less)$': 'identity-obj-proxy',
10
- },
11
- moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node', 'vue'],
12
- testEnvironment: 'jsdom',
13
- transform: {
14
- '^.+\\.js$': 'babel-jest',
15
- '^.+\\.vue$': 'vue-jest',
16
- '^.+\\.less$': 'jest-transform-stub',
17
- },
18
- transformIgnorePatterns: [
19
- '/node_modules/(?!ant-design-vue)',
20
- ]
21
- // 其他 Jest 配置项...
22
- }
1
+ const path = require('path')
2
+ require('dotenv').config({ path: path.resolve(__dirname, '.env') })
3
+
4
+ module.exports = {
5
+ setupFiles: ['<rootDir>/jest.setup.js'],
6
+ moduleNameMapper: {
7
+ '^@vue2-client/(.*)$': '<rootDir>/src/$1',
8
+ '^@/(.*)$': '<rootDir>/src/$1',
9
+ '\\.(css|less)$': 'identity-obj-proxy',
10
+ },
11
+ moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node', 'vue'],
12
+ testEnvironment: 'jsdom',
13
+ transform: {
14
+ '^.+\\.js$': 'babel-jest',
15
+ '^.+\\.vue$': 'vue-jest',
16
+ '^.+\\.less$': 'jest-transform-stub',
17
+ },
18
+ transformIgnorePatterns: [
19
+ '/node_modules/(?!ant-design-vue)',
20
+ ]
21
+ // 其他 Jest 配置项...
22
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.15.23",
3
+ "version": "1.15.25",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -377,7 +377,8 @@ export default {
377
377
  if (this.form[key] === null || this.form[key] === '') {
378
378
  this.form[key] = undefined
379
379
  }
380
- if (Array.isArray(this.form[key]) && this.form[key].length === 0) {
380
+ // 树形选择框重置后会重置为[undefined],查询时为[null]
381
+ if (Array.isArray(this.form[key]) && (this.form[key].length === 0 || this.form[key][0] === null || this.form[key][0] === undefined)) {
381
382
  this.form[key] = undefined
382
383
  }
383
384
  // 如果 form 中没有值,但是有默认值
@@ -1,105 +1,105 @@
1
- <template>
2
- <div class="demo-container">
3
- <h2>XFormItem Demo</h2>
4
-
5
- <!-- 查询模式演示 -->
6
- <div class="demo-section">
7
- <h3>查询模式</h3>
8
- <x-form-item
9
- :attr="queryAttr"
10
- :form="queryForm"
11
- mode="查询"
12
- :showLabel="true"
13
- />
14
- <div class="value-display">
15
- 当前值: {{ queryForm.rate || '未选择' }}
16
- </div>
17
- </div>
18
-
19
- <!-- 新增模式演示 -->
20
- <div class="demo-section">
21
- <h3>新增模式</h3>
22
- <x-form-item
23
- :attr="addAttr"
24
- :form="addForm"
25
- mode="新增/修改"
26
- :showLabel="true"
27
- />
28
- <div class="value-display">
29
- 当前值: {{ addForm.rate || '未评分' }}
30
- </div>
31
- </div>
32
- </div>
33
- </template>
34
-
35
- <script>
36
- import XFormItem from './XFormItem.vue'
37
-
38
- export default {
39
- name: 'XFormItemDemo',
40
- components: {
41
- XFormItem
42
- },
43
- data () {
44
- return {
45
- // 查询表单配置
46
- queryAttr: {
47
- type: 'rate',
48
- name: '评分查询',
49
- queryType: 'IN',
50
- model: 'rate',
51
- placeholder: '请选择评分',
52
- allowHalf: true,
53
- maxCount: 5
54
- },
55
- queryForm: {
56
- },
57
-
58
- // 新增表单配置
59
- addAttr: {
60
- type: 'rate',
61
- name: '评分',
62
- model: 'rate',
63
- allowHalf: true,
64
- maxCount: 10
65
- },
66
- addForm: {
67
- rate: 3
68
- }
69
- }
70
- }
71
- }
72
- </script>
73
-
74
- <style lang="less" scoped>
75
- .demo-container {
76
- padding: 20px;
77
- max-width: 800px;
78
- margin: 0 auto;
79
- background-color: #f5f5f5;
80
-
81
- h2 {
82
- margin-bottom: 20px;
83
- color: #1890ff;
84
- }
85
-
86
- .demo-section {
87
- margin-bottom: 30px;
88
- padding: 20px;
89
- border: 1px solid #e8e8e8;
90
- border-radius: 4px;
91
-
92
- h3 {
93
- margin-bottom: 16px;
94
- color: #333;
95
- }
96
-
97
- .value-display {
98
- margin-top: 16px;
99
- padding: 8px;
100
- background-color: #f5f5f5;
101
- border-radius: 4px;
102
- }
103
- }
104
- }
105
- </style>
1
+ <template>
2
+ <div class="demo-container">
3
+ <h2>XFormItem Demo</h2>
4
+
5
+ <!-- 查询模式演示 -->
6
+ <div class="demo-section">
7
+ <h3>查询模式</h3>
8
+ <x-form-item
9
+ :attr="queryAttr"
10
+ :form="queryForm"
11
+ mode="查询"
12
+ :showLabel="true"
13
+ />
14
+ <div class="value-display">
15
+ 当前值: {{ queryForm.rate || '未选择' }}
16
+ </div>
17
+ </div>
18
+
19
+ <!-- 新增模式演示 -->
20
+ <div class="demo-section">
21
+ <h3>新增模式</h3>
22
+ <x-form-item
23
+ :attr="addAttr"
24
+ :form="addForm"
25
+ mode="新增/修改"
26
+ :showLabel="true"
27
+ />
28
+ <div class="value-display">
29
+ 当前值: {{ addForm.rate || '未评分' }}
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </template>
34
+
35
+ <script>
36
+ import XFormItem from './XFormItem.vue'
37
+
38
+ export default {
39
+ name: 'XFormItemDemo',
40
+ components: {
41
+ XFormItem
42
+ },
43
+ data () {
44
+ return {
45
+ // 查询表单配置
46
+ queryAttr: {
47
+ type: 'rate',
48
+ name: '评分查询',
49
+ queryType: 'IN',
50
+ model: 'rate',
51
+ placeholder: '请选择评分',
52
+ allowHalf: true,
53
+ maxCount: 5
54
+ },
55
+ queryForm: {
56
+ },
57
+
58
+ // 新增表单配置
59
+ addAttr: {
60
+ type: 'rate',
61
+ name: '评分',
62
+ model: 'rate',
63
+ allowHalf: true,
64
+ maxCount: 10
65
+ },
66
+ addForm: {
67
+ rate: 3
68
+ }
69
+ }
70
+ }
71
+ }
72
+ </script>
73
+
74
+ <style lang="less" scoped>
75
+ .demo-container {
76
+ padding: 20px;
77
+ max-width: 800px;
78
+ margin: 0 auto;
79
+ background-color: #f5f5f5;
80
+
81
+ h2 {
82
+ margin-bottom: 20px;
83
+ color: #1890ff;
84
+ }
85
+
86
+ .demo-section {
87
+ margin-bottom: 30px;
88
+ padding: 20px;
89
+ border: 1px solid #e8e8e8;
90
+ border-radius: 4px;
91
+
92
+ h3 {
93
+ margin-bottom: 16px;
94
+ color: #333;
95
+ }
96
+
97
+ .value-display {
98
+ margin-top: 16px;
99
+ padding: 8px;
100
+ background-color: #f5f5f5;
101
+ border-radius: 4px;
102
+ }
103
+ }
104
+ }
105
+ </style>
@@ -1,102 +1,102 @@
1
- <template>
2
- <div class="demo-container">
3
- <h2>XRate 评分组件示例</h2>
4
-
5
- <div class="demo-section">
6
- <h3>基础用法</h3>
7
- <x-rate v-model="basicRate" />
8
- <div>当前值: {{ basicRate }}</div>
9
- <a-button @click="resetBasicRate">重置</a-button>
10
- </div>
11
-
12
- <div class="demo-section">
13
- <h3>允许半星</h3>
14
- <x-rate v-model="halfRate" :allow-half="true" />
15
- <div>当前值: {{ halfRate }}</div>
16
- </div>
17
-
18
- <div class="demo-section">
19
- <h3>自定义最大分值</h3>
20
- <x-rate v-model="customRate" :max-count="10" />
21
- <div>当前值: {{ customRate }}</div>
22
- </div>
23
-
24
- <div class="demo-section">
25
- <h3>查询模式</h3>
26
- <x-rate v-model="queryRate" mode="查询" />
27
- <div>当前值: {{ queryRate }}</div>
28
- </div>
29
-
30
- <div class="demo-section">
31
- <h3>查询模式(多选)</h3>
32
- <x-rate v-model="queryMultiRate" mode="查询" query-type="IN" />
33
- <div>当前值: {{ queryMultiRate }}</div>
34
- </div>
35
-
36
- <div class="demo-section">
37
- <h3>禁用状态</h3>
38
- <x-rate v-model="disabledRate" :disabled="true" />
39
- <div>当前值: {{ disabledRate }}</div>
40
- </div>
41
-
42
- <div class="demo-section">
43
- <h3>空值处理</h3>
44
- <x-rate v-model="emptyRate" />
45
- <div>当前值: {{ emptyRate }}</div>
46
- <a-button @click="clearRate">清除</a-button>
47
- </div>
48
- </div>
49
- </template>
50
-
51
- <script>
52
- import XRate from './index.vue'
53
-
54
- export default {
55
- name: 'XRateDemo',
56
- components: {
57
- XRate
58
- },
59
- data () {
60
- return {
61
- basicRate: 3,
62
- halfRate: 3.5,
63
- customRate: 7,
64
- queryRate: 4,
65
- queryMultiRate: [3, 4],
66
- disabledRate: 2,
67
- emptyRate: undefined
68
- }
69
- },
70
- methods: {
71
- resetBasicRate () {
72
- this.basicRate = 3
73
- },
74
- clearRate () {
75
- this.emptyRate = undefined
76
- }
77
- }
78
- }
79
- </script>
80
-
81
- <style lang="less" scoped>
82
- .demo-container {
83
- padding: 20px;
84
-
85
- .demo-section {
86
- margin-bottom: 30px;
87
- padding: 20px;
88
- border: 1px solid #eee;
89
- border-radius: 4px;
90
-
91
- h3 {
92
- margin-top: 0;
93
- margin-bottom: 16px;
94
- color: #333;
95
- }
96
-
97
- .ant-btn {
98
- margin-top: 8px;
99
- }
100
- }
101
- }
102
- </style>
1
+ <template>
2
+ <div class="demo-container">
3
+ <h2>XRate 评分组件示例</h2>
4
+
5
+ <div class="demo-section">
6
+ <h3>基础用法</h3>
7
+ <x-rate v-model="basicRate" />
8
+ <div>当前值: {{ basicRate }}</div>
9
+ <a-button @click="resetBasicRate">重置</a-button>
10
+ </div>
11
+
12
+ <div class="demo-section">
13
+ <h3>允许半星</h3>
14
+ <x-rate v-model="halfRate" :allow-half="true" />
15
+ <div>当前值: {{ halfRate }}</div>
16
+ </div>
17
+
18
+ <div class="demo-section">
19
+ <h3>自定义最大分值</h3>
20
+ <x-rate v-model="customRate" :max-count="10" />
21
+ <div>当前值: {{ customRate }}</div>
22
+ </div>
23
+
24
+ <div class="demo-section">
25
+ <h3>查询模式</h3>
26
+ <x-rate v-model="queryRate" mode="查询" />
27
+ <div>当前值: {{ queryRate }}</div>
28
+ </div>
29
+
30
+ <div class="demo-section">
31
+ <h3>查询模式(多选)</h3>
32
+ <x-rate v-model="queryMultiRate" mode="查询" query-type="IN" />
33
+ <div>当前值: {{ queryMultiRate }}</div>
34
+ </div>
35
+
36
+ <div class="demo-section">
37
+ <h3>禁用状态</h3>
38
+ <x-rate v-model="disabledRate" :disabled="true" />
39
+ <div>当前值: {{ disabledRate }}</div>
40
+ </div>
41
+
42
+ <div class="demo-section">
43
+ <h3>空值处理</h3>
44
+ <x-rate v-model="emptyRate" />
45
+ <div>当前值: {{ emptyRate }}</div>
46
+ <a-button @click="clearRate">清除</a-button>
47
+ </div>
48
+ </div>
49
+ </template>
50
+
51
+ <script>
52
+ import XRate from './index.vue'
53
+
54
+ export default {
55
+ name: 'XRateDemo',
56
+ components: {
57
+ XRate
58
+ },
59
+ data () {
60
+ return {
61
+ basicRate: 3,
62
+ halfRate: 3.5,
63
+ customRate: 7,
64
+ queryRate: 4,
65
+ queryMultiRate: [3, 4],
66
+ disabledRate: 2,
67
+ emptyRate: undefined
68
+ }
69
+ },
70
+ methods: {
71
+ resetBasicRate () {
72
+ this.basicRate = 3
73
+ },
74
+ clearRate () {
75
+ this.emptyRate = undefined
76
+ }
77
+ }
78
+ }
79
+ </script>
80
+
81
+ <style lang="less" scoped>
82
+ .demo-container {
83
+ padding: 20px;
84
+
85
+ .demo-section {
86
+ margin-bottom: 30px;
87
+ padding: 20px;
88
+ border: 1px solid #eee;
89
+ border-radius: 4px;
90
+
91
+ h3 {
92
+ margin-top: 0;
93
+ margin-bottom: 16px;
94
+ color: #333;
95
+ }
96
+
97
+ .ant-btn {
98
+ margin-top: 8px;
99
+ }
100
+ }
101
+ }
102
+ </style>
@@ -1,9 +1,8 @@
1
1
  <template>
2
2
  <page-toggle-transition :disabled="animate.disabled" :animate="animate.name" :direction="animate.direction">
3
- <a-keep-alive :exclude-keys="excludeKeys" v-if="cachePage && isMicroAppEnv" v-model="clearCaches">
3
+ <a-keep-alive :exclude-keys="excludeKeys" v-model="clearCaches">
4
4
  <router-view v-if="!refreshing" :key="$route.path" />
5
5
  </a-keep-alive>
6
- <router-view v-else-if="!refreshing" />
7
6
  </page-toggle-transition>
8
7
  </template>
9
8
 
@@ -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()
@@ -54,8 +54,9 @@ routerResource.example = {
54
54
  path: 'example',
55
55
  name: '示例主页面',
56
56
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo2.vue'),
57
+ component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo3.vue'),
57
58
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
58
- component: () => import('@vue2-client/pages/addressSelect/addressDemo.vue'),
59
+ // component: () => import('@vue2-client/pages/addressSelect/addressDemo.vue'),
59
60
  // component: () => import('@vue2-client/base-client/components/common/XDescriptions/demo.vue'),
60
61
  // component: () => import('@vue2-client/base-client/components/common/XAddNativeForm/demo.vue'),
61
62
  // component: () => import('@vue2-client/base-client/components/common/XFormGroup/demo.vue'),
@@ -99,7 +100,7 @@ const routerMap = {
99
100
  path: '/',
100
101
  name: '首页',
101
102
  // 只有在非微前端环境下才进行重定向,或者通过环境变量控制
102
- redirect: process.env.VUE_APP_SINGLE_PAPER === 'TRUE' ? undefined : homePage,
103
+ redirect: window.__MICRO_APP_ENVIRONMENT__ ? undefined : homePage,
103
104
  component: process.env.VUE_APP_SINGLE_PAPER === 'TRUE' ? view.blank : view.tabs,
104
105
  },
105
106
  exp403: {
@@ -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 }
@@ -182,7 +182,7 @@ function loadRoutes (routesConfig) {
182
182
  if (routesConfig && routesConfig.length > 0) {
183
183
  const routes = parseRoutes(routesConfig, appRouterMap.routerMap)
184
184
  // 设置路由首页
185
- if (process.env.VUE_APP_SINGLE_PAPER !== 'TRUE') {
185
+ if (!window.__MICRO_APP_ENVIRONMENT__) {
186
186
  routes[0].redirect = store.state.setting.homePage
187
187
  }
188
188
  let finalRoutes = mergeRoutes(basicOptions.routes, routes)
@@ -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
+ })