Commit 83f7efc1 authored by 邓春圆's avatar 邓春圆

Merge remote-tracking branch 'origin/dev' into dev

parents 418e9c05 bb97a3d1
......@@ -999,3 +999,11 @@ export function exportOrderSummaryByContainerNumber(params){
responseType: 'blob'
})
}
// 查询权限范围内待出订单数量
export function getWaitingShipmentCount(){
return request({
url: '/air/order/data/scope/waiting/shipment/count',
method: 'get'
})
}
......@@ -10,20 +10,32 @@ export default {
title: {
type: String,
default: ''
}
},
badge: Number
},
render(h, context) {
const { icon, title } = context.props
const { icon, title, badge } = context.props
const vnodes = []
if (icon) {
vnodes.push(<svg-icon icon-class={icon}/>)
vnodes.push(<svg-icon icon-class={icon} test="1"/>)
}
if (title) {
vnodes.push(<span slot='title'>{(title)}</span>)
vnodes.push(<span><span>{(title)}</span><span class="badge">{badge}</span></span>)
}
return vnodes
}
}
</script>
<style lang="scss" scoped>
.badge:not(:empty){
background: red;
color: #fff;
padding: 2px 8px;
font-size: 12px;
border-radius: 10px;
margin-left: 5px;
}
</style>
......@@ -3,14 +3,14 @@
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="$l(onlyOneChild.meta, 'title')" />
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="$l(onlyOneChild.meta, 'title')" :badge="badge" />
</el-menu-item>
</app-link>
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<template slot="title">
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="$l(item.meta, 'title')" />
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="$l(item.meta, 'title')" :badge="badge" />
</template>
<sidebar-item
v-for="child in item.children"
......@@ -54,6 +54,11 @@ export default {
this.onlyOneChild = null
return {}
},
computed:{
badge(){
return this.$store.getters.badgeData[this.item.meta.badgeField]
}
},
methods: {
hasOneShowingChild(children = [], parent) {
if (!children) {
......
......@@ -28,6 +28,7 @@ import { mapGetters, mapState } from "vuex";
import Logo from "./Logo";
import SidebarItem from "./SidebarItem";
import variables from "@/assets/styles/variables.scss";
import {getWaitingShipmentCount} from "@/api/ecw/order";
export default {
components: { SidebarItem, Logo },
......@@ -52,6 +53,13 @@ export default {
isCollapse() {
return !this.sidebar.opened;
}
},
created() {
// 查询待出订单数量 waitingShipment
getWaitingShipmentCount().then(res => {
console.log('getWaitingShipmentCount', res.data)
this.$store.commit('SET_BADGE_DATA', { waitingShipment: res.data}, )
})
}
};
</script>
......@@ -17,6 +17,8 @@ const getters = {
defaultRoutes:state => state.permission.defaultRoutes,
sidebarRouters:state => state.permission.sidebarRouters,
// 数据字典
dict_datas: state => state.dict.dictDatas
dict_datas: state => state.dict.dictDatas,
// 角标数据
badgeData: state => state.user.badgeData
}
export default getters
......@@ -56,7 +56,8 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
titleEn: route.nameEn,
icon: route.icon,
noCache: !route.keepalive, // 不缓存,如果需要缓存则需要组件名称能对应上
componentPath: route.component
componentPath: route.component,
badgeField: route.badgeField
}
route.hidden = typeof route.isShowInMenuBar != 'undefined' && (route.isShowInMenuBar == 'false' || !route.isShowInMenuBar)
// 处理 component 属性
......
......@@ -13,7 +13,11 @@ const user = {
permissions: [],
notMessage:0,
matterNum:0,
download: 0
download: 0,
badgeData:{
// 待出订单数量
waitingShipment: 0
}
},
mutations: {
......@@ -43,6 +47,9 @@ const user = {
},
SET_DOWNLOAD(state, cnt){
state.download = cnt;
},
SET_BADGE_DATA(state, data){
state.badgeData = Object.assign({}, state.badgeData, data)
}
},
......
......@@ -3,12 +3,16 @@
<div class="message-title">{{$t(`您确定撤销${cancelClearInfo.orderNo}已清关状态吗?`)}}</div>
<el-form ref="arrivalForm" :rules="rules" :model="cusClearanceObj" label-width="120px">
<el-form-item :label="$t('撤销理由')" prop="clEstTime">
<el-input v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input>
<el-input v-if="flag" v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input>
<template v-else>
{{apply.applyReason}}
</template>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit">{{$t('确定')}}</el-button>
<el-button v-if="flag" type="primary" @click="onSubmit">{{$t('确定')}}</el-button>
<el-button v-if="!flag" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: apply.bpmProcessId}})">{{$t('审核中')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</el-row>
</div>
......@@ -34,9 +38,19 @@ export default {
applyReason: [
{ required: true, message: this.$t("必填"), trigger: "change" },
]
}
},
apply: {},
flag: true
};
},
created() {
let orders = this.shipmentObj.clearanceInfo?.clearanceOrderBackList
let order = orders.find(item=>item.orderId == this.cancelClearInfo.orderId)
if(order){
this.apply = order
this.flag = false
}
},
methods: {
onSubmit() {
this.$refs["arrivalForm"].validate((valid) => {
......
......@@ -19,6 +19,10 @@
{{$t('过机重量异常')}}: {{$t('过机放行-已找到重货订单')}}:<span v-for="order in strToArray(pageData.boxCustomsBackVO.overOrders)" :key="order">{{ getOrders(order) }}</span>
</p>
</el-row>
<el-row class="number-area">
<p class="label-font"><span style="color:red">*</span>{{$t('到仓时间')}}</p>
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="ulWarehouseTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-row>
<el-row class="number-area">
<p class="label-font">{{$t('自编号')}}</p>
<p class="label-font">{{selfNo}}</p>
......@@ -127,12 +131,12 @@
<!-- 操作 -->
<div v-if="!isUnderReview">
<el-button type="success" @click="onSubmit">{{$t('提交完成到仓审核')}}</el-button>
<el-button plain type="primary" @click="$emit('closeStart')">{{$t('返回')}}</el-button>
<el-button plain type="primary" @click="$emit('closeDialog')">{{$t('返回')}}</el-button>
</div>
<div v-if="isUnderReview">
<el-button type="primary" @click="jumpReviewDetail">{{$t('到仓审核中')}}</el-button>
<el-button plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
<el-button plain type="primary" @click="$emit('closeStart')">{{$t('返回')}}</el-button>
<el-button plain type="primary" @click="$emit('closeDialog')">{{$t('返回')}}</el-button>
</div>
</el-row>
......@@ -193,7 +197,8 @@ export default {
totalStatistics: {},
},
selectedUsers: [],
sectionOrderList: []
sectionOrderList: [],
ulWarehouseTime: null
};
},
created() {
......@@ -265,9 +270,14 @@ export default {
this.$message.error(this.$t("请输入订单号"));
return;
}
if (!this.ulWarehouseTime) {
this.$message.error(this.$t("请选择到仓时间"));
return;
}
batchUnload({
orderNo: this.labelNo,
shipmentId: this.$attrs.shipmentObj.id,
unloadTime: this.ulWarehouseTime
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.labelNo = "";
......@@ -277,11 +287,15 @@ export default {
},
/* 一键卸柜 */
modifyAllUnload() {
if (!this.ulWarehouseTime) {
this.$message.error(this.$t("请选择到仓时间"));
return;
}
this.$confirm(this.$t("确认到仓?"), this.$t("提示"), {
type: "warning",
})
.then((_) => {
allUnload({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
allUnload({ shipmentId: this.$attrs.shipmentObj.id, unloadTime: this.ulWarehouseTime }).then((res) => {
serviceMsg(res, this).then((res) => {
this.getLoadGoodsList();
});
......
......@@ -42,7 +42,7 @@ import arrivalWidget from "./nodePage/arrival.vue";
import cusClearanceWidget from "./nodePage/cusClearance.vue";
import twoWayTakeoffWidget from "./nodePage/twoWayTakeoff.vue";
import twoWayArrivalWidget from "./nodePage/twoWayArrival.vue";
import unloadingWidget from "./nodePage/unloading/index.vue";
import unloadingWidget from "./nodePage/unloading/startUnloading.vue";
import settlementWidget from "./nodePage/settlement.vue";
import reviewWidget from "./nodePage/review.vue";
import shipmentWidget from "./nodePage/shipment.vue";
......@@ -216,6 +216,7 @@ export default {
break;
// 卸柜
case "unloading":
this.$set(this.dialogConfig, "fullscreen", true);
// 卸柜反审
const unStatus = this.shipmentObj[node.keyName];
if ([186].includes(unStatus)) {
......
......@@ -157,6 +157,11 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$t('特性')" align="center" prop="attrNameList" width="120">
<template slot-scope="scope">
{{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
</template>
</el-table-column>
<el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100">
<template slot-scope="{row}">
<template v-if="row.brandName">{{row.brandName}}</template>
......@@ -274,6 +279,11 @@
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="scope.row.material" />
</template>
</el-table-column>
<el-table-column :label="$t('特性')" align="center" prop="warehouseInAttrNameList" width="120">
<template slot-scope="scope">
{{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
</template>
</el-table-column>
<!-- <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-dropdown trigger="click" @command="(command)=>handleGoods('single',scope.row,command)">
......
......@@ -261,7 +261,7 @@
<el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true">
<el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="parseTime(activity.businessTime)">
{{ $l(activity, 'title') }}
<div>{{$l(activity, 'remarks')}}</div>
<div :class="{red: !!activity.mark}">{{$l(activity, 'remarks')}}</div>
</el-timeline-item>
</el-timeline>
<el-result v-else icon="info " :title="$t('暂无数据')" :subTitle="$t('暂无订单动态数据')" />
......@@ -794,6 +794,9 @@ export default {
</script>
<style scoped>
.red{
color: red;
}
.card {
margin-bottom: 20px;
}
......
......@@ -490,6 +490,14 @@
/>
</el-select>
</el-form-item>
<div>
<el-form-item :label="$t('提单是否显示价格')" prop="displayBillLadingPrice">
<el-radio-group v-model="form.displayBillLadingPrice">
<el-radio :label="true">{{$t('显示')}}</el-radio>
<el-radio :label="false">{{$t('不显示')}}</el-radio>
</el-radio-group>
</el-form-item>
</div>
</el-card>
<el-card class="mt-10" v-if="transport">
......
......@@ -124,6 +124,13 @@
<el-form-item :label="$t('出货渠道')" prop="channelId" v-if="channelList.length">
<selector :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector>
</el-form-item>
<el-form-item :label="$t('特需')" prop="packageType">
<el-select v-model="queryParams.packageTypeArr" multiple :placeholder="$t('请选择')" clearable >
<template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
<el-option :label="$l(item, 'label')" :value="item.value"></el-option>
</template>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery" :loading="loading">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
......@@ -561,6 +568,7 @@ import { getCurrencyPage } from "@/api/ecw/currency";
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
import {getChannelList} from "@/api/ecw/channel";
import Template from "@/views/cms/template/index.vue";
import {getDictDatas} from "@/utils/dict";
export default {
name: "EcwOrderIndex",
components: {
......@@ -602,7 +610,8 @@ export default {
// 查询参数
queryParams: {
page: 1,
rows: 10
rows: 10,
packageTypeArr: []
},
warehouseList:[],
// tradeCityList: [],
......@@ -734,6 +743,7 @@ export default {
}
},
methods: {
getDictDatas,
// 取消拆单申请
splitRevoke(row){
......@@ -844,6 +854,10 @@ export default {
getList() {
this.loading = true;
console.log('this.combinedQueryParams', this.combinedQueryParams)
const query = {...this.combinedQueryParams}
if(query.packageTypeArr && query.packageTypeArr.length){
query.packageType = query.packageTypeArr.join(',')
}
let func = getOrderPage
if(this.mine){
func = getMyOrderPage
......@@ -856,7 +870,7 @@ export default {
func = deptOrderPage
}
// 执行查询
func(this.combinedQueryParams).then(response => {
func(query).then(response => {
// 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
this.list = []
this.$nextTick(() => {
......@@ -890,7 +904,8 @@ export default {
resetQuery() {
this.queryParams = {
page: 1,
rows: 10
rows: 10,
packageTypeArr: []
}
this.noParam.value = ''
this.prodParam.value = ''
......
......@@ -148,6 +148,11 @@
<el-input v-model="form.redirect" :placeholder="$t('请输入重定向地址')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('角标字段')" prop="redirect">
<el-input v-model="form.badgeField" :placeholder="$t('不清楚请留空,已设勿改')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
......
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