business_tms_program 0.0.0
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/.editorconfig +12 -0
- package/.eslintrc-auto-import.json +113 -0
- package/.eslintrc.js +121 -0
- package/.prettierrc.js +9 -0
- package/.stylelintignore +4 -0
- package/README.md +43 -0
- package/components.d.ts +23 -0
- package/index.html +20 -0
- package/package.json +70 -0
- package/shims-uni.d.ts +10 -0
- package/src/App.vue +81 -0
- package/src/api/afterSale.ts +184 -0
- package/src/api/context.ts +26 -0
- package/src/api/device.ts +134 -0
- package/src/api/index.ts +80 -0
- package/src/api/installtion.ts +155 -0
- package/src/api/model/index.ts +15 -0
- package/src/api/model/userModel.ts +62 -0
- package/src/api/order.ts +49 -0
- package/src/api/system.ts +19 -0
- package/src/api/user.ts +171 -0
- package/src/auto-imports.d.ts +108 -0
- package/src/components/ConfirmDialog.vue +101 -0
- package/src/components/DaySelect.vue +212 -0
- package/src/components/Drawer.vue +104 -0
- package/src/components/DrawerSelect.vue +105 -0
- package/src/components/DropMenu.vue +144 -0
- package/src/components/Empty.vue +49 -0
- package/src/components/Loading.vue +41 -0
- package/src/components/RippleBtn.vue +159 -0
- package/src/components/SinglePick.vue +120 -0
- package/src/components/Skeleton.vue +43 -0
- package/src/components/Timeline.vue +85 -0
- package/src/components/Upload.vue +217 -0
- package/src/config/app.ts +32 -0
- package/src/config/env.ts +29 -0
- package/src/dict/afterSale.ts +161 -0
- package/src/dict/device.ts +29 -0
- package/src/dict/installtion.ts +141 -0
- package/src/dict/systems.ts +4 -0
- package/src/env.d.ts +8 -0
- package/src/hooks/useForm.ts +222 -0
- package/src/hooks/useUpload.ts +80 -0
- package/src/main.ts +8 -0
- package/src/manifest.json +39 -0
- package/src/pages/acceptance/DeviceInfo.vue +132 -0
- package/src/pages/acceptance/list.vue +276 -0
- package/src/pages/afterSale/DeviceInfo.vue +128 -0
- package/src/pages/afterSale/Step.vue +0 -0
- package/src/pages/afterSale/faultReport.vue +552 -0
- package/src/pages/afterSale/orderDetail.vue +327 -0
- package/src/pages/afterSale/orderFinish.vue +517 -0
- package/src/pages/afterSale/orderList.vue +305 -0
- package/src/pages/afterSale/returnVisit.vue +288 -0
- package/src/pages/afterSale/searchDeviceList.vue +148 -0
- package/src/pages/device/Search.vue +201 -0
- package/src/pages/device/acceptance.vue +270 -0
- package/src/pages/device/detail.vue +165 -0
- package/src/pages/device/index.vue +322 -0
- package/src/pages/device/info.vue +140 -0
- package/src/pages/device/list.vue +219 -0
- package/src/pages/device/materialTowerCode.vue +589 -0
- package/src/pages/device/searchList.vue +224 -0
- package/src/pages/installtion/Record.vue +145 -0
- package/src/pages/installtion/StatusTimeline.vue +85 -0
- package/src/pages/installtion/addAcceptance.vue +409 -0
- package/src/pages/installtion/addRecord.vue +338 -0
- package/src/pages/installtion/orderDetail.vue +220 -0
- package/src/pages/installtion/orderList.vue +100 -0
- package/src/pages/user/component/PersonAgree.vue +226 -0
- package/src/pages/user/component/PrivayAgree.vue +221 -0
- package/src/pages/user/component/SliderCode.vue +173 -0
- package/src/pages/user/forgetPassword.vue +249 -0
- package/src/pages/user/index.vue +139 -0
- package/src/pages/user/login.vue +342 -0
- package/src/pages/user/register.vue +348 -0
- package/src/pages/user/repassword.vue +329 -0
- package/src/pages/user/utils/mcaptcha.js +75 -0
- package/src/pages/user/utils/verifyCode.ts +41 -0
- package/src/pages/workspace/index.vue +225 -0
- package/src/pages.json +203 -0
- package/src/shime-uni.d.ts +6 -0
- package/src/static/icon/system/breeder_icon.png +0 -0
- package/src/static/icon/system/check.png +0 -0
- package/src/static/icon/system/factory_icon.png +0 -0
- package/src/static/icon/system/plus.png +0 -0
- package/src/static/icon/system/right.png +0 -0
- package/src/static/icon/system/unCheck.png +0 -0
- package/src/static/icon/tab/search.png +0 -0
- package/src/static/icon/tab/user.png +0 -0
- package/src/static/icon/tab/user_active.png +0 -0
- package/src/static/icon/tab/workspace.png +0 -0
- package/src/static/icon/tab/workspace_active.png +0 -0
- package/src/static/img/active_dot.png +0 -0
- package/src/static/img/afterSale_icon.png +0 -0
- package/src/static/img/check.png +0 -0
- package/src/static/img/close.png +0 -0
- package/src/static/img/confirm.png +0 -0
- package/src/static/img/empty.png +0 -0
- package/src/static/img/equipment_icon.png +0 -0
- package/src/static/img/fault_icon.png +0 -0
- package/src/static/img/install_icon.png +0 -0
- package/src/static/img/login_bg2.png +0 -0
- package/src/static/img/movable_right.png +0 -0
- package/src/static/img/navigation.png +0 -0
- package/src/static/img/psw_off.png +0 -0
- package/src/static/img/psw_on.png +0 -0
- package/src/static/img/scan.png +0 -0
- package/src/static/img/scan_icon.png +0 -0
- package/src/static/img/search.png +0 -0
- package/src/static/img/turn_right.png +0 -0
- package/src/static/img/unActive_dot.png +0 -0
- package/src/static/img/verifyBg.png +0 -0
- package/src/stores/index.ts +11 -0
- package/src/stores/modules/customer.ts +146 -0
- package/src/stores/modules/installtion.ts +30 -0
- package/src/stores/modules/system.ts +56 -0
- package/src/stores/modules/user.ts +133 -0
- package/src/stores/types.ts +16 -0
- package/src/stores/utils.ts +6 -0
- package/src/styles/index.less +63 -0
- package/src/types/chengyiApi.d.ts +36 -0
- package/src/types/index.d.ts +95 -0
- package/src/utils/address.ts +17 -0
- package/src/utils/cipher.ts +61 -0
- package/src/utils/form.ts +155 -0
- package/src/utils/httpEnum.ts +31 -0
- package/src/utils/image.ts +21 -0
- package/src/utils/index.ts +111 -0
- package/src/utils/request.ts +139 -0
- package/src/utils/requestCancelHandle.ts +67 -0
- package/stylelint.config.js +87 -0
- package/tsconfig.docs.json +11 -0
- package/tsconfig.json +30 -0
- package/typedoc.json +6 -0
- package/vite.config.ts +55 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
export interface TimelineItem {
|
|
3
|
+
content?: string
|
|
4
|
+
icon?: string
|
|
5
|
+
color?: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const props = defineProps({
|
|
9
|
+
items: {
|
|
10
|
+
type: Array as () => TimelineItem[],
|
|
11
|
+
required: true
|
|
12
|
+
},
|
|
13
|
+
activeColor: {
|
|
14
|
+
type: String,
|
|
15
|
+
default: '#1D6FE9'
|
|
16
|
+
},
|
|
17
|
+
inactiveColor: {
|
|
18
|
+
type: String,
|
|
19
|
+
default: '#e8e8e8'
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<view class="timeline">
|
|
26
|
+
<view
|
|
27
|
+
v-for="(item, index) in items"
|
|
28
|
+
:key="index"
|
|
29
|
+
class="timeline-item"
|
|
30
|
+
>
|
|
31
|
+
<view
|
|
32
|
+
v-if="index !== items.length - 1"
|
|
33
|
+
class="timeline-line"
|
|
34
|
+
></view>
|
|
35
|
+
<view
|
|
36
|
+
class="timeline-dot"
|
|
37
|
+
>
|
|
38
|
+
</view>
|
|
39
|
+
|
|
40
|
+
<!-- 改为插槽形式 -->
|
|
41
|
+
<slot name="content" :item="item" :index="index">
|
|
42
|
+
</slot>
|
|
43
|
+
</view>
|
|
44
|
+
</view>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<style scoped lang="less">
|
|
48
|
+
.timeline {
|
|
49
|
+
|
|
50
|
+
.timeline-item {
|
|
51
|
+
position: relative;
|
|
52
|
+
padding-left: 40rpx;
|
|
53
|
+
margin-bottom: 18rpx;
|
|
54
|
+
min-height: 100rpx; /* 添加最小高度保证基本布局 */
|
|
55
|
+
|
|
56
|
+
&:last-child {
|
|
57
|
+
margin-bottom: 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.timeline-line {
|
|
61
|
+
position: absolute;
|
|
62
|
+
left: 8rpx;
|
|
63
|
+
top: 40rpx;
|
|
64
|
+
width: 2rpx;
|
|
65
|
+
height: calc(100% - 24rpx); /* 调整高度计算方式 */
|
|
66
|
+
background-color: #6ca3f7;
|
|
67
|
+
opacity: 0.9;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.timeline-dot {
|
|
71
|
+
position: absolute;
|
|
72
|
+
left: 0;
|
|
73
|
+
top: 10rpx;
|
|
74
|
+
border-radius: 50%;
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
justify-content: center;
|
|
78
|
+
width: 20rpx;
|
|
79
|
+
height: 20rpx;
|
|
80
|
+
background: #217aff;
|
|
81
|
+
opacity: 0.9;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
</style>
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref, computed, watch } from 'vue'
|
|
3
|
+
import { isArray } from 'lodash-es'
|
|
4
|
+
import { generateUUID } from '@/utils/index'
|
|
5
|
+
import { useUpload } from '@/hooks/useUpload'
|
|
6
|
+
import { UPLOAD_HOST } from '@/config/app';
|
|
7
|
+
type FileItem = {
|
|
8
|
+
id: string
|
|
9
|
+
attachmentUrl: string | ArrayBuffer
|
|
10
|
+
[key: string]: any
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const props = defineProps({
|
|
14
|
+
// 最大上传数量
|
|
15
|
+
maxCount: {
|
|
16
|
+
type: Number,
|
|
17
|
+
default: 9
|
|
18
|
+
},
|
|
19
|
+
// 是否显示上传按钮
|
|
20
|
+
showUpload: {
|
|
21
|
+
type: Boolean,
|
|
22
|
+
default: true
|
|
23
|
+
},
|
|
24
|
+
// 图片尺寸
|
|
25
|
+
size: {
|
|
26
|
+
type: Number,
|
|
27
|
+
default: 176
|
|
28
|
+
},
|
|
29
|
+
// 上传文件列表
|
|
30
|
+
files: {
|
|
31
|
+
type: Array,
|
|
32
|
+
default: () => []
|
|
33
|
+
},
|
|
34
|
+
moduleName: {
|
|
35
|
+
type: String,
|
|
36
|
+
default: ''
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
const emit = defineEmits(['change', 'success', 'fail'])
|
|
41
|
+
|
|
42
|
+
const fileList = ref<FileItem[]>([])
|
|
43
|
+
const loading = ref(false)
|
|
44
|
+
const { upload } = useUpload()
|
|
45
|
+
|
|
46
|
+
watch(() => props.files, (newVal) => {
|
|
47
|
+
fileList.value = newVal as any
|
|
48
|
+
}, {
|
|
49
|
+
immediate: true
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
// 计算是否达到最大上传数量
|
|
53
|
+
const isMax = computed(() => fileList.value.length >= props.maxCount)
|
|
54
|
+
|
|
55
|
+
const chooseImage = () => {
|
|
56
|
+
console.log('chooseImage', fileList.value.length)
|
|
57
|
+
if (isMax.value) return
|
|
58
|
+
|
|
59
|
+
uni.chooseImage({
|
|
60
|
+
sizeType: ['original', 'compressed'],
|
|
61
|
+
sourceType: ['album', 'camera'],
|
|
62
|
+
success: handleSuccess,
|
|
63
|
+
fail: handleFail
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const handleSuccess = async (res: UniApp.ChooseImageSuccessCallbackResult) => {
|
|
68
|
+
if (!isArray(res.tempFilePaths)) return
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
uni.showLoading({
|
|
72
|
+
title: '上传中...',
|
|
73
|
+
mask: true,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// 新上传的图片自拟id
|
|
77
|
+
const newFiles = res.tempFilePaths.map(url => ({
|
|
78
|
+
url,
|
|
79
|
+
uid: generateUUID()
|
|
80
|
+
}))
|
|
81
|
+
fileList.value = [...props.files, ...newFiles] as any
|
|
82
|
+
// 上传真实数组
|
|
83
|
+
const uploadedFiles = await upload(newFiles, { moduleName: props.moduleName } )
|
|
84
|
+
const newFileList = uploadedFiles.map((item: any) => {
|
|
85
|
+
const { attachmentId, attachmentUrl } = item.data
|
|
86
|
+
return {
|
|
87
|
+
id: attachmentId,
|
|
88
|
+
url: item.url,
|
|
89
|
+
attachmentUrl: UPLOAD_HOST + attachmentUrl,
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
emit('change', [...props.files, ...newFileList])
|
|
93
|
+
|
|
94
|
+
} catch (err) {
|
|
95
|
+
emit('fail', err)
|
|
96
|
+
} finally {
|
|
97
|
+
uni.hideLoading();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const handleFail = (err: any) => {
|
|
102
|
+
uni.showToast({ title: '选择图片失败', icon: 'none' })
|
|
103
|
+
emit('fail', err)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// 删除图片
|
|
107
|
+
const removeImage = (index: number) => {
|
|
108
|
+
fileList.value.splice(index, 1)
|
|
109
|
+
emit('change', fileList.value)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// 新增预览方法
|
|
113
|
+
const handlePreview = (index: number) => {
|
|
114
|
+
const urls = fileList.value.map(file => file.url || file.attachmentUrl)
|
|
115
|
+
uni.previewImage({
|
|
116
|
+
current: index, // 当前显示图片的索引
|
|
117
|
+
urls: urls, // 需要预览的图片链接列表
|
|
118
|
+
indicator: 'number', // 显示页码指示器
|
|
119
|
+
loop: false // 不循环预览
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
</script>
|
|
123
|
+
|
|
124
|
+
<template>
|
|
125
|
+
<view class="upload-container">
|
|
126
|
+
<view class="upload-list">
|
|
127
|
+
<view
|
|
128
|
+
v-for="(file, index) in fileList"
|
|
129
|
+
:key="file.uid || file.id"
|
|
130
|
+
class="upload-item"
|
|
131
|
+
@click="handlePreview(index)"
|
|
132
|
+
>
|
|
133
|
+
<image
|
|
134
|
+
class="upload-image"
|
|
135
|
+
:src="file.url || file.attachmentUrl"
|
|
136
|
+
mode="aspectFill"
|
|
137
|
+
/>
|
|
138
|
+
<view class="upload-remove" @click.stop="removeImage(index)">×</view>
|
|
139
|
+
</view>
|
|
140
|
+
|
|
141
|
+
<view
|
|
142
|
+
v-if="showUpload && !isMax"
|
|
143
|
+
class="upload-add"
|
|
144
|
+
@click="chooseImage"
|
|
145
|
+
>
|
|
146
|
+
<image
|
|
147
|
+
class="upload-add-icon"
|
|
148
|
+
src="../static/icon/system/plus.png"
|
|
149
|
+
/>
|
|
150
|
+
<view class="upload-add-text">选择图片</view>
|
|
151
|
+
</view>
|
|
152
|
+
</view>
|
|
153
|
+
</view>
|
|
154
|
+
</template>
|
|
155
|
+
|
|
156
|
+
<style scoped lang="less">
|
|
157
|
+
.upload-container {
|
|
158
|
+
.upload-list {
|
|
159
|
+
display: flex;
|
|
160
|
+
flex-wrap: wrap;
|
|
161
|
+
gap: 20rpx;
|
|
162
|
+
|
|
163
|
+
.upload-item {
|
|
164
|
+
position: relative;
|
|
165
|
+
|
|
166
|
+
.upload-image {
|
|
167
|
+
border-radius: 8rpx;
|
|
168
|
+
width: 176rpx;
|
|
169
|
+
height: 176rpx;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.upload-remove {
|
|
173
|
+
position: absolute;
|
|
174
|
+
top: -10rpx;
|
|
175
|
+
right: -10rpx;
|
|
176
|
+
width: 40rpx;
|
|
177
|
+
height: 40rpx;
|
|
178
|
+
background: #ff4d4f;
|
|
179
|
+
border-radius: 50%;
|
|
180
|
+
color: white;
|
|
181
|
+
display: flex;
|
|
182
|
+
align-items: center;
|
|
183
|
+
justify-content: center;
|
|
184
|
+
font-size: 24rpx;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.upload-add {
|
|
189
|
+
display: flex;
|
|
190
|
+
flex-direction: column;
|
|
191
|
+
border: 2rpx dashed #DCDCDC;
|
|
192
|
+
background: #EEEEEE;
|
|
193
|
+
padding: 28rpx;
|
|
194
|
+
border-radius: 4rpx;
|
|
195
|
+
width: 176rpx;
|
|
196
|
+
height: 176rpx;
|
|
197
|
+
.upload-add-icon {
|
|
198
|
+
width: 48rpx;
|
|
199
|
+
height: 48rpx;
|
|
200
|
+
margin: 0 auto 18rpx auto;
|
|
201
|
+
}
|
|
202
|
+
.upload-add-text {
|
|
203
|
+
font-size: 24rpx;
|
|
204
|
+
color: rgba(0, 0, 0, 0.4);
|
|
205
|
+
line-height: 38rpx;
|
|
206
|
+
text-align: center;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.upload-loading {
|
|
212
|
+
margin-top: 16rpx;
|
|
213
|
+
color: #1890ff;
|
|
214
|
+
font-size: 24rpx;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
</style>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const APP_NAME = '诚一智慧渔业';
|
|
2
|
+
export const APP_ID = 'business_tms_program';
|
|
3
|
+
export const APP_VERSION = '1.0.0';
|
|
4
|
+
|
|
5
|
+
export const FILE_UPLOAD_CONFIG = {
|
|
6
|
+
device_verify: {
|
|
7
|
+
moduleName: "device_verify",
|
|
8
|
+
accept: "image/jpg,image/jpeg,image/png,image/jp2,image/ico,image/gif",
|
|
9
|
+
maxSize: 20 // 单位:M
|
|
10
|
+
},
|
|
11
|
+
install_order: {
|
|
12
|
+
moduleName: "install_order",
|
|
13
|
+
accept: "image/jpg,image/jpeg,image/png,image/jp2,image/ico,image/gif",
|
|
14
|
+
maxSize: 20 // 单位:M
|
|
15
|
+
},
|
|
16
|
+
after_order: {
|
|
17
|
+
moduleName: "after_order",
|
|
18
|
+
accept: "image/jpg,image/jpeg,image/png,image/jp2,image/ico,image/gif",
|
|
19
|
+
maxSize: 20 // 单位:M
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const APPID = "business_tms_program";
|
|
24
|
+
export const UPLOAD_HOST = "https://file-general.oss-cn-guangzhou.aliyuncs.com";
|
|
25
|
+
// 微信默认头像
|
|
26
|
+
export const WEIXIN_AVATAR= 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132'
|
|
27
|
+
|
|
28
|
+
export const scrollIdPrefix = 'scroll-id-';
|
|
29
|
+
|
|
30
|
+
export const PLACEHOLDER = "--";
|
|
31
|
+
|
|
32
|
+
export const loginBg = 'https://file-general.oss-cn-guangzhou.aliyuncs.com/dev/after_order/67263be0-d6ed-4ea0-ac7e-59cf525ade50.png'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const apiEnv: ApiEnv = import.meta.env.MODE === 'development'? 'dev' : 'prod'
|
|
2
|
+
|
|
3
|
+
// http://192.168.101.23:8184, 熊
|
|
4
|
+
const envMap = {
|
|
5
|
+
dev: {
|
|
6
|
+
baseUrl: 'http://m.dev.xxx.com',
|
|
7
|
+
apiBaseUrl: 'https://tms-dev.chengyieco.com/api',
|
|
8
|
+
systemUrl: 'https://tms-dev.chengyieco.com/api',
|
|
9
|
+
generalUrl: 'https://tms-dev.chengyieco.com/api',
|
|
10
|
+
},
|
|
11
|
+
prod: {
|
|
12
|
+
baseUrl: 'https://m.xxx.com',
|
|
13
|
+
apiBaseUrl: 'http://192.168.100.242:8182',
|
|
14
|
+
systemUrl: 'http://192.168.100.242:8089',
|
|
15
|
+
generalUrl: 'http://crm-dev.cyaiot.cn',
|
|
16
|
+
},
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type ApiEnv = keyof typeof envMap
|
|
20
|
+
type Env<T extends ApiEnv> = {
|
|
21
|
+
apiEnv: T
|
|
22
|
+
} & (typeof envMap)[T]
|
|
23
|
+
|
|
24
|
+
function createEnv(apiEnv: ApiEnv): Env<typeof apiEnv> {
|
|
25
|
+
return Object.assign({ apiEnv }, envMap[apiEnv])
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const env = createEnv(apiEnv)
|
|
29
|
+
export default env
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export enum workStatus {
|
|
2
|
+
uncomplete = 1,
|
|
3
|
+
complete = 2,
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//1、未开始,2、执行中,3、已完成,4、已作废
|
|
7
|
+
export enum orderStatus {
|
|
8
|
+
unStart = 1,
|
|
9
|
+
execution = 2,
|
|
10
|
+
complete = 3,
|
|
11
|
+
deprecated = 4
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const orderStatusOptions = [
|
|
15
|
+
{ label: "未开始", value: orderStatus.unStart, type: "warning" },
|
|
16
|
+
{ label: "执行中", value: orderStatus.execution, type: "primary" },
|
|
17
|
+
{ label: "已完成", value: orderStatus.complete, type: "success" },
|
|
18
|
+
{ label: "已作废", value: orderStatus.deprecated, type: "danger" }
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
export const orderStatusMap = {
|
|
22
|
+
[orderStatus.unStart]: "未开始",
|
|
23
|
+
[orderStatus.execution]: "执行中",
|
|
24
|
+
[orderStatus.complete]: "已完成",
|
|
25
|
+
[orderStatus.deprecated]: "已作废"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// 工作形式
|
|
29
|
+
export enum workForm {
|
|
30
|
+
online = 1,
|
|
31
|
+
offline = 2
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const workFormOptions = [
|
|
35
|
+
{ label: "线上远程解决", value: workForm.online },
|
|
36
|
+
{ label: "到场解决", value: workForm.offline }
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export const workFormMap = {
|
|
40
|
+
[workForm.online]: "线上远程解决",
|
|
41
|
+
[workForm.offline]: "到场解决"
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// 是否领料
|
|
45
|
+
export enum isCollectMaterials {
|
|
46
|
+
yes = 1,
|
|
47
|
+
no = 0
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const isCollectMaterialsOptions = [
|
|
51
|
+
{ label: "是", value: isCollectMaterials.yes },
|
|
52
|
+
{ label: "否", value: isCollectMaterials.no }
|
|
53
|
+
];
|
|
54
|
+
export const isCollectMaterialsMap = {
|
|
55
|
+
[isCollectMaterials.yes]: "是",
|
|
56
|
+
[isCollectMaterials.no]: "否"
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// 是否一次解决
|
|
60
|
+
export enum isSolveOnce {
|
|
61
|
+
yes = 1,
|
|
62
|
+
no = 0
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const isSolveOnceMap = {
|
|
66
|
+
[isSolveOnce.yes]: "是",
|
|
67
|
+
[isSolveOnce.no]: "否"
|
|
68
|
+
};
|
|
69
|
+
export const isSolveOnceOptions = [
|
|
70
|
+
{ label: "是", value: isSolveOnce.yes },
|
|
71
|
+
{ label: "否", value: isSolveOnce.no }
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
// 工单信息、工单完结、客户回访
|
|
75
|
+
export enum isReturnVisitEnum {
|
|
76
|
+
DETAIL = "base-record",
|
|
77
|
+
FINISH = "finish-record",
|
|
78
|
+
RETURN_VISIT = "return-visit-record"
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export const isReturnVisitMap = {
|
|
82
|
+
[isReturnVisitEnum.DETAIL]: "工单信息",
|
|
83
|
+
[isReturnVisitEnum.FINISH]: "工单完结",
|
|
84
|
+
[isReturnVisitEnum.RETURN_VISIT]: "客户回访"
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const isReturnVisitOptions = [
|
|
88
|
+
{ label: "工单信息", value: isReturnVisitEnum.DETAIL },
|
|
89
|
+
{ label: "工单完结", value: isReturnVisitEnum.FINISH },
|
|
90
|
+
{ label: "客户回访", value: isReturnVisitEnum.RETURN_VISIT }
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
// 工作节点:1-售后接单,2-工单完结,3-客户回访
|
|
94
|
+
export enum workNodeEnum {
|
|
95
|
+
AFTER_SALES_RECEIVE = 1,
|
|
96
|
+
FINISH = 2,
|
|
97
|
+
RETURN_VISIT = 3
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export enum workFormEnum {
|
|
101
|
+
ONLINE = 1, // 线上远程
|
|
102
|
+
OFFLINE = 2 // 到场处理
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// 销售工单服务类型 设备改造、故障处理
|
|
106
|
+
export enum serviceTypeEnum {
|
|
107
|
+
SERVICE = "DEVICE_REMOULD",
|
|
108
|
+
REPAIR = "FAULT_HANDLING"
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// 是否解决,0为未解决,1为解决,默认为1
|
|
112
|
+
export enum isSolveEnum {
|
|
113
|
+
UNSOLVE = 0, // 未解决
|
|
114
|
+
SOLVE = 1 // 已解决
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export const isSolveOptions = [
|
|
118
|
+
{ label: "未解决", value: isSolveEnum.UNSOLVE },
|
|
119
|
+
{ label: "已解决", value: isSolveEnum.SOLVE }
|
|
120
|
+
];
|
|
121
|
+
|
|
122
|
+
export const isSolveMap = {
|
|
123
|
+
[isSolveEnum.UNSOLVE]: "未解决",
|
|
124
|
+
[isSolveEnum.SOLVE]: "已解决"
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// 用户是否满意,0为不满意,1为满意,默认为1
|
|
128
|
+
export enum isSatisfiedEnum {
|
|
129
|
+
UNSATISFIED = 0, // 不满意
|
|
130
|
+
SATISFIED = 1 // 满意
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export const isSatisfiedMap = {
|
|
134
|
+
[isSatisfiedEnum.UNSATISFIED]: "不满意",
|
|
135
|
+
[isSatisfiedEnum.SATISFIED]: "满意"
|
|
136
|
+
};
|
|
137
|
+
export const isSatisfiedOptions = [
|
|
138
|
+
{ label: "不满意", value: isSatisfiedEnum.UNSATISFIED },
|
|
139
|
+
{ label: "满意", value: isSatisfiedEnum.SATISFIED }
|
|
140
|
+
];
|
|
141
|
+
|
|
142
|
+
// 是否超期
|
|
143
|
+
export enum isOverdueEnum {
|
|
144
|
+
NO = 0, // 否
|
|
145
|
+
YES = 1 // 是
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export const isOverdueOptions = [
|
|
149
|
+
{ label: "否", value: isOverdueEnum.NO },
|
|
150
|
+
{ label: "是", value: isOverdueEnum.YES }
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
export const isOverdueMap = {
|
|
154
|
+
[isOverdueEnum.NO]: "否",
|
|
155
|
+
[isOverdueEnum.YES]: "是"
|
|
156
|
+
}
|
|
157
|
+
//字典
|
|
158
|
+
export const SERVICETYPE = "SERVICETYPE";
|
|
159
|
+
|
|
160
|
+
export const WORKORDER_PROBLEM_CLASSIFICATION =
|
|
161
|
+
"WORKORDER_PROBLEM_CLASSIFICATION";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//是否验收,1是未验收,2是验收
|
|
2
|
+
export enum isCheckStatusEnum {
|
|
3
|
+
YES = 2, // 否
|
|
4
|
+
NO = 1, // 是
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// 设备信息状态枚举
|
|
8
|
+
export enum DeviceMesStatusEnum {
|
|
9
|
+
PENDING = 0, // 待补充
|
|
10
|
+
COMPLETED = 1 // 已补充
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// 设备信息状态映射
|
|
14
|
+
export const deviceMesStatusMap = {
|
|
15
|
+
[DeviceMesStatusEnum.PENDING]: '待补充',
|
|
16
|
+
[DeviceMesStatusEnum.COMPLETED]: '已补充'
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// 料塔编码规则枚举
|
|
20
|
+
export enum MaterialTowerCodeRuleEnum {
|
|
21
|
+
SUPPLIER = 'SUPPLIER', // 供应商编码
|
|
22
|
+
DELIVERY = 'DELIVERY' // 发货编码
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// 料塔编码规则映射
|
|
26
|
+
export const materialTowerCodeRuleMap = {
|
|
27
|
+
[MaterialTowerCodeRuleEnum.SUPPLIER]: '供应商编码',
|
|
28
|
+
[MaterialTowerCodeRuleEnum.DELIVERY]: '发货编码'
|
|
29
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// 0工单未完成,1工单完成
|
|
2
|
+
export enum workStatus {
|
|
3
|
+
uncomplete = 1,
|
|
4
|
+
complete = 2,
|
|
5
|
+
all = 3
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// 0未下发,1已下发
|
|
9
|
+
export enum assignFlag {
|
|
10
|
+
unassign = 0,
|
|
11
|
+
assign = 1,
|
|
12
|
+
all = 2
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const assignFlagMap = {
|
|
16
|
+
[assignFlag.unassign]: "未下发",
|
|
17
|
+
[assignFlag.assign]: "已下发",
|
|
18
|
+
[assignFlag.all]: "全部"
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// 1未完成,2部份完成,3全部完成
|
|
22
|
+
export enum planStatus {
|
|
23
|
+
uncomplete = 1,
|
|
24
|
+
partComplete = 2,
|
|
25
|
+
complete = 3
|
|
26
|
+
}
|
|
27
|
+
export const workStatusOptions = [
|
|
28
|
+
{ label: "全部", value: workStatus.all },
|
|
29
|
+
{ label: "未完成", value: workStatus.uncomplete },
|
|
30
|
+
{ label: "已完成", value: workStatus.complete }
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
export const assignFlagOptions = [
|
|
34
|
+
{ label: "全部", value: assignFlag.all },
|
|
35
|
+
{ label: "未下发", value: assignFlag.unassign },
|
|
36
|
+
{ label: "已下发", value: assignFlag.assign }
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export const planStatusMap = {
|
|
40
|
+
[planStatus.uncomplete]: "未完成",
|
|
41
|
+
[planStatus.partComplete]: "部份完成",
|
|
42
|
+
[planStatus.complete]: "全部完成"
|
|
43
|
+
};
|
|
44
|
+
export const planStatusOptions = [
|
|
45
|
+
{ label: "未完成", value: planStatus.uncomplete, type: "warning" },
|
|
46
|
+
{ label: "部份完成", value: planStatus.partComplete, type: "primary" },
|
|
47
|
+
{ label: "全部完成", value: planStatus.complete, type: "success" }
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
export const workStatusMap = {
|
|
51
|
+
[workStatus.uncomplete]: "未完成",
|
|
52
|
+
[workStatus.complete]: "已完成",
|
|
53
|
+
[workStatus.all]: "全部"
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// 生产状态,1未完成,2已完成
|
|
57
|
+
export enum productFlagEnum {
|
|
58
|
+
NO = 1,
|
|
59
|
+
YES = 2
|
|
60
|
+
}
|
|
61
|
+
export const productFlagMap = {
|
|
62
|
+
[productFlagEnum.NO]: "未生产入库",
|
|
63
|
+
[productFlagEnum.YES]: "已生产入库"
|
|
64
|
+
};
|
|
65
|
+
export const installationFlagMap = {
|
|
66
|
+
[productFlagEnum.NO]: "未完成",
|
|
67
|
+
[productFlagEnum.YES]: "已完成"
|
|
68
|
+
};
|
|
69
|
+
export const schedulingFlagMap = {
|
|
70
|
+
[productFlagEnum.NO]: "未排程",
|
|
71
|
+
[productFlagEnum.YES]: "已排程"
|
|
72
|
+
};
|
|
73
|
+
// 设备流程状态,0未开始,1已齐料清点,2已安装完成,3已安装验收
|
|
74
|
+
export enum deviceStatusEnum {
|
|
75
|
+
BEGIN = 0,
|
|
76
|
+
READY = 1,
|
|
77
|
+
COMPLETE = 2,
|
|
78
|
+
ACCEPT = 3
|
|
79
|
+
}
|
|
80
|
+
export const deviceStatusMap = {
|
|
81
|
+
[deviceStatusEnum.BEGIN]: "未开始",
|
|
82
|
+
[deviceStatusEnum.READY]: "已齐料清点",
|
|
83
|
+
[deviceStatusEnum.COMPLETE]: "已安装完成",
|
|
84
|
+
[deviceStatusEnum.ACCEPT]: "已安装验收"
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// 工作节点,1齐料清点,2安装完成,3安装验收
|
|
88
|
+
export enum installWorkNodeEnum {
|
|
89
|
+
READY = 1,
|
|
90
|
+
COMPLETE = 2,
|
|
91
|
+
ACCEPT = 3
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export const installWorkNodeMap = {
|
|
95
|
+
[installWorkNodeEnum.READY]: {
|
|
96
|
+
label: "齐料清点",
|
|
97
|
+
value: installWorkNodeEnum.READY,
|
|
98
|
+
type: "warning"
|
|
99
|
+
},
|
|
100
|
+
[installWorkNodeEnum.COMPLETE]: {
|
|
101
|
+
label: "安装完成",
|
|
102
|
+
value: installWorkNodeEnum.COMPLETE,
|
|
103
|
+
type: "primary"
|
|
104
|
+
},
|
|
105
|
+
[installWorkNodeEnum.ACCEPT]: {
|
|
106
|
+
label: "安装验收",
|
|
107
|
+
value: installWorkNodeEnum.ACCEPT,
|
|
108
|
+
type: "success"
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export const installWorkNodeOptions = [
|
|
113
|
+
{ label: "齐料清点", value: installWorkNodeEnum.READY, type: "warning" },
|
|
114
|
+
{ label: "安装完成", value: installWorkNodeEnum.COMPLETE, type: "primary" },
|
|
115
|
+
{ label: "安装验收", value: installWorkNodeEnum.ACCEPT, type: "success" }
|
|
116
|
+
]
|
|
117
|
+
export enum acceptanceStatusEnum {
|
|
118
|
+
YES = 1, // 正常
|
|
119
|
+
NO = 2 // 异常
|
|
120
|
+
}
|
|
121
|
+
export const acceptanceStatusMap = {
|
|
122
|
+
[acceptanceStatusEnum.YES]: "正常",
|
|
123
|
+
[acceptanceStatusEnum.NO]: "异常"
|
|
124
|
+
};
|
|
125
|
+
export const acceptanceStatusOptions = [
|
|
126
|
+
{ label: "正常", value: acceptanceStatusEnum.YES },
|
|
127
|
+
{ label: "异常", value: acceptanceStatusEnum.NO }
|
|
128
|
+
]
|
|
129
|
+
// 安装工单工单状态,1待验收,2已验收
|
|
130
|
+
export enum installAcceptanceStatusEnum {
|
|
131
|
+
NO = 1, // 待验收
|
|
132
|
+
YES = 2 // 已验收
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// 设备流程状态,0未开始,1已齐料清点,2已安装完成,3已安装验收
|
|
136
|
+
export enum deviceStatusEnum {
|
|
137
|
+
ORDER_BEGIN = 0,
|
|
138
|
+
MATERIAL_READY = 1,
|
|
139
|
+
ORDER_COMPLETE = 2,
|
|
140
|
+
ORDER_ACCEPT = 3
|
|
141
|
+
}
|
package/src/env.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
2
|
+
|
|
3
|
+
declare module '*.vue' {
|
|
4
|
+
import { DefineComponent } from 'vue'
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
|
|
6
|
+
const component: DefineComponent<{}, {}, any>
|
|
7
|
+
export default component
|
|
8
|
+
}
|