Commit b383e324 authored by liuzeheng's avatar liuzeheng

Merge branch 'dev'

# Conflicts:
#	src/i18n/languages/zh_CN.json
#	src/views/ecw/order/feeApplication.vue
parents 39f4974a 7d155129
...@@ -1056,3 +1056,11 @@ export function getOrderWarehouseDeleted(orderId,orderItem){ ...@@ -1056,3 +1056,11 @@ export function getOrderWarehouseDeleted(orderId,orderItem){
}) })
} }
export function getRegionList(type,regionId){
return request({
url:'/ecw/warehouse/getRegionList?type='+type+'&regionId='+regionId,
method: 'get',
})
}
\ No newline at end of file
...@@ -159,3 +159,13 @@ export function batchAddPriceAir(data) { ...@@ -159,3 +159,13 @@ export function batchAddPriceAir(data) {
data data
}) })
} }
//从商品列表中某一商品进入复制价格
export function copyPriceByProductIds(data){
return request({
url:'/ecw/product-price/copyPriceByProductIds',
method:'post',
data:data
})
}
import request from '@/utils/request'
//报表权限 lanbm 2024-04-15 add
export function create(data) {
return request({
url: '/Report/EcwReportPermission/create',
method: 'post',
data: data
})
}
export function update(data) {
return request({
url: '/Report/EcwReportPermission/update',
method: 'post',
data: data
})
}
export function del(id) {
return request({
url: '/Report/EcwReportPermission/delete?id=' + id,
method: 'get'
})
}
export function getModel(id) {
return request({
url: '/Report/EcwReportPermission/get?id=' + id,
method: 'get'
})
}
//获取当前用户的报表权限 lanbm 2024-05-15 add
export function getCurUserPermission() {
return request({
url: '/Report/EcwReportPermission/getCurUserPermission',
method: 'get'
})
}
export function getPageList(query) {
return request({
url: '/Report/EcwReportPermission/page',
method: 'get',
params: query
})
}
export function exportExcel(query) {
return request({
url: '/Report/EcwReportPermission/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
//lanbm 2024-04-19 add
//获取指定部门的子部门
export function getDeptChild(query) {
return request({
url: '/Report/SysDeptEx/getDeptChild',
method: 'get',
params: query
})
}
//根据部门过滤客户经理 2024-04-27
export function listServiceUser(query) {
return request({
url: '/Report/SysDeptEx/listServiceUser',
method: 'get',
params: query
})
}
import request from '@/utils/request'
// 获得测试分页
export function getListPage(data) {
return request({
url: '/Report/CustomerAnalysis/getListPage',
method: 'post',
data
})
}
// 导出测试 Excel -2024-04-27
export function exportExcel(data) {
return request({
url: '/Report/CustomerAnalysis/exportExcel',
method: 'get',
params: data,
responseType: 'blob'
})
}
import request from '@/utils/request'
//lanbm 2024-03-31 add
//获取报表统计结果
export function getReportResult(data) {
return request({
url: '/Report/CustomerReport/getPageList',
method: 'post',
data
})
}
export function getBarData(data) {
return request({
url: '/Report/CustomerReport/getBarData',
method: 'post',
data: data
})
}
// 导出测试 Excel 2024-04-27
export function exportExcel(query) {
return request({
url: '/Report/CustomerReport/exportExcel',
method: 'get',
params: query,
responseType: 'blob'
})
}
import request from '@/utils/request'
export function getListPage(query) {
return request({
url: '/Report/SalesAnalysis/getListPage',
method: 'get',
params: query
})
}
//销售分析数据导出 Excel 2024-04-27
export function exportExcel(query) {
return request({
url: '/Report/SalesAnalysis/exportExcel',
method: 'get',
params: query,
responseType: 'blob'
})
}
import request from '@/utils/request'
//查询运输方式体积货重量 lanbm 2024-04-01 add
export function SalesReportCount(data) {
return request({
url: '/Report/SalesReport/SalesReportCount',
method: 'post',
data: data
})
}
//查询首次成交客户数量 lanbm 2024-04-01 add
export function FirstCustomerCount(data) {
return request({
url: '/Report/SalesReport/FirstCustomerCount',
method: 'post',
data: data
})
}
//销售分析统计列表 lanbm 2024-04-01 add
export function SalesReportList(data) {
return request({
url: '/Report/SalesReport/SalesReportList',
method: 'post',
data: data
})
}
// 导出测试 Excel 2024-04-27
export function exportTestExcel(query) {
return request({
url: '/SalesReport/test/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
import request from '@/utils/request'
//报表V值设置参数 lanbm 2024-04-03 add
export function create(data) {
return request({
url: '/ecwVz/vz/create',
method: 'post',
data: data
})
}
export function update(data) {
return request({
url: '/ecwVz/vz/update',
method: 'post',
data: data
})
}
export function del(id) {
return request({
url: '/ecwVz/vz/delete?id=' + id,
method: 'get'
})
}
export function getModel(id) {
return request({
url: '/ecwVz/vz/get?id=' + id,
method: 'get'
})
}
//2024-04-27
export function getPageList(query) {
return request({
url: '/ecwVz/vz/page',
method: 'get',
params: query
})
}
export function exportExcel(query) {
return request({
url: '/ecwVz/vz/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
This diff is collapsed.
<template>
<el-row :gutter="40" class="panel-group" v-if="data">
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="checkPermi(['member:user']) ? $router.push('/member/member-user') : $alert($t('暂无权限'))">
<div class="card-panel-icon-wrapper icon-people">
<svg-icon icon-class="peoples" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
{{$t('业绩总览')}}
</div>
<count-to :start-val="0" :end-val="data.memberCount" :duration="2600" class="card-panel-num" />
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="$router.push('/system/internalMessage/my-internal-message?status=0')">
<div class="card-panel-icon-wrapper icon-message">
<svg-icon icon-class="message" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
{{$t('海运拼柜')}}
</div>
<count-to :start-val="0" :end-val="data.messageCount" :duration="3000" class="card-panel-num" />
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="$router.push('/system/internalMessage/my-internal-message?status=0')">
<div class="card-panel-icon-wrapper icon-message">
<svg-icon icon-class="message" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
{{$t('专线空运')}}
</div>
<count-to :start-val="0" :end-val="data.messageCount" :duration="3000" class="card-panel-num" />
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="$router.push('/task/todo')">
<div class="card-panel-icon-wrapper icon-money">
<svg-icon icon-class="date" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
{{$t('客户成交总览')}}
</div>
<count-to :start-val="0" :end-val="todoCount" :duration="3200" class="card-panel-num" />
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="$router.push('/order/mine')">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
{{$t('首次成交')}}
</div>
<count-to :start-val="0" :end-val="data.messageCount" :duration="3600" class="card-panel-num" />
</div>
</div>
</el-col>
</el-row>
</template>
<script>
import CountTo from 'vue-count-to'
import {panelData} from '@/api/system/pannel'
import {checkPermi} from '@/utils/permission'
import {taskTodoCount} from '@/api/bpm/task'
export default {
components: {
CountTo
},
props:['data1', 'data2'],
data(){
return {
data: null,
todoCount: 0
}
},
methods: {
handleSetLineChartData(type) {
this.$emit('handleSetLineChartData', type)
},
checkPermi
},
created(){
panelData().then(res => {
this.data = res.data
})
taskTodoCount().then(res => {
this.todoCount = res.data
})
}
}
</script>
<style lang="scss" scoped>
.panel-group {
margin-top: 5px;
.card-panel-col {
margin-bottom: 8px;
}
.card-panel {
display: flex;
justify-content: space-between;
height: 108px;
cursor: pointer;
font-size: 12px;
position: relative;
overflow: hidden;
color: #666;
background: #fff;
box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
border-color: rgba(0, 0, 0, .05);
&:hover {
.card-panel-icon-wrapper {
color: #fff;
}
.icon-people {
background: #40c9c6;
}
.icon-message {
background: #36a3f7;
}
.icon-money {
background: #f4516c;
}
.icon-shopping {
background: #34bfa3
}
}
.icon-people {
color: #40c9c6;
}
.icon-message {
color: #36a3f7;
}
.icon-money {
color: #f4516c;
}
.icon-shopping {
color: #34bfa3
}
.card-panel-icon-wrapper {
margin: 14px 0 0 14px;
padding: 5px;
transition: all 0.38s ease-out;
border-radius: 6px;
}
.card-panel-icon {
font-size: 48px;
}
.card-panel-description {
font-weight: bold;
margin: 5px;
margin-left: 0px;
.card-panel-text {
line-height: 18px;
color: rgba(0, 0, 0, 0.45);
font-size: 16px;
margin-bottom: 12px;
}
.card-panel-num {
font-size: 20px;
}
}
}
}
@media (max-width:550px) {
.card-panel-description {
display: none;
}
.card-panel-icon-wrapper {
float: none !important;
width: 100%;
height: 100%;
margin: 0 !important;
.svg-icon {
display: block;
margin: 14px auto !important;
float: none !important;
}
}
}
</style>
...@@ -232,7 +232,7 @@ import updateError from "./updateError.vue"; ...@@ -232,7 +232,7 @@ import updateError from "./updateError.vue";
import { listUser } from "@/api/system/user"; import { listUser } from "@/api/system/user";
export default { export default {
name: "boxDetail", name: "EcwBoxQuery",
props: { props: {
shipmentId: String, shipmentId: String,
}, },
......
...@@ -176,6 +176,8 @@ ...@@ -176,6 +176,8 @@
<el-button :disabled="scope.row.isInOpenSea" v-has-permi="[selectAuthorityFn('ecw:customer:postpone')]" size="mini" type="text" icon="el-icon-user" @click="delay(scope.row)">{{$t('延期')}}</el-button> <el-button :disabled="scope.row.isInOpenSea" v-has-permi="[selectAuthorityFn('ecw:customer:postpone')]" size="mini" type="text" icon="el-icon-user" @click="delay(scope.row)">{{$t('延期')}}</el-button>
<el-button v-has-permi="['ecw:customer:treat-recovery']" v-if="scope.row.customerService !== null && scope.row.customerServiceAssignedTime !== null && !scope.row.isCustomerServiceConfirmed && !scope.row.isInOpenSea && path === '/customer/customer'" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button> <el-button v-has-permi="['ecw:customer:treat-recovery']" v-if="scope.row.customerService !== null && scope.row.customerServiceAssignedTime !== null && !scope.row.isCustomerServiceConfirmed && !scope.row.isInOpenSea && path === '/customer/customer'" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button>
<el-button v-has-permi="['ecw:customer:performanceType']" v-if="path === '/customer/customer'" size="mini" type="text" @click="dialogVisible = true; customData = scope.row;currentisNew = scope.row.isNew" > {{$t('业绩类型')}} </el-button> <el-button v-has-permi="['ecw:customer:performanceType']" v-if="path === '/customer/customer'" size="mini" type="text" @click="dialogVisible = true; customData = scope.row;currentisNew = scope.row.isNew" > {{$t('业绩类型')}} </el-button>
<el-button v-has-permi="[selectAuthorityFn('ecw:customer:treat-quoted-price')]" size="mini" type="text" icon="el-icon-user" @click="quote(scope.row)">{{$t('报价')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -786,6 +788,16 @@ export default { ...@@ -786,6 +788,16 @@ export default {
this.$refs.CustomerFollowList.customerFollow.dialogVisible = true; this.$refs.CustomerFollowList.customerFollow.dialogVisible = true;
}) })
}, },
//报价
quote(row){
//this.$router.push({path:'/offer/create',query:{id:row.id}})
this.$router.push({path:'/offer/create' , query:{customer:row,type:1}}).then({
//this.$refs.push({path:'/customer-contacts/select',query:{pageNo:1,pageSize:10,searchKey:row.defaultContactPhone}})
})
},
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单状态')" prop="status"> <el-form-item :label="$t('订单状态')" prop="status">
<dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status" <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"
@keyup.enter.native="handleQuery" clearable /> @keyup.enter.native="handleQuery" clearable @change="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('提单号')" prop="tidanNo"> <el-form-item :label="$t('提单号')" prop="tidanNo">
<el-input v-model="queryParams.tidanNo" :placeholder="$t('提单号')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.tidanNo" :placeholder="$t('提单号')" clearable @keyup.enter.native="handleQuery" />
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单类型')" prop="number"> <el-form-item :label="$t('订单类型')" prop="number">
<el-select v-model="queryParams.type" :placeholder="$t('请选择')" clearable > <el-select v-model="queryParams.type" :placeholder="$t('请选择')" clearable @change="handleQuery" >
<el-option :label="$t('普通订单')" :value="0"></el-option> <el-option :label="$t('普通订单')" :value="0"></el-option>
<el-option :label="$t('集运服务')" :value="1"></el-option> <el-option :label="$t('集运服务')" :value="1"></el-option>
<el-option :label="$t('海外仓')" :value="2"></el-option> <el-option :label="$t('海外仓')" :value="2"></el-option>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -117,13 +117,33 @@ ...@@ -117,13 +117,33 @@
</el-table-column> --> </el-table-column> -->
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="toPriceManager(scope.row)" v-hasPermi="['ecw:product-price:query']">{{$t('路线价格')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:product:update']">{{$t('修改')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:product:delete']">{{$t('删除')}}</el-button>
<el-button v-if="scope.row.auditStatus===2" size="mini" type="text" icon="el-icon-edit" @click="copyPrice(scope.row)" v-hasPermi="['ecw:product:copyPrice']">{{$t('复制价格')}}</el-button>
<!-- <div v-else>
<el-button size="mini" type="text" @click="toPriceManager(scope.row)" v-hasPermi="['ecw:product-price:query']">{{$t('路线价格')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:product:update']">{{$t('修改')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:product:delete']">{{$t('删除')}}</el-button>
</div> -->
<!-- <el-button v-else size="mini" type="text" icon="el-icon-edit" @click="copyPrice(scope.row)" v-hasPermi="['ecw:product:copyPrice']">{{$t('复制价格')}}</el-button> -->
</template>
<!-- <template v-else>
<el-button size="mini" type="text" @click="toPriceManager(scope.row)" v-hasPermi="['ecw:product-price:query']">{{$t('路线价格')}}</el-button> <el-button size="mini" type="text" @click="toPriceManager(scope.row)" v-hasPermi="['ecw:product-price:query']">{{$t('路线价格')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:product:update']">{{$t('修改')}}</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:product:update']">{{$t('修改')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:product:delete']">{{$t('删除')}}</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:product:delete']">{{$t('删除')}}</el-button>
</template>
</template> -->
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
...@@ -521,6 +541,10 @@ export default { ...@@ -521,6 +541,10 @@ export default {
}); });
}, },
//复制价格
copyPrice(row){
this.$router.push({path:'/product/copyPrice',query:{titleZh:row.titleZh,id:row.id}})
},
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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