Commit ed168d68 authored by dragondean@qq.com's avatar dragondean@qq.com

解决订单列表页冲突

parents e39f0ed1 04e0d9f9
...@@ -355,14 +355,14 @@ export function abnormalCreate(data) { ...@@ -355,14 +355,14 @@ export function abnormalCreate(data) {
* 获得已预装部分列表 * 获得已预装部分列表
* *
* @export * @export
* @param {*} params * @param {*} data
* @return {*} * @return {*}
*/ */
export function secGoodsList(params) { export function secGoodsList(data) {
return request({ return request({
url: "/ecw/box-preload-goods/secGoodsList", url: "/ecw/box-preload-goods/secGoodsList",
method: "get", method: "post",
params, data,
}); });
} }
...@@ -370,14 +370,14 @@ export function secGoodsList(params) { ...@@ -370,14 +370,14 @@ export function secGoodsList(params) {
* 获得预装分页 * 获得预装分页
* *
* @export * @export
* @param {*} params * @param {*} data
* @return {*} * @return {*}
*/ */
export function preloadPage(params) { export function preloadPage(data) {
return request({ return request({
url: "/ecw/box-preload-goods/preloadPage", url: "/ecw/box-preload-goods/preloadPage",
method: "get", method: "post",
params, data,
}); });
} }
...@@ -396,6 +396,37 @@ export function createSection(data) { ...@@ -396,6 +396,37 @@ export function createSection(data) {
}); });
} }
/**
* 查询出货单下的所有部分列表
*
* @export
* @param {*} data
* @return {*}
*/
export function getSectionList(params) {
return request({
url: "/ecw/box-preload-section/list",
method: "get",
params,
});
}
/**
* 装柜订单明细
*
* @export
* @param {*} data
* @return {*}
*/
export function boxGoodsDetail(data) {
return request({
url: "/ecw/box-preload-goods/boxGoodsDetail",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
});
}
/** /**
* 删除预装部分 * 删除预装部分
* *
......
...@@ -50,6 +50,15 @@ export function getDeptTargetPage(query) { ...@@ -50,6 +50,15 @@ export function getDeptTargetPage(query) {
}) })
} }
// 获得个人目标进度分页
export function getPersonTargetPage(query) {
return request({
url: '/sale/dept-target/personal/page',
method: 'get',
params: query
})
}
// 导出部门业绩目标设置 Excel // 导出部门业绩目标设置 Excel
export function exportDeptTargetExcel(query) { export function exportDeptTargetExcel(query) {
return request({ return request({
......
...@@ -279,6 +279,13 @@ export function feeApplicationGet(params){ ...@@ -279,6 +279,13 @@ export function feeApplicationGet(params){
params params
}) })
} }
export function getAdjustInfo(params){
return request({
url:'/order/order-warehouse-in/get-adjust-info',
method:'get',
params,
})
}
export function warehouseAdjustArrived(data){ export function warehouseAdjustArrived(data){
return request({ return request({
url:'/order/order-warehouse-in/warehouse-adjust-arrived', url:'/order/order-warehouse-in/warehouse-adjust-arrived',
......
import request from '@/utils/request'
// 创建需知
export function createNeedKnow(data) {
return request({
url: '/system/need-know/create',
method: 'post',
data: data
})
}
// 更新需知
export function updateNeedKnow(data) {
return request({
url: '/system/need-know/update',
method: 'put',
data: data
})
}
// 删除需知
export function deleteNeedKnow(id) {
return request({
url: '/system/need-know/delete?id=' + id,
method: 'delete'
})
}
// 获得需知
export function getNeedKnow(id) {
return request({
url: '/system/need-know/get?id=' + id,
method: 'get'
})
}
// 获得需知分页
export function getNeedKnowPage(query) {
return request({
url: '/system/need-know/page',
method: 'get',
params: query
})
}
// 导出需知 Excel
export function exportNeedKnowExcel(query) {
return request({
url: '/system/need-know/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -4,36 +4,38 @@ ...@@ -4,36 +4,38 @@
<el-descriptions-item label="唛头">{{ order.marks }}</el-descriptions-item> <el-descriptions-item label="唛头">{{ order.marks }}</el-descriptions-item>
<el-descriptions-item label="已到箱数">{{ order.sumNum }}</el-descriptions-item> <el-descriptions-item label="已到箱数">{{ order.sumNum }}</el-descriptions-item>
<el-descriptions-item label="订单状态"><dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" /></el-descriptions-item> <el-descriptions-item label="订单状态"><dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" /></el-descriptions-item>
<el-descriptions-item label="送货时间">todo</el-descriptions-item> <el-descriptions-item label="送货时间">{{ order.consigneeVO && order.consigneeVO.deliveryDate || '' }}</el-descriptions-item>
<el-descriptions-item label="运输方式"> <el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="始发地">{{ order.logisticsInfoDto.startWarehouseId }}</el-descriptions-item> <el-descriptions-item label="始发地">{{ order.logisticsInfoDto.startAddressZh || '' }}</el-descriptions-item>
<el-descriptions-item label="目的地">{{ order.logisticsInfoDto.destWarehouseId }}</el-descriptions-item> <el-descriptions-item label="目的地">{{ order.logisticsInfoDto.destTitleZh || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{ order.consignorVO && order.consignorVO.name}}</el-descriptions-item> <el-descriptions-item label="发货人姓名">{{ order.consignorVO && order.consignorVO.name || ''}}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{ order.consignorVO && order.consignorVO.company || '' }}</el-descriptions-item> <el-descriptions-item label="发货人公司">{{ order.consignorVO && order.consignorVO.company || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{ order.consignorVO && order.consignorVO.phone }}</el-descriptions-item> <el-descriptions-item label="发货人电话">{{ order.consignorVO && order.consignorVO.phone || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{ order.consigneeVO && order.consigneeVO.name}}</el-descriptions-item> <el-descriptions-item label="收货人姓名">{{ order.consigneeVO && order.consigneeVO.name || ''}}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{ order.consigneeVO && order.consigneeVO.company }}</el-descriptions-item> <el-descriptions-item label="收货人公司">{{ order.consigneeVO && order.consigneeVO.company || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{ order.consigneeVO && order.consigneeVO.phone }}</el-descriptions-item> <el-descriptions-item label="收货人电话">{{ order.consigneeVO && order.consigneeVO.phone || '' }}</el-descriptions-item>
<el-descriptions-item label="入仓类型">{{ order.warehouseType }}</el-descriptions-item> <el-descriptions-item label="入仓类型">{{ getDictDataLabel(DICT_TYPE.ECW_WAREHOUSING_TYPE, order.warehouseType) }}</el-descriptions-item>
<el-descriptions-item label="订单号">{{ order.orderNo }}</el-descriptions-item> <el-descriptions-item label="订单号">{{ order.orderNo }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</template> </template>
<script> <script>
import {DICT_TYPE} from "@/utils/dict" import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
export default { export default {
name: "orderBaseInfo", name: "orderBaseInfo",
props: { props: {
order: Object order: Object
}, },
data () { data () {
return { return {
DICT_TYPE DICT_TYPE,
getDictDataLabel
} }
} }
} }
......
...@@ -308,30 +308,6 @@ export const constantRoutes = [ ...@@ -308,30 +308,6 @@ export const constantRoutes = [
noCache:true, noCache:true,
} }
}, },
{
path: 'batch-single-application',
component:(resolve)=> require(['@/views/ecw/order/batchSingleApplication'],resolve),
name: 'batchSingleApplication',
props: route => ({orderList:route.query.list}),
meta: {
title: '批量调仓申请',
icon:'',
activeMenu: '/order/batchSingleApplication',
noCache:true
}
},
{
path: 'fee-application/:orderId',
component:(resolve)=> require(['@/views/ecw/order/feeApplication'],resolve),
name: 'feeApplication',
props: true,
meta: {
title: '费用申请',
icon:'',
activeMenu: '/order/feeApplication'
}
},
{ {
path: 'mutex-order/:orderId', path: 'mutex-order/:orderId',
component:()=> import('@/views/ecw/order/mutexOrder'), component:()=> import('@/views/ecw/order/mutexOrder'),
...@@ -387,13 +363,13 @@ export const constantRoutes = [ ...@@ -387,13 +363,13 @@ export const constantRoutes = [
hidden: true, hidden: true,
redirect: 'noredirect', redirect: 'noredirect',
children: [ children: [
/* { {
path: 'query/:boxId(\\d+)', path: 'query/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/query'), component: (resolve) => import('@/views/ecw/box/query'),
props: true, props: true,
name: 'boxQuery', name: 'shippingDetail',
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/box'} meta: {title: '出货详情', icon: '', activeMenu: '/shipment/boxDetail'}
}, */ },
{ {
path: 'shippingSea/:shipmentId(\\d+)', path: 'shippingSea/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shippingSea/shippingSea'), component: (resolve) => import('@/views/ecw/box/shippingSea/shippingSea'),
......
...@@ -163,8 +163,9 @@ export const DICT_TYPE = { ...@@ -163,8 +163,9 @@ export const DICT_TYPE = {
ORDER_COD_EXCEPTION_RESULT:'order_cod_exception_result',//代收货款异常处理结果 ORDER_COD_EXCEPTION_RESULT:'order_cod_exception_result',//代收货款异常处理结果
ORDER_OTHER_EXCEPTION_RESULT:'order_other_exception_result',//其它异常处理结果 ORDER_OTHER_EXCEPTION_RESULT:'order_other_exception_result',//其它异常处理结果
ORDER_BULKY_CARGO_EXCEPTION_RESULT:'order_bulky_cargo_exception_result',//泡货异常处理结果 ORDER_BULKY_CARGO_EXCEPTION_RESULT:'order_bulky_cargo_exception_result',//泡货异常处理结果
PAYMENT_TYPE:'payment_type',//收款类型 NEED_KNOW_TYPE:'need_know_type',//需知类型
NEED_KNOW_STATUS:'need_know_status',//需知状态
ECASH_INIT:'ecash_init', //e-cash ECASH_INIT:'ecash_init', //e-cash
FEE_TYPE:'receivable_fee_type', FEE_TYPE:'receivable_fee_type',
......
...@@ -62,6 +62,62 @@ ...@@ -62,6 +62,62 @@
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='warehouse_transfer'"><!--调仓申请--> <div v-if="this.processInstance.processDefinition.formCustomViewPath=='warehouse_transfer'"><!--调仓申请-->
<warehouseDetails :processId="this.processInstance.businessKey" :type="1" ></warehouseDetails> <warehouseDetails :processId="this.processInstance.businessKey" :type="1" ></warehouseDetails>
</div> </div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='container_modify'"><!--出货审核-柜子修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='trailer_modify'"><!--出货审核-拖车修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='ship_modify'"><!--出货审核-配船修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='ship_modify'"><!--出货审核-配船修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='customs_declare_modify'"><!--出货审核-报关修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='arrival_modify'"><!--出货审核-到港修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='customs_clearance_modify'"><!--出货审核-清关修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='customs_exit_part'"><!--出货审核-报关部分退场审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='customs_exit_all'"><!--出货审核-报关退场审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='start_port_modify'"><!--出货审核-起运修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='book_space_modify'"><!--出货审核-订舱修改审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='sorting_apply_no'"><!--出货审核-分拣反审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='sorting_apply'"><!--出货审核-分拣审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='unload_container_no'"><!--出货审核-卸柜反审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='unload_container'"><!--出货审核-卸柜审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='close_container'"><!--出货审核-封柜审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='shipment_preassemble_no'"><!--出货审核-预装反审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='shipment_preassemble'"><!--出货审核-预装审核-->
<shippingDetail :processId="this.processInstance.businessKey"></shippingDetail>
</div>
<div v-else> <div v-else>
<router-link :to="this.processInstance.processDefinition.formCustomViewPath + '?id=' <router-link :to="this.processInstance.processDefinition.formCustomViewPath + '?id='
+ this.processInstance.businessKey"> + this.processInstance.businessKey">
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-row class="two-element"> <el-row class="two-element-formItem">
<el-form-item label="金额"> <el-form-item label="金额">
<el-input-number v-model="costObj.price" controls-position="right" :min="1"></el-input-number> <el-input-number v-model="costObj.price" controls-position="right" :min="1"></el-input-number>
</el-form-item> </el-form-item>
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="operate-button"> <div class="operate-button">
<el-button type="primary" @click="submit">确定</el-button> <el-button type="primary" @click="submit">确定</el-button>
<el-button @click="$emit('closeDialog')">取消</el-button> <el-button @click="$emit('closeDialog')">取消</el-button>
</div> </div>
...@@ -84,25 +84,3 @@ export default { ...@@ -84,25 +84,3 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss">
// 海运操作统一弹窗样式
.app-costForm {
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
text-align: center;
}
.two-element {
display: flex;
> :last-child {
width: 100%;
margin-left: 10px;
}
}
}
</style>
<template> <template>
<div class="app-container"> <div class="app-container shipping-sea">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
...@@ -45,8 +45,8 @@ ...@@ -45,8 +45,8 @@
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运输方式" prop="transportType"> <el-form-item label="运输方式" prop="transportType">
<el-select v-model="queryParams.transportType" placeholder="请选择运输方式" clearable size="small"> <el-select v-model="queryParams.transportType" placeholder="请选择运输方式" clearable size="small">
<el-option v-for="dict in transportTypes" <el-option v-for="dict in transportTypes"
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="自编号" align="center" prop="selfNo"/> <el-table-column label="自编号" align="center" prop="selfNo">
<template slot-scope="scope">
<el-button type="text" @click="handleCommand(scope.row, 'detail')">{{ scope.row.selfNo }}</el-button>
</template>
</el-table-column>
<el-table-column label="柜号" align="center" prop="cubNo"/> <el-table-column label="柜号" align="center" prop="cubNo"/>
<el-table-column label="柜型" align="center" prop="cabinetId"> <el-table-column label="柜型" align="center" prop="cabinetId">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -100,15 +104,15 @@ ...@@ -100,15 +104,15 @@
<dict-tag :type="DICT_TYPE.BOX_SHIPMENT_STATUS" :value="scope.row.boxStatus"/> <dict-tag :type="DICT_TYPE.BOX_SHIPMENT_STATUS" :value="scope.row.boxStatus"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="日期" align="center" prop="createTime" width="180"> <el-table-column label="日期" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).format('yyyy-MM-dd') }}</span> <span>{{ new Date(scope.row.createTime).format('yyyy-MM-dd') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)"> <el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)" style="marginRight:10px;">
<el-button type="primary"> <el-button type="primary">
操作<i class="el-icon-arrow-down el-icon--right"></i> 操作<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
...@@ -120,6 +124,20 @@ ...@@ -120,6 +124,20 @@
<el-dropdown-item command="delete">删除</el-dropdown-item> <el-dropdown-item command="delete">删除</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-dropdown trigger="click">
<el-button type="primary">
下载<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="">预装单</el-dropdown-item>
<el-dropdown-item command="">已装单</el-dropdown-item>
<el-dropdown-item command="">应收汇总表</el-dropdown-item>
<el-dropdown-item command="">agent list</el-dropdown-item>
<el-dropdown-item command="">son cap</el-dropdown-item>
<el-dropdown-item command="">提货单</el-dropdown-item>
<el-dropdown-item command="">提单Copy</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -128,7 +146,7 @@ ...@@ -128,7 +146,7 @@
@pagination="getList"/> @pagination="getList"/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body class="shippingSea-dialog">
<template v-if="dialogType === 'edit' || dialogType === 'add'"> <template v-if="dialogType === 'edit' || dialogType === 'add'">
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
...@@ -155,9 +173,9 @@ ...@@ -155,9 +173,9 @@
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div class="operate-button">
<el-button type="primary" @click="submitForm">确 定</el-button> <el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
...@@ -165,6 +183,9 @@ ...@@ -165,6 +183,9 @@
<template v-if="dialogType === 'cost'"> <template v-if="dialogType === 'cost'">
<costForm v-if="open" @closeDialog="closeDialog" :currRow="currRow"/> <costForm v-if="open" @closeDialog="closeDialog" :currRow="currRow"/>
</template> </template>
<template v-if="dialogType === 'error'">
<regError v-if="open" @closeDialog="closeDialog" :shipmentObj="currRow"/>
</template>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
...@@ -173,13 +194,15 @@ ...@@ -173,13 +194,15 @@
import {createbox, updatebox, deletebox, getbox, getboxPage, exportboxExcel} from "@/api/ecw/box"; import {createbox, updatebox, deletebox, getbox, getboxPage, exportboxExcel} from "@/api/ecw/box";
import {getCabinetPage} from "@/api/ecw/cabinet"; import {getCabinetPage} from "@/api/ecw/cabinet";
import { getWarehouseList } from "@/api/ecw/warehouse" import { getWarehouseList } from "@/api/ecw/warehouse"
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { DICT_TYPE } from '@/utils/dict';
import costForm from './costForm.vue' import costForm from './costForm.vue'
import regError from './regError.vue'
export default { export default {
name: "box", name: "box",
components: { components: {
costForm costForm,
regError
}, },
data() { data() {
return { return {
...@@ -266,7 +289,7 @@ ...@@ -266,7 +289,7 @@
created() { created() {
this.transportTypes = this.transportTypes.filter(item => item.value == '1' || item.value == '2'); this.transportTypes = this.transportTypes.filter(item => item.value == '1' || item.value == '2');
getWarehouseList().then(res => this.warehouseList = res.data); getWarehouseList().then(res => this.warehouseList = res.data);
getCabinetPage(null).then(response => { getCabinetPage(null).then(response => {
...@@ -275,7 +298,6 @@ ...@@ -275,7 +298,6 @@
this.getList(); this.getList();
}, },
methods: { methods: {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
...@@ -390,13 +412,6 @@ ...@@ -390,13 +412,6 @@
closeDialog() { closeDialog() {
this.open = false; this.open = false;
}, },
/* 费用登记 */
createCost(row) {
this.title = '费用登记'
this.dialogType = 'cost';
this.open = true;
this.currRow = row;
},
/** 查看按钮操作 */ /** 查看按钮操作 */
handleCommand(row, command) { handleCommand(row, command) {
switch (command) { switch (command) {
...@@ -413,10 +428,53 @@ ...@@ -413,10 +428,53 @@
break; break;
case 'cost': case 'cost':
this.createCost(row); this.title = '费用登记'
this.dialogType = 'cost';
this.open = true;
this.currRow = row;
break;
case 'error':
this.title = '异常登记'
this.dialogType = 'error';
this.open = true;
this.currRow = row;
break;
case 'detail':
this.$router.push('/boxSea/query/' + row.id)
break; break;
} }
}, },
} }
}; };
</script> </script>
<style lang="scss">
// 海运操作统一弹窗样式
.shippingSea-dialog {
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
text-align: center;
}
.two-element-formItem {
display: flex;
> :last-child {
width: 100%;
margin-left: 10px;
}
}
.two-element {
.el-form-item__content {
display: flex;
> :last-child {
margin-left: 10px;
}
}
}
}
</style>
<template> <template>
<div> <div>
<el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center"> <el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="16"> <el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="19">
<div style="display: flex; justify-content: space-between;align-items: flex-end;"> <div style="display: flex; justify-content: space-between;align-items: flex-end;">
<h2>出货详情</h2> <h2>出货详情</h2>
<div> <div>
...@@ -14,15 +14,33 @@ ...@@ -14,15 +14,33 @@
</div> </div>
<el-card style="margin-top: 15px"> <el-card style="margin-top: 15px">
<el-descriptions :column="4" border> <el-descriptions :column="4" border>
<el-descriptions-item label="自编号"></el-descriptions-item> <el-descriptions-item label="自编号">
<el-descriptions-item label="运输方式"></el-descriptions-item> {{shipmentObj.selfNo}}
<el-descriptions-item label="出货渠道"></el-descriptions-item> </el-descriptions-item>
<!-- <el-descriptions-item label="柜型"></el-descriptions-item> --> <el-descriptions-item label="运输方式">
<el-descriptions-item label="状态"></el-descriptions-item> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="shipmentObj.transportType" />
<el-descriptions-item label="总计"></el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="始发地"></el-descriptions-item> <el-descriptions-item label="出货渠道" v-if="shipmentObj.transportType !== '2'">
<el-descriptions-item label="目的地"></el-descriptions-item> {{getShipChannelName(shipmentObj.shippingChannelId)}}
<el-descriptions-item label="SO.NO"></el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="柜型" v-if="shipmentObj.transportType === '2'">
{{getCabinetLabel(shipmentObj.cabinetId)}}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{getBoxStatus(shipmentObj)}}
</el-descriptions-item>
<el-descriptions-item label="总计">
{{getBoxSum(shipmentObj.boxStatistics)}}
</el-descriptions-item>
<el-descriptions-item label="始发地">
{{getCityName(shipmentObj.startWarehouseId)}}
</el-descriptions-item>
<el-descriptions-item label="目的地">
{{getCityName(shipmentObj.destWarehouseId)}}
</el-descriptions-item>
<el-descriptions-item label="SO NO">
{{shipmentObj.bookSeaInfo ? shipmentObj.bookSeaInfo.sono : '' }}
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
...@@ -30,11 +48,12 @@ ...@@ -30,11 +48,12 @@
<el-tab-pane label="明细"> <el-tab-pane label="明细">
<div class="detail-pane"> <div class="detail-pane">
<p>当前部分:</p> <p>当前部分:</p>
<el-select v-model="value" placeholder="请选择"> <el-select placeholder="请选择" v-model="sectionId" @change="sectionChange">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in sectionList" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-option>
</el-select> </el-select>
<p class="box-weight">9箱子xxx</p> <p class="box-weight">
{{getSectionInfo}}
</p>
<p class="document-status">单证状态:我司全代</p> <p class="document-status">单证状态:我司全代</p>
</div> </div>
<el-table :data="[]" style="width: 100%"> <el-table :data="[]" style="width: 100%">
...@@ -86,123 +105,138 @@ ...@@ -86,123 +105,138 @@
</template> </template>
<script> <script>
import { getCustomer, getCustomerSelect } from "@/api/ecw/customer"; import { getbox } from "@/api/ecw/box";
import { DICT_TYPE, getDictDataLabel } from "@/utils/dict"; import { getChannelList } from "@/api/ecw/channel";
import { getProductTypeList } from "@/api/ecw/productType"; import { getCabinetPage } from "@/api/ecw/cabinet";
import { getNodeList } from "@/api/ecw/node"; import { getWarehouseList } from "@/api/ecw/warehouse";
import CustomerFollow from "@/components/CustomerFollow"; import {
import { parseTime } from "@/utils/ruoyi"; getSeaStatus,
import CustomerComplaint from "@/views/ecw/customerComplaint"; getStatusName,
import { listServiceUser } from "@/api/system/user"; getTotlContent,
import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts"; } from "./shippingSea/utils";
import { getSectionList, boxGoodsDetail } from "@/api/ecw/boxSea";
export default { export default {
name: "boxQuery", name: "boxDetail",
props: { props: {
customerId: String, shipmentId: String,
},
components: {
CustomerFollow,
CustomerComplaint,
}, },
components: {},
created() { created() {
getNodeList().then((r) => { // 查询出货信息
this.nodeList = r.data; getbox(this.shipmentId).then((res) => {
}); const { data } = res;
getCustomer(this.id).then((response) => { this.shipmentObj = data ?? {};
this.customer = { ...this.customer, ...response.data };
getCustomerContactsListByCustomer({ customerId: this.id }).then((r) => {
this.customerContacts = r.data;
});
});
getProductTypeList().then((r) => {
this.productTypeList = r.data;
}); });
// 查询渠道
getCustomerSelect().then((r) => { getChannelList().then((res) => (this.channelList = res.data));
this.customerSelect = r.data; // 查询柜型
getCabinetPage(null).then(
(response) => (this.cabinetList = response.data.list)
);
// 仓库
getWarehouseList().then((r) => {
this.warehouseList = r.data;
}); });
listServiceUser().then((r) => { // 部分
this.serviceUserList = r.data; getSectionList({ shipmentId: this.shipmentId }).then((res) => {
this.sectionList = res.data.map((item, index) => {
return {
...item,
title: `第${index + 1}部分`,
};
});
}); });
// 装柜明细
this.getBoxGoodsDetail(0);
}, },
data() { data() {
return { return {
DICT_TYPE, // 出货对象
getDictDataLabel, shipmentObj: {},
parseTime, // 渠道
nodeList: [], channelList: [],
productTypeList: [], // 柜型
customerSelect: [], cabinetList: [],
serviceUserList: [], // 仓库
customerContacts: [], warehouseList: [],
customer: { // 部分list
id: undefined, sectionList: [],
number: undefined, // 部分订单商品
name: undefined, sectionObj: {
level: undefined, secStatistics: {},
country: undefined, sectionOrderList: [],
type: undefined, totalStatistics: {},
agentId: undefined,
company: undefined,
address: undefined,
productType: undefined,
productId: undefined,
pickupPoint: undefined,
memberId: undefined,
birthday: undefined,
balance: undefined,
source: undefined,
picture: undefined,
customerService: undefined,
customerLines: [],
promoter: undefined,
status: undefined,
founder: undefined,
department: undefined,
invoiceTitle: undefined,
licenseNumber: undefined,
bank: undefined,
bankNumber: undefined,
project: undefined,
billingAddress: undefined,
billingTell: undefined,
taxRate: undefined,
remarks: undefined,
arrivalConfirm: undefined,
weightUnit: undefined,
createTime: undefined,
}, },
sectionId: "",
}; };
}, },
methods: {
sectionChange(val) {
console.log(val)
this.getBoxGoodsDetail(this.sectionId)
},
getBoxGoodsDetail(secId) {
boxGoodsDetail({ shipmentId: this.shipmentId, secId }).then((res) => {
this.sectionObj = res.data;
});
},
},
computed: { computed: {
productType() { /* 渠道 */
const productType = this.productTypeList.find( getShipChannelName() {
(p) => p.id === parseInt(this.customer.productType) return (shippingChannelId) => {
); for (const channelItem of this.channelList) {
return productType ? productType.titleZh : ""; if (channelItem.channelId == shippingChannelId) {
return channelItem.nameZh;
}
return "/";
}
};
},
/* 获取柜型 */
getCabinetLabel() {
return (cabinetId) => {
for (const cabinetItem of this.cabinetList) {
if (cabinetItem.id == cabinetId) {
return cabinetItem.name;
}
return "/";
}
};
}, },
pickupPoint() { /* 状态 */
const pickupPoint = this.nodeList.find( getBoxStatus() {
(p) => p.id === parseInt(this.customer.pickupPoint) return (shippingVO) => {
); return getStatusName(getSeaStatus(shippingVO));
return pickupPoint ? pickupPoint.titleZh : ""; };
}, },
promoter() { /* 总计 */
return ( getBoxSum() {
this.customerSelect.find((e) => e.id === this.customer.promoter) return (boxStatistics) => {
?.name || "" if (boxStatistics) {
); return `${boxStatistics.num ?? 0} ${boxStatistics.volume ?? 0}m3 ${
boxStatistics.weight ?? 0
}kg`;
}
return;
};
}, },
customerService() { /* 获取仓库 */
return ( getCityName() {
this.serviceUserList.find((e) => e.id === this.customer.customerService) return (id) => {
?.nickname || "" let arr = this.warehouseList.filter((item) => item.id == id);
); return arr.length > 0 ? arr[0].titleZh : "无";
};
}, },
id() { // 部分信息
return this.customerId ? parseInt(this.customerId) : undefined; getSectionInfo() {
const { totalStatistics, secStatistics } = this.sectionObj;
if (!this.sectionId) {
return getTotlContent(totalStatistics);
} else {
return getTotlContent(secStatistics);
}
}, },
}, },
}; };
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnStartTime" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnStartTime" value-format="yyyy-MM-dd"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnEndTime" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnEndTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="是否更新订单状态"> <el-form-item label="是否更新订单状态">
<el-radio-group v-model="errorObj.orderStatus"> <el-radio-group v-model="errorObj.orderStatus">
<el-radio v-for="item in status" :key="item.value" :label="item.value">{{item.label}}</el-radio> <el-radio v-for="item in status" :key="item.value" :label="item.value">{{item.label}}</el-radio>
...@@ -65,7 +66,7 @@ export default { ...@@ -65,7 +66,7 @@ export default {
}, },
created() { created() {
const { currNode } = this.$attrs; const { currNode } = this.$attrs;
this.errorObj = { opStep: currNode.dataKey }; this.errorObj = { opStep: currNode?.dataKey ?? undefined };
}, },
methods: { methods: {
/** 提交 */ /** 提交 */
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
<section class="table-goodList"> <section class="table-goodList">
<div>合计:{{calcSum(row.goodsList)}}</div> <div>合计:{{calcSum(row.goodsList)}}</div>
<div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div"> <div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div">
{{item.volume}}{{item.weight}}kg {{getTotlContent(item,['volume','weight'])}}
</div> </div>
</section> </section>
</template> </template>
...@@ -90,7 +90,11 @@ ...@@ -90,7 +90,11 @@
<script> <script>
import { approvalDetail } from "@/api/ecw/box"; import { approvalDetail } from "@/api/ecw/box";
import { getSeaStatus, getStatusName } from "./shippingSea/utils"; import {
getSeaStatus,
getStatusName,
getTotlContent,
} from "./shippingSea/utils";
import { getCabinetPage } from "@/api/ecw/cabinet"; import { getCabinetPage } from "@/api/ecw/cabinet";
import { getChannelList } from "@/api/ecw/channel"; import { getChannelList } from "@/api/ecw/channel";
...@@ -123,6 +127,7 @@ export default { ...@@ -123,6 +127,7 @@ export default {
getChannelList().then((res) => (this.channelList = res.data)); getChannelList().then((res) => (this.channelList = res.data));
}, },
methods: { methods: {
getTotlContent,
/* 获取详情 */ /* 获取详情 */
getApprovalDetail(processId) { getApprovalDetail(processId) {
approvalDetail({ approvalId: processId }).then((res) => { approvalDetail({ approvalId: processId }).then((res) => {
...@@ -144,7 +149,11 @@ export default { ...@@ -144,7 +149,11 @@ export default {
}, },
/* 打开订单列表 */ /* 打开订单列表 */
showOrder() { showOrder() {
this.$set(this.dialogConfig, "title", `${this.boxBackVO.selfNo} 订单列表`); this.$set(
this.dialogConfig,
"title",
`${this.boxBackVO.selfNo} 订单列表`
);
this.$set(this.dialogConfig, "visible", true); this.$set(this.dialogConfig, "visible", true);
}, },
/* 合计 */ /* 合计 */
...@@ -190,9 +199,7 @@ export default { ...@@ -190,9 +199,7 @@ export default {
/* 体积重量 */ /* 体积重量 */
getVolumeWeight() { getVolumeWeight() {
return (total) => { return (total) => {
return `${total?.num ?? 0} ${total?.volume ?? 0}m³ ${ return this.getTotlContent(total);
total?.weight ?? 0
}kg`;
}; };
}, },
/* 是否显示卸柜箱数 */ /* 是否显示卸柜箱数 */
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</template> </template>
<script> <script>
import regError from "./regError"; import regError from "../../regError";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { arrivalCreate, serviceMsg } from "@/api/ecw/boxSea"; import { arrivalCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils"; import { formatDateStr } from "../utils";
......
...@@ -11,9 +11,7 @@ ...@@ -11,9 +11,7 @@
</div> </div>
<div> <div>
<template v-if="item.secStatistics"> <template v-if="item.secStatistics">
<p>{{item.secStatistics.num}}</p> {{getTotlContent(item.secStatistics)}}
<p>{{item.secStatistics.volume}}</p>
<p>{{item.secStatistics.weight}}Kg</p>
</template> </template>
</div> </div>
</el-row> </el-row>
...@@ -54,29 +52,29 @@ ...@@ -54,29 +52,29 @@
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" /> <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
</p> </p>
<p>其他:<span>{{item.num}}</span><span>{{item.volume}}</span><span>{{item.weight}}Kg</span></p> <p>其他:{{getTotlContent(item)}}</p>
</div> </div>
</section> </section>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="计划箱数" align="center" prop="num"> <el-table-column label="计划箱数" align="center" prop="num">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.num }} {{getTotlContent(scope.row,['num'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="实装箱数" align="center" prop="installNum"> <el-table-column label="实装箱数" align="center" prop="installNum">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.installNum }} {{ scope.row.installNum }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="体积" align="center" prop="volume"> <el-table-column label="体积" align="center" prop="volume">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.volume }} {{getTotlContent(scope.row,['volume'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="重量" align="center" prop="weight"> <el-table-column label="重量" align="center" prop="weight">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.weight }} Kg {{getTotlContent(scope.row,['weight'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
...@@ -97,14 +95,15 @@ ...@@ -97,14 +95,15 @@
<el-col :span="6" class="totle-info"> <el-col :span="6" class="totle-info">
<div class="count-info"> <div class="count-info">
<p>总计: <p>总计:
<!-- <span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span> -->111 无返回
<!-- <span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span> -->
</p> </p>
</div> </div>
<div> <div>
<p>容量:</p> <p>容量:</p>
<p>111</p> <p>无返回</p>
</div> </div>
<div>已装0</div> <div>已装 无返回 </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -204,6 +203,7 @@ import { ...@@ -204,6 +203,7 @@ import {
boxUpdate, boxUpdate,
approvalCreate, approvalCreate,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { getTotlContent } from "../../utils";
/** /**
* 开始装柜 * 开始装柜
...@@ -268,6 +268,7 @@ export default { ...@@ -268,6 +268,7 @@ export default {
}); });
}, },
methods: { methods: {
getTotlContent,
/* 装柜部分列表 */ /* 装柜部分列表 */
getLoadSecGoodsList() { getLoadSecGoodsList() {
loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => { loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => {
...@@ -275,7 +276,7 @@ export default { ...@@ -275,7 +276,7 @@ export default {
this.listData = data.map((item, index) => { this.listData = data.map((item, index) => {
return { return {
...item, ...item,
title: `第 ${++index} 部分`, title: `第${++index}部分`,
}; };
}); });
if (this.listData.length) { if (this.listData.length) {
......
...@@ -28,9 +28,7 @@ ...@@ -28,9 +28,7 @@
</el-collapse-transition> </el-collapse-transition>
<div class="part-secGoog"> <div class="part-secGoog">
<template> <template>
<p>{{item.secStatistics ? item.secStatistics.num : 0}}</p> {{getTotlContent(item.secStatistics)}}
<p>{{item.secStatistics ? item.secStatistics.volume : 0}}</p>
<p>{{item.secStatistics ? item.secStatistics.weight : 0}}Kg</p>
</template> </template>
</div> </div>
</el-row> </el-row>
...@@ -95,12 +93,12 @@ ...@@ -95,12 +93,12 @@
<el-table-column label="箱数" align="center" prop="num" width="120" /> <el-table-column label="箱数" align="center" prop="num" width="120" />
<el-table-column label="体积" align="center" prop="volume" width="120"> <el-table-column label="体积" align="center" prop="volume" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p> <p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="重量" align="center" prop="weight" width="120"> <el-table-column label="重量" align="center" prop="weight" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-if="scope.row.weight">{{scope.row.weight}}kg</p> <p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预装柜" align="center" prop="" width="120"> <el-table-column label="预装柜" align="center" prop="" width="120">
...@@ -151,7 +149,7 @@ import { ...@@ -151,7 +149,7 @@ import {
createGoods, createGoods,
remove, remove,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { formatDate } from "../../utils"; import { formatDate, getTotlContent } from "../../utils";
/** /**
* 补单 * 补单
*/ */
...@@ -197,7 +195,7 @@ export default { ...@@ -197,7 +195,7 @@ export default {
} }
return { return {
...item, ...item,
title: `第 ${++index} 部分`, title: `第${++index}部分`,
}; };
}); });
...@@ -324,6 +322,7 @@ export default { ...@@ -324,6 +322,7 @@ export default {
.catch((_) => {}); .catch((_) => {});
}, },
formatDate, formatDate,
getTotlContent,
}, },
computed: { computed: {
/** 目的地 */ /** 目的地 */
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</template> </template>
<script> <script>
import regError from "./regError"; import regError from "../../regError";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { clearanceCreate, serviceMsg } from "@/api/ecw/boxSea"; import { clearanceCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils"; import { formatDateStr } from "../utils";
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</template> </template>
<script> <script>
import regError from "./regError"; import regError from "../../regError";
import { shippingCreate, serviceMsg } from "@/api/ecw/boxSea"; import { shippingCreate, serviceMsg } from "@/api/ecw/boxSea";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { formatDateStr } from "../utils"; import { formatDateStr } from "../utils";
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="目的地" prop="destWarehouseIdList"> <el-form-item label="目的地" prop="destWarehouseIdList">
<el-select v-model="queryParams.destWarehouseIdList" placeholder="请选择目的地" multiple> <el-select v-model="queryParams.destWarehouseIdList" placeholder="请选择目的地" multiple clearable>
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -108,11 +108,7 @@ ...@@ -108,11 +108,7 @@
<el-row class="preinstall-title"> <el-row class="preinstall-title">
<div class="pre-part-info"> <div class="pre-part-info">
<p>{{index+1}}部分</p> <p>{{index+1}}部分</p>
<p> <p>{{getTotlContent(part.secStatistics)}}</p>
<span>{{part.secStatistics ? part.secStatistics.num : 0}}</span>
<span>{{part.secStatistics ? part.secStatistics.volume : 0}}</span>
<span>{{part.secStatistics ? part.secStatistics.weight : 0}}kg</span>
</p>
</div> </div>
<div class="table-button"> <div class="table-button">
<el-button type="danger" size="small" @click="deletePart(part)">删除部分</el-button> <el-button type="danger" size="small" @click="deletePart(part)">删除部分</el-button>
...@@ -131,8 +127,8 @@ ...@@ -131,8 +127,8 @@
<el-table-column label="箱数" align="center" prop="num" /> <el-table-column label="箱数" align="center" prop="num" />
<el-table-column label="体积/重量/重货比" align="center" width="140" prop="volumeWeight"> <el-table-column label="体积/重量/重货比" align="center" width="140" prop="volumeWeight">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p> <p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
<p v-if="scope.row.weight">{{scope.row.weight}}kg</p> <p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报关方式" align="center" prop="customsType" width="120"> <el-table-column label="报关方式" align="center" prop="customsType" width="120">
...@@ -169,15 +165,15 @@ ...@@ -169,15 +165,15 @@
<div class="preinstall-title preinstalled"> <div class="preinstall-title preinstalled">
<div class="red-label"> <div class="red-label">
<p>筛选后待预装数量:</p> <p>筛选后待预装数量:</p>
<p>{{unloadStatistics.num}}箱</p> <p>{{getTotlContent(unloadStatistics,['num'])}}</p>
</div> </div>
<div class="red-label"> <div class="red-label">
<p>方数:</p> <p>方数:</p>
<p>{{unloadStatistics.volume}}m³</p> <p>{{getTotlContent(unloadStatistics,['volume'])}}</p>
</div> </div>
<div class="red-label"> <div class="red-label">
<p>重量:</p> <p>重量:</p>
<p>{{unloadStatistics.weight}}kg</p> <p>{{getTotlContent(unloadStatistics,['weight'])}}</p>
</div> </div>
</div> </div>
</el-row> </el-row>
...@@ -225,8 +221,8 @@ ...@@ -225,8 +221,8 @@
<el-table-column label="箱数" align="center" prop="num" /> <el-table-column label="箱数" align="center" prop="num" />
<el-table-column label="体积/重量" align="center" prop="volumeWeight"> <el-table-column label="体积/重量" align="center" prop="volumeWeight">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p> <p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
<p v-if="scope.row.weight">{{scope.row.weight}}kg</p> <p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报关方式" align="center" prop=""> <el-table-column label="报关方式" align="center" prop="">
...@@ -284,7 +280,8 @@ import { ...@@ -284,7 +280,8 @@ import {
approvalCreate, approvalCreate,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { formatDate } from "../utils"; import { formatDate, getTotlContent } from "../utils";
import dayjs from "dayjs";
/** /**
* 预装 * 预装
...@@ -354,6 +351,7 @@ export default { ...@@ -354,6 +351,7 @@ export default {
}, },
methods: { methods: {
formatDate, formatDate,
getTotlContent,
/* 获取城市 */ /* 获取城市 */
importCityName(id) { importCityName(id) {
var arr = this.$attrs.warehouseList.filter((item) => item.id == id); var arr = this.$attrs.warehouseList.filter((item) => item.id == id);
...@@ -370,7 +368,6 @@ export default { ...@@ -370,7 +368,6 @@ export default {
let params = this.getParams(); let params = this.getParams();
// 已预装单号 // 已预装单号
params.orderNo = params.preOrderNo; params.orderNo = params.preOrderNo;
delete params.preOrderNo;
params.shipmentId = this.shipmentObj.id; params.shipmentId = this.shipmentObj.id;
secGoodsList(params).then((res) => { secGoodsList(params).then((res) => {
this.preList = res.data; this.preList = res.data;
...@@ -384,7 +381,6 @@ export default { ...@@ -384,7 +381,6 @@ export default {
let params = this.getParams(); let params = this.getParams();
// 订单号 // 订单号
params.orderNo = params.toBePreOrderNo; params.orderNo = params.toBePreOrderNo;
delete params.toBePreOrderNo;
preloadPage({ ...params, ...this.pageParam }).then((res) => { preloadPage({ ...params, ...this.pageParam }).then((res) => {
const { data } = res; const { data } = res;
this.toBePreList = data.dataList?.list ?? []; this.toBePreList = data.dataList?.list ?? [];
...@@ -438,7 +434,10 @@ export default { ...@@ -438,7 +434,10 @@ export default {
if (column.property === "volumeWeight") { if (column.property === "volumeWeight") {
const volume = this.calcSum("volume", data); const volume = this.calcSum("volume", data);
const weight = this.calcSum("weight", data); const weight = this.calcSum("weight", data);
sums[index] = `${volume ?? 0}m³ ${weight ?? 0}kg`; sums[index] = getTotlContent({ volume, weight }, [
"volume",
"weight",
]);
} }
}); });
...@@ -540,11 +539,14 @@ export default { ...@@ -540,11 +539,14 @@ export default {
}, },
getParams() { getParams() {
const { rucangtime = [] } = this.queryParams; const { rucangtime = [] } = this.queryParams;
delete this.queryParams.rucangtime;
return { return {
...this.queryParams, ...this.queryParams,
rucangTimeStart: rucangtime[0], rucangTimeStart: rucangtime[0]
rucangTimeEnd: rucangtime[1], ? dayjs(rucangtime[0]).format("YYYY-MM-DD 00:00:00")
: rucangtime[0],
rucangTimeEnd: rucangtime[1]
? dayjs(rucangtime[1]).format("YYYY-MM-DD 23:59:59")
: rucangtime[1],
}; };
}, },
}, },
......
...@@ -859,11 +859,24 @@ function formatDateStr(obj, keys, format = "YYYY-MM-DD") { ...@@ -859,11 +859,24 @@ function formatDateStr(obj, keys, format = "YYYY-MM-DD") {
return obj; return obj;
} }
/**
* 格式化日期
*
* @param {*} date
* @param {string} [format="YYYY-MM-DD"]
* @return {*}
*/
function formatDate(date, format = "YYYY-MM-DD") { function formatDate(date, format = "YYYY-MM-DD") {
if (!date) return date; if (!date) return date;
return dayjs(date).format(format); return dayjs(date).format(format);
} }
/**
* 获取海运流程状态
*
* @param {*} val
* @return {*}
*/
function getSeaStatus(val) { function getSeaStatus(val) {
let currNodeStatus = 11, let currNodeStatus = 11,
isBreak = false, isBreak = false,
...@@ -896,6 +909,29 @@ function getSeaStatus(val) { ...@@ -896,6 +909,29 @@ function getSeaStatus(val) {
return currNodeStatus; return currNodeStatus;
} }
/**
* 组装统计信息文字
*
* @param {*} total
* @param {string} [keys=["num", "volume", "weight"]]
* @return {*}
*/
function getTotlContent(total, keys = ["num", "volume", "weight"]) {
let content = [];
for (const key of keys) {
if (key === "num") {
content.push(`${total?.num ?? 0}`);
}
if (key === "volume") {
content.push(`${total?.volume ?? 0}m³`);
}
if (key === "weight") {
content.push(`${total?.weight ?? 0}kg`);
}
}
return content.join(" ");
}
export const fileTypes = [ export const fileTypes = [
"doc", "doc",
"xls", "xls",
...@@ -917,4 +953,5 @@ export { ...@@ -917,4 +953,5 @@ export {
formatDateStr, formatDateStr,
formatNumberString, formatNumberString,
formatDate, formatDate,
getTotlContent,
}; };
...@@ -9,14 +9,15 @@ ...@@ -9,14 +9,15 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="目标类型" prop="targetType"> <el-form-item label="目标类型" prop="targetType">
<dict-selector :type="DICT_TYPE.TARGET_TYPE" v-model="queryParams.targetType" formatter="number" /> <dict-selector :type="DICT_TYPE.TARGET_TYPE" v-model="queryParams.targetType" formatter="number"/>
</el-form-item> </el-form-item>
<el-form-item label="运输方式" prop="transportType"> <el-form-item label="运输方式" prop="transportType">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number"/>
</el-form-item> </el-form-item>
<el-form-item label="出货渠道" prop="shippingChannel"> <el-form-item label="出货渠道" prop="shippingChannel">
<el-select v-model="queryParams.shippingChannel" placeholder="请选择出货渠道"> <el-select v-model="queryParams.shippingChannel" placeholder="请选择出货渠道">
<el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId" :key="item.channelId"></el-option> <el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId"
:key="item.channelId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -29,7 +30,8 @@ ...@@ -29,7 +30,8 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['ecw:dept-target:create']">目标设置</el-button> v-hasPermi="['ecw:dept-target:create']">目标设置
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
...@@ -41,7 +43,7 @@ ...@@ -41,7 +43,7 @@
<span>{{scope.row.deptName}}{{scope.row.targetPeriodName}}目标</span> <span>{{scope.row.deptName}}{{scope.row.targetPeriodName}}目标</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="部门" align="center" prop="deptName" /> <el-table-column label="部门" align="center" prop="deptName"/>
<el-table-column label="目标类型" align="center" prop="targetType"> <el-table-column label="目标类型" align="center" prop="targetType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.TARGET_TYPE" :value="scope.row.targetType"/> <dict-tag :type="DICT_TYPE.TARGET_TYPE" :value="scope.row.targetType"/>
...@@ -53,7 +55,7 @@ ...@@ -53,7 +55,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="部门人数" align="center" prop="deptEmpCount"/> <el-table-column label="部门人数" align="center" prop="deptEmpCount"/>
<el-table-column label="目标方数" align="center" prop="cubeNum" /> <el-table-column label="目标方数" align="center" prop="cubeNum"/>
<el-table-column label="运输方式" align="center" prop="transportType"> <el-table-column label="运输方式" align="center" prop="transportType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="scope.row.transportType"/> <dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="scope.row.transportType"/>
...@@ -64,7 +66,7 @@ ...@@ -64,7 +66,7 @@
<span>{{ getShipChannelName(scope.row.shippingChannel) }}</span> <span>{{ getShipChannelName(scope.row.shippingChannel) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="已完成方数" align="center" prop="completeCubeNum" /> <el-table-column label="已完成方数" align="center" prop="completeCubeNum"/>
<el-table-column label="完成比例" align="center"> <el-table-column label="完成比例" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (scope.row.completeCubeNum/scope.row.cubeNum*100).toFixed(2)+'%' }}</span> <span>{{ (scope.row.completeCubeNum/scope.row.cubeNum*100).toFixed(2)+'%' }}</span>
...@@ -73,9 +75,13 @@ ...@@ -73,9 +75,13 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:dept-target:update']">修改</el-button> v-hasPermi="['ecw:dept-target:update']">修改
</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:dept-target:delete']">删除</el-button> v-hasPermi="['ecw:dept-target:delete']">删除
</el-button>
<el-button size="mini" type="text" icon="el-icon-search" @click="handleView(scope.row)"
v-hasPermi="['ecw:dept-target:create']"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -94,7 +100,7 @@ ...@@ -94,7 +100,7 @@
<el-form-item label="目标类型" prop="targetType"> <el-form-item label="目标类型" prop="targetType">
<el-select v-model="form.targetType" placeholder="请选择运输方式" @change="changeList"> <el-select v-model="form.targetType" placeholder="请选择运输方式" @change="changeList">
<el-option v-for="dict in getDictDatas(DICT_TYPE.TARGET_TYPE)" <el-option v-for="dict in getDictDatas(DICT_TYPE.TARGET_TYPE)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" /> :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="计算周期" prop="targetPeriodName"> <el-form-item label="计算周期" prop="targetPeriodName">
...@@ -103,15 +109,16 @@ ...@@ -103,15 +109,16 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运输方式" prop="transportType"> <el-form-item label="运输方式" prop="transportType">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportType" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportType" formatter="number"/>
</el-form-item> </el-form-item>
<el-form-item label="出货渠道" prop="shippingChannel"> <el-form-item label="出货渠道" prop="shippingChannel">
<el-select v-model="form.shippingChannel" placeholder="请选择出货渠道"> <el-select v-model="form.shippingChannel" placeholder="请选择出货渠道">
<el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId" :key="item.channelId"></el-option> <el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId"
:key="item.channelId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="立方数" prop="cubeNum"> <el-form-item label="立方数" prop="cubeNum">
<el-input v-model="form.cubeNum" placeholder="请输入立方数" /> <el-input v-model="form.cubeNum" placeholder="请输入立方数"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -119,256 +126,338 @@ ...@@ -119,256 +126,338 @@
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
</el-dialog> </el-dialog>
<!--人员目标进度-->
<el-dialog title="人员目标进度" :visible.sync="tableOpen" width="1000px" append-to-body>
<div><span><b>{{detail.deptName}}-{{getDictDataLabel(DICT_TYPE.TARGET_TYPE,detail.targetType)}}</b></span></div>
<div>
<span>运输方式:</span><span>{{getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE,detail.transportType)}}</span>
<span>出货渠道:</span><span>{{ getShipChannelName(detail.shippingChannel) }}</span>
<span>部门目标:</span><span>{{detail.cubeNum}}</span>
</div>
<el-table v-loading="loading" :data="tableList">
<el-table-column label="员工名称" align="center" width="180">
<template slot-scope="scope">
<span>{{scope.row.userName}}</span>
</template>
</el-table-column>
<el-table-column label="部门" align="center">
<template>
<span>{{detail.deptName}}</span>
</template>
</el-table-column>
<el-table-column label="目标类型" align="center" prop="targetType">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.TARGET_TYPE" :value="scope.row.targetType"/>
</template>
</el-table-column>
<el-table-column label="时间范围" align="center" prop="targetPeriodName">
<template slot-scope="scope">
<span>{{dateFormat(scope.row.startTime)}}~{{dateFormat(scope.row.endTime)}}</span>
</template>
</el-table-column>
<el-table-column label="个人目标方数" align="center" prop="personalCubeNum"/>
<el-table-column label="已完成方数" align="center" prop="personalCompleteCubeNum"/>
<el-table-column label="完成比例" align="center">
<template slot-scope="scope">
<span>{{ (scope.row.personalCompleteCubeNum/scope.row.personalCubeNum*100).toFixed(2)+'%' }}</span>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="tableTotal > 0" :total="tableTotal" :page.sync="tableQueryParams.pageNo"
:limit.sync="tableQueryParams.pageSize"
@pagination="getTableList"/>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { createDeptTarget, updateDeptTarget, deleteDeptTarget, getDeptTarget, getDeptTargetPage, exportDeptTargetExcel,getCreateInitData } from "@/api/ecw/deptTarget"; import {
import { listSimpleDepts } from "@/api/system/dept"; createDeptTarget,
import { getChannelList } from '@/api/ecw/channel'; updateDeptTarget,
import dayjs from "dayjs"; deleteDeptTarget,
getDeptTarget,
getDeptTargetPage,
exportDeptTargetExcel,
getCreateInitData,
getPersonTargetPage
} from "@/api/ecw/deptTarget";
import {listSimpleDepts} from "@/api/system/dept";
import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs";
export default { export default {
name: "DeptTarget", name: "DeptTarget",
components: { components: {},
}, data() {
data() { return {
return { // 遮罩层
// 遮罩层 loading: true,
loading: true, // 导出遮罩层
// 导出遮罩层 exportLoading: false,
exportLoading: false, // 显示搜索条件
// 显示搜索条件 showSearch: true,
showSearch: true, // 总条数
// 总条数 total: 0,
total: 0, tableTotal: 0,
// 部门业绩目标设置列表 // 部门业绩目标设置列表
list: [], list: [],
// 弹出层标题 tableList: [],
title: "", // 弹出层标题
// 是否显示弹出层 title: "",
open: false, detail: {
dateRangeCreateTime: [], deptName: null,
dateRangeStartTime: [], targetType: null,
dateRangeEndTime: [], cubeNum: null,
deptData:[], shippingChannel: null,
deptArr:[], transportType: null,
channelList:[], },
monthList:[], // 是否显示弹出层
quarterList:[], open: false,
yearList:[], tableOpen: false,
targetPeriod:[], dateRangeCreateTime: [],
// 查询参数 dateRangeStartTime: [],
queryParams: { dateRangeEndTime: [],
pageNo: 1, deptData: [],
pageSize: 10, deptArr: [],
deptId: null, channelList: [],
targetType: null, monthList: [],
targetPeriodName: null, quarterList: [],
transportType: null, yearList: [],
shippingChannel: null, targetPeriod: [],
cubeNum: null, // 查询参数
}, queryParams: {
// 表单参数 pageNo: 1,
form: {}, pageSize: 10,
// 表单校验 deptId: null,
rules: { targetType: null,
deptId: [{ required: true, message: "部门ID不能为空", trigger: "blur" }], targetPeriodName: null,
targetType: [{ required: true, message: "目标类型不能为空", trigger: "change" }], transportType: null,
cubeNum: [{ required: true, message: "立方数不能为空", trigger: "blur" }], shippingChannel: null,
} cubeNum: null,
}; },
}, tableQueryParams: {
computed:{ pageNo: 1,
getShipChannelName() { pageSize: 10,
return shippingChannelId => { id: null,
for (let index in this.channelList) { },
let channelItem = this.channelList[index]; // 表单参数
if (channelItem.channelId == shippingChannelId) { form: {},
return channelItem.nameZh; // 表单校验
} rules: {
} deptId: [{required: true, message: "部门ID不能为空", trigger: "blur"}],
return '/' targetType: [{required: true, message: "目标类型不能为空", trigger: "change"}],
} cubeNum: [{required: true, message: "立方数不能为空", trigger: "blur"}],
} }
}, };
created() { },
listSimpleDepts().then(res =>{ computed: {
res.data.forEach((item)=>{ getShipChannelName() {
if(item.parentId==0){ return shippingChannelId => {
for (let index in this.channelList) {
let channelItem = this.channelList[index];
if (channelItem.channelId == shippingChannelId) {
return channelItem.nameZh;
}
}
return '/'
}
}
},
created() {
listSimpleDepts().then(res => {
res.data.forEach((item) => {
if (item.parentId == 0) {
this.deptArr.push(item) this.deptArr.push(item)
}else{ } else {
this.deptData.push(item) this.deptData.push(item)
} }
}) })
this.deptData.forEach((value)=>{ this.deptData.forEach((value) => {
var dept = this.deptArr.filter(itt=>itt.id==value.parentId) var dept = this.deptArr.filter(itt => itt.id == value.parentId)
if(dept.length>0){ if (dept.length > 0) {
value.name =dept[0].name+' | '+ value.name value.name = dept[0].name + ' | ' + value.name
} }
}) })
}); });
getCreateInitData().then(res=>{ getCreateInitData().then(res => {
this.monthList = res.data.month; this.monthList = res.data.month;
this.quarterList = res.data.quarter; this.quarterList = res.data.quarter;
this.yearList = res.data.year; this.yearList = res.data.year;
}); });
this.getChannelList(); this.getChannelList();
this.getList();
},
methods: {
getChannelList(){
getChannelList().then(res => this.channelList = res.data)
},
dateFormat(val){
return dayjs(val).format("YYYY-MM-DD");
},
changeList(val){
if(val===1){
this.form.targetPeriodName=undefined;
this.targetPeriod = this.monthList;
} else if (val ===2 ){
this.form.targetPeriodName=undefined;
this.targetPeriod = this.quarterList;
} else{
this.form.targetPeriodName=undefined;
this.targetPeriod = this.yearList;
}
},
setTime(item){
this.targetPeriod.forEach((i,index)=>{
if(i.name===item){
this.form.startTime = i.startDate;
this.form.endTime = i.endDate;
}
})
},
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
this.addBeginAndEndTime(params, this.dateRangeStartTime, 'startTime');
this.addBeginAndEndTime(params, this.dateRangeEndTime, 'endTime');
// 执行查询
getDeptTargetPage(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
deptId: undefined,
targetType: undefined,
targetPeriodName: undefined,
startTime: undefined,
endTime: undefined,
transportType: undefined,
shippingChannel: undefined,
cubeNum: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.dateRangeStartTime = [];
this.dateRangeEndTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.targetPeriod = this.monthList;
this.reset();
this.open = true;
this.title = "添加部门业绩目标设置";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getDeptTarget(id).then(response => {
this.form = response.data;
if(response.data.targetType===1){
this.targetPeriod = this.monthList;
} else if (response.data.targetType ===2 ){
this.targetPeriod = this.quarterList;
} else{
this.targetPeriod = this.yearList;
}
this.open = true;
this.title = "修改部门业绩目标设置";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
// 修改的提交
if (this.form.id != null) {
updateDeptTarget(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList(); this.getList();
}); },
return; methods: {
getChannelList() {
getChannelList().then(res => this.channelList = res.data)
},
dateFormat(val) {
return dayjs(val).format("YYYY-MM-DD");
},
changeList(val) {
if (val === 1) {
this.form.targetPeriodName = undefined;
this.targetPeriod = this.monthList;
} else if (val === 2) {
this.form.targetPeriodName = undefined;
this.targetPeriod = this.quarterList;
} else {
this.form.targetPeriodName = undefined;
this.targetPeriod = this.yearList;
}
},
setTime(item) {
this.targetPeriod.forEach((i, index) => {
if (i.name === item) {
this.form.startTime = i.startDate;
this.form.endTime = i.endDate;
}
})
},
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
this.addBeginAndEndTime(params, this.dateRangeStartTime, 'startTime');
this.addBeginAndEndTime(params, this.dateRangeEndTime, 'endTime');
// 执行查询
getDeptTargetPage(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
deptId: undefined,
targetType: undefined,
targetPeriodName: undefined,
startTime: undefined,
endTime: undefined,
transportType: undefined,
shippingChannel: undefined,
cubeNum: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.dateRangeStartTime = [];
this.dateRangeEndTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.targetPeriod = this.monthList;
this.reset();
this.open = true;
this.title = "添加部门业绩目标设置";
},
/** 查看人员目标情况 */
handleView(row) {
this.detail = row;
this.tableQueryParams.id = row.id;
this.getTableList();
this.tableOpen = true;
},
getTableList() {
getPersonTargetPage(this.tableQueryParams).then(res => {
this.tableList = res.data.list;
this.tableTotal = res.data.total;
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getDeptTarget(id).then(response => {
this.form = response.data;
if (response.data.targetType === 1) {
this.targetPeriod = this.monthList;
} else if (response.data.targetType === 2) {
this.targetPeriod = this.quarterList;
} else {
this.targetPeriod = this.yearList;
}
this.open = true;
this.title = "修改部门业绩目标设置";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
// 修改的提交
if (this.form.id != null) {
updateDeptTarget(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
// 添加的提交
createDeptTarget(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除部门业绩目标设置编号为"' + id + '"的数据项?').then(function () {
return deleteDeptTarget(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
this.addBeginAndEndTime(params, this.dateRangeStartTime, 'startTime');
this.addBeginAndEndTime(params, this.dateRangeEndTime, 'endTime');
// 执行导出
this.$modal.confirm('是否确认导出所有部门业绩目标设置数据项?').then(() => {
this.exportLoading = true;
return exportDeptTargetExcel(params);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).catch(() => {
});
}
} }
// 添加的提交 };
createDeptTarget(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除部门业绩目标设置编号为"' + id + '"的数据项?').then(function() {
return deleteDeptTarget(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
this.addBeginAndEndTime(params, this.dateRangeStartTime, 'startTime');
this.addBeginAndEndTime(params, this.dateRangeEndTime, 'endTime');
// 执行导出
this.$modal.confirm('是否确认导出所有部门业绩目标设置数据项?').then(() => {
this.exportLoading = true;
return exportDeptTargetExcel(params);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script> </script>
<template> <template>
<div class="batch-single-application"> <el-dialog
<h1 class="title">调仓申请</h1> :visible.sync="dialogVisible"
<el-table :data="list"> width="80%"
<el-table-column label="订单编号" prop="orderNo"></el-table-column> :before-close="()=>{
<el-table-column label="唛头" prop="marks"></el-table-column> $emit('update:dialogVisible',false)
<el-table-column label="已到箱数/总箱数"> }">
<template v-slot = {row}> <div class="batch-single-application">
{{row.sumQuantity || 0}}/{{row.totalNum}} <h1 class="title">调仓申请</h1>
</template> <el-table :data="list">
</el-table-column> <el-table-column label="订单编号" prop="orderNo"></el-table-column>
<el-table-column label="下单统计"> <el-table-column label="唛头" prop="marks"></el-table-column>
<template v-slot="{row}"> <el-table-column label="已到箱数/总箱数">
<div v-if="row.costVO"> <template v-slot = {row}>
箱数:{{row.costVO.totalNum}} {{row.sumQuantity || 0}}/{{row.totalNum}}
{{row.costVO.totalVolume}} </template>
{{row.costVO.totalWeight}}kg </el-table-column>
</div> <el-table-column label="下单统计">
</template> <template v-slot="{row}">
</el-table-column> <div v-if="row.costVO">
<el-table-column label="入仓统计" width="150"> 箱数:{{row.costVO.totalNum}}
<template v-slot="{row}"> {{row.costVO.totalVolume}}
<div>总箱数:{{row.sumNum || 0}}</div> {{row.costVO.totalWeight}}kg
<div>体积:{{row.sumVolume || 0}}CBM</div> </div>
<div>重量:{{row.sumWeight || 0}}KG</div> </template>
</template> </el-table-column>
</el-table-column> <el-table-column label="入仓统计" width="150">
<el-table-column label="入仓时间"> <template v-slot="{row}">
<div>总箱数:{{row.sumNum || 0}}</div>
<div>体积:{{row.sumVolume || 0}}CBM</div>
<div>重量:{{row.sumWeight || 0}}KG</div>
</template>
</el-table-column>
<el-table-column label="入仓时间">
</el-table-column> </el-table-column>
<el-table-column label="运输方式"> <el-table-column label="运输方式">
<template v-slot = {row}> <template v-slot = {row}>
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="出货渠道"> <el-table-column label="出货渠道">
</el-table-column> </el-table-column>
<!-- <el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>--> <!-- <el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>-->
<el-table-column label="目的地" prop="objectiveName"></el-table-column> <el-table-column label="目的地" prop="objectiveName"></el-table-column>
<el-table-column label="发货人"> <el-table-column label="发货人">
<template v-slot="{row}"> <template v-slot="{row}">
<div> <div>
<p> <div>
</p> <p>
</div> {{row.consignorName}}
</template> </p>
</el-table-column> <p>
<el-table-column label="收货人"> </p>
<template v-slot="{row}"> </div>
<div> </div>
<p> </template>
{{row.consigneeName}} </el-table-column>
</p> <el-table-column label="收货人">
<p> <template v-slot="{row}">
{{row.consigneePhone}} <div>
</p> <p>
</div> {{row.consigneeName}}
</template> </p>
</el-table-column> <p>
</el-table> {{row.consigneePhone}}
<div style="display: flex;justify-content:center; margin-top: 20px"> </p>
<div style="width: 200px; margin: 0 10px"> </div>
{{list[0].startWarehouseName}} </template>
</el-table-column>
<el-table-column>
<template v-slot="{row}">
<el-button type="text" v-if="row.inWarehouseState === 10">
取消调仓
</el-button>
</template>
</el-table-column>
</el-table>
<div style="display: flex;justify-content:center; margin-top: 20px">
<div style="width: 200px; margin: 0 10px">
{{ list[0] && list[0].startWarehouseName ? list[0].startWarehouseName : '' }}
</div>
<div style="width: 200px;">
<el-select v-model="params.warehouseInId">
<el-option v-for="(item ,index) in availableWarehouse" :value="item.id" :label="item.titleZh" :key="index"></el-option>
</el-select>
</div>
</div> </div>
<div style="width: 200px;"> <el-divider></el-divider>
<el-select v-model="params.warehouseInId"> <h1 class="title">
<el-option v-for="(item ,index) in availableWarehouse" :value="item.id" :label="item.titleZh" :key="index"></el-option> 审批流程
</el-select> </h1>
<div style="padding: 20px">
<work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId" />
</div> </div>
<div style="text-align: center">
<el-button style="margin-right: 50px" v-if="adjustmentBol" >审核中</el-button>
<el-button v-else style="margin-right: 50px" @click="submit" :disabled="isSubmit">提交申请</el-button>
<el-button @click="$emit('update:dialogVisible',false)">取消</el-button>
</div>
<!-- <warehouseDetails></warehouseDetails>-->
</div> </div>
<el-divider></el-divider> </el-dialog>
<h1 class="title">
审批流程
</h1>
<div style="padding: 20px">
<work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId" />
</div>
<div style="text-align: center">
<el-button style="margin-right: 50px" @click="submit" :disabled="isSubmit">提交申请</el-button>
<el-button @click="$router.push('/order/order')">取消</el-button>
</div>
<!-- <warehouseDetails></warehouseDetails>-->
</div>
</template> </template>
<script> <script>
...@@ -95,20 +115,30 @@ import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition"; ...@@ -95,20 +115,30 @@ import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails"; import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
import {getOrderPage} from "@/api/ecw/order"; import {getOrderPage} from "@/api/ecw/order";
import workFlow from "@/components/WorkFlow"; import workFlow from "@/components/WorkFlow";
import Template from "@/views/cms/template";
export default { export default {
name: "batchSingleApplication", name: "batchSingleApplication",
props:{ props:{
orderList:String, orderList:[String,Number],
dialogVisible:{
type:Boolean,
default:false,
}
}, },
components:{ components:{
Template,
warehouseDetails, warehouseDetails,
workFlow workFlow
}, },
created() { watch:{
getOrderPage({orderIdList:this.orderList}).then(r =>{ dialogVisible(val){
this.list = r.data.list if(val){
warehouseAdjustmentList({id:this.list[0].startWarehouseId}).then( r => this.availableWarehouse = r.data) getOrderPage({orderIdList:this.orderList}).then(r =>{
}) this.list = r.data.list
warehouseAdjustmentList({id:this.list[0].startWarehouseId}).then( r => this.availableWarehouse = r.data)
})
}
}
}, },
computed:{ computed:{
isSubmit(){ isSubmit(){
...@@ -120,6 +150,9 @@ export default { ...@@ -120,6 +150,9 @@ export default {
if(this.list.every(e => e.status === 5) && [...new Set(l)].length === 1) flag = false if(this.list.every(e => e.status === 5) && [...new Set(l)].length === 1) flag = false
} }
return flag; return flag;
},
adjustmentBol(){
return this.list.some(e => e.inWarehouseState === 10)
} }
}, },
data(){ data(){
...@@ -146,6 +179,7 @@ export default { ...@@ -146,6 +179,7 @@ export default {
this.params.orderNo = this.list[0].orderNo this.params.orderNo = this.list[0].orderNo
orderWarehouseInAdjustApply(this.params).then( r=>{ orderWarehouseInAdjustApply(this.params).then( r=>{
if(r.code === 0){ if(r.code === 0){
this.$emit('update:dialogVisible',false)
this.$message.success('调仓成功'); this.$message.success('调仓成功');
} }
}) })
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-form-item label="订单号" prop="field101"> <el-form-item label="订单号" prop="field101">
111 111
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="收货人" prop="field104"> <el-form-item label="收货人" prop="field104">
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
<el-form-item label="总控货箱数" prop="field105"> <el-form-item label="总控货箱数" prop="field105">
111 111
</el-form-item> </el-form-item>
<el-form-item label="原放货箱数" prop="field106"> <el-form-item label="原放货箱数" prop="field106">
111 111
</el-form-item> </el-form-item>
<el-form-item label="现放货箱数" prop="field106"> <el-form-item label="现放货箱数" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input> <el-input v-model="formData.cnt" placeholder=""></el-input>
</el-form-item> </el-form-item>
...@@ -32,22 +32,22 @@ ...@@ -32,22 +32,22 @@
<el-form-item label="备注" prop="field106"> <el-form-item label="备注" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input> <el-input v-model="formData.cnt" placeholder=""></el-input>
</el-form-item> </el-form-item>
<el-form-item label="控货手机号" prop="field106"> <el-form-item label="控货手机号" prop="field106">
13000000000 13000000000
</el-form-item> </el-form-item>
<el-form-item label="手机验证码" prop="field106"> <el-form-item label="手机验证码" prop="field106">
<el-input v-model="formData.cnt" placeholder="" style="width: 100px; margin-right:10px"></el-input> <el-input v-model="formData.cnt" placeholder="" style="width: 100px; margin-right:10px"></el-input>
<el-button type="default">获取验证码</el-button> <el-button type="default">获取验证码</el-button>
</el-form-item> </el-form-item>
<div class="title">审批流程</div> <div class="title">审批流程</div>
<work-flow bmpkey="free_apple" /> <work-flow bmpkey="free_apple" />
<el-form-item label=""> <el-form-item label="">
<el-button type="primary" @click="$alert('// TODO')">提交申请</el-button> <el-button type="primary" @click="$alert('// TODO')">提交申请</el-button>
<el-button @click="closeDialog">关闭</el-button> <el-button @click="closeDialog">关闭</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div v-else> <div v-else>
<release-agreement /> <release-agreement />
...@@ -86,13 +86,13 @@ export default { ...@@ -86,13 +86,13 @@ export default {
}, },
methods:{ methods:{
loadData(){ loadData(){
}, },
closeDialog(){ closeDialog(){
this.show = false this.show = false
this.$emit('close'); this.$emit('close');
}, },
} }
} }
</script> </script>
...@@ -110,4 +110,4 @@ export default { ...@@ -110,4 +110,4 @@ export default {
margin-right:10px; margin-right:10px;
} }
} }
</style> </style>
\ No newline at end of file
<template> <template>
<div class="fee-application"> <el-dialog :visible.sync="dialogVisible" width="80%" :before-close="()=>{
<h1>费用申请-{{orderDetails.orderNo}} $emit('update:dialogVisible',false)
</h1> }">
<el-divider></el-divider> <div class="fee-application">
<el-form label-width="100px" inline> <h1>费用申请-{{orderDetails.orderNo}}
<el-form-item label="订单号:"><div class="content"> </h1>
<el-divider></el-divider>
<el-form label-width="100px" inline>
<el-form-item label="订单号:"><div class="content">
{{orderDetails.orderNo}} {{orderDetails.orderNo}}
</div></el-form-item> </div></el-form-item>
<el-form-item label="发货人:"><div class="content">{{orderDetails.consignorVO ? orderDetails.consignorVO.name :''}}</div></el-form-item> <el-form-item label="发货人:"><div class="content">{{orderDetails.consignorVO ? orderDetails.consignorVO.name :''}}</div></el-form-item>
<el-form-item label="唛头"><div class="content">{{orderDetails.marks}}</div></el-form-item> <el-form-item label="唛头"><div class="content">{{orderDetails.marks}}</div></el-form-item>
<el-form-item> <el-button @click="addCost">添加申请</el-button></el-form-item> <el-form-item> <el-button @click="addCost">添加申请</el-button></el-form-item>
</el-form> </el-form>
<el-table :data="list"> <el-table :data="list">
<el-table-column label="序号" type="index"></el-table-column> <el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="费用类型"> <el-table-column label="费用类型">
<template v-slot:default = "scope"> <template v-slot:default = "scope">
<dict-selector :disabled="isModify[forbidden(scope.row)]" :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" /> <dict-selector :disabled="isModify[forbidden(scope.row)]" :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="金额"> <el-table-column label="金额">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<el-input :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.applicationFee" ></el-input> <el-input :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.applicationFee" ></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="货币类型"> <el-table-column label="货币类型">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<dict-selector :disabled="isModify[forbidden(scope.row)]" :type="DICT_TYPE.COMMISSION_CURRENCY_TYPE" v-model="scope.row.applicationFeeCurrency" /> <dict-selector :disabled="isModify[forbidden(scope.row)]" :type="DICT_TYPE.COMMISSION_CURRENCY_TYPE" v-model="scope.row.applicationFeeCurrency" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="付款类型"> <el-table-column label="付款类型">
<template v-slot = {row}> <template v-slot = {row}>
<dict-selector :disabled="isModify[forbidden(row)]" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" /> <dict-selector :disabled="isModify[forbidden(row)]" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注"> <el-table-column label="备注">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-input :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.remarks" type="textarea"></el-input> <el-input :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.remarks" type="textarea"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="确认收款"> <el-table-column label="确认收款">
<template v-slot:default ="scope"> <template v-slot:default ="scope">
<dict-tag :type="DICT_TYPE.RECEIVE_FLAG" :value="scope.row.receiveFlag" /> <dict-tag :type="DICT_TYPE.RECEIVE_FLAG" :value="scope.row.receiveFlag" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="申请人"> <el-table-column label="申请人">
<template v-slot:default ="scope"> <template v-slot:default ="scope">
{{scope.row.status === 0 ?'未提交': scope.row.applicationAuthor}} {{scope.row.status === 0 ?'未提交': scope.row.applicationAuthor}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作"> <el-table-column label="操作">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<el-button type="text" v-if="scope.row.status !== 0">{{STATUS[scope.row.status]}}</el-button> <el-button type="text" v-if="scope.row.status !== 0">{{STATUS[scope.row.status]}}</el-button>
<el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">修改</el-button> <el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">修改</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="padding: 20px"> <div style="padding: 20px">
<work-flow xmlkey="free_apply" v-model="selectedUsers" /> <work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div> </div>
<div style="text-align: center;margin-top: 20px;"> <div style="text-align: center;margin-top: 20px;">
<el-button style="margin-right: 30px;" @click="submit">提交</el-button> <el-button style="margin-right: 30px;" @click="submit">提交</el-button>
<el-button>取消</el-button> <el-button>取消</el-button>
</div>
</div> </div>
</div> </el-dialog>
</template> </template>
<script> <script>
...@@ -75,6 +80,10 @@ export default { ...@@ -75,6 +80,10 @@ export default {
components: {Template,workFlow}, components: {Template,workFlow},
props:{ props:{
orderId:[Number, String], orderId:[Number, String],
dialogVisible:{
type:Boolean,
default:false,
}
}, },
data(){ data(){
return { return {
...@@ -89,12 +98,6 @@ export default { ...@@ -89,12 +98,6 @@ export default {
} }
}, },
created() { created() {
getOrder(this.orderId).then(r =>{
if(r.code === 0){
this.orderDetails = r.data
}
})
this.getOrderList()
this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{ this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{
this.STATUS[e.value] = e.label this.STATUS[e.value] = e.label
}) })
...@@ -128,11 +131,10 @@ export default { ...@@ -128,11 +131,10 @@ export default {
this.isModifyIf = false; this.isModifyIf = false;
}, },
submit(){ submit(){
if(this.isModifyIf){ if(this.isModifyIf){
applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => { applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => {
if(r.code === 0){ if(r.code === 0){
this.getOrderList(); this.$emit('update:dialogVisible',false)
this.$message.success('修改成功'); this.$message.success('修改成功');
} }
}) })
...@@ -140,7 +142,7 @@ export default { ...@@ -140,7 +142,7 @@ export default {
if(this.list[this.list.length - 1].status === 0){ if(this.list[this.list.length - 1].status === 0){
feeApplicationCreate( {...this.list[this.list.length - 1],status:1,copyUserId:this.selectedUsers}).then(r=>{ feeApplicationCreate( {...this.list[this.list.length - 1],status:1,copyUserId:this.selectedUsers}).then(r=>{
if(r.code === 0){ if(r.code === 0){
this.getOrderList(); this.$emit('update:dialogVisible',false)
this.$message.success('添加成功'); this.$message.success('添加成功');
this.selectedUsers = []; this.selectedUsers = [];
} }
...@@ -163,6 +165,18 @@ export default { ...@@ -163,6 +165,18 @@ export default {
this.isModifyIf = true; this.isModifyIf = true;
this.$set(this.isModify, this.list.findIndex(e => e.id = row.id), false ) this.$set(this.isModify, this.list.findIndex(e => e.id = row.id), false )
}, },
},
watch:{
dialogVisible(val){
if(val){
this.getOrderList()
getOrder(this.orderId).then(r =>{
if(r.code === 0){
this.orderDetails = r.data
}
})
}
},
} }
} }
</script> </script>
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
v-hasPermi="['ecw:order:create']">新增</el-button> v-hasPermi="['ecw:order:create']">新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" :disabled="multiple">批量调仓 <el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" :disabled="!batchWarehouseAdjustment">批量调仓
</el-button> </el-button>
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="showBatchPickup=true">批量提货 <el-button type="primary" plain icon="el-icon-setting" size="mini" @click="showBatchPickup=true">批量提货
</el-button> </el-button>
...@@ -169,7 +169,7 @@ ...@@ -169,7 +169,7 @@
<el-button v-if="scope.row.status < 5" size="mini" type="text" icon="el-icon-delete" @click="oprateOrder(scope.row.orderId, 'cancelOrder')">取消订单</el-button> <el-button v-if="scope.row.status < 5" size="mini" type="text" icon="el-icon-delete" @click="oprateOrder(scope.row.orderId, 'cancelOrder')">取消订单</el-button>
<el-button v-if="scope.row.status == 88" size="mini" type="text" icon="el-icon-delete" @click="oprateOrder(scope.row.orderId, 'recoveryOrder')">恢复订单</el-button> <el-button v-if="scope.row.status == 88" size="mini" type="text" icon="el-icon-delete" @click="oprateOrder(scope.row.orderId, 'recoveryOrder')">恢复订单</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/fee-application/${scope.row.orderId}`)">费用申请</el-button> <el-button type="text" size="mini" @click="feeApplicationBol = true; orderId = scope.row.orderId">费用申请</el-button>
<el-button type="text" size="mini" @click="orderId = scope.row.orderId;isShow = true" >特需</el-button> <el-button type="text" size="mini" @click="orderId = scope.row.orderId;isShow = true" >特需</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/associated-order/${scope.row.orderId}`)" >关联</el-button> <el-button type="text" size="mini" @click="$router.push(`/order/associated-order/${scope.row.orderId}`)" >关联</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >互斥</el-button> <el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >互斥</el-button>
...@@ -203,7 +203,7 @@ ...@@ -203,7 +203,7 @@
v-hasPermi="['ecw:order:update']">入仓</el-button> v-hasPermi="['ecw:order:update']">入仓</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="show = true;orderId = scope.row.orderId; " <el-button size="mini" type="text" icon="el-icon-edit" @click="show = true;orderId = scope.row.orderId; "
v-hasPermi="['ecw:order:update']">退仓</el-button> v-hasPermi="['ecw:order:update']">退仓</el-button>
<el-button type="text" v-if="scope.row.status === 5" size="mini" @click="$router.push({path:'/order/batch-single-application',query:{list:scope.row.orderId}})" >调仓</el-button> <el-button type="text" size="mini" @click="orderId = scope.row.orderId;warehouseBol=true;">调仓</el-button>
<el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >调拨出仓</el-button> <el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >调拨出仓</el-button>
<el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >调拨到仓</el-button> <el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >调拨到仓</el-button>
</div> </div>
...@@ -241,6 +241,8 @@ ...@@ -241,6 +241,8 @@
<print-lading-bill v-if="printLadingBillInfo !== null" v-bind="printLadingBillInfo" @close="printLadingBillInfo=null" /> <print-lading-bill v-if="printLadingBillInfo !== null" v-bind="printLadingBillInfo" @close="printLadingBillInfo=null" />
<batch-pickup v-if="showBatchPickup" @close="showBatchPickup=false"/> <batch-pickup v-if="showBatchPickup" @close="showBatchPickup=false"/>
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal> <withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal>
<batch-single-application :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
<fee-application :order-id="orderId" :dialog-visible.sync="feeApplicationBol"></fee-application>
</div> </div>
</template> </template>
...@@ -270,10 +272,14 @@ import PrintLadingBill from './components/PrintLadingBill' ...@@ -270,10 +272,14 @@ import PrintLadingBill from './components/PrintLadingBill'
import BatchPickup from './components/BatchPickup' import BatchPickup from './components/BatchPickup'
import withdrawal from "@/views/ecw/order/withdrawal"; import withdrawal from "@/views/ecw/order/withdrawal";
import UserSelector from '@/components/UserSelector' import UserSelector from '@/components/UserSelector'
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication";
import FeeApplication from "@/views/ecw/order/feeApplication";
export default { export default {
name: "Order", name: "Order",
components: { components: {
UserSelector, UserSelector,
FeeApplication,
BatchSingleApplication,
CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal
}, },
props: { props: {
...@@ -355,7 +361,9 @@ export default { ...@@ -355,7 +361,9 @@ export default {
getDictDatas */ getDictDatas */
adjustmentList:[], adjustmentList:[],
show:false, show:false,
warehouseBol:false,//调仓申请
feeApplicationBol:false,//费用申请
multipleSelection:[]
}; };
}, },
computed: { computed: {
...@@ -372,7 +380,11 @@ export default { ...@@ -372,7 +380,11 @@ export default {
timeParams['end' + this.dateFilterType] = this.dateFilter[1] timeParams['end' + this.dateFilterType] = this.dateFilter[1]
} }
return Object.assign({}, this.queryParams, timeParams) return Object.assign({}, this.queryParams, timeParams)
} },
batchWarehouseAdjustment(){
return this.multipleSelection.length > 0 && this.multipleSelection.every(e => e.status === 5)
},
}, },
created() { created() {
this.getList(); this.getList();
...@@ -460,15 +472,14 @@ export default { ...@@ -460,15 +472,14 @@ export default {
}, },
// 表格多选 // 表格多选
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.multipleSelection = selection
this.ids = selection.map(item => item.orderId) this.ids = selection.map(item => item.orderId)
this.single = selection.length !== 1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
handleEdit() { handleEdit() {
this.$router.push({ this.warehouseBol = true
path:'/order/batch-single-application', this.orderId = this.ids.join(',')
query:{list:this.ids.join(',')}
})
}, },
moleculeChange() { }, moleculeChange() { },
denominatorChange() { }, denominatorChange() { },
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<el-divider content-position="left"> <el-divider content-position="left">
货物信息 货物信息
</el-divider> </el-divider>
<el-table :data="orderDetails.orderItemVOList ? orderDetails.orderItemVOList : [] "> <el-table :data=" orderDetails.orderItemVOList && orderDetails.orderItemVOList.length > 0 ? orderDetails.orderItemVOList : [] ">
<el-table-column type="index" label="序号"></el-table-column> <el-table-column type="index" label="序号"></el-table-column>
<el-table-column label="品名"> <el-table-column label="品名">
<template v-slot="{row}"> <template v-slot="{row}">
...@@ -31,16 +31,20 @@ ...@@ -31,16 +31,20 @@
<template v-slot="{row}"> <template v-slot="{row}">
<el-descriptions size="mini" :column="4"> <el-descriptions size="mini" :column="4">
<el-descriptions-item label="品牌">{{ row.brand }}</el-descriptions-item> <el-descriptions-item label="品牌">{{ row.brand }}</el-descriptions-item>
<el-descriptions-item label="箱数"> {{ row.warehouseInInfoVO.cartonsNum }}</el-descriptions-item> <el-descriptions-item label="箱数"> {{ row.warehouseInInfoVO ? row.warehouseInInfoVO.cartonsNum :'' }}</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.warehouseInInfoVO.volume }}</el-descriptions-item> <el-descriptions-item label="体积">{{ row.warehouseInInfoVO ? row.warehouseInInfoVO.volume :'' }}</el-descriptions-item>
<el-descriptions-item label="重量"> {{ row.warehouseInInfoVO.weight }}</el-descriptions-item> <el-descriptions-item label="重量"> {{row.warehouseInInfoVO ? row.warehouseInInfoVO.weight : '' }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="最后操作时间"></el-table-column> <el-table-column label="最后操作时间">
<template v-slot="{row}">
{{parseTime(row.createTime)}}
</template>
</el-table-column>
<el-table-column label="状态"> <el-table-column label="状态">
<template v-slot="{row}"> <template v-slot="{row}">
<dict-tag :value="row.warehouseInInfoVO.diffType" :type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS"/> <dict-tag :value=" row.warehouseInInfoVO ? row.warehouseInInfoVO.diffType :''" :type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -49,12 +53,12 @@ ...@@ -49,12 +53,12 @@
</el-divider> </el-divider>
<el-table :data="warehouseList" v-if="type == 2"> <el-table :data="warehouseList" v-if="type == 2">
<el-table-column label="调仓编号" prop="id"></el-table-column> <el-table-column label="调仓编号" prop="id"></el-table-column>
<el-table-column label="调出仓库" prop="warehouseOutId" ></el-table-column> <el-table-column label="调出仓库" prop="warehouseOutName" ></el-table-column>
<el-table-column label="调入仓库" prop="warehouseInId"></el-table-column> <el-table-column label="调入仓库" prop="warehouseInName"></el-table-column>
<el-table-column label="申请人"></el-table-column> <el-table-column label="申请人" prop="creator"></el-table-column>
<el-table-column label="申请时间"> <el-table-column label="申请时间">
<template v-slot="{row}"> <template v-slot="{row}">
{{parseTime(row.createTime)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态"> <el-table-column label="状态">
...@@ -72,7 +76,9 @@ ...@@ -72,7 +76,9 @@
</el-table> </el-table>
<el-descriptions style="margin-top: 20px" :column="4" border> <el-descriptions style="margin-top: 20px" :column="4" border>
<el-descriptions-item label="集运仓库">{{ warehouseDetails.warehouseOutName }}</el-descriptions-item> <el-descriptions-item label="集运仓库">{{ warehouseDetails.warehouseOutName }}</el-descriptions-item>
<el-descriptions-item label="储位">{{}}</el-descriptions-item> <el-descriptions-item label="储位">
<div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName}}</div><div>{{item.regionName}} 区</div></div>
</el-descriptions-item>
<el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInName }}</el-descriptions-item> <el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInName }}</el-descriptions-item>
<el-descriptions-item label="物流公司"> <el-descriptions-item label="物流公司">
<el-select v-model="params.logisticsCompany" > <el-select v-model="params.logisticsCompany" >
...@@ -110,7 +116,7 @@ ...@@ -110,7 +116,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div> <div>
<el-button v-if="type === 1" @click="submit">确认出仓</el-button> <el-button v-if="type == 1" @click="submit">确认出仓</el-button>
<el-button v-else @click="submit2">确认到仓</el-button> <el-button v-else @click="submit2">确认到仓</el-button>
<el-button @click="$router.back()">返回</el-button> <el-button @click="$router.back()">返回</el-button>
</div> </div>
...@@ -120,6 +126,7 @@ ...@@ -120,6 +126,7 @@
<script> <script>
import ordeDetailsForm from "@/views/ecw/order/components/ordeDetailsForm"; import ordeDetailsForm from "@/views/ecw/order/components/ordeDetailsForm";
import { import {
getAdjustInfo,
getOrder, listByOrderId, getOrder, listByOrderId,
orderWarehouseInGetAdjustInfo, orderWarehouseInGetAdjustInfo,
orderWarehousePicturePage, warehouseAdjustArrived, warehouseAdjustPage, orderWarehousePicturePage, warehouseAdjustArrived, warehouseAdjustPage,
...@@ -129,6 +136,7 @@ import Template from "@/views/cms/template"; ...@@ -129,6 +136,7 @@ import Template from "@/views/cms/template";
import {DICT_TYPE} from '@/utils/dict'; import {DICT_TYPE} from '@/utils/dict';
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index"; import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index";
import {getSupplierPage} from "@/api/ecw/supplier"; import {getSupplierPage} from "@/api/ecw/supplier";
import {getByWarehouseId} from "@/api/ecw/warehouseArea";
let STATUS = {1:'审核中', 2:'已通过', 3:'已拒绝', 4:'已出仓', 5:'已到仓'} let STATUS = {1:'审核中', 2:'已通过', 3:'已拒绝', 4:'已出仓', 5:'已到仓'}
export default { export default {
name: "transferWarehousing", name: "transferWarehousing",
...@@ -157,7 +165,8 @@ export default { ...@@ -157,7 +165,8 @@ export default {
phone: "", phone: "",
urls: [] urls: []
}, },
expressList:[] expressList:[],
storageSpaceList:[],
} }
}, },
created() { created() {
...@@ -171,14 +180,33 @@ export default { ...@@ -171,14 +180,33 @@ export default {
} }
}) })
if(this.type == 2){ if(this.type == 2){
warehouseAdjustPage({rows:100,orderId:this.orderId}).then(r => { getAdjustInfo({orderId:this.orderId,lang:0}).then(r => {
this.warehouseList = r.data.list this.warehouseList = r.data
}) })
} }
orderWarehouseInGetAdjustInfo({orderId: this.orderId, lang: 0}).then(r => { orderWarehouseInGetAdjustInfo({orderId: this.orderId, lang: 0}).then(r => {
this.warehouseDetails = r.data[0] this.warehouseDetails = r.data[0]
listByOrderId({orderId:this.orderId}).then(r => { listByOrderId({orderId:this.orderId}).then(res => {
console.log(r,'r') if(res.code === 0){
getByWarehouseId().then(r =>{
let obj = [];
res.data.forEach(item => {
r.data.forEach(itemm => {
if(item.wareId === itemm.id){
itemm.children.forEach(itemmm => {
if(itemmm.id === item.areaId){
obj.push({
warehouseName:itemm.name,
regionName:itemmm.name
})
}
})
}
})
})
this.storageSpaceList = obj;
})
}
}) })
this.params.phone = this.warehouseDetails.phone; this.params.phone = this.warehouseDetails.phone;
this.params.logisticsNo = this.warehouseDetails.logisticsNo; this.params.logisticsNo = this.warehouseDetails.logisticsNo;
...@@ -205,12 +233,10 @@ export default { ...@@ -205,12 +233,10 @@ export default {
}, },
submit2(){ submit2(){
warehouseAdjustArrived(this.params).then(r => { warehouseAdjustArrived(this.params).then(r => {
{
if(r.code === 0){ if(r.code === 0){
this.$message.success('调到仓成功'); this.$message.success('调到仓成功');
this.$router.back(); this.$router.back();
} }
}
}) })
} }
}, },
......
...@@ -103,14 +103,16 @@ ...@@ -103,14 +103,16 @@
<div style="text-align: center">在完成入仓前,您还可以</div> <div style="text-align: center">在完成入仓前,您还可以</div>
<div style="text-align: center;padding: 15px 0"> <div style="text-align: center;padding: 15px 0">
<el-button type="info" @click="areaVisible = true">选择储位</el-button> <el-button type="info" @click="areaVisible = true">选择储位</el-button>
<el-button type="info" @click="isShowPrint = true">打印标签</el-button> <el-button type="info" @click="isShowPrintTag = true">打印标签</el-button>
</div> </div>
<div style="text-align: center"> <div style="text-align: center">
<el-button type="primary" @click="handleSubmit()">确 定</el-button> <el-button type="primary" @click="handleSubmit()">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<print-tag v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false"></print-tag> <print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag>
<print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" />
</div> </div>
</template> </template>
...@@ -128,6 +130,7 @@ import WarehouseAreaDialog from '@/components/WarehouseAreaDialog' ...@@ -128,6 +130,7 @@ import WarehouseAreaDialog from '@/components/WarehouseAreaDialog'
import editDialog from '@/views/ecw/order/warehousing/components/editDialog' import editDialog from '@/views/ecw/order/warehousing/components/editDialog'
import {DICT_TYPE} from "@/utils/dict" import {DICT_TYPE} from "@/utils/dict"
import PrintTag from "@/views/ecw/order/components/PrintTag" import PrintTag from "@/views/ecw/order/components/PrintTag"
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt"
export default { export default {
name: "Warehousing", name: "Warehousing",
...@@ -136,7 +139,8 @@ export default { ...@@ -136,7 +139,8 @@ export default {
orderBaseInfo, orderBaseInfo,
WarehouseAreaDialog, WarehouseAreaDialog,
editDialog, editDialog,
PrintTag PrintTag,
PrintWarehouseReceipt
}, },
mounted() { mounted() {
...@@ -166,6 +170,7 @@ export default { ...@@ -166,6 +170,7 @@ export default {
orderItemList: [], orderItemList: [],
specialList: [], specialList: [],
warehousing: undefined, warehousing: undefined,
isShowPrintTag: false,
isShowPrint: false isShowPrint: false
} }
}, },
...@@ -182,10 +187,12 @@ export default { ...@@ -182,10 +187,12 @@ export default {
'该订单已成功入仓,是否打印?', '该订单已成功入仓,是否打印?',
'货物已入仓', '货物已入仓',
{ {
confirmButtonClass: '', confirmButtonText: '',
cancelButtonText: '' cancelButtonText: ''
} }
).then().catch(() => { ).then(() => {
this.isShowPrint = true
}).catch(() => {
// this.$store.dispatch('tagsView/delVisitedView') // this.$store.dispatch('tagsView/delVisitedView')
this.$message.success('入仓成功') this.$message.success('入仓成功')
}) })
......
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="需知类型" prop="knowType">
<el-select v-model="queryParams.knowType" placeholder="请选择需知类型" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.NEED_KNOW_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="标题中文" prop="titleZh">
<el-input v-model="queryParams.titleZh" placeholder="请输入标题中文" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="标题英文" prop="titleEn">
<el-input v-model="queryParams.titleEn" placeholder="请输入标题英文" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.NEED_KNOW_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:need-know:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['system:need-know:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="" align="center" prop="id" />
<el-table-column label="需知类型" align="center" prop="knowType">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.NEED_KNOW_TYPE" :value="scope.row.knowType" />
</template>
</el-table-column>
<el-table-column label="标题中文" align="center" prop="titleZh" />
<el-table-column label="标题英文" align="center" prop="titleEn" />
<el-table-column label="内容中文" align="center" prop="contentZh" />
<el-table-column label="内容英语" align="center" prop="contentEn" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.NEED_KNOW_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:need-know:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:need-know:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="需知类型" prop="knowType">
<el-select v-model="form.knowType" placeholder="请选择需知类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.NEED_KNOW_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="标题中文" prop="titleZh">
<el-input v-model="form.titleZh" placeholder="请输入标题中文" />
</el-form-item>
<el-form-item label="标题英文" prop="titleEn">
<el-input v-model="form.titleEn" placeholder="请输入标题英文" />
</el-form-item>
<el-form-item label="内容中文" prop="contentZh">
<editor v-model="form.contentZh" :min-height="192" placeholder="请输入内容中文"/>
</el-form-item>
<el-form-item label="内容英语" prop="contentEn">
<editor v-model="form.contentEn" :min-height="192" placeholder="plese entry english"/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in this.getDictDatas(DICT_TYPE.NEED_KNOW_STATUS)"
:key="dict.value" :label="parseInt(dict.value)">{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { createNeedKnow, updateNeedKnow, deleteNeedKnow, getNeedKnow, getNeedKnowPage, exportNeedKnowExcel } from "@/api/system/needKnow";
import Editor from '@/components/Editor';
export default {
name: "NeedKnow",
components: {
Editor
},
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 需知列表
list: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
knowType: null,
titleZh: null,
titleEn: null,
status: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询
getNeedKnowPage(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
knowType: undefined,
titleZh: undefined,
titleEn: undefined,
contentZh: undefined,
contentEn: undefined,
status: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加需知";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getNeedKnow(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改需知";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
// 修改的提交
if (this.form.id != null) {
updateNeedKnow(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
// 添加的提交
createNeedKnow(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除需知编号为"' + id + '"的数据项?').then(function() {
return deleteNeedKnow(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this.$modal.confirm('是否确认导出所有需知数据项?').then(() => {
this.exportLoading = true;
return exportNeedKnowExcel(params);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script>
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