Commit c0213666 authored by Smile's avatar Smile

需求 127后台-集运-包裹列表

parent cc28e43b
...@@ -7,6 +7,13 @@ export function getMyProcessInstancePage(query) { ...@@ -7,6 +7,13 @@ export function getMyProcessInstancePage(query) {
params: query params: query
}) })
} }
export function getProcessInstancePage(query) {
return request({
url: '/bpm/process-instance/page',
method: 'get',
params: query
})
}
export function createProcessInstance(data) { export function createProcessInstance(data) {
return request({ return request({
......
...@@ -57,15 +57,92 @@ ...@@ -57,15 +57,92 @@
@showWarehouseLogs="showWarehouseLogs" @showWarehouseLogs="showWarehouseLogs"
></detail-cons-prod> ></detail-cons-prod>
</el-tab-pane> </el-tab-pane>
<!-- <el-tab-pane :label="$t('订单动态')" name="second">--> <el-tab-pane :label="$t('动态')" name="second">
<!-- <el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true">--> <el-timeline v-if="cons.trackingRecord && cons.trackingRecord.length" :reverse="true">
<!-- <el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="parseTime(activity.businessTime)">--> <el-timeline-item v-for="(activity, index) in cons.trackingRecord" :key="index" :color="activity.color" v-show="activity.isShow!==1" :timestamp="parseTime(activity.trackingTime)">
<!-- {{ $l(activity, "title") }}--> <dict-tag :type="DICT_TYPE.CONS_BUSINESS_NODE" :value="$l(activity, 'businessNode')" /><el-button v-if="activity.businessNode===1" @click="showSignImage" style="margin-left: 5px" size="small" type="primary">签收图片</el-button>
<!-- <div :class="{ red: !!activity.mark }">{{ $l(activity, "remarks") }}</div>--> <div :class="{ red: !!activity.businessDescription }">{{ $l(activity, "businessDescription") }}</div>
<!-- </el-timeline-item>--> </el-timeline-item>
<!-- </el-timeline>--> </el-timeline>
<!-- <el-result v-else icon="info " :title="$t('暂无数据')" :subTitle="$t('暂无订单动态数据')" />--> <el-result v-else icon="info " :title="$t('暂无数据')" :subTitle="$t('暂无订单动态数据')" />
<!-- </el-tab-pane>--> </el-tab-pane>
<el-tab-pane :label="$t('费用明细')" name="three">
<el-table :data="cons.feeList">
<el-table-column :label="$t('费用类型')">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="row.feeType" />
</template>
</el-table-column>
<el-table-column :label="$t('金额')">
<template slot-scope="{ row }">
{{ row.fee }}
</template>
</el-table-column>
<el-table-column :label="$t('货币类型')">
<template slot-scope="{ row }">
{{ currencyMap[row.feeCurrency] }}
</template>
</el-table-column>
<el-table-column :label="$t('付款类型')">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.PAYMENT_TYPE" :value="row.payType" />
</template>
</el-table-column>
<el-table-column :label="$t('备注')">
<template slot-scope="{ row }">
{{ row.remarks }}
</template>
</el-table-column>
<el-table-column :label="$t('转运订单号')">
<template slot-scope="scope">
<a href="javascript:void(0);" @click="jumpOrderDetail()">{{ cons.orderNo }}</a>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane :label="$t('日志')" name="four">
</el-tab-pane>
<el-tab-pane :label="$t('审批列表')" name="five">
<el-table :data="taskList">
<el-table-column :label="$t('流程编号')" align="center" prop="id" width="320"/>
<el-table-column :label="$t('流程名称')" align="center" prop="name"/>
<el-table-column :label="$t('业务编号')" align="center" prop="businessNo"/>
<el-table-column :label="$t('流程分类')" align="center" prop="category">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category"/>
</template>
</el-table-column>
<el-table-column :label="$t('当前审批节点')" align="center" prop="tasks">
<template slot-scope="scope">
<el-button v-for="(task, taskIndex) in scope.row.tasks" type="text" @click="handleFormDetail(task.id)"
:key="taskIndex">
<span>{{ task.name }}</span>
</el-button>
</template>
</el-table-column>
<el-table-column :label="$t('状态')" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column :label="$t('结果')" align="center" prop="result">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
</template>
</el-table-column>
<el-table-column :label="$t('提交时间')" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('结束时间')" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endTime) }}</span>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<!-- <el-tab-pane :label="$t('操作日志')" name="five" v-if="checkPermi(['ecw:order:logs'])">--> <!-- <el-tab-pane :label="$t('操作日志')" name="five" v-if="checkPermi(['ecw:order:logs'])">-->
<!-- <el-table :data="logs" v-loading="logsLoading">--> <!-- <el-table :data="logs" v-loading="logsLoading">-->
<!-- <el-table-column :label="$t('时间')" width="150">--> <!-- <el-table-column :label="$t('时间')" width="150">-->
...@@ -103,31 +180,46 @@ ...@@ -103,31 +180,46 @@
<!-- </el-tab-pane>--> <!-- </el-tab-pane>-->
</el-tabs> </el-tabs>
</el-card> </el-card>
<pack-detail ></pack-detail> <el-dialog :title="$t('签收图片')" :visible.sync="mvShow" :before-close="closeMv" :close-on-click-modal="false">
<image-and-video-upload readonly :fileSize="50" :isShowTip="true" :value="cons.mediaUrl" ></image-and-video-upload>
</el-dialog>
<!-- <pack-detail ></pack-detail>-->
</div> </div>
</template> </template>
<script> <script>
import {getCons} from "@/api/ecw/cons"; import {getCons} from "@/api/ecw/cons";
import { getDictDatas, DICT_TYPE, getDictData } from "@/utils/dict" import { getDictDatas, DICT_TYPE, getDictData } from "@/utils/dict"
import CheckDetailProd from "@/views/ecw/order/components/CheckDetailProd.vue";
import DetailConsProd from "@/views/ecw/cons/DetailConsProd.vue"; import DetailConsProd from "@/views/ecw/cons/DetailConsProd.vue";
import PackHistory from "@/views/ecw/order/components/PackHistory.vue"; import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue";
import PackDetail from "@/views/ecw/cons/PackDetail.vue"; import Template from "@/views/cms/template/index.vue";
import {getCurrencyList} from "@/api/ecw/currency";
import {getCopyTaskPage} from "@/api/bpm/task";
import {getProcessInstancePage} from "@/api/bpm/processInstance";
export default { export default {
name: "EcwConsDetail", name: "EcwConsDetail",
props: {}, props: {},
components: {PackDetail, PackHistory, DetailConsProd,CheckDetailProd}, components: {Template, ImageAndVideoUpload, DetailConsProd},
data() { data() {
return { return {
cons:null, cons:null,
type: 1, type: 1,
activeName: "first", activeName: "first",
mvShow:false,
taskList: [],
taskTotal: 0,
} }
}, },
watch: {}, watch: {},
computed: { computed: {
currencyMap() {
let map = {}
this.currencyList.forEach((item) => {
map[item.id] = this.$l(item, "title")
})
return map
},
getDictData() { getDictData() {
return (type, value) => getDictData(type, value) || {} return (type, value) => getDictData(type, value) || {}
}, },
...@@ -136,12 +228,20 @@ export default { ...@@ -136,12 +228,20 @@ export default {
} }
}, },
created() { created() {
getCurrencyList().then((res) => (this.currencyList = res.data))
if (this.$route.query.consId) { if (this.$route.query.consId) {
this.consId = this.$route.query.consId this.consId = this.$route.query.consId
this.getCons() this.getCons()
} }
}, },
methods: { methods: {
/* 跳转订单详情 */
jumpOrderDetail() {
this.$router.push({
path: "/order/detail",
query: { orderId: this.cons.orderId },
});
},
// 显示入仓记录 // 显示入仓记录
showWarehouseLogs(row, type) { showWarehouseLogs(row, type) {
this.type = type this.type = type
...@@ -150,9 +250,25 @@ export default { ...@@ -150,9 +250,25 @@ export default {
getCons() { getCons() {
getCons(this.consId).then(res => { getCons(this.consId).then(res => {
this.cons = res.data this.cons = res.data
console.log(this.cons) if (this.cons.trackingRecord && this.cons.trackingRecord.length){
this.cons.trackingRecord[this.cons.trackingRecord.length-1].color='#0bbd87';
}
this.getTaskList();
}) })
}, },
getTaskList(){
getProcessInstancePage({businessNo: this.cons.consNum}).then(response => {
this.taskList = response.data.list;
this.taskTotal = response.data.total;
this.loading = false;
});
},
closeMv(){
this.mvShow = false
},
showSignImage(){
this.mvShow = true
}
} }
} }
</script> </script>
......
...@@ -136,20 +136,27 @@ ...@@ -136,20 +136,27 @@
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportId"/> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportId"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('在仓时长')" align="center" prop="inWarehouseDays"></el-table-column>
<el-table-column :label="$t('动态')" align="center"> <el-table-column :label="$t('动态')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CONS_BUSINESS_NODE" :value="scope.row.businessNode"/> <dict-tag :type="DICT_TYPE.CONS_BUSINESS_NODE" :value="scope.row.businessNode"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进状态')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_CONS_FOLLOWUP_STATUS" :value="scope.row.followStatus"/>
</template>
</el-table-column>
<el-table-column label="最新跟进时间" align="center"> <el-table-column label="最新跟进时间" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.trackingTime) }}</span> <span>{{ parseTime(scope.row.followTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="最新跟进备注" align="center" prop="followContent"/>
<el-table-column label="箱数" align="center" prop="sumQuantity"/> <el-table-column label="箱数" align="center" prop="sumQuantity"/>
<el-table-column label="填单商品" align="center"> <el-table-column label="填单商品" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-html="getGoodsName(scope.row.consItemList)"></span> <span v-html="getGoodsName(scope.row.consItemVOList)"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="验货数据" align="center"> <el-table-column label="验货数据" align="center">
...@@ -193,7 +200,7 @@ ...@@ -193,7 +200,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('验货')" align="center"> <el-table-column :label="$t('验货')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="scope.row.needInspect==='0'"> <template v-if="scope.row.needInspect==='0'||scope.row.needInspect===null">
{{ $t('未申请') }} {{ $t('未申请') }}
</template> </template>
<template v-else> <template v-else>
...@@ -233,58 +240,66 @@ ...@@ -233,58 +240,66 @@
<el-dropdown> <el-dropdown>
<el-button type="text">{{ $t("操作") }}</el-button> <el-button type="text">{{ $t("操作") }}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="handleUpdate(scope.row)">修改 <el-dropdown-item @click.native="handleUpdate(scope.row)">修改
</el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="handleSign(scope.row)">签收
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-delete" @click.native="handleDelete(scope.row)" <el-dropdown-item size="mini" type="text" icon="el-icon-delete" @click.native="handleDelete(scope.row)"
v-hasPermi="['ecw:cons:delete']">删除 v-hasPermi="['ecw:cons:delete']">删除
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="transmutation(scope.row)">{{ $t('转异') }} <el-dropdown-item @click.native="handleInspect(scope.row)">
{{ $t('验货') }}
</el-dropdown-item>
<el-dropdown-item @click.native="transmutation(scope.row)">{{ $t('转异') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="specialNeedsCons(scope.row)">{{ $t('特需') }} <el-dropdown-item @click.native="specialNeedsCons(scope.row)">{{ $t('特需') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="specialNeedsConsLook(scope.row)"> <el-dropdown-item @click.native="specialNeedsConsLook(scope.row)">
{{ $t('特需查看') }} {{ $t('特需查看') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="feeApplication(scope.row)"> <el-dropdown-item @click.native="feeApplication(scope.row)">
{{ $t('费用申请') }} {{ $t('费用申请') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="consFollowup(scope.row)">{{ $t('跟进') }} <el-dropdown-item @click.native="consFollowup(scope.row)">{{ $t('跟进') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" @click.native="exceptionHandling(scope.row)">{{$t('处理异常')}}</el-dropdown-item> <el-dropdown-item @click.native="exceptionHandling(scope.row)">{{$t('处理异常')}}</el-dropdown-item>
<!-- 退仓 --> <el-dropdown-item
<el-dropdown-item size="mini" type="text" icon="el-icon-edit"
@click.native=" @click.native="
show = true showExit = true
consId = scope.row.id consId = scope.row.id
" "
v-hasPermi="['ecw:order:warehouse_exit']" v-hasPermi="['ecw:order:warehouse_exit']"
>{{ $t("退仓") }} >{{ $t("撤出包裹") }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" <el-dropdown-item
@click.native=" @click.native="
showReturnWarehouse = true showAdd = true
consId = scope.row.id consId = scope.row.id
" "
v-hasPermi="['ecw:order:warehouse_exit']" v-hasPermi="['ecw:order:warehouse_exit']"
>{{ $t("处理退仓") }} >{{ $t("追加包裹") }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" </el-dropdown-menu>
@click.native=" </el-dropdown>
showExit = true <el-dropdown>
<el-button type="text">{{ $t("仓库") }}</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="handleSign(scope.row)">签收
</el-dropdown-item>
<!-- 退仓 -->
<el-dropdown-item
@click.native="
show = true
consId = scope.row.id consId = scope.row.id
" "
v-hasPermi="['ecw:order:warehouse_exit']" v-hasPermi="['ecw:order:warehouse_exit']"
>{{ $t("撤出包裹") }} >{{ $t("退仓") }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item size="mini" type="text" icon="el-icon-edit" <el-dropdown-item
@click.native=" @click.native="
showAdd = true showReturnWarehouse = true
consId = scope.row.id consId = scope.row.id
" "
v-hasPermi="['ecw:order:warehouse_exit']" v-hasPermi="['ecw:order:warehouse_exit']"
>{{ $t("追加包裹") }} >{{ $t("处理退仓") }}
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
...@@ -295,8 +310,13 @@ ...@@ -295,8 +310,13 @@
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.row" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.row"
@pagination="getList"/> @pagination="getList"/>
<el-dialog :title="inspectTitle" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="inspectTitle" :visible.sync="openInspect" width="500px" append-to-body>
<div style="margin-bottom: 5px">{{ $t('备注:') }}</div>
<el-input v-model="this.inspectRemark" type="textarea" :rows="3" placeholder="请输入"/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleInspectSubmit">确 定</el-button>
<el-button @click="openInspect = false">取 消</el-button>
</div>
</el-dialog> </el-dialog>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
...@@ -417,10 +437,12 @@ import ConsWithdrawalDeal from "@/views/ecw/cons/consWithdrawalDeal.vue"; ...@@ -417,10 +437,12 @@ import ConsWithdrawalDeal from "@/views/ecw/cons/consWithdrawalDeal.vue";
import {DICT_TYPE} from "@/utils/dict"; import {DICT_TYPE} from "@/utils/dict";
import {arrryToKeyedObjectBy} from "@/utils"; import {arrryToKeyedObjectBy} from "@/utils";
import Selector from "@/components/Selector/index.vue"; import Selector from "@/components/Selector/index.vue";
import Label from "@/views/cms/label/index.vue";
export default { export default {
name: "Cons", name: "Cons",
components: { components: {
Label,
Selector, Selector,
ConsWithdrawal, ConsWithdrawal,
ConsWithdrawalExit, ConsWithdrawalExit,
...@@ -468,6 +490,8 @@ export default { ...@@ -468,6 +490,8 @@ export default {
}, },
consIds: [], consIds: [],
inspectTitle:null, inspectTitle:null,
inspectRemark:null,
openInspect:false,
consList: [], consList: [],
dateRangeWatEtime: [], dateRangeWatEtime: [],
warehouseList: [], warehouseList: [],
...@@ -600,7 +624,7 @@ export default { ...@@ -600,7 +624,7 @@ export default {
obj[field] = obj[field].replace(/\s+/g, "") obj[field] = obj[field].replace(/\s+/g, "")
}, },
getGoodsName(val) { getGoodsName(val) {
if (!val || val.length === 0) { if (val==null || val.length === 0) {
return null return null
} else { } else {
return val.map((item, index) => `${index + 1}.${item.prodName}*${item.quantity}`).join('<br>'); return val.map((item, index) => `${index + 1}.${item.prodName}*${item.quantity}`).join('<br>');
...@@ -787,6 +811,12 @@ export default { ...@@ -787,6 +811,12 @@ export default {
} }
}); });
}, },
/** 修改按钮操作 */
handleInspect(row) {
const id = row.id;
this.inspectTitle=row.consNum+"-"+row.customerNumber+"-"+this.$t("包裹详情")
this.openInspect=true
},
/** 签收按钮操作 */ /** 签收按钮操作 */
handleSign(row) { handleSign(row) {
debugger debugger
......
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