zhytech-ui-mobile 1.0.2 → 1.0.3

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.
Files changed (81) hide show
  1. package/dist/build/h5/style.css +1 -0
  2. package/dist/build/h5/zhytech-ui-mobile.es.js +19690 -0
  3. package/dist/build/h5/zhytech-ui-mobile.umd.js +6 -0
  4. package/package.json +6 -1
  5. package/.eslintignore +0 -11
  6. package/.eslintrc.cjs +0 -253
  7. package/.prettierignore +0 -0
  8. package/.prettierrc.json +0 -9
  9. package/.vscode/settings.json +0 -131
  10. package/index.html +0 -39
  11. package/shims-uni.d.ts +0 -7
  12. package/src/App.vue +0 -24
  13. package/src/components/dynamicForm/componentRenderer.vue +0 -207
  14. package/src/components/dynamicForm/components/advanced/index.ts +0 -13
  15. package/src/components/dynamicForm/components/advanced/upload.vue +0 -108
  16. package/src/components/dynamicForm/components/advanced/uploadImage.vue +0 -107
  17. package/src/components/dynamicForm/components/answerSheetPopup/answerSheetItem.vue +0 -58
  18. package/src/components/dynamicForm/components/answerSheetPopup/index.vue +0 -111
  19. package/src/components/dynamicForm/components/application/employee.vue +0 -140
  20. package/src/components/dynamicForm/components/application/grade.vue +0 -183
  21. package/src/components/dynamicForm/components/application/index.ts +0 -14
  22. package/src/components/dynamicForm/components/application/post.vue +0 -136
  23. package/src/components/dynamicForm/components/base/checkbox.vue +0 -143
  24. package/src/components/dynamicForm/components/base/index.ts +0 -15
  25. package/src/components/dynamicForm/components/base/input.vue +0 -99
  26. package/src/components/dynamicForm/components/base/label.vue +0 -29
  27. package/src/components/dynamicForm/components/base/radio.vue +0 -155
  28. package/src/components/dynamicForm/components/componentType.ts +0 -16
  29. package/src/components/dynamicForm/components/layout/groupLayout.vue +0 -103
  30. package/src/components/dynamicForm/components/layout/index.ts +0 -12
  31. package/src/components/dynamicForm/formRenderer.vue +0 -567
  32. package/src/components/dynamicForm/index.ts +0 -21
  33. package/src/components/dynamicForm/types/componentAttribute/advanced/uploadAttribute.ts +0 -35
  34. package/src/components/dynamicForm/types/componentAttribute/application/employeeAttribute.ts +0 -42
  35. package/src/components/dynamicForm/types/componentAttribute/application/gradeAttribute.ts +0 -54
  36. package/src/components/dynamicForm/types/componentAttribute/application/postAttribute.ts +0 -42
  37. package/src/components/dynamicForm/types/componentAttribute/base/checkboxAttribute.ts +0 -38
  38. package/src/components/dynamicForm/types/componentAttribute/base/inputAttribute.ts +0 -31
  39. package/src/components/dynamicForm/types/componentAttribute/base/radioAttribute.ts +0 -30
  40. package/src/components/dynamicForm/types/componentAttribute/baseAttribute.ts +0 -110
  41. package/src/components/dynamicForm/types/componentAttribute/editAttribute.ts +0 -70
  42. package/src/components/dynamicForm/types/componentAttribute/index.ts +0 -37
  43. package/src/components/dynamicForm/types/componentAttribute/layout/groupLayoutAttribute.ts +0 -39
  44. package/src/components/dynamicForm/types/documentView.ts +0 -110
  45. package/src/components/dynamicForm/types/enum.ts +0 -109
  46. package/src/components/dynamicForm/types/formAttribute.ts +0 -93
  47. package/src/components/dynamicForm/types/uploadOption.ts +0 -31
  48. package/src/env.d.ts +0 -8
  49. package/src/hooks/useMessage.ts +0 -44
  50. package/src/hooks/useToast.ts +0 -29
  51. package/src/hooks/useUtils.ts +0 -201
  52. package/src/index.ts +0 -59
  53. package/src/main.ts +0 -19
  54. package/src/manifest.json +0 -72
  55. package/src/pages/dynamicFormDemo.vue +0 -1260
  56. package/src/pages/dynamicFormExaminationDemo.vue +0 -567
  57. package/src/pages.json +0 -58
  58. package/src/shime-uni.d.ts +0 -6
  59. package/src/uni.scss +0 -76
  60. package/src/unocss/index.ts +0 -20
  61. package/src/unocss/rules.ts +0 -139
  62. package/src/unocss/shortcuts.ts +0 -53
  63. package/src/unocss/theme/index.ts +0 -13
  64. package/src/unocss/theme/themeOption/dark.ts +0 -35
  65. package/src/unocss/theme/themeOption/primary.ts +0 -33
  66. package/src/unocss/variants.ts +0 -110
  67. package/tsconfig.json +0 -19
  68. package/uno.config.ts +0 -63
  69. package/vite.config.ts +0 -83
  70. /package/{src → dist/build/h5}/static/iconfont/iconfont.css +0 -0
  71. /package/{src → dist/build/h5}/static/iconfont/iconfont.ttf +0 -0
  72. /package/{src → dist/build/h5}/static/iconfont/iconfont.woff +0 -0
  73. /package/{src → dist/build/h5}/static/iconfont/iconfont.woff2 +0 -0
  74. /package/{src → dist/build/h5}/static/scss/actionSheet.scss +0 -0
  75. /package/{src → dist/build/h5}/static/scss/button.scss +0 -0
  76. /package/{src → dist/build/h5}/static/scss/checkbox.scss +0 -0
  77. /package/{src → dist/build/h5}/static/scss/form.scss +0 -0
  78. /package/{src → dist/build/h5}/static/scss/index.scss +0 -0
  79. /package/{src → dist/build/h5}/static/scss/input.scss +0 -0
  80. /package/{src → dist/build/h5}/static/scss/picker.scss +0 -0
  81. /package/{src → dist/build/h5}/static/scss/radio.scss +0 -0
@@ -1,99 +0,0 @@
1
- <!--
2
- * FilePath : \src\components\dynamicForm\components\base\input.vue
3
- * Author : 苏军志
4
- * Date : 2024-03-05 08:48
5
- * LastEditors : 苏军志
6
- * LastEditTime : 2025-09-05 10:01
7
- * Description : 文本框(input)组件渲染器
8
- * CodeIterationRecord:
9
- -->
10
- <template>
11
- <view class="zhy-form-component-input">
12
- <wd-input
13
- :type="componentProps.type"
14
- custom-class="zhy"
15
- v-model="datas[componentID]"
16
- :placeholder="componentProps.placeholder"
17
- :clearable="componentProps.clearable"
18
- :disabled="disabled"
19
- :readonly="readonly"
20
- clearTrigger="focus"
21
- />
22
- <view
23
- v-if="
24
- everyItemDisplayAnalysisSwitch ||
25
- displayAnswerDescription ||
26
- (showDescription && (formType === formTypeEnum.Examination || componentProps.description))
27
- "
28
- :class="['dynamic-form-item-description', { 'show-description': displayAnswerDescription }]"
29
- >
30
- <wd-icon
31
- custom-class="description-tip"
32
- class-prefix="iconfont zhy"
33
- name="tip"
34
- color="#ff0000"
35
- @click="displayAnswerDescription = !displayAnswerDescription"
36
- />
37
- <view v-if="displayAnswerDescription">
38
- {{ `${formType === formTypeEnum.Form ? "项目说明" : "答案解析"}:${componentProps.description || "无"}` }}</view
39
- >
40
- </view>
41
- </view>
42
- </template>
43
- <script setup lang="ts">
44
- import { formTypeEnum } from "../../types/enum";
45
- import type { baseAttribute, editAttribute, inputAttribute } from "../../types/componentAttribute/index";
46
- type componentType = baseAttribute & editAttribute & inputAttribute;
47
- const props = defineProps({
48
- /**
49
- * 是否禁用
50
- */
51
- disabled: {
52
- type: Boolean,
53
- default: false
54
- },
55
- /**
56
- * 是否只读
57
- */
58
- readonly: {
59
- type: Boolean,
60
- default: false
61
- },
62
- /**
63
- * 组件ID
64
- */
65
- componentID: {
66
- type: [String, Number],
67
- required: true
68
- },
69
- /**
70
- * 表单数据
71
- */
72
- datas: {
73
- type: Object as PropType<Record<string, any>>,
74
- required: true
75
- },
76
- /**
77
- * 组件属性
78
- */
79
- componentProps: {
80
- type: Object as PropType<componentType>,
81
- required: true
82
- },
83
- /**
84
- * 是否项目说明/答案解析
85
- */
86
- showDescription: {
87
- type: Boolean,
88
- default: false
89
- }
90
- });
91
- // 表单类型
92
- const formType = inject("formType") as ComputedRef<string>;
93
- const everyItemDisplayAnalysisSwitch = inject("everyItemDisplayAnalysisSwitch") as boolean;
94
- const displayAnswerDescription = ref<boolean>(false);
95
- // 双向绑定
96
- const { datas, componentProps } = toRefs(props);
97
- const emits = defineEmits(["update:datas"]);
98
- watch(datas, (newValue) => emits("update:datas", newValue));
99
- </script>
@@ -1,29 +0,0 @@
1
- <!--
2
- * FilePath : \src\components\dynamicForm\components\base\label.vue
3
- * Author : 苏军志
4
- * Date : 2024-03-04 16:42
5
- * LastEditors : 苏军志
6
- * LastEditTime : 2025-08-24 20:01
7
- * Description :导出标签(label)组件渲染器
8
- * CodeIterationRecord:
9
- -->
10
-
11
- <template>
12
- <wd-text
13
- custom-class="zhy"
14
- :text="componentProps.label"
15
- :size="`${componentProps.fontSize > 14 ? componentProps.fontSize : 14}px`"
16
- :bold="componentProps.isBold"
17
- :color="componentProps.color"
18
- ></wd-text>
19
- </template>
20
- <script setup lang="ts">
21
- import type { baseAttribute } from "../../types/componentAttribute/index";
22
- type componentType = baseAttribute;
23
- defineProps({
24
- componentProps: {
25
- type: Object as PropType<componentType>,
26
- required: true
27
- }
28
- });
29
- </script>
@@ -1,155 +0,0 @@
1
- <!--
2
- * FilePath : \src\components\dynamicForm\components\base\radio.vue
3
- * Author : 苏军志
4
- * Date : 2024-03-06 14:20
5
- * LastEditors : 苏军志
6
- * LastEditTime : 2025-09-05 10:02
7
- * Description : 单选框(radio)组件渲染器
8
- * CodeIterationRecord:
9
- -->
10
- <template>
11
- <view class="zhy-form-component-radio">
12
- <wd-radio-group
13
- custom-class="zhy"
14
- v-model="datas[componentID]"
15
- :disabled="disabled"
16
- :inline="!componentProps.newLine"
17
- icon-placement="left"
18
- shape="dot"
19
- @change="change"
20
- >
21
- <template v-for="(item, index) in componentProps.options" :key="index">
22
- <wd-radio :value="item.value" @click="clearCheck($event, item.value)">
23
- {{ item.label }}
24
- </wd-radio>
25
- <wd-input
26
- v-if="item.inputEnable && datas[componentID]?.includes(item.value)"
27
- custom-class="zhy ml-20!"
28
- type="text"
29
- placeholder=""
30
- :clearable="true"
31
- clearTrigger="focus"
32
- v-model="datas[`${componentID}||${item.value}`]"
33
- />
34
- </template>
35
- </wd-radio-group>
36
- <view
37
- v-if="
38
- everyItemDisplayAnalysisSwitch ||
39
- displayAnswerDescription ||
40
- (showDescription && (formType === formTypeEnum.Examination || componentProps.description))
41
- "
42
- :class="['dynamic-form-item-description', { 'show-description': displayAnswerDescription }]"
43
- >
44
- <wd-icon
45
- custom-class="description-tip"
46
- class-prefix="iconfont zhy"
47
- name="tip"
48
- color="#ff0000"
49
- @click="displayAnswerDescription = !displayAnswerDescription"
50
- />
51
- <view v-if="displayAnswerDescription">
52
- {{ `${formType === formTypeEnum.Form ? "项目说明" : "答案解析"}:${componentProps.description || "无"}` }}</view
53
- >
54
- </view>
55
- </view>
56
- </template>
57
- <script setup lang="ts">
58
- import { formTypeEnum, examinationStatusEnum } from "../../types/enum";
59
- import type { baseAttribute, editAttribute, radioAttribute } from "../../types/componentAttribute/index";
60
- type componentType = baseAttribute & editAttribute & radioAttribute;
61
- const props = defineProps({
62
- /**
63
- * 是否禁用
64
- */
65
- disabled: {
66
- type: Boolean,
67
- default: false
68
- },
69
- /**
70
- * 组件ID
71
- */
72
- componentID: {
73
- type: [String, Number],
74
- required: true
75
- },
76
- /**
77
- * 表单数据
78
- */
79
- datas: {
80
- type: Object as PropType<Record<string, any>>,
81
- required: true
82
- },
83
- /**
84
- * 组件属性
85
- */
86
- componentProps: {
87
- type: Object as PropType<componentType>,
88
- required: true
89
- },
90
- /**
91
- * 是否项目说明/答案解析
92
- */
93
- showDescription: {
94
- type: Boolean,
95
- default: false
96
- }
97
- });
98
- // 表单类型
99
- const formType = inject("formType") as ComputedRef<string>;
100
- const realTimeDisplayAnswerMode = inject("realTimeDisplayAnswerMode") as boolean;
101
- const everyItemDisplayAnalysisSwitch = inject("everyItemDisplayAnalysisSwitch") as boolean;
102
- // 双向绑定
103
- const { datas, componentProps } = toRefs(props);
104
- const emits = defineEmits(["update:datas"]);
105
- watch(datas, (newValue) => emits("update:datas", newValue));
106
- let oldValue: string | number | boolean | undefined = datas.value[props.componentID];
107
- const displayAnswerDescription = ref<boolean>(false);
108
- /**
109
- * @description: 选项值改变,如果允许填空的选项被取消勾选,填空内容也清空
110
- * @param value
111
- * @return
112
- */
113
- const change = (values: any) => {
114
- const { value } = values ?? {};
115
- // 如果是考试,并且打开了实时显示答案模式
116
- if (formType.value === formTypeEnum.Examination && realTimeDisplayAnswerMode && value && componentProps.value.correctOptions?.length) {
117
- if (componentProps.value.correctOptions?.includes(value)) {
118
- componentProps.value.examinationStatus = examinationStatusEnum.Correct;
119
- componentProps.value.color = "#000000";
120
- displayAnswerDescription.value = false;
121
- } else {
122
- componentProps.value.examinationStatus = examinationStatusEnum.Error;
123
- componentProps.value.color = "#ff0000";
124
- displayAnswerDescription.value = true;
125
- }
126
- }
127
- componentProps.value.options.forEach((option) => {
128
- // 如果允许填空的选项被取消勾选,填空内容也清空
129
- const inputKey = `${props.componentID}||${option.value}`;
130
- if (value !== option.value && datas.value[inputKey]) {
131
- delete datas.value[inputKey];
132
- }
133
- });
134
- };
135
- change(datas.value[props.componentID]);
136
- /**
137
- * @description: 清空选项检核
138
- * @param event
139
- * @param value
140
- * @return
141
- */
142
- const clearCheck = (event: any, value: string) => {
143
- // 如果点击项目已选中,且允许取消,则取消选中
144
- if (componentProps.value.clearable && oldValue === value) {
145
- delete datas.value[props.componentID];
146
- oldValue = undefined;
147
- // 如果允许填空的选项被取消勾选,填空内容也清空
148
- const inputKey = `${props.componentID}||${value}`;
149
- datas.value[inputKey] && delete datas.value[inputKey];
150
- event.preventDefault();
151
- return;
152
- }
153
- oldValue = value;
154
- };
155
- </script>
@@ -1,16 +0,0 @@
1
- /*
2
- * FilePath : \src\components\dynamicForm\components\componentType.ts
3
- * Author : 苏军志
4
- * Date : 2024-03-04 19:04
5
- * LastEditors : 苏军志
6
- * LastEditTime : 2024-03-30 19:12
7
- * Description : 组件集合
8
- * CodeIterationRecord:
9
- */
10
-
11
- import * as baseComponent from "./base/index";
12
- import * as advancedComponent from "./advanced/index";
13
- import * as applicationComponent from "./application/index";
14
- import * as layoutComponent from "./layout/index";
15
-
16
- export { baseComponent, advancedComponent, applicationComponent, layoutComponent };
@@ -1,103 +0,0 @@
1
- <!--
2
- * FilePath : \src\components\dynamicForm\components\layout\groupLayout.vue
3
- * Author : 苏军志
4
- * Date : 2024-06-14 11:38
5
- * LastEditors : 苏军志
6
- * LastEditTime : 2025-09-05 10:21
7
- * Description : 分组面板(groupLayout)组件渲染器
8
- * CodeIterationRecord:
9
- -->
10
-
11
- <template>
12
- <view class="group-layout-component px-10 box-border" :style="style">
13
- <view
14
- v-if="component.props.showLabel"
15
- :class="['py-5', { 'fs-20!': onePageItemFlag }]"
16
- :style="{
17
- color: component.props.color,
18
- 'font-size': component.props.fontSize + 'px',
19
- 'font-weight': component.props.isBold ? 'bold' : 'normal'
20
- }"
21
- >
22
- {{ component.props.label }}
23
- </view>
24
- <component-renderer
25
- :components="component.children"
26
- :disabled="disabled"
27
- :labelPosition="labelPosition"
28
- :showDescription="showDescription"
29
- :onePageItemFlag="onePageItemFlag"
30
- :currentShowIDArray="currentShowIDArray"
31
- @validate="(prop:string) => emits('validate', prop)"
32
- ></component-renderer>
33
- </view>
34
- </template>
35
- <script setup lang="ts">
36
- import componentRenderer from "../../componentRenderer.vue";
37
- const emits = defineEmits(["validate"]);
38
- const props = defineProps({
39
- /**
40
- * 组件ID
41
- */
42
- componentID: {
43
- type: [String, Number],
44
- required: true
45
- },
46
- /**
47
- * 组件
48
- */
49
- component: {
50
- type: Object as PropType<Record<string, any>>,
51
- required: true
52
- },
53
- /**
54
- * 是否禁用
55
- */
56
- disabled: {
57
- type: Boolean,
58
- default: false
59
- },
60
- /**
61
- * 标题位置
62
- */
63
- labelPosition: {
64
- type: String,
65
- default: "top"
66
- },
67
- /**
68
- * 是否项目说明/答案解析
69
- */
70
- showDescription: {
71
- type: Boolean,
72
- default: false
73
- },
74
- /**
75
- * 一页一项标记
76
- */
77
- onePageItemFlag: {
78
- type: Boolean,
79
- default: false
80
- },
81
- /**
82
- * 一页一项时的当前显示项目ID集合
83
- */
84
- currentShowIDArray: {
85
- type: Array<String>,
86
- default: []
87
- }
88
- });
89
- const { component, showDescription, onePageItemFlag, currentShowIDArray } = toRefs(props);
90
- !component.value.children && (component.value.children = []);
91
- const style = computed(() => {
92
- let styles: Record<string, string> = {
93
- "background-color": component.value.props.backgroundColor || ""
94
- };
95
- if (component.value.props.showBorder) {
96
- styles["border"] = `${component.value.props.borderWidth}px ${component.value.props.borderStyle} ${component.value.props.borderColor}`;
97
- }
98
- if (component.value.props.borderRadius) {
99
- styles["border-radius"] = `${component.value.props.borderRadius}px`;
100
- }
101
- return styles;
102
- });
103
- </script>
@@ -1,12 +0,0 @@
1
- /*
2
- * FilePath : \src\components\dynamicForm\components\advanced\index.ts
3
- * Author : 苏军志
4
- * Date : 2024-03-04 19:04
5
- * LastEditors : 苏军志
6
- * LastEditTime : 2024-07-19 17:35
7
- * Description : 高级组件集合
8
- * CodeIterationRecord:
9
- */
10
-
11
- import groupLayout from "./groupLayout.vue";
12
- export { groupLayout };