u
No files matched your search
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"Print Vue3 SFC": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "v3",
|
||||||
|
"body": [
|
||||||
|
"<script lang=\"ts\" setup>",
|
||||||
|
"",
|
||||||
|
"</script>\n",
|
||||||
|
"<template>",
|
||||||
|
" <view class=\"\">$1</view>",
|
||||||
|
"</template>\n",
|
||||||
|
"<style lang=\"scss\" scoped>",
|
||||||
|
"",
|
||||||
|
"</style>\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,5 +17,6 @@ export default antfu({
|
|||||||
|
|
||||||
rules: {
|
rules: {
|
||||||
'no-console': 'off', // 允许 console.log 不报错
|
'no-console': 'off', // 允许 console.log 不报错
|
||||||
|
"prefer-promise-reject-errors": "off"
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
<link rel="shortcut icon" href="/public/logo.png" type="image/x-icon" />
|
||||||
<script>
|
<script>
|
||||||
const coverSupport =
|
const coverSupport =
|
||||||
'CSS' in window &&
|
'CSS' in window &&
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
"dayjs": "^1.11.18",
|
"dayjs": "^1.11.18",
|
||||||
"pinia": "^3.0.3",
|
"pinia": "^3.0.3",
|
||||||
"pinia-plugin-persistedstate": "^4.5.0",
|
"pinia-plugin-persistedstate": "^4.5.0",
|
||||||
"sard-uniapp": "^1.24.6",
|
"sard-uniapp": "^1.24.7",
|
||||||
"vue": "^3.5.21",
|
"vue": "^3.5.21",
|
||||||
"z-paging": "^2.8.8"
|
"z-paging": "^2.8.8"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ importers:
|
|||||||
specifier: ^4.5.0
|
specifier: ^4.5.0
|
||||||
version: 4.5.0(pinia@3.0.3(typescript@5.8.3)(vue@3.5.22(typescript@5.8.3)))
|
version: 4.5.0(pinia@3.0.3(typescript@5.8.3)(vue@3.5.22(typescript@5.8.3)))
|
||||||
sard-uniapp:
|
sard-uniapp:
|
||||||
specifier: ^1.24.6
|
specifier: ^1.24.7
|
||||||
version: 1.24.6(@dcloudio/types@3.4.21)(vue@3.5.22(typescript@5.8.3))
|
version: 1.24.7(@dcloudio/types@3.4.21)(vue@3.5.22(typescript@5.8.3))
|
||||||
vue:
|
vue:
|
||||||
specifier: ^3.5.21
|
specifier: ^3.5.21
|
||||||
version: 3.5.22(typescript@5.8.3)
|
version: 3.5.22(typescript@5.8.3)
|
||||||
@@ -4621,8 +4621,8 @@ packages:
|
|||||||
safer-buffer@2.1.2:
|
safer-buffer@2.1.2:
|
||||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||||
|
|
||||||
sard-uniapp@1.24.6:
|
sard-uniapp@1.24.7:
|
||||||
resolution: {integrity: sha512-T8TK4cPlVlcm7K57niQurRC6KdjkmjyE3a+RUoGnPR8t32Sim7F7kApATR4NewTZt6pGscuEaC/pcHx1cxvJoQ==}
|
resolution: {integrity: sha512-QXk/zWH5j62VOUsaf8mSk0i8k/OMkUoSIqOTmxb7vpC+UpiJ5Uwypayb9HarlgStXpqIc3HmTOIG+2cNo+yFCA==}
|
||||||
engines: {HBuilderX: ^3.6.0, uni-app: ^4.11, uni-app-x: ''}
|
engines: {HBuilderX: ^3.6.0, uni-app: ^4.11, uni-app-x: ''}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@dcloudio/types': ^3.4.8
|
'@dcloudio/types': ^3.4.8
|
||||||
@@ -11078,7 +11078,7 @@ snapshots:
|
|||||||
|
|
||||||
safer-buffer@2.1.2: {}
|
safer-buffer@2.1.2: {}
|
||||||
|
|
||||||
sard-uniapp@1.24.6(@dcloudio/types@3.4.21)(vue@3.5.22(typescript@5.8.3)):
|
sard-uniapp@1.24.7(@dcloudio/types@3.4.21)(vue@3.5.22(typescript@5.8.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@dcloudio/types': 3.4.21
|
'@dcloudio/types': 3.4.21
|
||||||
vue: 3.5.22(typescript@5.8.3)
|
vue: 3.5.22(typescript@5.8.3)
|
||||||
|
|||||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -19,7 +19,7 @@ onHide(() => {
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
page {
|
page {
|
||||||
background-color: #fcfbfe;
|
background-color: #f7f7f8;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { createSSRApp } from 'vue'
|
import { createSSRApp } from 'vue'
|
||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
import { routeInterceptor } from './interceptor/router'
|
import { routeInterceptor } from './router/interceptor'
|
||||||
import store from './store'
|
import store from './store'
|
||||||
import '@/style/index.scss'
|
import '@/style/index.scss'
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "BASE-UNIAPP",
|
"name": "App",
|
||||||
"appid": "__UNI__871096C",
|
"appid": "__UNI__871096C",
|
||||||
"description": "",
|
"description": "",
|
||||||
"versionName": "1.0.0",
|
"versionName": "1.0.0",
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import type { UploadFile, UploadFileItem } from 'sard-uniapp'
|
|||||||
import { isImageUrl, isVideoUrl, toast } from 'sard-uniapp'
|
import { isImageUrl, isVideoUrl, toast } from 'sard-uniapp'
|
||||||
import { aliyunpluploadApi, delSubRecordApi, searchdataApi } from '@/request/api'
|
import { aliyunpluploadApi, delSubRecordApi, searchdataApi } from '@/request/api'
|
||||||
import { downloadFile, formatFileSize, imageCompress, isImage, uploadFileToAliyun } from '@/utils/file'
|
import { downloadFile, formatFileSize, imageCompress, isImage, uploadFileToAliyun } from '@/utils/file'
|
||||||
import { isH5 } from '@/utils/platform'
|
|
||||||
|
|
||||||
const fileList = ref<UploadFileItem[]>([])
|
const fileList = ref<UploadFileItem[]>([])
|
||||||
|
|
||||||
@@ -50,8 +49,9 @@ async function loadFileData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onItemClick(fileItem: UploadFileItem) {
|
function onItemClick(fileItem: UploadFileItem) {
|
||||||
|
console.log(fileItem)
|
||||||
if (!isImageUrl(fileItem.mx_mapfilename) && !isVideoUrl(fileItem.mx_mapfilename)) {
|
if (!isImageUrl(fileItem.mx_mapfilename) && !isVideoUrl(fileItem.mx_mapfilename)) {
|
||||||
downloadFile(fileItem.mx_mapfilename)
|
downloadFile(fileItem.mx_mapfilename,fileItem.name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,8 +94,7 @@ function onSubmit() {
|
|||||||
|
|
||||||
<view class="form-list">
|
<view class="form-list">
|
||||||
<sar-form-item-plain name="orgid">
|
<sar-form-item-plain name="orgid">
|
||||||
<template #custom="{ fieldId }">
|
<view class="form-label">
|
||||||
<view class="form-label" :class="fieldId">
|
|
||||||
<text>机构码</text>
|
<text>机构码</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-input">
|
<view class="form-input">
|
||||||
@@ -109,11 +108,9 @@ function onSubmit() {
|
|||||||
</template>
|
</template>
|
||||||
</sar-input>
|
</sar-input>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
|
||||||
</sar-form-item-plain>
|
</sar-form-item-plain>
|
||||||
<sar-form-item-plain name="userid">
|
<sar-form-item-plain name="userid">
|
||||||
<template #custom="{ fieldId }">
|
<view class="form-label">
|
||||||
<view class="form-label" :class="fieldId">
|
|
||||||
账号
|
账号
|
||||||
</view>
|
</view>
|
||||||
<view class="form-input">
|
<view class="form-input">
|
||||||
@@ -127,11 +124,9 @@ function onSubmit() {
|
|||||||
</template>
|
</template>
|
||||||
</sar-input>
|
</sar-input>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
|
||||||
</sar-form-item-plain>
|
</sar-form-item-plain>
|
||||||
<sar-form-item-plain name="password">
|
<sar-form-item-plain name="password">
|
||||||
<template #custom="{ fieldId }">
|
<view class="form-label">
|
||||||
<view class="form-label" :class="fieldId">
|
|
||||||
密码
|
密码
|
||||||
</view>
|
</view>
|
||||||
<view class="form-input">
|
<view class="form-input">
|
||||||
@@ -145,7 +140,6 @@ function onSubmit() {
|
|||||||
</template>
|
</template>
|
||||||
</sar-input>
|
</sar-input>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
|
||||||
</sar-form-item-plain>
|
</sar-form-item-plain>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { toast } from 'sard-uniapp'
|
import { toast } from 'sard-uniapp'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { searchdatapageindexApi } from '@/request/api'
|
import { saveobjtApi, searchdatapageindexApi } from '@/request/api'
|
||||||
import { useUserStore } from '@/store'
|
import { useUserStore } from '@/store'
|
||||||
|
import { useCounts } from '@/store/counts'
|
||||||
|
import { getCurrentDateTimeWithSeconds } from '@/utils/time'
|
||||||
|
|
||||||
|
const { taskCounts } = useCounts()
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
|
||||||
const pagingRef = ref<any>(null)
|
const pagingRef = ref<any>(null)
|
||||||
@@ -11,15 +14,30 @@ const dataList = ref<any[]>([])
|
|||||||
|
|
||||||
// 自定义 tabs
|
// 自定义 tabs
|
||||||
const tabList = computed(() => [
|
const tabList = computed(() => [
|
||||||
{ name: '未完成', count: 0 },
|
{ name: '未完成', count: taskCounts.yx.todo },
|
||||||
{ name: '已完成', count: 0 },
|
{ name: '已完成', count: taskCounts.yx.finished },
|
||||||
{ name: '全部', count: 0 },
|
{ name: '全部', count: taskCounts.yx.total },
|
||||||
])
|
])
|
||||||
const activeTab = ref(tabList.value[0])
|
const activeTab = ref(tabList.value[0])
|
||||||
|
|
||||||
// 搜索关键字
|
// 搜索关键字
|
||||||
const searchValue = ref('')
|
const searchValue = ref('')
|
||||||
|
|
||||||
|
const confirmDialogVisible = ref(false)
|
||||||
|
const confirmFormRef = ref()
|
||||||
|
const confirmFormModel = ref<any>({})
|
||||||
|
|
||||||
|
const bconkzOptions = ref([
|
||||||
|
{
|
||||||
|
value: '空箱',
|
||||||
|
label: '空箱',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '重箱',
|
||||||
|
label: '重箱',
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
// 切换 tab
|
// 切换 tab
|
||||||
function switchTab(tab: any) {
|
function switchTab(tab: any) {
|
||||||
activeTab.value = tab
|
activeTab.value = tab
|
||||||
@@ -38,18 +56,18 @@ function queryList(pageNo: number, pageSize: number) {
|
|||||||
|
|
||||||
const userid = userStore.userInfo.userid
|
const userid = userStore.userInfo.userid
|
||||||
|
|
||||||
let searchcondition = `2>1 AND b_kd_finish = '1' AND b_yx_finish = '1' `
|
let searchcondition = `2>1 AND b_kd_finish = '1' `
|
||||||
|
|
||||||
if (activeTab.value.name === '未完成') {
|
if (activeTab.value.name === '未完成') {
|
||||||
searchcondition += ` AND ISNULL(b_dc_finish,'') <> '1' AND ISNULL(b_dcman_id,'') IN ('', '${userid}')`
|
searchcondition += ` AND ISNULL(b_yx_finish,'') <> '1' AND ISNULL(b_yxman_id,'') IN ('', '${userid}')`
|
||||||
}
|
}
|
||||||
else if (activeTab.value.name === '已完成') {
|
else if (activeTab.value.name === '已完成') {
|
||||||
searchcondition += ` AND ISNULL(b_dc_finish,'') = '1' AND ISNULL(b_dcman_id,'') = '${userid}'`
|
searchcondition += ` AND ISNULL(b_yx_finish,'') = '1' AND ISNULL(b_yxman_id,'') = '${userid}'`
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
searchcondition += ` AND (
|
searchcondition += ` AND (
|
||||||
(ISNULL(b_dc_finish,'') <> '1' AND ISNULL(b_dcman_id,'') IN ('', '${userid}'))
|
(ISNULL(b_yx_finish,'') <> '1' AND ISNULL(b_yxman_id,'') IN ('', '${userid}'))
|
||||||
OR (ISNULL(b_dc_finish,'') = '1' AND ISNULL(b_dcman_id,'') = '${userid}')
|
OR (ISNULL(b_yx_finish,'') = '1' AND ISNULL(b_yxman_id,'') = '${userid}')
|
||||||
)`
|
)`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +85,14 @@ function queryList(pageNo: number, pageSize: number) {
|
|||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const rows = res.data.rows || []
|
const rows = res.data.rows || []
|
||||||
|
|
||||||
|
if (rows) {
|
||||||
pagingRef.value.complete(rows)
|
pagingRef.value.complete(rows)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (activeTab.value.name === '未完成' && res.data.total) {
|
||||||
|
taskCounts.yx.todo = res.data.total
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
toast.hide()
|
toast.hide()
|
||||||
@@ -79,9 +104,190 @@ function handleToFile(itemData) {
|
|||||||
url: `/pages-sub/file/index?moduleid=xc_conyard_in&father=${itemData.b_id}&cateid=014&edit=1`,
|
url: `/pages-sub/file/index?moduleid=xc_conyard_in&father=${itemData.b_id}&cateid=014&edit=1`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showConfirmDialog(itemData: any) {
|
||||||
|
confirmFormModel.value = JSON.parse(JSON.stringify(itemData))
|
||||||
|
confirmDialogVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleConfirmDialogBeforeClose(type: string) {
|
||||||
|
if (type !== 'confirm') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await confirmFormRef.value?.validate()
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
return Promise.reject()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (confirmFormModel.value.b_kd_finish !== '1') {
|
||||||
|
toast.fail('尚未开票,请先开票')
|
||||||
|
return Promise.reject()
|
||||||
|
}
|
||||||
|
if (confirmFormModel.value.b_yx_finish !== '1') {
|
||||||
|
toast.fail('请先验箱')
|
||||||
|
return Promise.reject()
|
||||||
|
}
|
||||||
|
|
||||||
|
const obj: any = {
|
||||||
|
b_id: confirmFormModel.value.b_id,
|
||||||
|
b_yx_finishdate: getCurrentDateTimeWithSeconds(),
|
||||||
|
b_yxman_id: userStore.userInfo.userid,
|
||||||
|
b_yx_finish: '1',
|
||||||
|
b_conno: confirmFormModel.value.b_conno,
|
||||||
|
b_conkz: confirmFormModel.value.b_conkz,
|
||||||
|
b_contype: confirmFormModel.value.b_contype,
|
||||||
|
b_constate: confirmFormModel.value.b_constate,
|
||||||
|
b_conxk: confirmFormModel.value.b_conxk,
|
||||||
|
}
|
||||||
|
|
||||||
|
const strmainvalue = `[${JSON.stringify(obj)}]`
|
||||||
|
|
||||||
|
const res = await saveobjtApi({
|
||||||
|
tables: '[xc_consite_in]',
|
||||||
|
insertValues: '[]',
|
||||||
|
delValues: '[]',
|
||||||
|
updateValues: strmainvalue,
|
||||||
|
keys: '[b_id]',
|
||||||
|
})
|
||||||
|
|
||||||
|
if (res?.data !== 'OK') {
|
||||||
|
toast.fail(`堆高机验证失败:${res.data}`)
|
||||||
|
return Promise.reject()
|
||||||
|
}
|
||||||
|
|
||||||
|
const idx = dataList.value.findIndex(i => i.b_id === confirmFormModel.value.b_id)
|
||||||
|
if (idx !== -1) {
|
||||||
|
if (activeTab.value.name === '未完成') {
|
||||||
|
dataList.value.splice(idx, 1)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Object.assign(dataList.value[idx], obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (taskCounts.yx.todo > 0) {
|
||||||
|
taskCounts.yx.todo -= 1
|
||||||
|
taskCounts.yx.total -= 1
|
||||||
|
}
|
||||||
|
|
||||||
|
toast.success('验箱成功')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleConfirmDialogAfterLeave() {
|
||||||
|
confirmFormModel.value = {}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<sar-dialog
|
||||||
|
v-model:visible="confirmDialogVisible"
|
||||||
|
popup-style="top: 50%"
|
||||||
|
title="验箱表单"
|
||||||
|
:confirm-props="{
|
||||||
|
size: 'small',
|
||||||
|
theme: 'success',
|
||||||
|
square: true,
|
||||||
|
}"
|
||||||
|
:cancel-props="{
|
||||||
|
size: 'small',
|
||||||
|
square: true,
|
||||||
|
}"
|
||||||
|
:before-close="handleConfirmDialogBeforeClose"
|
||||||
|
:after-leave="handleConfirmDialogAfterLeave"
|
||||||
|
>
|
||||||
|
<scroll-view
|
||||||
|
style="max-height: 60vh; margin-top: 1px; margin-bottom: 16rpx"
|
||||||
|
scroll-y
|
||||||
|
>
|
||||||
|
<sar-form ref="confirmFormRef" :model="confirmFormModel" label-width="150rpx" label-align="end">
|
||||||
|
<sar-form-item
|
||||||
|
name="b_conno"
|
||||||
|
label="箱号"
|
||||||
|
:rules="[{ required: true }]"
|
||||||
|
>
|
||||||
|
<sar-input
|
||||||
|
v-model="confirmFormModel.b_conno"
|
||||||
|
inlaid
|
||||||
|
/>
|
||||||
|
</sar-form-item>
|
||||||
|
|
||||||
|
<sar-form-item
|
||||||
|
name="b_id"
|
||||||
|
label="进场单号"
|
||||||
|
>
|
||||||
|
<sar-input
|
||||||
|
v-model="confirmFormModel.b_id"
|
||||||
|
inlaid
|
||||||
|
readonly
|
||||||
|
/>
|
||||||
|
</sar-form-item>
|
||||||
|
|
||||||
|
<sar-form-item
|
||||||
|
name="b_contype"
|
||||||
|
label="箱型"
|
||||||
|
>
|
||||||
|
<picker-select-input
|
||||||
|
v-model:label="confirmFormModel.b_contype"
|
||||||
|
v-model:value="confirmFormModel.b_contype"
|
||||||
|
viewname="b_con_type"
|
||||||
|
label-field="b_name"
|
||||||
|
value-field="b_name"
|
||||||
|
field1="b_name"
|
||||||
|
field2="b_id"
|
||||||
|
placeholder="请选择箱型"
|
||||||
|
/>
|
||||||
|
</sar-form-item>
|
||||||
|
|
||||||
|
<sar-form-item
|
||||||
|
name="b_conkz"
|
||||||
|
label="空箱重"
|
||||||
|
>
|
||||||
|
<sar-picker-input
|
||||||
|
v-model="confirmFormModel.b_conkz"
|
||||||
|
title="请选择空箱重"
|
||||||
|
placeholder="请选择空箱重"
|
||||||
|
clearable
|
||||||
|
:columns="bconkzOptions"
|
||||||
|
/>
|
||||||
|
</sar-form-item>
|
||||||
|
|
||||||
|
<sar-form-item
|
||||||
|
name="b_constate"
|
||||||
|
label="箱态"
|
||||||
|
>
|
||||||
|
<picker-select-input
|
||||||
|
v-model:label="confirmFormModel.b_constate"
|
||||||
|
v-model:value="confirmFormModel.b_constate"
|
||||||
|
viewname="b_constate"
|
||||||
|
label-field="b_name"
|
||||||
|
value-field="b_name"
|
||||||
|
field1="b_name"
|
||||||
|
field2="b_id"
|
||||||
|
placeholder="请选择箱态"
|
||||||
|
/>
|
||||||
|
</sar-form-item>
|
||||||
|
|
||||||
|
<sar-form-item
|
||||||
|
name="b_conxk"
|
||||||
|
label="箱况"
|
||||||
|
>
|
||||||
|
<picker-select-input
|
||||||
|
v-model:label="confirmFormModel.b_conxk"
|
||||||
|
v-model:value="confirmFormModel.b_conxk"
|
||||||
|
viewname="b_conxk"
|
||||||
|
label-field="b_name"
|
||||||
|
value-field="b_name"
|
||||||
|
field1="b_name"
|
||||||
|
field2="b_id"
|
||||||
|
placeholder="请选择箱况"
|
||||||
|
/>
|
||||||
|
</sar-form-item>
|
||||||
|
</sar-form>
|
||||||
|
</scroll-view>
|
||||||
|
</sar-dialog>
|
||||||
<view>
|
<view>
|
||||||
<z-paging ref="pagingRef" v-model="dataList" @query="queryList">
|
<z-paging ref="pagingRef" v-model="dataList" @query="queryList">
|
||||||
<template #top>
|
<template #top>
|
||||||
@@ -99,9 +305,13 @@ function handleToFile(itemData) {
|
|||||||
:class="{ 'tabs__item--active': activeTab.name === tab.name }"
|
:class="{ 'tabs__item--active': activeTab.name === tab.name }"
|
||||||
@click="switchTab(tab)"
|
@click="switchTab(tab)"
|
||||||
>
|
>
|
||||||
<sar-badge :value="tab.count">
|
<sar-badge v-if="tab.count > 0" :value="tab.count">
|
||||||
{{ tab.name }}
|
{{ tab.name }}
|
||||||
</sar-badge>
|
</sar-badge>
|
||||||
|
|
||||||
|
<text v-else>
|
||||||
|
{{ tab.name }}
|
||||||
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -117,10 +327,10 @@ function handleToFile(itemData) {
|
|||||||
箱号:{{ item.b_conno }}
|
箱号:{{ item.b_conno }}
|
||||||
</view>
|
</view>
|
||||||
<view class="list-item__extra">
|
<view class="list-item__extra">
|
||||||
<sar-tag v-if="item.b_dc_finish === '1'" theme="success" size="small">
|
<sar-tag v-if="item.b_yx_finish === '1'" theme="success" size="small">
|
||||||
已完成
|
已完成
|
||||||
</sar-tag>
|
</sar-tag>
|
||||||
<sar-tag v-else>
|
<sar-tag v-else theme="secondary">
|
||||||
未完成
|
未完成
|
||||||
</sar-tag>
|
</sar-tag>
|
||||||
</view>
|
</view>
|
||||||
@@ -138,6 +348,8 @@ function handleToFile(itemData) {
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</sar-col>
|
</sar-col>
|
||||||
|
</sar-row>
|
||||||
|
<sar-row>
|
||||||
<sar-col :span="12">
|
<sar-col :span="12">
|
||||||
<view class="list-item__info">
|
<view class="list-item__info">
|
||||||
<view class="list-item__label">
|
<view class="list-item__label">
|
||||||
@@ -148,6 +360,8 @@ function handleToFile(itemData) {
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</sar-col>
|
</sar-col>
|
||||||
|
</sar-row>
|
||||||
|
<sar-row>
|
||||||
<sar-col :span="6">
|
<sar-col :span="6">
|
||||||
<view class="list-item__info">
|
<view class="list-item__info">
|
||||||
<view class="list-item__label">
|
<view class="list-item__label">
|
||||||
@@ -168,6 +382,8 @@ function handleToFile(itemData) {
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</sar-col>
|
</sar-col>
|
||||||
|
</sar-row>
|
||||||
|
<sar-row>
|
||||||
<sar-col :span="6">
|
<sar-col :span="6">
|
||||||
<view class="list-item__info">
|
<view class="list-item__info">
|
||||||
<view class="list-item__label">
|
<view class="list-item__label">
|
||||||
@@ -188,16 +404,6 @@ function handleToFile(itemData) {
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</sar-col>
|
</sar-col>
|
||||||
<sar-col :span="6">
|
|
||||||
<view class="list-item__info">
|
|
||||||
<view class="list-item__label">
|
|
||||||
箱位:
|
|
||||||
</view>
|
|
||||||
<view class="list-item__value">
|
|
||||||
{{ item.b_xwt }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</sar-col>
|
|
||||||
</sar-row>
|
</sar-row>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -206,12 +412,13 @@ function handleToFile(itemData) {
|
|||||||
拍照
|
拍照
|
||||||
</sar-button>
|
</sar-button>
|
||||||
<sar-button
|
<sar-button
|
||||||
v-if="item.b_dc_finish !== '1'"
|
v-if="item.b_yx_finish !== '1'"
|
||||||
inline
|
inline
|
||||||
square
|
square
|
||||||
type="default"
|
type="default"
|
||||||
theme="success"
|
theme="success"
|
||||||
size="mini"
|
size="mini"
|
||||||
|
@click="showConfirmDialog(item)"
|
||||||
>
|
>
|
||||||
确认
|
确认
|
||||||
</sar-button>
|
</sar-button>
|
||||||
@@ -263,13 +470,16 @@ function handleToFile(itemData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.list-item__body {
|
.list-item__body {
|
||||||
|
padding: 24rpx 0rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
@include flexGap(16rpx, 'column');
|
||||||
.list-item__info {
|
.list-item__info {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
margin-top: 16rpx;
|
|
||||||
|
|
||||||
.list-item__label {
|
.list-item__label {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -288,7 +498,6 @@ function handleToFile(itemData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.list-item__footer {
|
.list-item__footer {
|
||||||
margin-top: 16rpx;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
@include flexGap(36rpx, '');
|
@include flexGap(36rpx, '');
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
"navigationStyle": "default",
|
"navigationStyle": "default",
|
||||||
"navigationBarTitleText": "App",
|
"navigationBarTitleText": "App",
|
||||||
"navigationBarBackgroundColor": "#2c3e50",
|
"navigationBarBackgroundColor": "#34495E",
|
||||||
"navigationBarTextStyle": "white",
|
"navigationBarTextStyle": "white",
|
||||||
"backgroundColor": "#FFFFFF"
|
"backgroundColor": "#FFFFFF"
|
||||||
},
|
},
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
},
|
},
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"color": "#A0A3A6",
|
"color": "#A0A3A6",
|
||||||
"selectedColor": "#026bff",
|
"selectedColor": "#34495e",
|
||||||
"backgroundColor": "#F8F8F8",
|
"backgroundColor": "#ffffff",
|
||||||
"borderStyle": "white",
|
"borderStyle": "white",
|
||||||
"height": "50px",
|
"height": "50px",
|
||||||
"fontSize": "10px",
|
"fontSize": "10px",
|
||||||
@@ -82,9 +82,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "xcjin/index",
|
"path": "yx/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "进场堆高机",
|
"navigationBarTitleText": "验箱",
|
||||||
"navigationStyle": "default"
|
"navigationStyle": "default"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue'
|
import { loaddatabysqlApi } from '@/request/api'
|
||||||
|
import { useUserStore } from '@/store'
|
||||||
|
import { useCounts } from '@/store/counts'
|
||||||
|
|
||||||
|
const { taskCounts } = useCounts()
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
const swiperCurrent = ref(0)
|
const swiperCurrent = ref(0)
|
||||||
const swiperList = [
|
const swiperList = [
|
||||||
@@ -8,6 +13,58 @@ const swiperList = [
|
|||||||
{},
|
{},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
onShow(() => {
|
||||||
|
if (!userStore.isLogined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
loaddatabysqlApi({
|
||||||
|
sql: `
|
||||||
|
SELECT COUNT(*) AS total
|
||||||
|
FROM v_xc_conyard_in
|
||||||
|
WHERE b_kd_finish = '1'
|
||||||
|
AND ISNULL(b_yx_finish, '') <> '1'
|
||||||
|
AND ISNULL(b_yxman_id, '') IN ('', '${userStore.userInfo.userid}');
|
||||||
|
`,
|
||||||
|
orderfield: '',
|
||||||
|
soption: '',
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.data.length > 0) {
|
||||||
|
taskCounts.yx.todo = res.data[0].total || 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
loaddatabysqlApi({
|
||||||
|
sql: `
|
||||||
|
SELECT COUNT(*) as total
|
||||||
|
FROM v_xc_conyard_in
|
||||||
|
WHERE b_yx_finish = '1'
|
||||||
|
AND ISNULL(b_dc_finish, '') <> '1'
|
||||||
|
AND ISNULL(b_dcman_id, '') IN ('', '${userStore.userInfo.userid}')
|
||||||
|
`,
|
||||||
|
orderfield: '',
|
||||||
|
soption: '',
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.data.length > 0) {
|
||||||
|
taskCounts.xcjin.todo = res.data[0].total || 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
loaddatabysqlApi({
|
||||||
|
sql: `
|
||||||
|
SELECT COUNT(*) as total
|
||||||
|
FROM v_xc_conyard_out
|
||||||
|
WHERE b_kd_finish = '1' AND ISNULL(b_dc_finish, '') <> '1'
|
||||||
|
AND ISNULL(b_dcman_id, '') IN ('', '${userStore.userInfo.userid}')
|
||||||
|
`,
|
||||||
|
orderfield: '',
|
||||||
|
soption: '',
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.data.length > 0) {
|
||||||
|
taskCounts.xcchu.todo = res.data[0].total || 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
function toLinkUrl(url) {
|
function toLinkUrl(url) {
|
||||||
if (!url) {
|
if (!url) {
|
||||||
return
|
return
|
||||||
@@ -30,19 +87,19 @@ function toLinkUrl(url) {
|
|||||||
>
|
>
|
||||||
<swiper-item>
|
<swiper-item>
|
||||||
<image
|
<image
|
||||||
src="@/static/images/800x400.png"
|
src="@/static/images/bg.jpg"
|
||||||
style="width: 100%;height:100%"
|
style="width: 100%;height:100%"
|
||||||
/>
|
/>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
<swiper-item>
|
<swiper-item>
|
||||||
<image
|
<image
|
||||||
src="@/static/images/800x400.png"
|
src="@/static/images/bg1.jpg"
|
||||||
style="width: 100%;height:100%"
|
style="width: 100%;height:100%"
|
||||||
/>
|
/>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
<swiper-item>
|
<swiper-item>
|
||||||
<image
|
<image
|
||||||
src="@/static/images/800x400.png"
|
src="@/static/images/bg2.jpg"
|
||||||
style="width: 100%;height:100%"
|
style="width: 100%;height:100%"
|
||||||
/>
|
/>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
@@ -53,38 +110,46 @@ function toLinkUrl(url) {
|
|||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
<view class="grid-container">
|
<view class="grid-container">
|
||||||
<sar-grid :columns="2" gap="20rpx">
|
<sar-grid :columns="2" gap="16rpx">
|
||||||
<sar-grid-item
|
<sar-grid-item
|
||||||
text="装箱"
|
text="验箱"
|
||||||
icon="image"
|
icon="image"
|
||||||
:root-style="{
|
:root-style="{
|
||||||
flex: '0 0 100%',
|
flex: '0 0 100%',
|
||||||
width: '100%',
|
width: '100%',
|
||||||
}"
|
}"
|
||||||
|
:badge="taskCounts.yx.todo"
|
||||||
|
:badge-props="{
|
||||||
|
color: `#E74C3C`,
|
||||||
|
}"
|
||||||
|
@click="toLinkUrl('/pages-sub/yx/index')"
|
||||||
>
|
>
|
||||||
<view class="grid-item">
|
<view class="grid-item">
|
||||||
<image src="@/static/images/柴犬.png" />
|
<sar-icon family="iconfont" name="jiaoyan" size="128rpx" color="#fff" />
|
||||||
<text>内容</text>
|
<text>验箱</text>
|
||||||
</view>
|
</view>
|
||||||
</sar-grid-item>
|
</sar-grid-item>
|
||||||
<sar-grid-item>
|
<sar-grid-item
|
||||||
|
:badge="taskCounts.xcjin.todo"
|
||||||
|
:badge-props="{
|
||||||
|
color: `#E74C3C`,
|
||||||
|
}"
|
||||||
|
@click="toLinkUrl('/pages-sub/xcjin/index')"
|
||||||
|
>
|
||||||
<view class="grid-item">
|
<view class="grid-item">
|
||||||
<image src="@/static/images/柴犬.png" />
|
<sar-icon family="iconfont" name="jin" size="128rpx" color="#fff" />
|
||||||
<text>内容</text>
|
|
||||||
</view>
|
|
||||||
</sar-grid-item>
|
|
||||||
<sar-grid-item>
|
|
||||||
<view class="grid-item">
|
|
||||||
<image src="@/static/images/柴犬.png" />
|
|
||||||
<text>内容</text>
|
|
||||||
</view>
|
|
||||||
</sar-grid-item>
|
|
||||||
<sar-grid-item @click="toLinkUrl('/pages-sub/xcjin/index')">
|
|
||||||
<view class="grid-item">
|
|
||||||
<image src="@/static/images/柴犬.png" />
|
|
||||||
<text>进场堆高机</text>
|
<text>进场堆高机</text>
|
||||||
</view>
|
</view>
|
||||||
</sar-grid-item>
|
</sar-grid-item>
|
||||||
|
<sar-grid-item
|
||||||
|
:badge="taskCounts.xcchu.todo"
|
||||||
|
@click="toLinkUrl('/pages-sub/xcchu/index')"
|
||||||
|
>
|
||||||
|
<view class="grid-item">
|
||||||
|
<sar-icon family="iconfont" name="chu" size="128rpx" color="#fff" />
|
||||||
|
<text>出场堆高机</text>
|
||||||
|
</view>
|
||||||
|
</sar-grid-item>
|
||||||
</sar-grid>
|
</sar-grid>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -99,23 +164,34 @@ function toLinkUrl(url) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.grid-container {
|
.grid-container {
|
||||||
margin-top: 32rpx;
|
padding-top: 32rpx;
|
||||||
:deep(.sar-grid__content) {
|
:deep(.sar-grid__content) {
|
||||||
background-color: var(--sar-primary);
|
background-color: var(--sar-primary);
|
||||||
}
|
}
|
||||||
|
:deep(.sar-grid) {
|
||||||
|
row-gap: 0 !important;
|
||||||
|
}
|
||||||
|
:deep(.sar-grid__item) {
|
||||||
|
margin-bottom: 16rpx;
|
||||||
|
}
|
||||||
|
:deep(.sar-badge) {
|
||||||
|
width: 42rpx;
|
||||||
|
height: 42rpx;
|
||||||
|
}
|
||||||
|
|
||||||
.grid-item {
|
.grid-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 28rpx;
|
font-size: 32rpx;
|
||||||
image {
|
image {
|
||||||
width: 128rpx;
|
width: 128rpx;
|
||||||
height: 128rpx;
|
height: 128rpx;
|
||||||
}
|
}
|
||||||
text {
|
text {
|
||||||
margin-top: 16rpx;
|
margin-top: 16rpx;
|
||||||
font-weight: bold;
|
font-weight: 500;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,16 +81,16 @@ export function delSubRecordApi(params: DelSubRecordParams) {
|
|||||||
return request.postForm('/DelSubRecord.jsp', params)
|
return request.postForm('/DelSubRecord.jsp', params)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface getaliyunkeyParams {
|
interface GetaliyunkeyParams {
|
||||||
orgid: string
|
orgid: string
|
||||||
bucket: string
|
bucket: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getaliyunkeyApi(params: getaliyunkeyParams) {
|
export function getaliyunkeyApi(params: GetaliyunkeyParams) {
|
||||||
return request.postForm(`/getaliyunkey.jsp`, params)
|
return request.postForm(`/getaliyunkey.jsp`, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface aliyunpluploadParams {
|
interface AliyunpluploadParams {
|
||||||
despathfile: string
|
despathfile: string
|
||||||
myfilename: string
|
myfilename: string
|
||||||
size: string
|
size: string
|
||||||
@@ -99,6 +99,15 @@ interface aliyunpluploadParams {
|
|||||||
mx_moduleid: string
|
mx_moduleid: string
|
||||||
mx_cate_id: string
|
mx_cate_id: string
|
||||||
}
|
}
|
||||||
export function aliyunpluploadApi(params: aliyunpluploadParams) {
|
export function aliyunpluploadApi(params: AliyunpluploadParams) {
|
||||||
return request.postForm(`/aliyunplupload.jsp`, params)
|
return request.postForm(`/aliyunplupload.jsp`, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface LoaddatabysqlParams {
|
||||||
|
sql: string
|
||||||
|
orderfield: string
|
||||||
|
soption: string
|
||||||
|
}
|
||||||
|
export function loaddatabysqlApi(params: LoaddatabysqlParams) {
|
||||||
|
return request.postForm('/loaddatabysql.jsp', params)
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useUserStore } from '@/store'
|
import { useUserStore } from '@/store'
|
||||||
|
|
||||||
const whiteList = [
|
const whiteList = [
|
||||||
'/pages-sub/login/index'
|
'/pages-sub/login/index',
|
||||||
]
|
]
|
||||||
|
|
||||||
export const navigateToInterceptor = {
|
export const navigateToInterceptor = {
|
||||||
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 4.3 KiB |
@@ -0,0 +1,24 @@
|
|||||||
|
// 全局任务数量统计
|
||||||
|
const taskCounts = reactive({
|
||||||
|
yx: {
|
||||||
|
todo: 0,
|
||||||
|
finished: 0,
|
||||||
|
total: 0,
|
||||||
|
},
|
||||||
|
xcjin: {
|
||||||
|
todo: 0,
|
||||||
|
finished: 0,
|
||||||
|
total: 0,
|
||||||
|
},
|
||||||
|
xcchu: {
|
||||||
|
todo: 0,
|
||||||
|
finished: 0,
|
||||||
|
total: 0,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export function useCounts() {
|
||||||
|
return {
|
||||||
|
taskCounts,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'iconfont'; /* Project id 5031675 */
|
font-family: 'iconfont'; /* Project id 5031675 */
|
||||||
src: url('data:font/ttf;charset=utf-8;base64,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 truncated
|
src: url('data:font/ttf;charset=utf-8;base64,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 truncated
|
||||||
format('truetype');
|
format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12,6 +12,18 @@
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.iconfont-jin:before {
|
||||||
|
content: '\e617';
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont-chu:before {
|
||||||
|
content: '\e629';
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont-jiaoyan:before {
|
||||||
|
content: '\e708';
|
||||||
|
}
|
||||||
|
|
||||||
.iconfont-updatePassword:before {
|
.iconfont-updatePassword:before {
|
||||||
content: '\e628';
|
content: '\e628';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
@import 'sard-uniapp/index.scss';
|
@import 'sard-uniapp/index.scss';
|
||||||
@import './iconfont.css';
|
@import './iconfont.css';
|
||||||
|
@import './mixins.scss';
|
||||||
page,
|
page,
|
||||||
.sar-portal {
|
.sar-portal {
|
||||||
--sar-input-border-color: #ddd;
|
--sar-input-border-color: #ddd;
|
||||||
--sar-primary: #34495E;
|
--sar-primary: #34495e;
|
||||||
--sar-rounded: 4rpx;
|
--sar-rounded: 4rpx;
|
||||||
}
|
}
|
||||||
|
.sar-upload__wrapper {
|
||||||
|
gap: 0rpx !important;
|
||||||
|
@include flexGap(16rpx, '');
|
||||||
|
}
|
||||||
|
|
||||||
.picker-select__pagination-root {
|
.picker-select__pagination-root {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -206,6 +206,9 @@ export function downloadFile(fileUrl: string, fileName?: string) {
|
|||||||
/** =================== H5 下载 =================== */
|
/** =================== H5 下载 =================== */
|
||||||
async function downloadH5(fileUrl: string, fileName: string) {
|
async function downloadH5(fileUrl: string, fileName: string) {
|
||||||
try {
|
try {
|
||||||
|
console.log(fileUrl)
|
||||||
|
console.log(fileName)
|
||||||
|
|
||||||
const response = await fetch(fileUrl, { mode: 'cors' })
|
const response = await fetch(fileUrl, { mode: 'cors' })
|
||||||
if (!response.ok)
|
if (!response.ok)
|
||||||
throw new Error(`下载失败: ${response.status}`)
|
throw new Error(`下载失败: ${response.status}`)
|
||||||
|
|||||||
@@ -1,119 +1,367 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="zh">
|
<html lang="zh-CN">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>附件管理</title>
|
<title>物流管理系统 - 首页</title>
|
||||||
<style>
|
<style>
|
||||||
body {
|
* {
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
||||||
background-color: #f8f9fa;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: 'Helvetica Neue', Arial, sans-serif;
|
||||||
}
|
}
|
||||||
.header {
|
|
||||||
background-color: #2c3e50;
|
body {
|
||||||
color: #fff;
|
background-color: #f5f7fa;
|
||||||
padding: 15px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
.upload-area {
|
|
||||||
background: #fff;
|
|
||||||
margin: 15px;
|
|
||||||
padding: 15px;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
|
|
||||||
}
|
|
||||||
.upload-area input[type="file"] {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.upload-label {
|
|
||||||
display: block;
|
|
||||||
text-align: center;
|
|
||||||
padding: 20px;
|
|
||||||
border: 2px dashed #ccc;
|
|
||||||
border-radius: 8px;
|
|
||||||
color: #666;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.attachment-list {
|
|
||||||
margin: 15px;
|
|
||||||
}
|
|
||||||
.attachment-item {
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
|
|
||||||
}
|
|
||||||
.attachment-info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
.attachment-thumb {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
border-radius: 4px;
|
|
||||||
object-fit: cover;
|
|
||||||
background-color: #eaeaea;
|
|
||||||
}
|
|
||||||
.attachment-name {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333;
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
.attachment-actions button {
|
|
||||||
margin-left: 5px;
|
.container {
|
||||||
padding: 5px 10px;
|
max-width: 1200px;
|
||||||
border-radius: 4px;
|
margin: 0 auto;
|
||||||
border: none;
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background-color: #34495e;
|
||||||
|
color: white;
|
||||||
|
padding: 15px 20px;
|
||||||
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 0 0 10px 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-info {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-info img {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 轮播图样式 */
|
||||||
|
.carousel {
|
||||||
|
position: relative;
|
||||||
|
height: 300px;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-inner {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-item {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 1s ease-in-out;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: white;
|
||||||
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
|
||||||
|
font-size: 2rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-item.active {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-item:nth-child(1) {
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(52, 73, 94, 0.7), rgba(52, 73, 94, 0.7)),
|
||||||
|
url('https://images.unsplash.com/photo-1601493700631-2b16ec4b4716?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxfDB8MXxyYW5kb218MHx8d2FyZWhvdXNlfHx8fHx8MTY5OTQwODQ0MQ&ixlib=rb-4.0.3&q=80&utm_campaign=api-credit&utm_medium=referral&utm_source=unsplash_source&w=1080');
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-item:nth-child(2) {
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(52, 73, 94, 0.7), rgba(52, 73, 94, 0.7)),
|
||||||
|
url('https://images.unsplash.com/photo-1488521787991-ed7bbaae773c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxfDB8MXxyYW5kb218MHx8dHJ1Y2t8fHx8fHwxNjk5NDA4NDYy&ixlib=rb-4.0.3&q=80&utm_campaign=api-credit&utm_medium=referral&utm_source=unsplash_source&w=1080');
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-item:nth-child(3) {
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(52, 73, 94, 0.7), rgba(52, 73, 94, 0.7)),
|
||||||
|
url('https://images.unsplash.com/photo-1518458028785-8fbcd101ebb9?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxfDB8MXxyYW5kb218MHx8Y29udGFpbmVyfHx8fHx8MTY5OTQwODQ3Mg&ixlib=rb-4.0.3&q=80&utm_campaign=api-credit&utm_medium=referral&utm_source=unsplash_source&w=1080');
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-controls {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 20px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-indicator {
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: rgba(255, 255, 255, 0.5);
|
||||||
|
margin: 0 5px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 13px;
|
|
||||||
}
|
}
|
||||||
.btn-primary {
|
|
||||||
|
.carousel-indicator.active {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 操作模块样式 */
|
||||||
|
.operations {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
color: #34495e;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #e0e6ed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-cards {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-card {
|
||||||
|
background: white;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
|
||||||
|
padding: 25px;
|
||||||
|
transition:
|
||||||
|
transform 0.3s,
|
||||||
|
box-shadow 0.3s;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-card:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-icon {
|
||||||
|
width: 70px;
|
||||||
|
height: 70px;
|
||||||
|
background-color: #eef5ff;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-icon i {
|
||||||
|
font-size: 32px;
|
||||||
|
color: #34495e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #34495e;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operation-desc {
|
||||||
|
color: #7f8c8d;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
background-color: #34495e;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
padding: 10px 25px;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
width: 80%;
|
||||||
|
max-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:hover {
|
||||||
background-color: #2c3e50;
|
background-color: #2c3e50;
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
.btn-danger {
|
|
||||||
background-color: #e74c3c;
|
.check-operation {
|
||||||
color: white;
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部样式 */
|
||||||
|
footer {
|
||||||
|
margin-top: 40px;
|
||||||
|
text-align: center;
|
||||||
|
color: #7f8c8d;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
padding: 20px;
|
||||||
|
border-top: 1px solid #e0e6ed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.operation-row {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-item {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="header">附件管理</div>
|
<header>
|
||||||
|
<div class="header-content">
|
||||||
<div class="upload-area">
|
<div class="logo">物流管理系统</div>
|
||||||
<label for="file-upload" class="upload-label">点击上传附件</label>
|
<div class="user-info">
|
||||||
<input type="file" id="file-upload" multiple />
|
<img src="https://ui-avatars.com/api/?name=管理员&background=random" alt="用户头像" />
|
||||||
|
<span>管理员</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="attachment-list">
|
|
||||||
<div class="attachment-item">
|
|
||||||
<div class="attachment-info">
|
|
||||||
<img src="https://via.placeholder.com/50" class="attachment-thumb" />
|
|
||||||
<div class="attachment-name">工单图片1.jpg</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="attachment-actions">
|
</header>
|
||||||
<button class="btn-primary">预览</button>
|
|
||||||
<button class="btn-danger">删除</button>
|
<div class="container">
|
||||||
|
<!-- 轮播图 -->
|
||||||
|
<div class="carousel">
|
||||||
|
<div class="carousel-inner">
|
||||||
|
<div class="carousel-item active">
|
||||||
|
<div>高效物流管理,提升运营效率</div>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<div>智能仓储解决方案</div>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<div>实时追踪,全程可视</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-controls">
|
||||||
|
<div class="carousel-indicator active"></div>
|
||||||
|
<div class="carousel-indicator"></div>
|
||||||
|
<div class="carousel-indicator"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="attachment-item">
|
<!-- 操作模块 -->
|
||||||
<div class="attachment-info">
|
<div class="operations">
|
||||||
<div class="attachment-thumb"></div>
|
<h2 class="section-title">核心操作</h2>
|
||||||
<div class="attachment-name">报告文档.pdf</div>
|
<div class="operation-cards">
|
||||||
|
<!-- 验箱单独一行 -->
|
||||||
|
<div class="operation-card check-operation">
|
||||||
|
<div class="operation-icon">
|
||||||
|
<i>📦</i>
|
||||||
</div>
|
</div>
|
||||||
<div class="attachment-actions">
|
<h3 class="operation-title">验箱</h3>
|
||||||
<button class="btn-primary">预览</button>
|
<p class="operation-desc">对集装箱进行质量检查、状态评估和记录,确保运输安全</p>
|
||||||
<button class="btn-danger">删除</button>
|
<button class="btn">开始验箱</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 进场和出场在同一行 -->
|
||||||
|
<div class="operation-row">
|
||||||
|
<div class="operation-card">
|
||||||
|
<div class="operation-icon">
|
||||||
|
<i>⬇️</i>
|
||||||
|
</div>
|
||||||
|
<h3 class="operation-title">进场</h3>
|
||||||
|
<p class="operation-desc">记录集装箱进入仓库或场站的信息,包括时间、位置和状态</p>
|
||||||
|
<button class="btn">进场登记</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="operation-card">
|
||||||
|
<div class="operation-icon">
|
||||||
|
<i>⬆️</i>
|
||||||
|
</div>
|
||||||
|
<h3 class="operation-title">出场</h3>
|
||||||
|
<p class="operation-desc">记录集装箱离开仓库或场站的信息,生成出库单据</p>
|
||||||
|
<button class="btn">出场登记</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>© 2023 物流管理系统 | 版本 2.1.0</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 轮播图功能
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
const items = document.querySelectorAll('.carousel-item')
|
||||||
|
const indicators = document.querySelectorAll('.carousel-indicator')
|
||||||
|
let currentIndex = 0
|
||||||
|
|
||||||
|
function showSlide(index) {
|
||||||
|
// 隐藏所有幻灯片
|
||||||
|
items.forEach((item) => item.classList.remove('active'))
|
||||||
|
indicators.forEach((indicator) => indicator.classList.remove('active'))
|
||||||
|
|
||||||
|
// 显示当前幻灯片
|
||||||
|
items[index].classList.add('active')
|
||||||
|
indicators[index].classList.add('active')
|
||||||
|
|
||||||
|
currentIndex = index
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加指示器点击事件
|
||||||
|
indicators.forEach((indicator, index) => {
|
||||||
|
indicator.addEventListener('click', () => {
|
||||||
|
showSlide(index)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 自动轮播
|
||||||
|
setInterval(() => {
|
||||||
|
let nextIndex = (currentIndex + 1) % items.length
|
||||||
|
showSlide(nextIndex)
|
||||||
|
}, 5000)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||