Commit e9ea2851 by qinjianhui

Merge branch 'wq' into 'master'

Wq

See merge request !1
parents 62abad04 21cc65b9
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -148,7 +148,18 @@ export function loadSendOutList(id: number) {
},
)
}
// 设置备注
export function backEndCommentsApi(id: number, remark: string) {
return axios.get<never, BaseRespData<SendOrderData[]>>(
'factory/customJomallOrderProduct/setRemark',
{
params: {
id,
remark
},
},
)
}
// 操作日志
export function getLogList(id: number) {
return axios.get<never, BaseRespData<LogListData[]>>(
......
......@@ -11,13 +11,20 @@
<img :src="item.variantImage" style="width: 100%; height: 100%" />
</div>
<div class="order-list-expand_item_info">
<div :title="item.productName || '--'" class="order-list-expand_item_info_title" style="font-weight: bold">
<div
:title="item.productName || '--'"
class="order-list-expand_item_info_title"
style="font-weight: bold"
>
<span class="order-list-expand_item_label">商品名:</span>
<span class="order-list-expand_item_value">{{
item.productName || '--'
}}</span>
</div>
<div :title="item.baseSku || ''" class="order-list-expand_item_info_title">
<div
:title="item.baseSku || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">Base SKU:</span>
<span class="order-list-expand_item_value"
>{{ item.baseSku || '--'
......@@ -25,7 +32,10 @@
><DocumentCopy /></el-icon
></span>
</div>
<div :title="item.variantSku || ''" class="order-list-expand_item_info_title">
<div
:title="item.variantSku || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">Variant SKU:</span>
<span class="order-list-expand_item_value"
>{{ item.variantSku || '--' }}
......@@ -34,7 +44,10 @@
/></el-icon>
</span>
</div>
<div :title="item.shopNumber || ''" class="order-list-expand_item_info_title">
<div
:title="item.shopNumber || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">店铺单号:</span>
<span class="order-list-expand_item_value"
>{{ item.shopNumber || '--' }}
......@@ -43,7 +56,10 @@
/></el-icon>
</span>
</div>
<div :title="item.subOrderNumber || ''" class="order-list-expand_item_info_title">
<div
:title="item.subOrderNumber || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">生产单号:</span>
<span class="order-list-expand_item_value"
>{{ item.subOrderNumber || '--'
......@@ -76,12 +92,29 @@
<el-tag effect="dark" type="danger"> 未发货 </el-tag>
</span>
</div>
<div :title="item.material || ''" class="order-list-expand_item_info_title">
<div
:title="item.material || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">材质:</span>
<span class="order-list-expand_item_value"
>{{ item.material || '--'
}}
>{{ item.material || '--' }}
</span>
</div>
<div
:title="item.remark || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">备注:</span>
<span class="order-list-expand_item_value"
>{{ item.remark || '--' }}
</span>
<el-icon
class="icon"
style="color: #e6a23c"
@click="setRemarks(item.id, item.remark)"
><EditPen
/></el-icon>
</div>
</div>
<div class="order-list-expand_item_price">
......@@ -145,12 +178,11 @@
</div>
</template>
<script setup lang="ts">
import { DocumentCopy } from '@element-plus/icons-vue'
import { DocumentCopy, EditPen } from '@element-plus/icons-vue'
import { filePath } from '@/api/axios'
import { downloadOrder } from '@/api/order'
import { OrderData, ProductList } from '@/types/api/order'
import { PropType } from 'vue'
import { PropType ,defineEmits} from 'vue'
defineProps({
row: {
type: Object as PropType<OrderData>,
......@@ -164,6 +196,9 @@ defineProps({
type: Number,
},
})
const emit = defineEmits<{
(e: 'update-remark', payload: { id: number; remark: string }): void;
}>();
const downloadManuscriptBySubOrder = async (item: ProductList) => {
try {
const res = await downloadOrder(item.id)
......@@ -176,6 +211,10 @@ const copy = (text: string) => {
navigator.clipboard.writeText(text)
ElMessage.success('复制成功')
}
const setRemarks = (id: number, remark: string) => {
emit('update-remark', { id, remark })
}
</script>
<style lang="scss" scoped>
.order-list-expand_item {
......@@ -183,7 +222,6 @@ const copy = (text: string) => {
border-bottom: 1px solid #eee;
padding: 20px;
}
.order-list-expand_item:last-child {
border-bottom: 0;
}
......@@ -206,6 +244,7 @@ const copy = (text: string) => {
.order-list-expand_item_info_title {
line-height: 26px;
display: flex;
align-items: center;
}
.order-list-expand_item_label {
......
......@@ -6,15 +6,35 @@
<div class="header-filter-form">
<ElForm :model="searchForm" size="default" inline>
<ElFormItem>
<el-select v-model="searchForm.timeType" clearable style="width:100px;margin-right: 5px ;" placeholder="时间类型" >
<el-option v-if="statusCode !== 6" value="1" label="创建时间"></el-option>
<el-select
v-model="searchForm.timeType"
clearable
style="width: 100px; margin-right: 5px"
placeholder="时间类型"
>
<el-option
v-if="statusCode !== 6"
value="1"
label="创建时间"
></el-option>
<el-option value="2" label="确认时间"></el-option>
<el-option v-if="statusCode !== 6" value="3" label="完成时间"></el-option>
<el-option v-if="statusCode === 6" value="4" label="发货时间"></el-option>
<el-option
v-if="statusCode !== 6"
value="3"
label="完成时间"
></el-option>
<el-option
v-if="statusCode === 6"
value="4"
label="发货时间"
></el-option>
</el-select>
<el-date-picker
v-model="timeRange"
:default-time="[new Date(0,0,0,0,0,0),new Date(0,0,0,23,59,59)]"
:default-time="[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
placeholder="收货人"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetimerange"
......@@ -24,7 +44,6 @@
clearable
style="width: 210px"
>
</el-date-picker>
</ElFormItem>
<ElFormItem label="SKU">
......@@ -42,7 +61,9 @@
placeholder="请输入成品ID"
clearable
style="width: 130px"
@blur="searchForm.endProductId = searchForm.endProductId.trim()"
@blur="
searchForm.endProductId = searchForm.endProductId.trim()
"
></ElInput>
</ElFormItem>
<ElFormItem label="生产单号">
......@@ -80,7 +101,9 @@
placeholder="内部标签"
clearable
style="width: 130px"
@blur="searchForm.internalMemo = searchForm.internalMemo.trim()"
@blur="
searchForm.internalMemo = searchForm.internalMemo.trim()
"
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="物流跟踪号">
......@@ -113,7 +136,6 @@
></ElInput>
</ElFormItem>
<ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton>
</ElFormItem>
......@@ -128,7 +150,9 @@
v-for="item in tabsNav"
:key="item.statusCode"
class="tabs-node"
:class="item.statusCode === statusCode ? 'tabs-node_active' : ''"
:class="
item.statusCode === statusCode ? 'tabs-node_active' : ''
"
@click="changeTab(item)"
>
<span class="tabs-node_label">{{ item.statusName }}</span>
......@@ -143,7 +167,9 @@
<!-- 操作按钮 -->
<div class="order-operate-btn">
<span v-if="statusCode === 2" class="item">
<ElButton type="success" @click="confirmProduce">确认生产</ElButton>
<ElButton type="success" @click="confirmProduce"
>确认生产</ElButton
>
</span>
<span
......@@ -151,7 +177,11 @@
class="item"
>
<ElButton
:disabled="selection.find(item=>item.manuscriptStatus !== 30)" type="warning" is-dark
:disabled="
selection.find((item) => item.manuscriptStatus !== 30)
"
type="warning"
is-dark
@click="downloadManuscript"
>下载稿件</ElButton
>
......@@ -161,23 +191,37 @@
class="item"
>
<ElButton
:disabled="selection.find(item=>item.manuscriptStatus !== 30) || selection.length!==1" type="success" is-dark
:disabled="
selection.find((item) => item.manuscriptStatus !== 30) ||
selection.length !== 1
"
type="success"
is-dark
@click="reGenerateManuscript"
>重新打包稿件 </ElButton
>
>重新打包稿件
</ElButton>
</span>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<ElButton
:disabled="selection.find(item=>item.manuscriptStatus !== 30) || selection.length!==1"
type="warning" is-dark @click="reCreateManuscript"
>重新生成稿件 </ElButton
>
:disabled="
selection.find((item) => item.manuscriptStatus !== 30) ||
selection.length !== 1
"
type="warning"
is-dark
@click="reCreateManuscript"
>重新生成稿件
</ElButton>
</span>
<span v-if="statusCode === 2 || statusCode === 3" class="item">
<ElButton :loading="btnLoading" type="primary" dark @click="printManuscript"
<ElButton
:loading="btnLoading"
type="primary"
dark
@click="printManuscript"
>打印生产单</ElButton
>
</span>
......@@ -232,7 +276,11 @@
class="order-list-expand"
:style="{ width: `${thOrderDetailWidth + 50}px` }"
>
<ProductInfo :row="row" :status="statusCode" />
<ProductInfo
:row="row"
:status="statusCode"
@update-remark="handleUpdateRemark"
/>
<template v-if="row.productList.length > 2">
<div class="order-list-expand_more">
<span @click="openAll(row)">
......@@ -243,7 +291,8 @@
><ArrowDown /></el-icon
></template>
<template v-else>
收起商品信息<el-icon style="vertical-align: middle"
收起商品信息<el-icon
style="vertical-align: middle"
><ArrowUp
/></el-icon>
</template>
......@@ -254,14 +303,18 @@
<div class="order-actual-payment">
<div class="order-actual-payment_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">商品价:</span>
<span class="order-list-expand_item_label"
>商品价:</span
>
<span class="order-list-expand_item_value">{{
row.productAmount
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">小计:</span>
<span class="order-list-expand_item_label"
>小计:</span
>
<span class="order-list-expand_item_value">{{
row.totalAmount || '--'
}}</span>
......@@ -295,7 +348,10 @@
>
<span>{{ memo.operatorTime || '' }}</span>
</div>
<div v-if="memo.content" class="order-memo-item__content">
<div
v-if="memo.content"
class="order-memo-item__content"
>
<span>{{ memo.content || '' }}</span>
</div>
</div>
......@@ -332,7 +388,10 @@
<div class="order-operate">
<div class="order-operate_info">
<div class="order-list-expand_item_info_title">
<ElButton text type="primary" @click="openDetail(row.id)"
<ElButton
text
type="primary"
@click="openDetail(row.id)"
>查看详情
</ElButton>
</div>
......@@ -357,7 +416,10 @@
v-if="statusCode === 1 || statusCode === 3"
class="order-list-expand_item_info_title"
>
<ElButton text type="danger" @click="cancelOrder(row.id)"
<ElButton
text
type="danger"
@click="cancelOrder(row.id)"
>取消
</ElButton>
</div>
......@@ -375,7 +437,10 @@
>
<template #default="scope">
<div class="order-detail">
<div :title="scope.row.orderNumber" class="order-detail_item">
<div
:title="scope.row.orderNumber"
class="order-detail_item"
>
<span class="label">订单号:</span>
<span class="value">{{ scope.row.orderNumber }}</span>
</div>
......@@ -393,16 +458,24 @@
class="order-detail_item"
>
<span class="label">稿件状态:</span>
<span class="value" :title="scope.row.manuscriptStatusStr">{{
scope.row.manuscriptStatusStr || '--'
}}</span>
<span
class="value"
:title="scope.row.manuscriptStatusStr"
>{{ scope.row.manuscriptStatusStr || '--' }}</span
>
</div>
<div :title="scope.row.lanshouName" class="order-detail_item">
<div
:title="scope.row.lanshouName"
class="order-detail_item"
>
<span class="label">收货人:</span>
<span class="value">{{ scope.row.lanshouName }}</span>
</div>
<div :title="scope.row.lanshouPhone" class="order-detail_item">
<div
:title="scope.row.lanshouPhone"
class="order-detail_item"
>
<span class="label">电话:</span>
<span class="value">{{ scope.row.lanshouPhone }}</span>
</div>
......@@ -415,7 +488,10 @@
scope.row.lanshouAddress
}}</span>
</div>
<div :title="scope.row.lanshouPost" class="order-detail_item">
<div
:title="scope.row.lanshouPost"
class="order-detail_item"
>
<span class="label">邮编:</span>
<span class="value">{{ scope.row.lanshouPost }}</span>
</div>
......@@ -482,7 +558,8 @@
><ArrowDown /></el-icon
></template>
<template v-else>
收起商品信息<el-icon style="vertical-align: middle"
收起商品信息<el-icon
style="vertical-align: middle"
><ArrowUp
/></el-icon>
</template>
......@@ -493,14 +570,17 @@
<div class="order-actual-payment">
<div class="order-actual-payment_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">订单号:</span>
<span class="order-list-expand_item_label"
>订单号:</span
>
<span class="order-list-expand_item_value">{{
row.orderNumber
}}</span>
<el-icon class="icon" @click="copy(row.orderNumber || '')"
<el-icon
class="icon"
@click="copy(row.orderNumber || '')"
>
<DocumentCopy
/>
<DocumentCopy />
</el-icon>
</div>
......@@ -569,7 +649,9 @@
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">收货人:</span>
<span class="order-list-expand_item_label"
>收货人:</span
>
<span
style="color: red"
class="order-list-expand_item_value"
......@@ -585,7 +667,9 @@
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">邮编:</span>
<span class="order-list-expand_item_label"
>邮编:</span
>
<span class="order-list-expand_item_value">{{
row.lanshouPost || '--'
}}</span>
......@@ -789,6 +873,16 @@
</div>
</template>
</el-dialog>
<!-- 设置备注 -->
<el-dialog v-model="dialogVisible" title="设置备注" width="30%">
<el-input v-model="inputValue" clearable placeholder="请输入备注" />
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitRemark">确认</el-button>
</span>
</template>
</el-dialog>
<ElDrawer
v-model="orderDetailDialogVisible"
title="生产订单详情"
......@@ -824,12 +918,14 @@ import {
printOrder,
exportOrder,
addInternalTagApi,
backEndCommentsApi,
loadSendOutList,
getLogList,
getOrderDetail,
cancelOrderApi,
reGenerateScriptUrlApi,
refreshProductInfo, reCreateScriptUrlApi,
refreshProductInfo,
reCreateScriptUrlApi,
} from '@/api/order'
import { showConfirm } from '@/utils/ui'
import { useValue } from '@/utils/hooks/useValue'
......@@ -860,6 +956,9 @@ const [searchForm] = useValue<SearchForm>({
const tabsNav = ref<Tab[]>([])
const splitRef = ref<InstanceType<typeof SplitDiv>>()
const btnLoading = ref<boolean>(false)
const dialogVisible = ref<boolean>(false)
const inputValue = ref<string>('')
const remarkId = ref<number>(0)
function getStartTime() {
const date = new Date()
const year = date.getFullYear()
......@@ -871,111 +970,111 @@ const pickerOptions = {
shortcuts: [
{
text: '今日',
value:() =>{
value: () => {
const start = new Date(new Date(getStartTime()).getTime())
const end = new Date()
return [start, end]
}
},
},
{
text: '昨天',
value:() =>{
value: () => {
const start = new Date()
const end = new Date(new Date(getStartTime()).getTime() - 1)
start.setTime(end.getTime() - 3600 * 1000 * 24 * 1 + 1)
return [start, end]
}
},
},
{
text: '最近7天',
value:() =>{
value: () => {
const end = new Date()
const start = new Date(getStartTime())
start.setTime(start.getTime() - 3600 * 1000 * 24 * 6)
return [start, end]
}
},
},
{
text: '最近14天',
value:() =>{
value: () => {
const end = new Date()
const start = new Date(getStartTime())
start.setTime(start.getTime() - 3600 * 1000 * 24 * 13)
return [start, end]
}
},
},
{
text: '最近30天',
value:() =>{
value: () => {
const end = new Date()
const start = new Date(getStartTime())
start.setTime(start.getTime() - 3600 * 1000 * 24 * 29)
return [start, end]
}
},
},
{
text: '本星期',
value:() =>{
value: () => {
const end = new Date()
const start = new Date()
const nowDay = new Date().getDay() - 1
start.setTime(
new Date(getStartTime()).getTime() - 3600 * 1000 * 24 * nowDay
new Date(getStartTime()).getTime() - 3600 * 1000 * 24 * nowDay,
)
return [start, end]
}
},
},
{
text: '上星期',
value:() =>{
value: () => {
const end = new Date()
const start = new Date()
const nowDay = new Date().getDay() - 1
end.setTime(
new Date(getStartTime()).getTime() - 3600 * 1000 * 24 * nowDay - 1
new Date(getStartTime()).getTime() - 3600 * 1000 * 24 * nowDay - 1,
)
start.setTime(end.getTime() - 3600 * 1000 * 24 * 7 + 1)
return [start, end]
}
},
},
{
text: '这个月',
value:() =>{
value: () => {
const end = new Date()
const start = new Date()
const nowDate = new Date().getDate() - 1
start.setTime(
new Date(getStartTime()).getTime() - 3600 * 1000 * 24 * nowDate
new Date(getStartTime()).getTime() - 3600 * 1000 * 24 * nowDate,
)
return [start, end]
}
},
},
{
text: '上个月',
value:() =>{
value: () => {
const date = new Date()
let year = date.getFullYear()
let month = date.getMonth()
const end = new Date(
new Date(`${year}-${month + 1}-1 00:00:00`).getTime() - 1
new Date(`${year}-${month + 1}-1 00:00:00`).getTime() - 1,
)
if (month === 0) {
month = 12
year = year - 1
}
const start = new Date(
new Date(`${year}-${month}-1 00:00:00`).getTime()
new Date(`${year}-${month}-1 00:00:00`).getTime(),
)
return [start, end]
}
},
},
{
text: '历史',
value:() =>{
value: () => {
return ['', '']
}
}
]
},
},
],
}
const statusCode = ref(2)
const selection = ref<OrderData[]>([])
......@@ -1025,8 +1124,18 @@ const {
...searchForm.value,
status: statusCode.value,
timeType: timeRange.value.length > 0 ? searchForm.value.timeType : null,
startTime: searchForm.value.timeType === '' ? null : timeRange.value.length > 0 ? timeRange.value[0] : null,
endTime: searchForm.value.timeType === '' ? null : timeRange.value.length > 0 ? timeRange.value[1] : null,
startTime:
searchForm.value.timeType === ''
? null
: timeRange.value.length > 0
? timeRange.value[0]
: null,
endTime:
searchForm.value.timeType === ''
? null
: timeRange.value.length > 0
? timeRange.value[1]
: null,
},
page,
pageSize,
......@@ -1107,10 +1216,34 @@ const changeTab = (item: Tab) => {
statusCode.value = item.statusCode
searchForm.value.timeType = ''
search()
nextTick(()=>{
(splitRef.value)!.domResize()
nextTick(() => {
splitRef.value!.domResize()
})
}
const handleUpdateRemark = (payload: { id: number; remark: string }) => {
dialogVisible.value = true
inputValue.value = payload.remark
remarkId.value = payload.id
}
const submitRemark = async () => {
try {
const res = await backEndCommentsApi(remarkId.value, inputValue.value)
search()
dialogVisible.value = false
inputValue.value = ''
ElMessage({
message: res.message,
type: 'success',
offset: window.innerHeight / 2,
})
} catch (e) {
ElMessage({
message: '提交失败,请重试',
type: 'error',
offset: window.innerHeight / 2,
})
dialogVisible.value = true
}
}
const copy = (text: string) => {
navigator.clipboard.writeText(text)
......@@ -1280,7 +1413,10 @@ const printManuscript = async () => {
// 导出生产单
const exportManuscript = async () => {
try {
const res = await exportOrder({ids:selection.value.map(el=>el.id),status: statusCode.value })
const res = await exportOrder({
ids: selection.value.map((el) => el.id),
status: statusCode.value,
})
window.open(filePath + res.message)
} catch (e) {
// showError(e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment