Commit 80da72cf authored by liuzeheng's avatar liuzeheng
parents f34ae302 31d93922
......@@ -59,6 +59,15 @@ export function getCustomerContactsSelect(query) {
params: query
})
}
export function getCustomerContactsSelect2(query) {
return request({
url: '/ecw/customer-contacts/select2',
method: 'get',
params: query
})
}
// 导出客户联系人 Excel
export function exportCustomerContactsExcel(query) {
return request({
......
<template>
<el-dialog :title="$t('选择联系人')" visible :before-close="closeDialog" :close-on-click-modal="false">
<div class="header mb-10 flex-center">
<div class="flex-center">{{$t('关键字')}}</div>
<el-input v-model="form.searchKey" clearable class="w-200"></el-input>
<el-button type="primary" class="ml-10" @click="handleQuery">{{$t('搜索')}}</el-button>
</div>
<div class="list">
<div class="list-item" v-for="item in list" :key="item.customerContactsId" @click="choose(item)">
<div class="item-box">
<div class="line">
<div class="label">{{$t('姓名')}}</div>
<div class="value">{{item.contactsName}}</div>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{$t('姓名(英文)')}}</div>
<div class="value">{{item.contactsNameEn}}</div>
</div>
<div class="line">
<div class="label">{{$t('电话')}}</div>
<div class="value">+{{item.areaCode}} {{item.phoneNew}}</div>
</div>
<div class="line">
<div class="label">{{$t('邮箱')}}</div>
<div class="value">{{item.email}}</div>
</div>
<div class="line">
<div class="label">{{$t('公司')}}</div>
<div class="value">{{item.company}}</div>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{$t('公司(英文)')}}</div>
<div class="value">{{item.companyEn}}</div>
</div>
</div>
<el-dialog
:title="$t('选择联系人')"
visible
:before-close="closeDialog"
:close-on-click-modal="false"
>
<div class="header mb-10 flex-center">
<div class="flex-center">{{ $t("关键字") }}</div>
<el-input v-model="form.searchKey" clearable class="w-200"></el-input>
<el-button type="primary" class="ml-10" @click="handleQuery">{{
$t("搜索")
}}</el-button>
</div>
<div class="list">
<div
class="list-item"
v-for="item in list"
:key="item.customerContactsId"
@click="choose(item)"
>
<div class="item-box">
<div class="line">
<div class="label">{{ $t("姓名") }}</div>
<div class="value">{{ item.contactsName }}</div>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{
$t("")
}}</el-tag>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{ $t("姓名(英文)") }}</div>
<div class="value">{{ item.contactsNameEn }}</div>
</div>
<div class="line">
<div class="label">{{ $t("电话") }}</div>
<div class="value">+{{ item.areaCode }} {{ item.phoneNew }}</div>
</div>
<div class="line">
<div class="label">{{ $t("邮箱") }}</div>
<div class="value">{{ item.email }}</div>
</div>
<div class="line">
<div class="label">{{ $t("公司") }}</div>
<div class="value">{{ item.company }}</div>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{ $t("公司(英文)") }}</div>
<div class="value">{{ item.companyEn }}</div>
</div>
</div>
</div>
<pagination v-show="total > 0" :total="total" :page.sync="form.pageNo" :limit.sync="form.pageSize"
@pagination="loadList" />
</el-dialog>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="form.pageNo"
:limit.sync="form.pageSize"
@pagination="loadList"
/>
</el-dialog>
</template>
<script>
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts'
import {
getCustomerContactsSelect,
getCustomerContactsSelect2,
} from "@/api/ecw/customerContacts";
export default {
props:{
type: Number
props: {
type: Number,
},
data() {
return {
show: true,
form: {
pageNo: 1,
pageSize: 10,
searchKey: "",
},
list: [],
total: 0,
};
},
created() {
this.show = true;
this.loadList();
},
methods: {
handleQuery() {
this.form.pageNo = 1;
this.loadList();
},
data(){
return {
show: true,
form:{
pageNo: 1,
pageSize: 10,
searchKey: ''
},
list:[],
total: 0
}
loadList() {
//加载联系人数据,怎样使用属性
if (this.type == "1") {
getCustomerContactsSelect2(this.form).then((res) => {
this.list = res.data.list;
this.total = res.data.total;
});
} else {
getCustomerContactsSelect(this.form).then((res) => {
this.list = res.data.list;
this.total = res.data.total;
});
}
},
created(){
this.show = true
this.loadList()
closeDialog() {
this.show = false;
this.$emit("close");
},
methods:{
handleQuery(){
this.form.pageNo = 1
this.loadList()
},
loadList(){
getCustomerContactsSelect(this.form).then(res => {
this.list = res.data.list
this.total = res.data.total
})
},
closeDialog(){
this.show = false
this.$emit('close');
},
choose(contact){
this.$emit('choose', contact)
}
}
}
choose(contact) {
this.$emit("choose", contact);
},
},
};
</script>
<style lang="scss" scoped>
.header{
display: flex;
.header {
display: flex;
}
.list{
display: flex;
flex-wrap: wrap;
justify-content: center;
&-item{
background: #eee;
width: 300px;
margin: 10px;
padding: 5px;
border-radius: 10px;
border: 5px solid transparent;
background: linear-gradient(white,white) padding-box,repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0/5em 5em;
.item-box{
/* background: #fbfaf5; */
padding: 20px;
}
.line{
display: flex;
/* .label{
.list {
display: flex;
flex-wrap: wrap;
justify-content: center;
&-item {
background: #eee;
width: 300px;
margin: 10px;
padding: 5px;
border-radius: 10px;
border: 5px solid transparent;
background: linear-gradient(white, white) padding-box,
repeating-linear-gradient(
-45deg,
red 0,
red 12.5%,
transparent 0,
transparent 25%,
#58a 0,
#58a 37.5%,
transparent 0,
transparent 50%
)
0/5em 5em;
.item-box {
/* background: #fbfaf5; */
padding: 20px;
}
.line {
display: flex;
/* .label{
width: 100px;
} */
.value{
flex: 1;
margin-left: 10px;
}
}
.value {
flex: 1;
margin-left: 10px;
}
}
}
}
</style>
......@@ -224,6 +224,7 @@ import { getCabinetPage } from "@/api/ecw/cabinet";
import { getWarehouseList } from "@/api/ecw/warehouse";
import { getListTree } from "@/api/ecw/region";
import costForm from "./costForm.vue";
//异常登记对话框
import regError from "./regError.vue";
import editForm from "./editForm.vue";
import ladingBill from "./ladingBill/index.vue";
......
......@@ -228,6 +228,24 @@
:label="$t('报关费用')"
align="center"
></el-table-column>
<!--
<el-table-column
prop=""
:label="$t('异常操作')"
align="center"
width="120px"
>
lanbm 2024-05-23 添加异常登记功能
<template slot-scope="scope">
<el-button
type="primary"
size="small"
@click="() => updateStatus_2('single', scope.row)"
>{{ $t("异常登记") }}</el-button
>
</template>
</el-table-column>-->
<el-table-column
prop=""
:label="$t('操作')"
......@@ -476,7 +494,6 @@
</el-tabs>
</el-col>
</el-row>
<!-- 对话框(添加 / 修改) -->
<el-dialog
:title="dialogConfig.title"
......@@ -522,6 +539,23 @@
/>
</template>
</el-dialog>
<!-- 对话框 lanbm 2024-05-23 add异常登记对话框 -->
<el-dialog
custom-class="shipping-dialog"
:title="$t('异常')"
:visible.sync="dialogVisible"
width="600px"
:modal-append-to-body="false"
append-to-body
>
<unloadingError
v-if="dialogVisible"
@closeDialog="closeDialog_2"
v-bind="$attrs"
:currRow="currRow"
/>
</el-dialog>
</div>
</template>
......@@ -554,6 +588,7 @@ import updateError from "./updateError.vue";
import { listUser } from "@/api/system/user";
//lanbm 2024-05-16 add
import { getCurrencyList } from "@/api/ecw/currency";
import unloadingError from "@/views/ecw/box/shippingSea/nodePage/unloading/unloadingError.vue";
export default {
name: "EcwBoxQuery",
......@@ -565,6 +600,8 @@ export default {
regError,
editForm,
updateError,
//lanbm 2024-05-23 异常登记对话框
unloadingError,
},
created() {
this.transportTypes = this.getDictDatas(
......@@ -677,6 +714,9 @@ export default {
},
//币种信息 lanbm 2024-05-16 add
currencyList: [],
// 当前行
currRow: {},
dialogVisible: false,
};
},
methods: {
......@@ -696,6 +736,15 @@ export default {
handleSelectionChange(selected) {
this.selectedRows = selected;
},
closeDialog_2() {
//关闭异常对话框
this.dialogVisible = false;
},
updateStatus_2(type, row) {
//lanbm 2024-05-23 添加的异常登记功能
this.currRow = row;
this.dialogVisible = true;
},
/* 更新状态 */
updateStatus(type, row) {
let orders = [];
......
This diff is collapsed.
This diff is collapsed.
......@@ -90,7 +90,7 @@
v-model="queryParams.dateRangeCreateTime"
style="width: 300px"
value-format="yyyy-MM-dd"
type="datetimerange"
type="daterange"
range-separator="-"
:start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')"
......@@ -366,13 +366,15 @@ export default {
page: 1,
rows: 20,
dateRangeCreateTime: undefined,
beginCreateTime: undefined,
endCreateTime: undefined,
},
allSupplier: [],
currencyList: [],
warehouseList: [],
//lanbm 2024-05-17 add
dateTypes: [
{ value: "0", label: this.$t("费用产生时间") },
{ value: "7", label: this.$t("费用产生时间") },
{ value: "1", label: this.$t("预装时间") },
{ value: "2", label: this.$t("装柜时间") },
{ value: "3", label: this.$t("起运时间") },
......@@ -426,6 +428,13 @@ export default {
let params = { ...this.queryParams };
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
// 执行查询
if (
params.dateRangeCreateTime != null &&
params.dateRangeCreateTime.length == 2
) {
params.beginCreateTime = params.dateRangeCreateTime[0];
params.endCreateTime = params.dateRangeCreateTime[1];
}
getPayableList(params).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
......
......@@ -77,6 +77,7 @@
<el-button type="primary" @click="handleQuery">{{
$t("查找")
}}</el-button>
<!--
<el-button type="primary" @click="handleQuery2">{{
$t("批量反审核")
}}</el-button>
......@@ -85,7 +86,8 @@
}}</el-button>
<el-button type="primary" @click="handleQuery3">{{
$t("批量核销")
}}</el-button>
}}</el-button>-->
</el-form-item>
</el-row>
</el-form>
......
This diff is collapsed.
......@@ -694,7 +694,8 @@ export default {
components: {
ImageDisplay,
OperateLogDetail,
PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect,DeclarationDocuments,
PrintWarehouseReceipt, PrintLadingBill,
WarehouseDetail, WarehouseAreaSelect,DeclarationDocuments,
FeeDetail,PackHistory,PackHistoryDetail
},
filters: {
......
......@@ -626,7 +626,7 @@
</div>
</el-dialog>
<choose-contact-dialog v-if="!!contactChooseType" @choose="onContactChoose" @close="contactChooseType=null" />
<choose-contact-dialog v-if="!!contactChooseType" :type="2" @choose="onContactChoose" @close="contactChooseType=null" />
<quick-create-customer v-if="quickCreateType" :type="quickCreateType" @success="onContactChoose" @close="quickCreateType=null" />
</div>
</template>
......
This diff is collapsed.
<template>
<!-- 订单获取入仓记录 -->
<el-dialog
:title="title"
visible
:before-close="closeDialog"
:close-on-click-modal="false"
width="1000px"
>
<el-table :data="warehouseItem">
<el-table-column type="index" :label="$t('序号')" />
<el-table-column :label="$t('箱数')" prop="cartonsNum">
<template slot-scope="{ row }">
<template
v-if="
row.orderWarehouseInDetailsVOList &&
row.orderWarehouseInDetailsVOList.length
"
>
<WarehouseRecordDetail
v-model="row.orderWarehouseInDetailsVOList"
:num="row.cartonsNum"
text
readonly
/>
</template>
<template v-else>{{ row.cartonsNum }}</template>
</template>
</el-table-column>
<el-table-column :label="$t('入仓类型')" prop="cartonsNum">
<template slot-scope="{ row }">
<dict-tag
:type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
:value="row.specificationType"
/>
</template>
</el-table-column>
<el-table-column :label="$t('包装类型')" prop="unit">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="row.unit" />
</template>
</el-table-column>
<el-table-column :label="$t('长')" prop="boxGauge">
<template slot-scope="{ row }">
{{ row.boxGauge.split("*")[0] }}
</template>
</el-table-column>
<el-table-column :label="$t('宽')" prop="boxGauge">
<template slot-scope="{ row }">
{{ row.boxGauge.split("*")[1] }}
</template>
</el-table-column>
<el-table-column :label="$t('高')" prop="boxGauge">
<template slot-scope="{ row }">
{{ row.boxGauge.split("*")[2] }}
</template>
</el-table-column>
<el-table-column :label="$t('体积') + '(m³)'" prop="volume" />
<el-table-column :label="$t('重量') + '(kg)'" prop="weight" />
<el-table-column :label="$t('数量(个)')" prop="quantityAll" />
<el-table-column :label="$t('入仓快递单号')" prop="expressNo" />
<el-table-column :label="$t('首次入仓时间')" prop="inTime">
<template slot-scope="{ row }">{{ row.inTime | parseTime }}</template>
</el-table-column>
<el-table-column :label="$t('储位')" prop="orderLocationBackVOList">
<template slot-scope="{ row }">
{{ getLocationName(row.orderLocationBackVOList) }}
</template>
</el-table-column>
<el-table-column :label="$t('入仓影像')" prop="orderLocationBackVOList">
<template slot-scope="{ row }">
<image-display :pictureUrls="warehouseItem.pictureUrls" :type="5">
<el-button type="text"> 查看 </el-button>
</image-display>
</template>
</el-table-column>
<el-table-column :label="$t('备注')" prop="remark">
<template slot-scope="{ row }">
{{ row.remark }}
</template>
</el-table-column>
</el-table>
</el-dialog>
</template>
<script>
import { getOrderWarehouseIn } from "@/api/ecw/order";
import { parseTime } from "@/utils/ruoyi";
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect";
import ImageDisplay from "@/views/ecw/order/components/imageDisplay.vue";
import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue";
export default {
components: {
WarehouseRecordDetail,
ImageDisplay,
WarehouseAreaSelect,
},
filters: { parseTime },
props: {
order: Object, // order 和 orderId 二选一
orderId: Number,
orderItemId: Number,
type: Number,
},
data() {
return {
warehouseItem: [],
};
},
computed: {
title() {
return this.$l(this.order, "orderNo") + " - " + this.$t("入仓记录");
},
},
created() {
this.show = true;
getOrderWarehouseIn(this.order.orderId).then((res) => {
this.warehouseItem = [];
for (var i = 0; i < res.data.length; i++) {
for (
var j = 0;
j < res.data[i].orderWarehouseInBackItemDoList.length;
j++
) {
this.warehouseItem.push(
res.data[i].orderWarehouseInBackItemDoList[j]
);
}
}
});
},
methods: {
// 获取储位名称
getLocationName(locationArr) {
if (!locationArr || !locationArr.length) return "";
let arr = [];
locationArr.forEach((item) => {
arr.push(`${item.areaName}${item.locationName || ""}`);
});
return Array.from(new Set(arr)).join(",");
},
closeDialog() {
this.show = false;
this.$emit("close");
},
seePackLog() {
this.$emit("openPackHistory", this.orderItemId);
},
},
};
</script>
......@@ -318,13 +318,19 @@
<tr>
<td><div class="cell"></div></td>
<td>
<div class="cell">总箱数:{{ StatisticalSummary.sumBox }}</div>
<div class="cell">
总箱数:{{ StatisticalSummary.sumBox }}
</div>
</td>
<td>
<div class="cell">总方数:{{ StatisticalSummary.sumM3 }}</div>
<div class="cell">
总方数:{{ StatisticalSummary.sumM3 }}
</div>
</td>
<td>
<div class="cell">总重量:{{ StatisticalSummary.sumKG }}</div>
<div class="cell">
总重量:{{ StatisticalSummary.sumKG }}
</div>
</td>
<td>
<div class="cell">总V值:{{ StatisticalSummary.sumV }}</div>
......@@ -333,31 +339,47 @@
<tr>
<td><div class="cell">新客户</div></td>
<td>
<div class="cell">总箱数:{{ StatisticalSummary.sumBoxNew }}</div>
<div class="cell">
总箱数:{{ StatisticalSummary.sumBoxNew }}
</div>
</td>
<td>
<div class="cell">总方数:{{ StatisticalSummary.sumM3New }}</div>
<div class="cell">
总方数:{{ StatisticalSummary.sumM3New }}
</div>
</td>
<td>
<div class="cell">总重量:{{ StatisticalSummary.sumKGNew }}</div>
<div class="cell">
总重量:{{ StatisticalSummary.sumKGNew }}
</div>
</td>
<td>
<div class="cell">总V值:{{ StatisticalSummary.sumVNew }}</div>
<div class="cell">
总V值:{{ StatisticalSummary.sumVNew }}
</div>
</td>
</tr>
<tr>
<td><div class="cell">旧客户</div></td>
<td>
<div class="cell">总箱数:{{ StatisticalSummary.sumBoxOld }}</div>
<div class="cell">
总箱数:{{ StatisticalSummary.sumBoxOld }}
</div>
</td>
<td>
<div class="cell">总方数:{{ StatisticalSummary.sumM3Old }}</div>
<div class="cell">
总方数:{{ StatisticalSummary.sumM3Old }}
</div>
</td>
<td>
<div class="cell">总重量:{{ StatisticalSummary.sumKGOld }}</div>
<div class="cell">
总重量:{{ StatisticalSummary.sumKGOld }}
</div>
</td>
<td>
<div class="cell">总V值:{{ StatisticalSummary.sumVOld }}</div>
<div class="cell">
总V值:{{ StatisticalSummary.sumVOld }}
</div>
</td>
</tr>
</tbody>
......@@ -465,9 +487,15 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<WarehouseDetail-detail :order="order" :orderItemId="showWarehouseInItemId"
v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null">
</WarehouseDetail-detail>
<warehouse-detail
:order="order"
:orderItemId="showWarehouseInItemId"
:type="type"
@openPackHistory="openPackHistory"
v-if="showWarehouseInItemId"
@close="showWarehouseInItemId = null"
/>
</div>
</template>
......@@ -477,13 +505,17 @@ import { getCountryListAll } from "@/api/ecw/country";
import Treeselect from "@riophae/vue-treeselect";
import "@/assets/styles/vue-treeselect.css";
import { getWarehouseList } from "@/api/ecw/warehouse";
import { getListPage, exportExcel,getStatisticalSummary } from "@/api/report/salesanalysis";
import {
getListPage,
exportExcel,
getStatisticalSummary,
} from "@/api/report/salesanalysis";
import { getCurUserPermission } from "@/api/report/EcwReportPermission";
import { getAllChannelList, getChannelList } from "@/api/ecw/channel";
import { listSimpleDepts } from "@/api/system/dept";
import {getOrder} from "@/api/ecw/order";
import { getOrder } from "@/api/ecw/order";
//入仓记录页面
import WarehouseDetail from "@/views/ecw/order/components/WarehouseDetail";
import WarehouseDetail from "@/views/report/WarehouseInDetail/index.vue";
//2024-05-01合并
export default {
......@@ -509,6 +541,7 @@ export default {
title: "",
// 是否显示弹出层
open: false,
showDetail: false,
deptOptions: undefined,
dateRangeCreateTime: [],
SearchType: [
......@@ -563,20 +596,20 @@ export default {
showWarehouseInItemId: undefined,
order: null,
type: 1,
StatisticalSummary:{
sumBox:0,
sumM3:0,
sumKG:0,
sumV:0,
sumBoxNew:0,
sumM3New:0,
sumKGNew:0,
sumVNew:0,
sumBoxOld:0,
sumM3Old:0,
sumKGOld:0,
sumVOld:0,
}
StatisticalSummary: {
sumBox: 0,
sumM3: 0,
sumKG: 0,
sumV: 0,
sumBoxNew: 0,
sumM3New: 0,
sumKGNew: 0,
sumVNew: 0,
sumBoxOld: 0,
sumM3Old: 0,
sumKGOld: 0,
sumVOld: 0,
},
};
},
created() {
......@@ -631,7 +664,6 @@ export default {
getStatisticalSummary(params).then((response) => {
this.StatisticalSummary = response.data;
});
},
/** 表单重置 */
......@@ -685,10 +717,15 @@ export default {
// 显示入仓记录
showWarehouseLogs(row, type) {
getOrder(row.orderId).then((response) => {
this.order = response.data;
this.showWarehouseInItemId = row.orderItemId;
this.order = response.data;//组件中只用到了此参数
this.type = 2;
this.showWarehouseInItemId = 1;
});
},
openPackHistory(id) {
//查询打包历史
//this.shopPackId = id
},
/** 查询部门下拉树结构 + 岗位下拉 */
getTreeselect() {
if (this.objEcwReportPermission.permissionFw == 3) {
......
......@@ -44,7 +44,7 @@
>
{{ $t("新增") }}</el-button
>
<el-button type="primary" @click="test" v-show="true">测试</el-button>
<el-button type="primary" @click="test" v-show="false">测试</el-button>
</el-col>
<el-col :span="1.5">
<el-button
......@@ -170,6 +170,7 @@ import "@/assets/styles/vue-treeselect.css";
import { MessageBox } from "element-ui";
//日期库函数
import dayjs from "dayjs";
import { getToken } from "@/utils/auth";
//2024-05-01合并
export default {
......@@ -356,10 +357,13 @@ export default {
},
test() {
//单元测试函数
/*
var p = 12;
test(p).then((response) => {
this.$modal.msgSuccess("测试成功");
});
});*/
var s = getToken();
alert(s);
},
TestFun() {
var bR = dayjs("2024-05-11").isBefore(dayjs("2024-05-12"));
......
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