|
@@ -1,12 +1,30 @@
|
|
|
+<!-- 发货管理 -->
|
|
|
<template>
|
|
|
<div class="order">
|
|
|
- <template v-if="!previewVisible">
|
|
|
+ <template v-if="!noticeChangeVisible && !attachVisible && !arrivedVisible">
|
|
|
<el-form :inline="true" :model="dataForm" @keyup.enter.native="queryData()">
|
|
|
- <el-form-item label="订单编码">
|
|
|
+ <el-form-item label="名称" prop="productName">
|
|
|
+ <el-input v-model="dataForm.productName" placeholder="名称" clearable></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="订单编码" prop="orderCode">
|
|
|
<el-input v-model="dataForm.orderCode" placeholder="订单编码" clearable></el-input>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="生产状态" prop="state">
|
|
|
+ <el-select
|
|
|
+ v-model="dataForm.state"
|
|
|
+ remote
|
|
|
+ placeholder="请选择">
|
|
|
+ <el-option
|
|
|
+ v-for="item in optionsState"
|
|
|
+ :key="item.code"
|
|
|
+ :label="item.value"
|
|
|
+ :value="item.code">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button @click="queryData()">查询</el-button>
|
|
|
+ <el-button v-if="isAuth('order:deliver:noteChangeConfig')" type="primary" @click="setNoticeChangeHandel()">发货通知人设置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<el-table
|
|
@@ -21,6 +39,39 @@
|
|
|
width="50"
|
|
|
align="center">
|
|
|
</el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="productCode"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="140"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="产品编号">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="productName"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="140"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="产品名称">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="deliveryDate"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="交期时间">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="state"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="80"
|
|
|
+ :formatter="stateFormat"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="状态">
|
|
|
+ </el-table-column>
|
|
|
<el-table-column
|
|
|
prop="orderCode"
|
|
|
header-align="center"
|
|
@@ -30,15 +81,15 @@
|
|
|
label="订单编码">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="delivererName"
|
|
|
+ prop="customerName"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
min-width="120"
|
|
|
:show-overflow-tooltip="true"
|
|
|
- label="发货人姓名">
|
|
|
+ label="客户名称">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="deliverTime"
|
|
|
+ prop="deliveryDate"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
min-width="160"
|
|
@@ -46,31 +97,30 @@
|
|
|
label="发货时间">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="arrivedTime"
|
|
|
+ prop="arriveDate"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
min-width="160"
|
|
|
label="送达时间">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="customerFeedback"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
- min-width="180"
|
|
|
- :show-tooltip-when-overflow="true"
|
|
|
- label="客户反馈">
|
|
|
+ label="签收附件">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button :disabled="!scope.row.attachList || scope.row.attachList.length === 0" type="text" size="small" @click="attachDetails(scope.row)">查看</el-button>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="attachList"
|
|
|
+ fixed="right"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
- min-width="200"
|
|
|
- label="附件">
|
|
|
+ width="120"
|
|
|
+ label="操作">
|
|
|
<template slot-scope="scope">
|
|
|
- <div v-for="(item, index) in scope.row.attachList" style="display: inline">
|
|
|
- <span v-if="index > 0">,</span>
|
|
|
- <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
|
|
|
- </div>
|
|
|
+ <el-button v-if="isAuth('order:deliver:info')" type="text" size="small" @click="detailHandle(scope.row.deliverId)">查看</el-button>
|
|
|
+ <el-button v-if="isAuth('order:deliver:send') && Number(scope.row.state) < 3" type="text" size="small" @click="sendHandle(scope.row.deliverId)">发货</el-button>
|
|
|
+ <el-button v-if="isAuth('order:deliver:arrive') && Number(scope.row.state) === 3" type="text" size="small" @click="arriveHandle(scope.row.deliverId)">送达</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -87,35 +137,72 @@
|
|
|
<!-- <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>-->
|
|
|
<!-- <detail v-if="detailVisible" ref="detail"/>-->
|
|
|
<!-- 文件预览 -->
|
|
|
- <preview-component v-if="previewVisible" ref="preview" @onChose="onChose"/>
|
|
|
+ <attach-detail v-if="attachVisible" ref="attachDetail" @onChose="onChose"/>
|
|
|
+ <!-- 发货通知设置弹窗 -->
|
|
|
+ <notice-change-setting v-if="noticeChangeVisible" ref="noticeChangeSetting" @onChose="onChose"/>
|
|
|
+ <!--送达弹窗 -->
|
|
|
+ <dispatch-arrived v-if="arrivedVisible" ref="arrivedPage" @onChose="onChose" @refreshDataList="getDataList"/>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import { getDispatchList } from '@/api/sale'
|
|
|
import PreviewComponent from '../common/preview-component'
|
|
|
+import AttachDetail from '../common/attach-detail'
|
|
|
+import NoticeChangeSetting from './dispatch-notice-change-setting'
|
|
|
+import DispatchArrived from './dispatch-arrived'
|
|
|
export default {
|
|
|
// 发货管理
|
|
|
name: 'dispatch',
|
|
|
- components: {PreviewComponent},
|
|
|
+ components: {
|
|
|
+ AttachDetail,
|
|
|
+ PreviewComponent,
|
|
|
+ NoticeChangeSetting,
|
|
|
+ DispatchArrived
|
|
|
+ },
|
|
|
created () {
|
|
|
this.queryData()
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
|
- previewVisible: false,
|
|
|
dataForm: {},
|
|
|
dataList: [],
|
|
|
pageIndex: 1,
|
|
|
pageSize: 10,
|
|
|
totalPage: 0,
|
|
|
dataListLoading: false,
|
|
|
- dataListSelections: []
|
|
|
+ dataListSelections: [],
|
|
|
+ attachVisible: false,
|
|
|
+ noticeChangeVisible: false,
|
|
|
+ arrivedVisible: false,
|
|
|
+ optionsState: [
|
|
|
+ {
|
|
|
+ code: null, value: '全部'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: '0', value: '待排产'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: '1', value: '生产中'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: '2', value: '已完成'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: '3', value: '发货中'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: '4', value: '已送达'
|
|
|
+ }
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
onChose () {
|
|
|
- this.previewVisible = false
|
|
|
+ this.attachVisible = false
|
|
|
+ this.noticeChangeVisible = false
|
|
|
+ this.arrivedVisible = false
|
|
|
},
|
|
|
// 查询
|
|
|
queryData () {
|
|
@@ -128,7 +215,9 @@ export default {
|
|
|
let params = {
|
|
|
'current': this.pageIndex,
|
|
|
'size': this.pageSize,
|
|
|
- 'orderCode': this.dataForm.orderCode ? this.dataForm.orderCode : null
|
|
|
+ 'productName': this.dataForm.productName ? this.dataForm.productName : null,
|
|
|
+ 'orderCode': this.dataForm.orderCode ? this.dataForm.orderCode : null,
|
|
|
+ 'state': this.dataForm.state ? this.dataForm.state : null
|
|
|
}
|
|
|
getDispatchList(params).then(({data}) => {
|
|
|
if (data && data.code === '200') {
|
|
@@ -152,16 +241,67 @@ export default {
|
|
|
this.pageIndex = val
|
|
|
this.getDataList()
|
|
|
},
|
|
|
- // 多选
|
|
|
+ // 多选
|
|
|
selectionChangeHandle (val) {
|
|
|
this.dataListSelections = val
|
|
|
},
|
|
|
- // 预览
|
|
|
- previewFile (fileName, url) {
|
|
|
- this.previewVisible = true
|
|
|
+ // 发货通知人设置
|
|
|
+ setNoticeChangeHandel () {
|
|
|
+ this.noticeChangeVisible = true
|
|
|
this.$nextTick(() => {
|
|
|
- this.$refs.preview.init(fileName, url)
|
|
|
+ this.$refs.noticeChangeSetting.init()
|
|
|
})
|
|
|
+ },
|
|
|
+ // 附件
|
|
|
+ attachDetails (row) {
|
|
|
+ this.attachVisible = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.attachDetail.init(row.attachList)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 送达
|
|
|
+ arriveHandle (deliverId) {
|
|
|
+ this.arrivedVisible = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.arrivedPage.init(deliverId)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 发货
|
|
|
+ sendHandle (deliverId) {
|
|
|
+ this.$confirm(`确定发货`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ this.$http({
|
|
|
+ url: this.$http.adornUrl('/biz-service/deliver/deliver'),
|
|
|
+ method: 'post',
|
|
|
+ data: this.$http.adornData({deliverId: deliverId}, false)
|
|
|
+ }).then(({data}) => {
|
|
|
+ if (data && data.code === '200') {
|
|
|
+ this.$message({
|
|
|
+ message: '操作成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ onClose: () => {
|
|
|
+ this.getDataList()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error(data.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }).catch(() => {})
|
|
|
+ },
|
|
|
+ // 转换属性“状态”
|
|
|
+ stateFormat (row) {
|
|
|
+ if (this.optionsState) {
|
|
|
+ for (let i = 0; i < this.optionsState.length; i++) {
|
|
|
+ if (this.optionsState[i].code === row.state) {
|
|
|
+ return this.optionsState[i].value
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|