19 changed files with 2589 additions and 1783 deletions
@ -0,0 +1,27 @@ |
|||||||
|
import request from '@/axios'; |
||||||
|
|
||||||
|
/** |
||||||
|
* 直发商家签收列表 |
||||||
|
* @param {*} data |
||||||
|
* @returns |
||||||
|
*/ |
||||||
|
export const postFindSignOrderPageList = data => { |
||||||
|
return request({ |
||||||
|
url: '/api/logpm-trunkline/carsLoad/findSignOrderPageList', |
||||||
|
method: 'post', |
||||||
|
data, |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* 直发商家签收列表 |
||||||
|
* @param {*} data |
||||||
|
* @returns |
||||||
|
*/ |
||||||
|
export const postFindSignPhotoList = data => { |
||||||
|
return request({ |
||||||
|
url: '/api/logpm-trunkline/carsLoad/findSignPhotoList', |
||||||
|
method: 'post', |
||||||
|
data, |
||||||
|
}); |
||||||
|
}; |
@ -0,0 +1,154 @@ |
|||||||
|
/** 签收列表 */ |
||||||
|
export const columnList = [ |
||||||
|
{ |
||||||
|
prop: '', |
||||||
|
label: '复选框', |
||||||
|
type: 0, |
||||||
|
width: 55, |
||||||
|
fixed: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: '', |
||||||
|
label: '序号', |
||||||
|
type: 12, |
||||||
|
values: '', |
||||||
|
width: 55, |
||||||
|
fixed: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'carsNo', |
||||||
|
label: '车次号', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '150', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
head: false, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'loadSignCode', |
||||||
|
label: '签收号', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '150', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
head: false, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'belongToWarehouseName', |
||||||
|
label: '归属仓库', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '180', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'mallName', |
||||||
|
label: '商场名称', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '180', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'mallPerson', |
||||||
|
label: '商场联系人', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'mallMobile', |
||||||
|
label: '商场电话', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'mallAddress', |
||||||
|
label: '商场地址', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'driverName', |
||||||
|
label: '司机名称', |
||||||
|
type: 2, |
||||||
|
values: '', |
||||||
|
width: '180', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'planNum', |
||||||
|
label: '计划数', |
||||||
|
type: 1, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'loadingNum', |
||||||
|
label: '装车数', |
||||||
|
type: 1, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'signNum', |
||||||
|
label: '签收数', |
||||||
|
type: 1, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'signStatusName', |
||||||
|
label: '签收状态', |
||||||
|
type: 14, |
||||||
|
values: '', |
||||||
|
width: '130', |
||||||
|
checkarr: [ |
||||||
|
{ label: '未签收', value: '0' }, |
||||||
|
{ label: '部分签收', value: '10' }, |
||||||
|
{ label: '已签收', value: '20' }, |
||||||
|
], |
||||||
|
fixed: false, |
||||||
|
sortable: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: 'createUserName', |
||||||
|
label: '操作', |
||||||
|
type: 6, |
||||||
|
values: '', |
||||||
|
width: '200', |
||||||
|
checkarr: [], |
||||||
|
fixed: 'right', |
||||||
|
sortable: false, |
||||||
|
}, |
||||||
|
]; |
@ -0,0 +1,438 @@ |
|||||||
|
<template> |
||||||
|
<basic-container v-loading="details.loadingObj.pageLoading"> |
||||||
|
<div class="avue-crud"> |
||||||
|
<!-- 搜索模块 --> |
||||||
|
<div v-h5uShow="search"> |
||||||
|
<!-- 查询模块 --> |
||||||
|
<el-form :inline="true" :model="query" class="header_search" label-width="100px"> |
||||||
|
<!-- 查询按钮 --> |
||||||
|
<el-form-item class="el-btn"> |
||||||
|
<el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> |
||||||
|
<el-button icon="el-icon-delete" @click="searchReset">清 空</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
|
||||||
|
<!-- 控件模块 --> |
||||||
|
<el-row> |
||||||
|
<div class="avue-crud__header"> |
||||||
|
<!-- 头部左侧按钮模块 --> |
||||||
|
<div></div> |
||||||
|
<!-- 头部右侧按钮模块 --> |
||||||
|
<div class="avue-crud__right"> |
||||||
|
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button> |
||||||
|
<el-button icon="Operation" @click="showdrawer(true)" circle></el-button> |
||||||
|
<el-button icon="Search" @click="searchHide" circle></el-button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</el-row> |
||||||
|
|
||||||
|
<!-- 表格 --> |
||||||
|
<!-- 列表模块 --> |
||||||
|
<tablecmt |
||||||
|
:columnList="details.columnList" |
||||||
|
:tableData="details.packageListData" |
||||||
|
:loading="loadingObj.list" |
||||||
|
@inputTxt="inputsc" |
||||||
|
@timeCheck="timesc" |
||||||
|
@btnCheck="btnsc" |
||||||
|
@selectCheck="selectsc" |
||||||
|
@selection="selectionChange" |
||||||
|
> |
||||||
|
<template #default="slotProps"> |
||||||
|
<template v-if="slotProps.scope.column.label === '签收状态'"> |
||||||
|
<el-tag |
||||||
|
:class="{ |
||||||
|
err: Number(slotProps.scope.row.signStatus) === 0, |
||||||
|
sub: Number(slotProps.scope.row.signStatus) === 10, |
||||||
|
primary: Number(slotProps.scope.row.signStatus) === 20, |
||||||
|
}" |
||||||
|
> |
||||||
|
{{ slotProps.scope.row.signStatusName }} |
||||||
|
</el-tag> |
||||||
|
</template> |
||||||
|
|
||||||
|
<template v-else-if="slotProps.scope.column.label === '操作'"> |
||||||
|
<el-text |
||||||
|
v-if="Number(slotProps.scope.row.signStatus) !== 0" |
||||||
|
@click="() => handleShowSignImg(slotProps.scope)" |
||||||
|
> |
||||||
|
查看签收图片 |
||||||
|
</el-text> |
||||||
|
</template> |
||||||
|
</template> |
||||||
|
</tablecmt> |
||||||
|
|
||||||
|
<!-- 分页模块 --> |
||||||
|
<el-row class="el-fy"> |
||||||
|
<div class="avue-crud__pagination flex-c-sb" style="width: 100%"> |
||||||
|
<div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div> |
||||||
|
<!-- 分页模块 --> |
||||||
|
<el-pagination |
||||||
|
align="right" |
||||||
|
background |
||||||
|
@size-change="sizeChange" |
||||||
|
@current-change="currentChange" |
||||||
|
:current-page="page.pageNum" |
||||||
|
:page-sizes="[30, 50, 80, 120]" |
||||||
|
:page-size="page.pageSize" |
||||||
|
layout="total, sizes, prev, pager, next, jumper" |
||||||
|
:total="page.total" |
||||||
|
> |
||||||
|
</el-pagination> |
||||||
|
</div> |
||||||
|
</el-row> |
||||||
|
</div> |
||||||
|
</basic-container> |
||||||
|
|
||||||
|
<el-dialog |
||||||
|
title="签收图片" |
||||||
|
v-model="details.popUpShow.signImg" |
||||||
|
width="50%" |
||||||
|
append-to-body |
||||||
|
:show-close="true" |
||||||
|
class="signImg" |
||||||
|
> |
||||||
|
<div class="signImg_container"> |
||||||
|
<el-image |
||||||
|
v-for="(item, index) in details.signImgList" |
||||||
|
:key="item" |
||||||
|
style="width: 100px; height: 100px" |
||||||
|
:src="item" |
||||||
|
:zoom-rate="1.2" |
||||||
|
:max-scale="7" |
||||||
|
:min-scale="0.2" |
||||||
|
:preview-src-list="details.signImgList" |
||||||
|
:initial-index="index" |
||||||
|
fit="cover" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
</el-dialog> |
||||||
|
|
||||||
|
<!-- 列表配置显示 --> |
||||||
|
<edittablehead |
||||||
|
@setcolum="setnewcolum" |
||||||
|
@closce="showdrawer" |
||||||
|
:drawerShow="drawerShow" |
||||||
|
:columnList="details.columnList" |
||||||
|
v-model="details.columnList" |
||||||
|
></edittablehead> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script setup lang="ts"> |
||||||
|
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue'; |
||||||
|
import functions from '@/utils/functions.js'; |
||||||
|
import dayjs from 'dayjs'; |
||||||
|
import { mapGetters, useStore } from 'vuex'; |
||||||
|
/** 获取字典 */ |
||||||
|
import { getDictionaryBiz } from '@/api/system/dict'; |
||||||
|
import { |
||||||
|
postFindSignOrderPageList, |
||||||
|
postFindSignPhotoList, |
||||||
|
} from '@/api/distribution/directMerchantSign.js'; |
||||||
|
import { |
||||||
|
downloadXls, |
||||||
|
setNodeHeight, |
||||||
|
getHtmls, |
||||||
|
deepClone, |
||||||
|
getObjType, |
||||||
|
handleTranslationDataSeclect, |
||||||
|
handleClearTableQuery, |
||||||
|
handleSelectQuery, |
||||||
|
handleInputQuery, |
||||||
|
} from '@/utils/util'; |
||||||
|
import { columnList } from '@/option/distribution/directMerchantSign.js'; |
||||||
|
import { flowNodeColumnList } from '@/option/waybill/orderPackageListDetails.js'; |
||||||
|
import { useRouter } from 'vue-router'; |
||||||
|
import print from '@/utils/print'; |
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'; |
||||||
|
|
||||||
|
// 获取路由实例 |
||||||
|
const $router = useRouter(); |
||||||
|
const $store = useStore(); |
||||||
|
|
||||||
|
const details = reactive<any>({ |
||||||
|
/** 是否开启搜索 */ |
||||||
|
search: false, |
||||||
|
/** 表格搜索条件 */ |
||||||
|
query: {}, |
||||||
|
/** 时间快捷选择设置 */ |
||||||
|
shortcuts: [ |
||||||
|
{ |
||||||
|
text: '最近一周', |
||||||
|
value: () => { |
||||||
|
const end = new Date(); |
||||||
|
const start = new Date(); |
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
||||||
|
return [start, end]; |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
text: '最近一个月', |
||||||
|
value: () => { |
||||||
|
const end = new Date(); |
||||||
|
const start = new Date(); |
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
||||||
|
return [start, end]; |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
text: '最近三个月', |
||||||
|
value: () => { |
||||||
|
const end = new Date(); |
||||||
|
const start = new Date(); |
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); |
||||||
|
return [start, end]; |
||||||
|
}, |
||||||
|
}, |
||||||
|
], |
||||||
|
/** 时间选择器数据 */ |
||||||
|
stockupDate: [], |
||||||
|
/** 包明细表头 */ |
||||||
|
columnList: deepClone(columnList), |
||||||
|
/** 包明细数据 */ |
||||||
|
packageListData: [], |
||||||
|
/** 页面loading */ |
||||||
|
loadingObj: { |
||||||
|
/** 列表加载loading */ |
||||||
|
list: false, |
||||||
|
/** 页面loading */ |
||||||
|
pageLoading: false, |
||||||
|
}, |
||||||
|
/** 列表复选框选中的数据 */ |
||||||
|
selectionList: [], |
||||||
|
/** 是否显示设置表格 */ |
||||||
|
drawerShow: false, |
||||||
|
/** 分页参数 */ |
||||||
|
page: { |
||||||
|
pageNum: 1, |
||||||
|
pageSize: 30, |
||||||
|
total: 0, |
||||||
|
}, |
||||||
|
/** 弹出层显示 */ |
||||||
|
popUpShow: { |
||||||
|
signImg: false, |
||||||
|
}, |
||||||
|
/** 列表Dom节点 */ |
||||||
|
listNode: '', |
||||||
|
html: '', |
||||||
|
signImgList: [], |
||||||
|
}); |
||||||
|
|
||||||
|
const { |
||||||
|
search, |
||||||
|
query, |
||||||
|
shortcuts, |
||||||
|
stockupDate, |
||||||
|
data, |
||||||
|
loadingObj, |
||||||
|
selectionList, |
||||||
|
drawerShow, |
||||||
|
page, |
||||||
|
trickleLoadingPage, |
||||||
|
zeroAdditionalRecordingInfo, |
||||||
|
popUpShow, |
||||||
|
} = toRefs(details); |
||||||
|
|
||||||
|
/** vuex */ |
||||||
|
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList'])); |
||||||
|
console.log('permission :>> ', permission); |
||||||
|
|
||||||
|
/** 权限按钮 */ |
||||||
|
const permissionObj = reactive({}); |
||||||
|
|
||||||
|
onMounted(() => { |
||||||
|
const timer = setTimeout(() => { |
||||||
|
details.listNode = document.querySelector('.maboxhi'); |
||||||
|
details.listNode.style.transition = 'all .5s ease-out'; |
||||||
|
clearTimeout(timer); |
||||||
|
}, 100); |
||||||
|
}); |
||||||
|
|
||||||
|
/** 请求页面数据 */ |
||||||
|
const onLoad = async (params = {}) => { |
||||||
|
try { |
||||||
|
// if (Object.keys(details.query).length === 0) return (details.packageListData = []); |
||||||
|
|
||||||
|
details.loadingObj.list = true; |
||||||
|
|
||||||
|
const submitData = { ...details.page, ...details.query, ...params }; |
||||||
|
|
||||||
|
// 创建时间 |
||||||
|
if ( |
||||||
|
getObjType(details.query.createTimeArr) === 'array' && |
||||||
|
details.query.createTimeArr.length > 0 |
||||||
|
) { |
||||||
|
submitData.createTimeStartStr = details.query.createTimeArr[0]; |
||||||
|
submitData.createTimeEndStr = details.query.createTimeArr[1]; |
||||||
|
} |
||||||
|
|
||||||
|
delete submitData.createTimeArr; |
||||||
|
const res = await postFindSignOrderPageList(submitData); |
||||||
|
const { code, data } = res.data; |
||||||
|
if (code !== 200) return; |
||||||
|
details.packageListData = data.records; |
||||||
|
details.page.total = data.total; |
||||||
|
|
||||||
|
handleTranslationDataSeclect(details.packageListData, details.columnList); |
||||||
|
} catch (error) { |
||||||
|
console.log('error :>> ', error); |
||||||
|
} finally { |
||||||
|
details.loadingObj.list = false; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
onLoad(); |
||||||
|
|
||||||
|
/** 搜索 */ |
||||||
|
const searchChange = () => { |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 清空表单 */ |
||||||
|
const searchReset = () => { |
||||||
|
details.query = {}; |
||||||
|
details.stockupDate = []; |
||||||
|
details.page.pageNum = 1; |
||||||
|
handleClearTableQuery(details.columnList); |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 展开列表控件 */ |
||||||
|
const showdrawer = (_flag?: boolean) => { |
||||||
|
details.drawerShow = _flag; |
||||||
|
}; |
||||||
|
|
||||||
|
/** 是否开启搜索区 */ |
||||||
|
const searchHide = () => { |
||||||
|
details.search = !details.search; |
||||||
|
|
||||||
|
setNodeHeight(details.listNode, '', true); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 表格表头输入框搜索 */ |
||||||
|
const inputsc = (index, row) => { |
||||||
|
handleInputQuery(index, row, details.query); |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 表格表头时间选择 */ |
||||||
|
const timesc = (index, row) => { |
||||||
|
console.log(index, row); |
||||||
|
if (!!index) { |
||||||
|
index = dayjs(index).format('YYYY-MM-DD'); |
||||||
|
} |
||||||
|
details.query[row.prop] = index; |
||||||
|
if (!index) { |
||||||
|
delete details.query[row.prop]; |
||||||
|
} |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 表格表头输入框搜索 */ |
||||||
|
const btnsc = () => {}; |
||||||
|
|
||||||
|
/** 表格表头下拉框选择 */ |
||||||
|
const selectsc = (index, row) => { |
||||||
|
handleSelectQuery(index, row, details.query); |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 表格表头复选框选择 */ |
||||||
|
const selectionChange = (list: any) => { |
||||||
|
details.selectionList = list; |
||||||
|
}; |
||||||
|
|
||||||
|
/** 每页数量改变执行的回调 */ |
||||||
|
const sizeChange = (pageSize: number) => { |
||||||
|
details.page.pageSize = pageSize; |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** 页码改变执行的回调 */ |
||||||
|
const currentChange = pageNum => { |
||||||
|
details.page.pageNum = pageNum; |
||||||
|
onLoad(); |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置列表 -- 固定函数 |
||||||
|
* 弹窗的勾选回调,用于更改头部数组 |
||||||
|
* 固定搭配,只需要更换 columnList |
||||||
|
* */ |
||||||
|
const setnewcolum = (newarr, headarr, type) => { |
||||||
|
if (type == 1) { |
||||||
|
details.columnList = newarr; |
||||||
|
functions.setStorage(window.location.pathname + 'checkList', headarr); |
||||||
|
} else if (type == 2) { |
||||||
|
details.columnList = newarr; |
||||||
|
functions.setStorage(window.location.pathname + 'flexList', headarr); |
||||||
|
} else if (type == 3) { |
||||||
|
details.columnList = newarr; |
||||||
|
functions.setStorage(window.location.pathname + 'sortlist', headarr); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
/** 查看签收图片 */ |
||||||
|
const handleShowSignImg = async ({ row }) => { |
||||||
|
try { |
||||||
|
details.loadingObj.pageLoading = true; |
||||||
|
|
||||||
|
const submitData = { |
||||||
|
signOrderId: row.id, |
||||||
|
}; |
||||||
|
|
||||||
|
const res = await postFindSignPhotoList(submitData); |
||||||
|
|
||||||
|
const { code, data } = res.data; |
||||||
|
|
||||||
|
if (code !== 200) return; |
||||||
|
|
||||||
|
details.signImgList = data || []; |
||||||
|
if (details.signImgList.length === 0) return ElMessage.warning('暂无签收图片'); |
||||||
|
details.popUpShow.signImg = true; |
||||||
|
} catch (error) { |
||||||
|
console.log('error :>> ', error); |
||||||
|
} finally { |
||||||
|
details.loadingObj.pageLoading = false; |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped lang="scss"> |
||||||
|
// 日期选择器 |
||||||
|
:deep(.el-date-editor.el-input) { |
||||||
|
height: 100% !important; |
||||||
|
width: 100% !important; |
||||||
|
} |
||||||
|
|
||||||
|
:deep(.el-range-editor.el-input__wrapper) { |
||||||
|
height: 100% !important; |
||||||
|
} |
||||||
|
|
||||||
|
:deep(.el-tag) { |
||||||
|
&.err { |
||||||
|
background-color: #f8544b; |
||||||
|
border-color: #f8544b; |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
&.primary { |
||||||
|
background-color: #0086f1; |
||||||
|
border-color: #0086f1; |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
&.sub { |
||||||
|
background-color: #d3832a; |
||||||
|
border-color: #d3832a; |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 签收图片 |
||||||
|
.signImg_container { |
||||||
|
display: flex; |
||||||
|
flex-wrap: wrap; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,248 @@ |
|||||||
|
<template> |
||||||
|
<div class="bx" v-if="indexState"> |
||||||
|
<div class="left"> |
||||||
|
<div class="tptitl"> |
||||||
|
<img src="./static/topicon.png" /> |
||||||
|
<span>发货操作</span> |
||||||
|
</div> |
||||||
|
<div class="onebx1"> |
||||||
|
<div class="item1"> |
||||||
|
<img src="./static/1.png" /> |
||||||
|
<span>提货</span> |
||||||
|
</div> |
||||||
|
<div class="item2"> |
||||||
|
<img src="./static/2.png" /> |
||||||
|
<span>预开单</span> |
||||||
|
</div> |
||||||
|
<div class="item3"> |
||||||
|
<img src="./static/3.png" /> |
||||||
|
<span>创建运单</span> |
||||||
|
</div> |
||||||
|
<div class="item4"> |
||||||
|
<img src="./static/4.png" /> |
||||||
|
<span>补录运单</span> |
||||||
|
</div> |
||||||
|
<div class="item5"> |
||||||
|
<img src="./static/5.png" /> |
||||||
|
<span>短驳发车</span> |
||||||
|
</div> |
||||||
|
<div class="item6"> |
||||||
|
<img src="./static/6.png" /> |
||||||
|
<span>外部中转</span> |
||||||
|
</div> |
||||||
|
<div class="item7"> |
||||||
|
<img src="./static/7.png" /> |
||||||
|
<span>库存管理</span> |
||||||
|
</div> |
||||||
|
<div class="item8"> |
||||||
|
<img src="./static/8.png" /> |
||||||
|
<span>车辆配载</span> |
||||||
|
</div> |
||||||
|
<img class="upimg" src="./static/up.png" /> |
||||||
|
<img class="rigth1" src="./static/rigth.png" /> |
||||||
|
<img class="rigth2" src="./static/rigth.png" /> |
||||||
|
<img class="rigth3" src="./static/rigth.png" /> |
||||||
|
<img class="rigth4" src="./static/rigth.png" /> |
||||||
|
<img class="rigthall" src="./static/rigthall.png" /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="ztjk"> |
||||||
|
<img src="./static/9.png" /> |
||||||
|
<span>到货操作</span> |
||||||
|
</div> |
||||||
|
<div class="rigth"> |
||||||
|
<div class="tptitl"> |
||||||
|
<img src="./static/topicon.png" /> |
||||||
|
<span>到货操作</span> |
||||||
|
</div> |
||||||
|
<div class="onebx1"> |
||||||
|
<div class="item1"> |
||||||
|
<img src="./static/10.png" /> |
||||||
|
<span>到站卸车</span> |
||||||
|
</div> |
||||||
|
<div class="item2"> |
||||||
|
<img src="./static/11.png" /> |
||||||
|
<span>库存管理</span> |
||||||
|
</div> |
||||||
|
<div class="item3"> |
||||||
|
<img src="./static/12.png" /> |
||||||
|
<span>短驳接收</span> |
||||||
|
</div> |
||||||
|
<div class="item4"> |
||||||
|
<img src="./static/13.png" /> |
||||||
|
<span>外部中转</span> |
||||||
|
</div> |
||||||
|
<div class="item5"> |
||||||
|
<img src="./static/14.png" /> |
||||||
|
<span>送货</span> |
||||||
|
</div> |
||||||
|
<div class="item6"> |
||||||
|
<img src="./static/15.png" /> |
||||||
|
<span>中转签收</span> |
||||||
|
</div> |
||||||
|
<div class="item7"> |
||||||
|
<img src="./static/16.png" /> |
||||||
|
<span>送货签收</span> |
||||||
|
</div> |
||||||
|
<div class="item8"> |
||||||
|
<img src="./static/17.png" /> |
||||||
|
<span>自提签收</span> |
||||||
|
</div> |
||||||
|
<img class="upimg" src="./static/down.png" /> |
||||||
|
<img class="rigth1" src="./static/rigth.png" /> |
||||||
|
<img class="rigth2" src="./static/rigth.png" /> |
||||||
|
<img class="rigth3" src="./static/rigth.png" /> |
||||||
|
<img class="rigth4" src="./static/rigth.png" /> |
||||||
|
<img class="rigthall" src="./static/rigthall2.png" /> |
||||||
|
<img class="leftall" src="./static/leftall.png" /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="buts"> |
||||||
|
<div class="tptitl"> |
||||||
|
<img src="./static/topicon.png" /> |
||||||
|
<span>回单管理</span> |
||||||
|
</div> |
||||||
|
<div class="onebx1"> |
||||||
|
<div class="item1"> |
||||||
|
<img src="./static/18.png" /> |
||||||
|
<span>回单回收</span> |
||||||
|
</div> |
||||||
|
<div class="item2"> |
||||||
|
<img src="./static/19.png" /> |
||||||
|
<span>回单寄出</span> |
||||||
|
</div> |
||||||
|
<div class="item3"> |
||||||
|
<img src="./static/20.png" /> |
||||||
|
<span>回单接收</span> |
||||||
|
</div> |
||||||
|
<div class="item4"> |
||||||
|
<img src="./static/21.png" /> |
||||||
|
<span>回单发放</span> |
||||||
|
</div> |
||||||
|
<img class="left1" src="./static/rigth.png" /> |
||||||
|
<img class="left2" src="./static/rigth.png" /> |
||||||
|
<img class="left3" src="./static/rigth.png" /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="el-gl"> |
||||||
|
<div>公告栏</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div v-else class="el_Hwlogo"> |
||||||
|
<div class="content"> |
||||||
|
<img src="/public/img/p-logo.png" alt="" /> |
||||||
|
<div class="info"> |
||||||
|
<div class="name">{{ name }}</div> |
||||||
|
<div class="slogan">您好!欢迎使用货无忧</div> |
||||||
|
<div class="title">成都数联物科信息技术有限公司</div> |
||||||
|
<div class="time">{{ currentTime }}</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
<script setup> |
||||||
|
import { ref, onMounted } from 'vue'; |
||||||
|
const indexState = ref(false); |
||||||
|
const currentTime = ref('0000年00月00日00时00分00秒'); |
||||||
|
const name = ref(''); |
||||||
|
name.value = JSON.parse(localStorage.getItem('TWMS-userInfo')).content.real_name; |
||||||
|
setInterval(() => { |
||||||
|
const now = new Date(); |
||||||
|
const year = now.getFullYear(); |
||||||
|
const month = String(now.getMonth() + 1).padStart(2, '0'); |
||||||
|
const day = String(now.getDate()).padStart(2, '0'); |
||||||
|
const hours = String(now.getHours()).padStart(2, '0'); |
||||||
|
const minutes = String(now.getMinutes()).padStart(2, '0'); |
||||||
|
const seconds = String(now.getSeconds()).padStart(2, '0'); |
||||||
|
currentTime.value = `${year}年${month}月${day}日${hours}时${minutes}分${seconds}秒`; |
||||||
|
}, 1000); |
||||||
|
</script> |
||||||
|
<style scoped lang="scss"> |
||||||
|
.info { |
||||||
|
display: flex; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
justify-content: center; |
||||||
|
.name { |
||||||
|
font-size: 40px; |
||||||
|
color: #d3832a; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
.slogan { |
||||||
|
font-size: 3em; |
||||||
|
} |
||||||
|
.time { |
||||||
|
display: flex; |
||||||
|
margin-top: 10px; |
||||||
|
justify-content: flex-end; |
||||||
|
} |
||||||
|
.title { |
||||||
|
display: flex; |
||||||
|
margin-top: 10px; |
||||||
|
justify-content: flex-end; |
||||||
|
} |
||||||
|
} |
||||||
|
.el_Hwlogo { |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
span { |
||||||
|
color: #d3832a; |
||||||
|
} |
||||||
|
img { |
||||||
|
width: 300px; |
||||||
|
height: 300px; |
||||||
|
} |
||||||
|
.content { |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
flex-wrap: wrap; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
} |
||||||
|
} |
||||||
|
.el-gl { |
||||||
|
font-weight: 500; |
||||||
|
text-align: center; |
||||||
|
position: absolute; |
||||||
|
right: 10px; |
||||||
|
top: 10px; |
||||||
|
width: 15%; |
||||||
|
background-color: #fff; |
||||||
|
border-radius: 32px; |
||||||
|
padding: 5px; |
||||||
|
box-sizing: border-box; |
||||||
|
border: 1px solid #f1eeee69; |
||||||
|
box-shadow: 4px 6px 0 #d3dff6, 1px 1px 9px #d3dff6; |
||||||
|
height: 762px; |
||||||
|
} |
||||||
|
</style> |
||||||
|
<style lang="scss" scope> |
||||||
|
@import '../../styles/flowStyle.scss'; |
||||||
|
|
||||||
|
#avue-view { |
||||||
|
background-color: #fff; |
||||||
|
} |
||||||
|
</style> |
||||||
|
<script> |
||||||
|
import { mapGetters } from 'vuex'; |
||||||
|
export default { |
||||||
|
name: 'wel', |
||||||
|
data() { |
||||||
|
return { |
||||||
|
activeNames: ['1', '2', '3', '5'], |
||||||
|
logActiveNames: ['29'], |
||||||
|
}; |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
...mapGetters(['userInfo']), |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
handleChange(val) { |
||||||
|
window.console.log(val); |
||||||
|
}, |
||||||
|
}, |
||||||
|
}; |
||||||
|
</script> |
Loading…
Reference in new issue