af-mobile-client-vue3 1.1.37 → 1.1.39

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.
@@ -1,40 +1,133 @@
1
1
  <script setup lang="ts">
2
- import XFormGroup from '@af-mobile-client-vue3/components/data/XFormGroup/index.vue'
2
+ import XForm from '@af-mobile-client-vue3/components/data/XForm/index.vue'
3
3
  import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
4
- import { ref, toRaw } from 'vue'
5
-
6
- const configName = ref('AddConstructionForm')
7
- const serviceName = ref('af-linepatrol')
8
- const formGroup = ref(null)
9
- function safeStringify(obj) {
10
- const seen = new WeakSet()
11
- return JSON.stringify(toRaw(obj), (key, val) => {
12
- if (typeof val === 'object' && val !== null) {
13
- if (seen.has(val))
14
- return
15
- seen.add(val)
16
- }
17
- return val
18
- }, 2)
4
+ import { getConfigByName } from '@af-mobile-client-vue3/services/api/common'
5
+ import { post } from '@af-mobile-client-vue3/services/restTools'
6
+ import {
7
+ showDialog,
8
+ NavBar as VanNavBar,
9
+ Space as VanSpace,
10
+ } from 'vant'
11
+ import { defineEmits, getCurrentInstance, onBeforeMount, ref } from 'vue'
12
+ import { useRoute } from 'vue-router'
13
+
14
+ const emit = defineEmits(['onSumbit'])
15
+ const xForm = ref(null)
16
+ const id = ref(-1)
17
+ const openid = ref('')
18
+ const instance = getCurrentInstance()
19
+ const xFormInit = ref(false)
20
+ const route = useRoute()
21
+ const configName = route.query.configName as string
22
+ const serviceName = route.query.serviceName as string
23
+ const mode = route.query.mode as string
24
+ const updateData = ref({})
25
+ const title = ref('')
26
+ const groupFormItems = ref({})
27
+ const api = ref('/af-system/logic/commonQuery')
28
+ const updateId = {
29
+ queryParamsName: 'crud_oper_log_manage',
30
+ pageNo: 1,
31
+ pageSize: 20,
32
+ conditionParams: { o_id: route.params.id as string },
33
+ }
34
+ const loadUpdate = ref(false)
35
+ // const serviceName = ref('af-revenue')
36
+ const _currentEvaluate = {
37
+ id: null,
38
+ f_business_name: '',
39
+ f_evaluate_state: '',
40
+ }
41
+
42
+ // 组件挂载前获取数据
43
+ onBeforeMount(async () => {
44
+ if (instance) {
45
+ id.value = route.params.id as unknown as number
46
+ openid.value = route.params.openid as string
47
+ formInit()
48
+ }
49
+ })
50
+
51
+ // 组件初始化前的判断
52
+ async function formInit() {
53
+ getConfigByName(configName, (result) => {
54
+ groupFormItems.value = result
55
+ title.value = result.title
56
+ if (mode === '修改')
57
+ getUpdateData()
58
+ xFormInit.value = true
59
+ }, serviceName)
60
+ }
61
+
62
+ // 获取配置信息
63
+ function queryData() {
64
+
65
+ }
66
+
67
+ // 提交操作
68
+ function onSubmit(params) {
69
+ // const data = {
70
+ // id: currentEvaluate.id,
71
+ // f_json: params,
72
+ // f_evaluate_date: formatDate(new Date()),
73
+ // f_evaluate_state: '已评价',
74
+ // f_evaluate_type: '用户评价',
75
+ // f_evaluate_userid: openid.value,
76
+ // }
77
+ // openApiLogic(data, 'saveEvaluate', formServiveName).then((_res: any) => {
78
+ // showDialog({ message: '评价成功了' }).then(() => {history.back()})
79
+ // }).catch(() => {
80
+ // showDialog({ message: '评价失败了' })
81
+ // })
82
+ if (params) {
83
+ emit('onSumbit', params)
84
+ showDialog({ message: '评价成功了' }).then(() => {
85
+ history.back()
86
+ })
87
+ }
88
+ else {
89
+ showDialog({ message: '评价失败了' }).then(() => {
90
+ history.back()
91
+ })
92
+ }
19
93
  }
20
- function submit(result) {
21
- console.log('>>>> result: ', safeStringify(result))
94
+
95
+ // 查询需要修改的数据
96
+ async function getUpdateData() {
97
+ if (api.value && updateId) {
98
+ const res = await post(api.value, updateId)
99
+ updateData.value = res.data[0]
100
+ }
22
101
  }
23
102
  </script>
24
103
 
25
104
  <template>
26
- <NormalDataLayout id="XFormGroupView" title="纯表单">
105
+ <NormalDataLayout id="XFormView" title="XForm表单">
27
106
  <template #layout_content>
28
- <XFormGroup
29
- ref="formGroup"
30
- :config-name="configName"
31
- :service-name="serviceName"
32
- mode="新增"
33
- @submit="submit"
34
- />
107
+ <VanSpace direction="vertical" fill>
108
+ <VanNavBar :title="title ? mode.concat(title) : null" />
109
+ <XForm
110
+ v-if="xFormInit"
111
+ ref="xForm"
112
+ :group-form-items="JSON.parse(JSON.stringify(groupFormItems))"
113
+ :service-name="serviceName"
114
+ :form-data="updateData"
115
+ :mode="mode"
116
+ style="margin-bottom: 14px;"
117
+ @on-submit="onSubmit"
118
+ />
119
+ </VanSpace>
35
120
  </template>
36
121
  </NormalDataLayout>
37
122
  </template>
38
123
 
39
- <style scoped lang="less">
124
+ <style scoped>
125
+ .van-doc-demo-block__title {
126
+ margin: 0;
127
+ padding: 32px 16px 16px;
128
+ color: black;
129
+ font-weight: 400;
130
+ font-size: 14px;
131
+ line-height: 16px;
132
+ }
40
133
  </style>
@@ -1,118 +1,118 @@
1
- <script setup lang="ts">
2
- import type { LocationResult } from '@af-mobile-client-vue3/components/data/XOlMap/types'
3
- import LocationPicker from '@af-mobile-client-vue3/components/data/XOlMap/XLocationPicker/index.vue'
4
- import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
5
- import { showNotify } from 'vant'
6
- import { ref } from 'vue'
7
-
8
- const selectedLocation = ref<LocationResult>()
9
-
10
- // 处理位置选择
11
- function handleLocationConfirm(location: LocationResult) {
12
- // console.log('选择的位置:', location)
13
- // selectedLocation.value = location
14
- showNotify({ type: 'success', message: '位置已选择' })
15
- }
16
- </script>
17
-
18
- <template>
19
- <NormalDataLayout id="XLocationPicker" title="XOlMap地址选择器">
20
- <template #layout_content>
21
- <div class="location-picker-demo">
22
- <!-- 页面标题 -->
23
- <div class="page-header">
24
- <div class="title">
25
- 位置选择
26
- </div>
27
- </div>
28
-
29
- <!-- 选择结果展示 -->
30
- <div v-if="selectedLocation" class="location-result">
31
- <div class="label">
32
- 已选位置:
33
- </div>
34
- <div class="value">
35
- {{ selectedLocation.address }}
36
- </div>
37
- <div class="coordinates">
38
- 经度: {{ selectedLocation.longitude.toFixed(6) }},
39
- 纬度: {{ selectedLocation.latitude.toFixed(6) }}
40
- </div>
41
- </div>
42
-
43
- <!-- 地图组件 -->
44
- <div class="map-container">
45
- <LocationPicker
46
- v-model="selectedLocation"
47
- :default-center="[108.948024, 34.263161]"
48
- :default-zoom="12"
49
- @confirm="handleLocationConfirm"
50
- />
51
- </div>
52
- </div>
53
- </template>
54
- </NormalDataLayout>
55
- </template>
56
-
57
- <style scoped lang="less">
58
- .location-picker-demo {
59
- width: 100%;
60
- height: 100%;
61
- position: relative;
62
- display: flex;
63
- flex-direction: column;
64
- background-color: #f7f8fa;
65
- }
66
-
67
- .page-header {
68
- height: 44px;
69
- display: flex;
70
- align-items: center;
71
- justify-content: center;
72
- background: white;
73
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
74
- position: relative;
75
- z-index: 1;
76
-
77
- .title {
78
- font-size: 16px;
79
- color: #333;
80
- font-weight: 500;
81
- }
82
- }
83
-
84
- .location-result {
85
- background: white;
86
- padding: 12px 16px;
87
- margin: 10px;
88
- border-radius: 8px;
89
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
90
-
91
- .label {
92
- font-size: 14px;
93
- color: #666;
94
- margin-bottom: 4px;
95
- }
96
-
97
- .value {
98
- font-size: 16px;
99
- color: #333;
100
- margin-bottom: 8px;
101
- word-break: break-all;
102
- }
103
-
104
- .coordinates {
105
- font-size: 12px;
106
- color: #999;
107
- }
108
- }
109
-
110
- .map-container {
111
- flex: 1;
112
- position: relative;
113
- margin: 0 10px 10px 10px;
114
- border-radius: 8px;
115
- overflow: hidden;
116
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
117
- }
118
- </style>
1
+ <script setup lang="ts">
2
+ import type { LocationResult } from '@af-mobile-client-vue3/components/data/XOlMap/types'
3
+ import LocationPicker from '@af-mobile-client-vue3/components/data/XOlMap/XLocationPicker/index.vue'
4
+ import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
5
+ import { showNotify } from 'vant'
6
+ import { ref } from 'vue'
7
+
8
+ const selectedLocation = ref<LocationResult>()
9
+
10
+ // 处理位置选择
11
+ function handleLocationConfirm(location: LocationResult) {
12
+ // console.log('选择的位置:', location)
13
+ // selectedLocation.value = location
14
+ showNotify({ type: 'success', message: '位置已选择' })
15
+ }
16
+ </script>
17
+
18
+ <template>
19
+ <NormalDataLayout id="XLocationPicker" title="XOlMap地址选择器">
20
+ <template #layout_content>
21
+ <div class="location-picker-demo">
22
+ <!-- 页面标题 -->
23
+ <div class="page-header">
24
+ <div class="title">
25
+ 位置选择
26
+ </div>
27
+ </div>
28
+
29
+ <!-- 选择结果展示 -->
30
+ <div v-if="selectedLocation" class="location-result">
31
+ <div class="label">
32
+ 已选位置:
33
+ </div>
34
+ <div class="value">
35
+ {{ selectedLocation.address }}
36
+ </div>
37
+ <div class="coordinates">
38
+ 经度: {{ selectedLocation.longitude.toFixed(6) }},
39
+ 纬度: {{ selectedLocation.latitude.toFixed(6) }}
40
+ </div>
41
+ </div>
42
+
43
+ <!-- 地图组件 -->
44
+ <div class="map-container">
45
+ <LocationPicker
46
+ v-model="selectedLocation"
47
+ :default-center="[108.948024, 34.263161]"
48
+ :default-zoom="12"
49
+ @confirm="handleLocationConfirm"
50
+ />
51
+ </div>
52
+ </div>
53
+ </template>
54
+ </NormalDataLayout>
55
+ </template>
56
+
57
+ <style scoped lang="less">
58
+ .location-picker-demo {
59
+ width: 100%;
60
+ height: 100%;
61
+ position: relative;
62
+ display: flex;
63
+ flex-direction: column;
64
+ background-color: #f7f8fa;
65
+ }
66
+
67
+ .page-header {
68
+ height: 44px;
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ background: white;
73
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
74
+ position: relative;
75
+ z-index: 1;
76
+
77
+ .title {
78
+ font-size: 16px;
79
+ color: #333;
80
+ font-weight: 500;
81
+ }
82
+ }
83
+
84
+ .location-result {
85
+ background: white;
86
+ padding: 12px 16px;
87
+ margin: 10px;
88
+ border-radius: 8px;
89
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
90
+
91
+ .label {
92
+ font-size: 14px;
93
+ color: #666;
94
+ margin-bottom: 4px;
95
+ }
96
+
97
+ .value {
98
+ font-size: 16px;
99
+ color: #333;
100
+ margin-bottom: 8px;
101
+ word-break: break-all;
102
+ }
103
+
104
+ .coordinates {
105
+ font-size: 12px;
106
+ color: #999;
107
+ }
108
+ }
109
+
110
+ .map-container {
111
+ flex: 1;
112
+ position: relative;
113
+ margin: 0 10px 10px 10px;
114
+ border-radius: 8px;
115
+ overflow: hidden;
116
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
117
+ }
118
+ </style>
@@ -1,70 +0,0 @@
1
- <script setup lang="ts">
2
- import XForm from '@af-mobile-client-vue3/components/data/XForm/index.vue'
3
- import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
4
- import { getConfigByName } from '@af-mobile-client-vue3/services/api/common'
5
- import { onBeforeMount, ref, toRaw } from 'vue'
6
-
7
- const configName = ref('AddConstructionForm')
8
- const serviceName = ref('af-linepatrol')
9
- const formGroup = ref(null)
10
- const formConfig = ref(null)
11
- const submitSimple = ref(null)
12
- const isLoading = ref(true)
13
-
14
- function safeStringify(obj) {
15
- const seen = new WeakSet()
16
- return JSON.stringify(toRaw(obj), (key, val) => {
17
- if (typeof val === 'object' && val !== null) {
18
- if (seen.has(val))
19
- return
20
- seen.add(val)
21
- }
22
- return val
23
- }, 2)
24
- }
25
-
26
- function submit(result) {
27
- console.log('>>>> result: ', safeStringify(result))
28
- }
29
-
30
- function loadConfig() {
31
- return new Promise((resolve) => {
32
- getConfigByName(configName.value, (result) => {
33
- submitSimple.value = result.showSubmitBtn
34
- formConfig.value = result
35
- resolve(result)
36
- }, serviceName.value)
37
- })
38
- }
39
-
40
- onBeforeMount(async () => {
41
- try {
42
- await loadConfig()
43
- }
44
- finally {
45
- isLoading.value = false
46
- }
47
- })
48
- </script>
49
-
50
- <template>
51
- <NormalDataLayout id="XFormGroupView" title="纯表单">
52
- <template #layout_content>
53
- <van-loading v-if="isLoading" />
54
- <XForm
55
- v-else
56
- ref="formGroup"
57
- mode="查询"
58
- :service-name="serviceName"
59
- :group-form-items="formConfig"
60
- :form-data="{}"
61
- :form-name="formConfig?.groupName || '11111'"
62
- :submit-button="submitSimple"
63
- @on-submit="submit"
64
- />
65
- </template>
66
- </NormalDataLayout>
67
- </template>
68
-
69
- <style scoped lang="less">
70
- </style>