Commit e1f7c558 authored by 邓春圆's avatar 邓春圆

Merge remote-tracking branch 'origin/dev1.6' into dev1.6

parents 03ee36b1 f90d8d48
import request from '@/utils/request'
// 创建提单托运人
export function createLadingShipper(data) {
return request({
url: '/ecw/lading-shipper/create',
method: 'post',
data: data
})
}
// 更新提单托运人
export function updateLadingShipper(data) {
return request({
url: '/ecw/lading-shipper/update',
method: 'put',
data: data
})
}
// 删除提单托运人
export function deleteLadingShipper(id) {
return request({
url: '/ecw/lading-shipper/delete?id=' + id,
method: 'delete'
})
}
// 获得提单托运人
export function getLadingShipper(id) {
return request({
url: '/ecw/lading-shipper/get?id=' + id,
method: 'get'
})
}
// 获得提单托运人分页
export function getLadingShipperPage(query) {
return request({
url: '/ecw/lading-shipper/page',
method: 'get',
params: query
})
}
// 导出提单托运人 Excel
export function exportLadingShipperExcel(query) {
return request({
url: '/ecw/lading-shipper/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -656,3 +656,12 @@ export function exportUnload(params){ ...@@ -656,3 +656,12 @@ export function exportUnload(params){
responseType: 'blob' responseType: 'blob'
}) })
} }
// 操作日志分页
export function operateLogPage(params){
return request({
url: '/ecw/order-operate-log/page',
method: 'get',
params: params
})
}
\ No newline at end of file
...@@ -26,6 +26,15 @@ export function deleteSupplier(id) { ...@@ -26,6 +26,15 @@ export function deleteSupplier(id) {
}) })
} }
// 获得供应商列表
export function getSupplierList(query) {
return request({
url: '/ecw/supplier/list',
method: 'get',
params: query
})
}
// 获得供应商 // 获得供应商
export function getSupplier(id) { export function getSupplier(id) {
return request({ return request({
...@@ -52,3 +61,30 @@ export function exportSupplierExcel(query) { ...@@ -52,3 +61,30 @@ export function exportSupplierExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 创建清关文件号码
export function createFileNo(data) {
return request({
url: '/ecw/clearance-file-no/create',
method: 'post',
data: data
})
}
// 更新供应商
export function updateFileNo(data) {
return request({
url: '/ecw/clearance-file-no/update',
method: 'put',
data: data
})
}
// 获得清关文件号码
export function getFileNoPage(query) {
return request({
url: '/ecw/clearance-file-no/page',
method: 'get',
params: query
})
}
\ No newline at end of file
<template>
<el-select
v-model="valueSync"
multiple
filterable
clearable
remote
reserve-keyword
:disabled="disabled"
placeholder="请输入关键词"
@focus="remoteMethod('')"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="(item) in list"
:key="item.id"
:label="$l(item, 'company') + '('+item.companyCode+')'"
:value="item.id">
</el-option>
</el-select>
</template>
<script>
import {getSupplierList, getSupplierPage} from '@/api/ecw/supplier'
export default {
props:{
companyType: [String, Number],
value: [Array],
disabled: {
type: Boolean,
default: false
}
},
data(){
return {
valueSync: [],
list:[],
loading: false
}
},
computed:{
},
watch:{
valueSync(val){
this.$emit('input', val)
},
value(val){
this.valueSync = this.value
this.init(val)
}
},
created(){
this.valueSync = this.value
this.init(this.value)
},
methods:{
init(val){
if(val === null || val == undefined || val == '') return
let params = {
ids: val.toString()
}
getSupplierList(params).then(res => {
this.list = res.data
})
},
remoteMethod(keyword){
let params = {
pageSize: 500,
companyType: this.companyType
}
params.keyword = keyword
this.loading = true
getSupplierPage(params)
.then(res => this.list = res.data.list)
.finally(() => this.loading = false)
}
}
}
</script>
\ No newline at end of file
...@@ -70,6 +70,7 @@ export const DICT_TYPE = { ...@@ -70,6 +70,7 @@ export const DICT_TYPE = {
ECW_DATA_SOURCE: 'data_source', // 数据来源 ECW_DATA_SOURCE: 'data_source', // 数据来源
ECW_REGION_TYPE: 'region_trade_type', // 区域类型 ECW_REGION_TYPE: 'region_trade_type', // 区域类型
ECW_TRANSPORT_TYPE: 'transport_type', //货运方式 ECW_TRANSPORT_TYPE: 'transport_type', //货运方式
ECW_KYC_DATA: 'member_control_reuest', //会员控单方式
ECW_CHARGE_TYPE: 'warehouse_charge_type', //仓储收费方式 ECW_CHARGE_TYPE: 'warehouse_charge_type', //仓储收费方式
ECW_SHELF_TYPE: 'shelf_type', //货架类型 ECW_SHELF_TYPE: 'shelf_type', //货架类型
ECW_PRODUCT_MATERIAL: 'product_material', //商品材质 ECW_PRODUCT_MATERIAL: 'product_material', //商品材质
......
<template>
<div class="app-container">
<el-form ref="elForm" :model="formData" :rules="rules" inline size="small" label-width="100px"
label-position="left">
<div>
<el-form-item :label="$t('公司全称')" prop="companyZh">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('英文名称')" prop="companyEn">
<el-input v-model="formData.companyEn" :placeholder="$t('请输入公司英文名')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作开始时间')" prop="cooperationDateStart">
<el-date-picker v-model="formData.cooperationDateStart" value-format="timestamp" clearable disabled></el-date-picker>
</el-form-item>
<el-form-item :label="$t('合作结束时间')" prop="cooperationDateEnd">
<el-date-picker v-model="formData.cooperationDateEnd" value-format="timestamp" clearable disabled></el-date-picker>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司电话')" prop="tell">
<el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('邮件地址')" prop="email">
<el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable readonly></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司地址')" prop="address">
{{region}} {{formData.address}}
</el-form-item>
</div>
<div>
<el-form-item :label="$t('备注')" prop="remark">
<el-input v-model="formData.remark" type="textarea" :placeholder="$t('请输入备注')"
:autosize="{minRows: 4, maxRows: 4}" class="w-500" readonly></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('营业执照')" prop="license">
<el-image v-show="formData.license" :src="formData.license" style="width: 146px;height: 146px"></el-image>
</el-form-item>
<el-form-item :label="$t('合同')" prop="contract">
<el-image v-show="formData.contract" :src="formData.contract" style="width: 146px;height: 146px"></el-image>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('统一信用代码')" prop="licenseNumber">
<el-input v-model="formData.licenseNumber" :placeholder="$t('请输入统一社会信用代码')" clearable readonly
:style="{width: '100%'}"></el-input>
</el-form-item>
</div>
<el-form-item size="large" class="mt-20">
<el-button @click="$router.back()">{{$t('返回')}}</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { getLadingShipper } from "@/api/ecw/ladingShipper";
import upload from '@/components/ImageUpload'
import { listByIds } from "@/api/ecw/region";
import AreaSelector from '@/components/AreaSelector'
import {getCurrencyList} from '@/api/ecw/currency'
import Selector from '@/components/Selector'
import {validatePwd} from '@/api/ecw/busiPwd'
import { getDockPage } from "@/api/ecw/dock";
export default {
components: {upload, AreaSelector, Selector },
props: [],
data() {
return {
disabled: true,
formData: {
areaType: 0,
companyZh: undefined,
agentName: undefined,
tell: "",
address: "",
remark: undefined,
field110: undefined,
companyTypeArr: [],
cooperationType: undefined,
settlementPeriod: undefined,
priceAdvantage: undefined,
license: null,
contract: null,
licenseNumber: undefined,
contactList:[],
bankList: [],
resourceVO: {},
externalVO: {}
},
rules: {
companyZh: [{
required: true,
message: this.$t('请输入公司全称'),
trigger: 'blur'
}],
agentName: [],
tell: [],
address: [],
remark: [],
companyType: [{
required: true,
type: 'string',
message: this.$t('请至少选择一个供应商类别'),
trigger: 'change'
}],
cooperationType: [{
required: true,
message: this.$t('请选择合作类型'),
trigger: 'change'
}],
licenseNumber: [],
},
treeList:[],
provinceList:[],
cityList:[],
region: '',
// 码头
allDocks: [],
currencyList:[],
requireData: [
'COO证书','CXX证书','ABC证书','QWE证书','自定义'
],
fileList: [],
fileNoForm: {},
fileNoRules: {
country: [{required: true,message: this.$t('请输入国家'),trigger: 'blur'}],
district: [{required: true,message: this.$t('请输入地区'),trigger: 'blur'}],
fromNo: [{required: true,message: this.$t('请输入From M No'),trigger: 'blur'}],
baNo: [{required: true,message: this.$t('请输入BA NO'),trigger: 'blur'}],
},
showFileNoDialog: false
}
},
computed: {
},
watch: {
'formData.country'(country){
this.treeList.forEach(item => {
if(item.id == country){
this.provinceList = item.children || []
}
})
},
'formData.province'(province){
this.provinceList.forEach(item => {
if(item.id == province){
this.cityList = item.children || []
}
})
}
},
created() {
getCurrencyList().then(res => {
this.currencyList = res.data
})
if(this.$route.query.id){
getLadingShipper(this.$route.query.id).then(response => {
this.formData = response.data
listByIds({ids: [this.formData.country, this.formData.province, this.formData.city].join(',')}).then(res => {
console.log('listById', res)
let region = ''
res.data.forEach(item => {
region += " " + item.titleZh
})
this.region = region
})
});
}
},
mounted() {},
methods: {
strToArray(val) {
if(!val || val == '') {
return []
}else{
let data = val.split(",")
return data.map(item=>Number(item))
}
},
sameReceive() {
this.$set(this.formData.externalVO,'notifyCompanyName',this.formData.externalVO.receiveCompanyName)
this.$set(this.formData.externalVO,'notifyAddress',this.formData.externalVO.receiveAddress)
this.$set(this.formData.externalVO,'notifyTel',this.formData.externalVO.receiveTel)
this.$set(this.formData.externalVO,'notifyEmail',this.formData.externalVO.receiveEmail)
},
addFileNo() {
this.showFileNoDialog = true
this.$refs.fileNoForm.resetFields()
},
getFile() {
getFileNoPage().then(res => {
this.fileList = res.data.list
})
},
addfile() {
this.$refs.fileNoForm.validate(vaild=>{
if(vaild){
createFileNo(this.fileNoForm).then(()=>{
this.showFileNoDialog = false
this.getFile()
})
}else{
this.$message.error(this.$t('请完整填写表单'))
}
})
},
changeFile(val) {
let file = this.fileList.find(item=>item.id == val)
this.$set(this.formData.externalVO,'fromNo',file.fromNo)
this.$set(this.formData.externalVO,'baNo',file.baNo)
},
changeRequire(val) {
if(val != '自定义'){
this.$set(this.formData.externalVO,'clearanceRequire',val)
}else{
this.$set(this.formData.externalVO,'clearanceRequire','')
}
},
getCountry(countryId, districtId) {
let country = this.treeList.find(item=>item.id == countryId)
let district = country.children.find(item=>item.id == districtId)
return this.$l(country, 'title')+' '+this.$l(district, 'title')
},
delContact(index){
this.$confirm(this.$t('确定删除此联系人么?')).then(() => {
this.formData.contactList.splice(index, 1)
})
},
delBank(index){
if(this.formData.bankList[index].id){
this.$prompt(this.$t("请输入密码"), {
inputType: 'password'
})
.then(({value}) => {
if(value && value != ''){
return validatePwd({
busiType: 5,
pwd: value
})
}
this.$message.error(this.$t('密码不能为空'))
})
.then(res => {
if(!res.data){
return this.$message.error(this.$t('密码错误'))
}
this.formData.bankList.splice(index, 1)
})
return
}
this.$confirm(this.$t('确定删除此银行信息么?')).then(() => {
this.formData.bankList.splice(index, 1)
})
},
onAreaChange(type, val){
this.$set(this.formData, type, val)
},
}
}
</script>
<style lang="scss" scoped>
.el-upload__tip {
line-height: 1.2;
}
.card-header{
display: flex;
align-items: center;
justify-content: space-between;
.title{
font-size: 18px;
}
}
::v-deep .data-list .el-form-item__error{
position: static;
}
.red{
color: red;
}
.supplier-item{
margin-left: 30px;
}
</style>
<template>
<div class="app-container">
<el-form ref="elForm" :model="formData" :rules="rules" inline size="small" label-width="100px"
label-position="left">
<div>
<el-form-item :label="$t('公司全称')" prop="companyZh">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('英文名称')" prop="companyEn">
<el-input v-model="formData.companyEn" :placeholder="$t('请输入公司英文名')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作开始时间')" prop="cooperationDateStart">
<el-date-picker v-model="formData.cooperationDateStart" value-format="timestamp" clearable></el-date-picker>
</el-form-item>
<el-form-item :label="$t('合作结束时间')" prop="cooperationDateEnd">
<el-date-picker v-model="formData.cooperationDateEnd" value-format="timestamp" clearable></el-date-picker>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司电话')" prop="tell">
<el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable></el-input>
</el-form-item>
<el-form-item :label="$t('邮件地址')" prop="email">
<el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司地址')" prop="address">
<area-selector
:country="formData.country"
:province="formData.province"
:city="formData.city"
@countryChange="onAreaChange('country', $event)"
@provinceChange="onAreaChange('province', $event)"
@cityChange="onAreaChange('city', $event)"
/>
<el-input v-model="formData.address" :placeholder="$t('请输入详细地址')" class="mt-10"></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('备注')" prop="remark">
<el-input v-model="formData.remark" type="textarea" :placeholder="$t('请输入备注')"
:autosize="{minRows: 4, maxRows: 4}" class="w-500"></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('营业执照')" prop="license">
<upload v-model="formData.license" />
</el-form-item>
<el-form-item :label="$t('合同')" prop="contract">
<upload v-model="formData.contract" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('统一信用代码')" prop="licenseNumber">
<el-input v-model="formData.licenseNumber" :placeholder="$t('请输入统一社会信用代码')" clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</div>
<el-form-item size="large" class="mt-20">
<el-button type="primary" @click="submitForm">{{$t('提交')}}</el-button>
<el-button @click="resetForm">{{$t('重置')}}</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { createLadingShipper, updateLadingShipper, getLadingShipper } from "@/api/ecw/ladingShipper";
import upload from '@/components/ImageUpload'
import { getListTree } from "@/api/ecw/region";
import AreaSelector from '@/components/AreaSelector'
import {getCurrencyList} from '@/api/ecw/currency'
import Selector from '@/components/Selector'
import {validatePwd} from '@/api/ecw/busiPwd'
import { getDockPage } from "@/api/ecw/dock";
export default {
components: {upload, AreaSelector, Selector},
props: [],
data() {
return {
disabled: false,
formData: {
areaType: 0,
companyZh: undefined,
agentName: undefined,
tell: "",
address: "",
remark: undefined,
field110: undefined,
companyTypeArr: [],
cooperationType: undefined,
settlementPeriod: undefined,
priceAdvantage: undefined,
license: null,
contract: null,
licenseNumber: undefined,
contactList:[],
bankList: [],
resourceVO: {},
externalVO: {}
},
rules: {
companyZh: [{
required: true,
message: this.$t('请输入公司全称'),
trigger: 'blur'
}],
agentName: [],
tell: [],
address: [],
remark: [],
licenseNumber: [],
},
treeList:[],
provinceList:[],
cityList:[]
}
},
computed: {
},
watch: {
'formData.country'(country){
this.treeList.forEach(item => {
if(item.id == country){
this.provinceList = item.children || []
}
})
},
'formData.province'(province){
this.provinceList.forEach(item => {
if(item.id == province){
this.cityList = item.children || []
}
})
}
},
created() {
getCurrencyList().then(res => {
this.currencyList = res.data
})
// 回显数据需要在加载了地区数据之后,否则无法正常回显
getListTree({treeType: 1}).then(response => {
this.treeList = response.data
if(this.$route.query.id){
getLadingShipper(this.$route.query.id).then(response => {
this.formData = response.data
});
}
})
},
mounted() {},
methods: {
strToArray(val) {
if(!val || val == '') {
return []
}else{
let data = val.split(",")
return data.map(item=>Number(item))
}
},
sameReceive() {
this.$set(this.formData.externalVO,'notifyCompanyName',this.formData.externalVO.receiveCompanyName)
this.$set(this.formData.externalVO,'notifyAddress',this.formData.externalVO.receiveAddress)
this.$set(this.formData.externalVO,'notifyTel',this.formData.externalVO.receiveTel)
this.$set(this.formData.externalVO,'notifyEmail',this.formData.externalVO.receiveEmail)
},
addFileNo() {
this.showFileNoDialog = true
this.$refs.fileNoForm.resetFields()
},
getFile() {
getFileNoPage().then(res => {
this.fileList = res.data.list
})
},
addfile() {
this.$refs.fileNoForm.validate(vaild=>{
if(vaild){
createFileNo(this.fileNoForm).then(()=>{
this.showFileNoDialog = false
this.getFile()
})
}else{
this.$message.error(this.$t('请完整填写表单'))
}
})
},
changeFile(val) {
let file = this.fileList.find(item=>item.id == val)
this.$set(this.formData.externalVO,'fromNo',file.fromNo)
this.$set(this.formData.externalVO,'baNo',file.baNo)
},
changeRequire(val) {
if(val != '自定义'){
this.$set(this.formData.externalVO,'clearanceRequire',val)
}else{
this.$set(this.formData.externalVO,'clearanceRequire','')
}
},
getCountry(countryId, districtId) {
let country = this.treeList.find(item=>item.id == countryId)
let district = country.children.find(item=>item.id == districtId)
return this.$l(country, 'title')+' '+this.$l(district, 'title')
},
delContact(index){
this.$confirm(this.$t('确定删除此联系人么?')).then(() => {
this.formData.contactList.splice(index, 1)
})
},
delBank(index){
if(this.formData.bankList[index].id){
this.$prompt(this.$t("请输入密码"), {
inputType: 'password'
})
.then(({value}) => {
if(value && value != ''){
return validatePwd({
busiType: 5,
pwd: value
})
}
this.$message.error(this.$t('密码不能为空'))
})
.then(res => {
if(!res.data){
return this.$message.error(this.$t('密码错误'))
}
this.formData.bankList.splice(index, 1)
})
return
}
this.$confirm(this.$t('确定删除此银行信息么?')).then(() => {
this.formData.bankList.splice(index, 1)
})
},
onAreaChange(type, val){
this.$set(this.formData, type, val)
},
submitForm() {
this.$refs["elForm"].validate((valid, errors) => {
if (!valid) {
return this.$showFormValidateErrors(errors)
}
let data = JSON.parse(JSON.stringify(this.formData))
// 修改的提交
if (data.id != null) {
updateLadingShipper(data).then(response => {
this.$modal.msgSuccess(this.$t("修改成功"));
this.open = false;
this.$router.back()
});
return;
}
// 添加的提交
createLadingShipper(data).then(response => {
this.$modal.msgSuccess(this.$t("新增成功"));
this.$redirect('/supplier/ladingshipper')
});
});
},
resetForm() {
this.$refs['elForm'].resetFields()
}
}
}
</script>
<style lang="scss" scoped>
.el-upload__tip {
line-height: 1.2;
}
.card-header{
display: flex;
align-items: center;
justify-content: space-between;
.title{
font-size: 18px;
}
}
::v-deep .data-list .el-form-item__error{
position: static;
}
.red{
color: red;
}
.supplier-item{
margin-left: 30px;
}
</style>
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form v-if="false" :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item :label="$t('创建时间')">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
<el-form-item :label="$t('供应商类别')" prop="companyType">
<dict-selector :type="DICT_TYPE.ECW_COMPANY_TYPE" v-model="queryParams.companyType" clearable />
</el-form-item>
<el-form-item :label="$t('合作类型')" prop="cooperationType">
<dict-selector :type="DICT_TYPE.ECW_COOPERATION_TYPE" v-model="queryParams.cooperationType" clearable/>
</el-form-item>
<el-form-item :label="$t('名称/代码')" prop="keyword">
<el-input v-model="queryParams.keyword" :placeholder="$t('名称/代码')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</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="['ecw:ladingShipper:create']">{{$t('新增')}}</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="['ecw:ladingShipper:export']">{{$t('导出')}}</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="$t('公司名称')" align="center" :prop="$l('company')" />
<el-table-column :label="$t('英文名称')" align="center" prop="companyEn" />
<el-table-column :label="$t('公司电话')" align="center" prop="tell" />
<el-table-column :label="$t('统一信用代码')" align="center" prop="licenseNumber" />
<el-table-column :label="$t('创建时间')" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column fixed="right" :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
v-hasPermi="['ecw:ladingShipper:query']">{{$t('详情')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:ladingShipper:update']">{{$t('修改')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:ladingShipper:delete']">{{$t('删除')}}</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"/>
</div>
</template>
<script>
import { deleteLadingShipper, getLadingShipperPage, exportLadingShipperExcel } from "@/api/ecw/ladingShipper";
// import DictSelector from '@/components/DictSelector'
export default {
name: "ladingShipper",
components: {
// DictSelector
},
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 供应商列表
list: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
companyZh: null,
companyEn: null,
companyCode: null,
agentName: null,
tell: null,
country: null,
province: null,
city: null,
area: null,
address: null,
remark: null,
companyType: null,
cooperationType: null,
license: null,
contract: null,
licenseNumber: null,
status: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询
getLadingShipperPage(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,
companyZh: undefined,
companyEn: undefined,
companyCode: undefined,
agentName: undefined,
tell: undefined,
country: undefined,
province: undefined,
city: undefined,
area: undefined,
address: undefined,
remark: undefined,
companyType: undefined,
cooperationType: undefined,
license: undefined,
contract: undefined,
licenseNumber: undefined,
status: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
return this.$router.push('ladingShipper/create')
},
/** 详情按钮操作 */
handleDetail(row) {
return this.$router.push('ladingShipper/detail?id=' + row.id)
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
return this.$router.push('ladingShipper/create?id=' + id)
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm(this.$t('是否确认删除供应商编号为{id}的数据项?', {id})).then(function() {
return deleteLadingShipper(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess(this.$t("删除成功"));
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this.$modal.confirm(this.$t('是否确认导出所有供应商数据项?')).then(() => {
this.exportLoading = true;
return exportLadingShipperExcel(params);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script>
...@@ -270,6 +270,19 @@ ...@@ -270,6 +270,19 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('操作日志')" name="five">
<el-table :data="logs">
<el-table-column :label="$t('时间')">
<template slot-scope="{row}">{{ parseTime(row.createTime) }}</template>
</el-table-column>
<el-table-column :label="$t('操作人')" prop="creatorName"> </el-table-column>
<el-table-column :label="$t('操作人类型')">
<template slot-scope="{row}">{{ row.userType == 1 ? $t('会员') : $t('管理员') }}</template>
</el-table-column>
<el-table-column :label="$t('操作描述')" prop="msg"></el-table-column>
<el-table-column :label="$t('备注')" prop="note"></el-table-column>
</el-table>
</el-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
...@@ -344,7 +357,7 @@ ...@@ -344,7 +357,7 @@
</template> </template>
<script> <script>
import { getOrder } from '@/api/ecw/order' import { getOrder, operateLogPage } from '@/api/ecw/order'
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import PrintWarehouseReceipt from './components/PrintWarehouseReceipt' import PrintWarehouseReceipt from './components/PrintWarehouseReceipt'
import PrintLadingBill from './components/PrintLadingBill' import PrintLadingBill from './components/PrintLadingBill'
...@@ -398,6 +411,8 @@ export default { ...@@ -398,6 +411,8 @@ export default {
showWarehouseInItemId: null, // 当前显示的入仓 showWarehouseInItemId: null, // 当前显示的入仓
showFeeDetailDialog: null, // 是否显示费用详情弹层 showFeeDetailDialog: null, // 是否显示费用详情弹层
feeDetail: null, // 费用详情 feeDetail: null, // 费用详情
logs: [], // 操作日志
} }
}, },
computed:{ computed:{
...@@ -433,6 +448,9 @@ export default { ...@@ -433,6 +448,9 @@ export default {
if(!this.feeList.length && val == 'four'){ if(!this.feeList.length && val == 'four'){
this.loadFeeList() this.loadFeeList()
} }
if(!this.logs.length && val == 'five'){
this.loadLogs()
}
}, },
'order.channelId'(){ 'order.channelId'(){
this.getChannel() this.getChannel()
...@@ -582,6 +600,12 @@ export default { ...@@ -582,6 +600,12 @@ export default {
this.feeList = res.data this.feeList = res.data
}) })
}, },
// 加载操作日志
loadLogs(){
operateLogPage({orderId: this.orderIdDICT_TYPE, page: 1, rows: 10000}).then(res => {
this.logs = res.data.list
})
},
downloadPackingList(){ downloadPackingList(){
window.open(this.order.packingListUrl) window.open(this.order.packingListUrl)
}, },
......
<template>
<div class="app-container">
<el-form ref="elForm" :model="formData" :rules="rules" inline size="small" label-width="100px"
label-position="left">
<div>
<el-form-item>
<el-radio v-model="formData.areaType" :label="0" disabled>{{$t('国内')}}</el-radio>
<el-radio v-model="formData.areaType" :label="1" disabled>{{$t('国外')}}</el-radio>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司全称')" prop="companyZh">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('英文名称')" prop="companyEn">
<el-input v-model="formData.companyEn" :placeholder="$t('请输入公司英文名')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作开始时间')" prop="cooperationDateStart">
<el-date-picker v-model="formData.cooperationDateStart" value-format="timestamp" clearable disabled></el-date-picker>
</el-form-item>
<el-form-item :label="$t('合作结束时间')" prop="cooperationDateEnd">
<el-date-picker v-model="formData.cooperationDateEnd" value-format="timestamp" clearable disabled></el-date-picker>
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('公司电话')" prop="tell">
<el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('邮件地址')" prop="email">
<el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable readonly></el-input>
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('公司地址')" prop="address">
{{region}} {{formData.address}}
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('备注')" prop="remark">
<el-input v-model="formData.remark" type="textarea" :placeholder="$t('请输入备注')"
:autosize="{minRows: 4, maxRows: 4}" class="w-500" readonly></el-input>
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('供应商类别')" prop="companyType">
<dict-selector v-model="formData.companyTypeArr" type="company_type" multiple disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作类型')" prop="cooperationType">
<dict-selector v-model="formData.cooperationType" type="cooperation_type" disabled />
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('营业执照')" prop="license">
<el-image v-show="formData.license" :src="formData.license" style="width: 146px;height: 146px"></el-image>
</el-form-item>
<el-form-item :label="$t('合同')" prop="contract">
<el-image v-show="formData.contract" :src="formData.contract" style="width: 146px;height: 146px"></el-image>
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('统一信用代码')" prop="licenseNumber">
<el-input v-model="formData.licenseNumber" :placeholder="$t('请输入统一社会信用代码')" clearable readonly
:style="{width: '100%'}"></el-input>
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-form-item :label="$t('结算周期')" prop="settlementPeriod">
<dict-selector v-model="formData.settlementPeriod" type="settlement_period" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('价格优势')" prop="priceAdvantage">
<dict-selector v-model="formData.priceAdvantage" type="price_advantage" disabled />
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-card class="mt-10">
<div class="card-header" slot="header">
<div class="title">{{$t('联系人')}}</div>
</div>
<el-table :data="formData.contactList" border class="data-list">
<el-table-column :label="$t('序号')" width="80px">
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column :label="$t('部门')" prop="priceAdvantage">
</el-table-column>
<el-table-column :label="$t('职位')" prop="position">
</el-table-column>
<el-table-column :label="$t('名称')" prop="name">
</el-table-column>
<el-table-column :label="$t('电话')" prop="phone">
</el-table-column>
</el-table>
</el-card>
<el-card class="mt-10">
<div class="card-header" slot="header">
<div class="title">{{$t('银行信息')}}</div>
</div>
<el-table :data="formData.bankList" border class="data-list">
<el-table-column :label="$t('序号')" width="80px">
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column :label="$t('账户名称')" prop="accountName">
</el-table-column>
<el-table-column :label="$t('币别')">
<template slot-scope="scope">
<el-form-item>
<selector :options="currencyList" v-model="scope.row.currency" value-field="id" :label-field="'title' + $l()" disabled></selector>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('银行名称')" prop="bankName">
</el-table-column>
<el-table-column :label="$t('银行账户')" prop="bankAccount">
</el-table-column>
<el-table-column :label="$t('银行代码')" prop="bankCode">
</el-table-column>
<el-table-column :label="$t('账户类型')" prop="accountType">
</el-table-column>
<el-table-column :label="$t('状态')" prop="status">
<template slot-scope="scope">
<dict-selector :type="DICT_TYPE.COMMON_STATUS" v-model="scope.row.status" defaultable disabled />
</template>
</el-table-column>
<el-table-column :label="$t('银行地址')" prop="bankAddress">
</el-table-column>
</el-table>
</el-card>
<el-card class="mt-10">
<div class="card-header" slot="header">
<div class="title">{{$t('海运优质资源条件')}}</div>
</div>
<div>
<el-form-item :label="$t('供应商优势船公司')" prop="shipCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.shipCompany" company-type="9" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('海运船公司优势港口')" prop="ports" label-width="250">
<el-select v-model="formData.resourceVO.ports" filterable multiple clearable disabled>
<el-option v-for="(item) in seaPort" :key="item.id" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('港口优势条件')" prop="portConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.portConditions" type="port_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('订舱公司')" prop="bookCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.bookCompany" company-type="1" disabled />
</el-form-item>
<el-form-item :label="$t('订舱优势条件')" prop="bookConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.bookConditions" type="book_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('拖车公司')" prop="trailerCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.trailerCompany" company-type="4" disabled />
</el-form-item>
<el-form-item :label="$t('拖车优势条件')" prop="trailerConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.trailerConditions" type="trailer_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('报关公司')" prop="customsCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.customsCompany" company-type="2" disabled />
</el-form-item>
<el-form-item :label="$t('报关优势条件')" prop="customsConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.customsConditions" type="customs_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('证书公司')" prop="certificateCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.certificateCompany" company-type="3" disabled />
</el-form-item>
<el-form-item :label="$t('证书优势条件')" prop="certificateConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.certificateConditions" type="certificate_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作不良记录登记')" prop="badCooperationRecord" label-width="250">
<el-input v-model="formData.resourceVO.badCooperationRecord" :placeholder="$t('请输入合作不良记录登记')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
</el-card>
<el-card class="mt-10">
<div class="card-header" slot="header">
<div class="title">{{$t('空运优质资源条件')}}</div>
</div>
<div>
<el-form-item :label="$t('空运优势机场')" prop="airdrome" label-width="250">
<el-select v-model="formData.resourceVO.airdrome" filterable multiple clearable disabled>
<el-option v-for="(item) in airPort" :key="item.id" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('空运优势航空公司')" prop="airCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.airCompany" company-type="10" disabled />
</el-form-item>
<el-form-item :label="$t('航空公司优势条件')" prop="airConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.airConditions" type="port_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('订舱公司')" prop="bookCompanyAir" label-width="250">
<suppliers-selector v-model="formData.resourceVO.bookCompanyAir" company-type="5" disabled />
</el-form-item>
<el-form-item :label="$t('订舱优势条件')" prop="bookConditionsAir" label-width="250">
<dict-selector v-model="formData.resourceVO.bookConditionsAir" type="book_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('报关公司')" prop="customsCompanyAir" label-width="250">
<suppliers-selector v-model="formData.resourceVO.customsCompanyAir" company-type="7" disabled />
</el-form-item>
<el-form-item :label="$t('报关优势条件')" prop="customsConditionsAir" label-width="250">
<dict-selector v-model="formData.resourceVO.customsConditionsAir" type="customs_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('证书公司')" prop="certificateCompanyAir" label-width="250">
<suppliers-selector v-model="formData.resourceVO.certificateCompanyAir" company-type="3" disabled />
</el-form-item>
<el-form-item :label="$t('证书优势条件')" prop="certificateConditionsAir" label-width="250">
<dict-selector v-model="formData.resourceVO.certificateConditionsAir" type="certificate_conditions" disabled />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作不良记录登记')" prop="badCooperationRecordAir" label-width="250">
<el-input v-model="formData.resourceVO.badCooperationRecordAir" :placeholder="$t('请输入合作不良记录登记')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
</el-card>
</div>
<div v-if="formData.areaType==1">
<h1>代理商</h1>
<h2>收货人</h2>
<div class="supplier-item">
<el-form-item :label="$t('公司名称')" prop="receiveCompanyName">
<el-input v-model="formData.externalVO.receiveCompanyName" :placeholder="$t('请输入公司名称')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('地址')" prop="receiveAddress">
<el-input v-model="formData.externalVO.receiveAddress" :placeholder="$t('请输入地址')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('电话')" prop="receiveTel">
<el-input v-model="formData.externalVO.receiveTel" :placeholder="$t('请输入电话')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('邮箱')" prop="receiveEmail">
<el-input v-model="formData.externalVO.receiveEmail" :placeholder="$t('请输入邮箱')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div style="display: flex;align-items: flex-end;">
<h2>通知方</h2>
</div>
<div class="supplier-item">
<el-form-item :label="$t('公司名称')" prop="notifyCompanyName">
<el-input v-model="formData.externalVO.notifyCompanyName" :placeholder="$t('请输入公司名称')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('地址')" prop="notifyAddress">
<el-input v-model="formData.externalVO.notifyAddress" :placeholder="$t('请输入地址')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('电话')" prop="notifyTel">
<el-input v-model="formData.externalVO.notifyTel" :placeholder="$t('请输入电话')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('邮箱')" prop="notifyEmail">
<el-input v-model="formData.externalVO.notifyEmail" :placeholder="$t('请输入邮箱')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<h2>货物描述</h2>
<div class="supplier-item">
<el-form-item :label="$t('品名')" prop="goodName">
<el-input v-model="formData.externalVO.goodName" :placeholder="$t('请输入品名')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('清关国家')" prop="clearanceFileId">
<el-select v-model="formData.clearanceFileId" @change="changeFile" disabled>
<el-option v-for="(item) in fileList" :value="item.id" :label="getCountry(item.country,item.district)" :key="item.id" />
</el-select>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('From M No')" prop="fromNo">
<el-input v-model="formData.externalVO.fromNo" :placeholder="$t('请输入From M No')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('BA NO')" prop="baNo">
<el-input v-model="formData.externalVO.baNo" :placeholder="$t('请输入BA NO')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('包装数量')" prop="packNum">
<el-input v-model="formData.externalVO.packNum" :placeholder="$t('请输入包装数量')" show-word-limit clearable readonly></el-input>
</el-form-item>
<el-form-item :label="$t('包装单位')" prop="packUnit">
<el-input v-model="formData.externalVO.packUnit" :placeholder="$t('请输入包装单位')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('清关要求')" prop="clearanceRequireData">
<el-select v-model="formData.externalVO.clearanceRequireData" @change="changeRequire" disabled>
<el-option v-for="(item) in requireData" :value="item" :label="item" :key="item" />
</el-select>
</el-form-item>
<el-form-item v-if="formData.externalVO.clearanceRequireData=='自定义'" :label="$t('自定义要求')" prop="clearanceRequire">
<el-input v-model="formData.externalVO.clearanceRequire" :placeholder="$t('请输入自定义要求')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('是否提供')" prop="provide">
<el-radio v-model="formData.externalVO.provide" :label="1" disabled>{{$t('提供')}}</el-radio>
<el-radio v-model="formData.externalVO.provide" :label="2" disabled>{{$t('不提供')}}</el-radio>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作不良记录登记')" prop="badCooperationRecord" label-width="250">
<el-input v-model="formData.externalVO.badCooperationRecord" :placeholder="$t('请输入合作不良记录登记')" show-word-limit clearable readonly></el-input>
</el-form-item>
</div>
</div>
<el-form-item size="large" class="mt-20">
<el-button @click="$router.back()">{{$t('返回')}}</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { createSupplier, updateSupplier, getSupplier, createFileNo, getFileNoPage} from "@/api/ecw/supplier";
import upload from '@/components/ImageUpload'
import { listByIds } from "@/api/ecw/region";
import AreaSelector from '@/components/AreaSelector'
import {getCurrencyList} from '@/api/ecw/currency'
import Selector from '@/components/Selector'
import {validatePwd} from '@/api/ecw/busiPwd'
import SuppliersSelector from '@/components/SuppliersSelector'
import { getDockPage } from "@/api/ecw/dock";
export default {
components: {upload, AreaSelector, Selector, SuppliersSelector},
props: [],
data() {
return {
disabled: true,
formData: {
areaType: 0,
companyZh: undefined,
agentName: undefined,
tell: "",
address: "",
remark: undefined,
field110: undefined,
companyTypeArr: [],
cooperationType: undefined,
settlementPeriod: undefined,
priceAdvantage: undefined,
license: null,
contract: null,
licenseNumber: undefined,
contactList:[],
bankList: [],
resourceVO: {},
externalVO: {}
},
rules: {
companyZh: [{
required: true,
message: this.$t('请输入公司全称'),
trigger: 'blur'
}],
agentName: [],
tell: [],
address: [],
remark: [],
companyType: [{
required: true,
type: 'string',
message: this.$t('请至少选择一个供应商类别'),
trigger: 'change'
}],
cooperationType: [{
required: true,
message: this.$t('请选择合作类型'),
trigger: 'change'
}],
licenseNumber: [],
},
treeList:[],
provinceList:[],
cityList:[],
region: '',
// 码头
allDocks: [],
currencyList:[],
requireData: [
'COO证书','CXX证书','ABC证书','QWE证书','自定义'
],
fileList: [],
fileNoForm: {},
fileNoRules: {
country: [{required: true,message: this.$t('请输入国家'),trigger: 'blur'}],
district: [{required: true,message: this.$t('请输入地区'),trigger: 'blur'}],
fromNo: [{required: true,message: this.$t('请输入From M No'),trigger: 'blur'}],
baNo: [{required: true,message: this.$t('请输入BA NO'),trigger: 'blur'}],
},
showFileNoDialog: false
}
},
computed: {
airPort(){
return this.allDocks.filter(item => item.portType == 1)
},
seaPort(){
return this.allDocks.filter(item => item.portType == 2)
},
districtList(){
if(!this.fileNoForm.country) return []
let country = this.treeList.find(item => item.id == this.fileNoForm.country)
return country && country.children || []
},
},
watch: {
'formData.country'(country){
this.treeList.forEach(item => {
if(item.id == country){
this.provinceList = item.children || []
}
})
},
'formData.province'(province){
this.provinceList.forEach(item => {
if(item.id == province){
this.cityList = item.children || []
}
})
},
'formData.companyTypeArr'(val){
this.$set(this.formData, 'companyType', val.join(","))
}
},
created() {
getCurrencyList().then(res => {
this.currencyList = res.data
})
// 码头
getDockPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
this.allDocks = res.data.list;
});
this.getFile()
if(this.$route.query.id){
getSupplier(this.$route.query.id).then(response => {
/* response.data.companyType = response.data.companyType.split(",") || [] */
this.formData = response.data
this.$set(this.formData, 'companyTypeArr', this.strToArray(response.data.companyType))
this.$set(this.formData, 'settlementPeriod', response.data.settlementPeriod==0?null:response.data.settlementPeriod)
this.formData.bankList.forEach(item => {
item.currency = +item.currency
})
if(response.data.resourceBackVO){
this.formData.resourceVO = response.data.resourceBackVO
this.formData.externalVO = response.data.externalBackVO??{}
this.$set(this.formData.resourceVO,'shipCompany',this.strToArray(response.data.resourceBackVO.shipCompany))
this.$set(this.formData.resourceVO,'ports',this.strToArray(response.data.resourceBackVO.ports))
this.$set(this.formData.resourceVO,'bookCompany',this.strToArray(response.data.resourceBackVO.bookCompany))
this.$set(this.formData.resourceVO,'trailerCompany',this.strToArray(response.data.resourceBackVO.trailerCompany))
this.$set(this.formData.resourceVO,'customsCompany',this.strToArray(response.data.resourceBackVO.customsCompany))
this.$set(this.formData.resourceVO,'certificateCompany',this.strToArray(response.data.resourceBackVO.certificateCompany))
this.$set(this.formData.resourceVO,'airdrome',this.strToArray(response.data.resourceBackVO.airdrome))
this.$set(this.formData.resourceVO,'airCompany',this.strToArray(response.data.resourceBackVO.airCompany))
this.$set(this.formData.resourceVO,'bookCompanyAir',this.strToArray(response.data.resourceBackVO.bookCompanyAir))
this.$set(this.formData.resourceVO,'customsCompanyAir',this.strToArray(response.data.resourceBackVO.customsCompanyAir))
this.$set(this.formData.resourceVO,'certificateCompanyAir',this.strToArray(response.data.resourceBackVO.certificateCompanyAir))
listByIds({ids: [this.formData.country, this.formData.province, this.formData.city].join(',')}).then(res => {
console.log('listById', res)
let region = ''
res.data.forEach(item => {
region += " " + item.titleZh
})
this.region = region
})
}
if(response.data.externalBackVO){
this.formData.externalVO = response.data.externalBackVO
this.formData.resourceVO = response.data.resourceBackVO??{}
this.$set(this.formData.externalVO,'receiveCompanyName',response.data.externalBackVO.receiveCompanyName)
this.$set(this.formData.externalVO,'receiveAddress',response.data.externalBackVO.receiveAddress)
this.$set(this.formData.externalVO,'receiveTel',response.data.externalBackVO.receiveTel)
this.$set(this.formData.externalVO,'receiveEmail',response.data.externalBackVO.receiveEmail)
this.$set(this.formData.externalVO,'notifyCompanyName',response.data.externalBackVO.notifyCompanyName)
this.$set(this.formData.externalVO,'notifyAddress',response.data.externalBackVO.notifyAddress)
this.$set(this.formData.externalVO,'notifyTel',response.data.externalBackVO.notifyTel)
this.$set(this.formData.externalVO,'notifyEmail',response.data.externalBackVO.notifyEmail)
this.$set(this.formData.externalVO,'goodName',response.data.externalBackVO.goodName)
this.$set(this.formData.externalVO,'clearanceFileId',response.data.externalBackVO.clearanceFileId)
this.$set(this.formData.externalVO,'fromNo',response.data.externalBackVO.fromNo)
this.$set(this.formData.externalVO,'baNo',response.data.externalBackVO.baNo)
this.$set(this.formData.externalVO,'packNum',response.data.externalBackVO.packNum)
this.$set(this.formData.externalVO,'packUnit',response.data.externalBackVO.packUnit)
this.$set(this.formData.externalVO,'clearanceRequireData',['COO证书','CXX证书','ABC证书','QWE证书'].includes(response.data.externalBackVO.clearanceRequire)?response.data.externalBackVO.clearanceRequire:'自定义')
this.$set(this.formData.externalVO,'clearanceRequire',response.data.externalBackVO.clearanceRequire)
this.$set(this.formData.externalVO,'provide',response.data.externalBackVO.provide)
this.$set(this.formData.externalVO,'badCooperationRecord',response.data.externalBackVO.badCooperationRecord)
}
});
}
},
mounted() {},
methods: {
strToArray(val) {
if(!val || val == '') {
return []
}else{
let data = val.split(",")
return data.map(item=>Number(item))
}
},
sameReceive() {
this.$set(this.formData.externalVO,'notifyCompanyName',this.formData.externalVO.receiveCompanyName)
this.$set(this.formData.externalVO,'notifyAddress',this.formData.externalVO.receiveAddress)
this.$set(this.formData.externalVO,'notifyTel',this.formData.externalVO.receiveTel)
this.$set(this.formData.externalVO,'notifyEmail',this.formData.externalVO.receiveEmail)
},
addFileNo() {
this.showFileNoDialog = true
this.$refs.fileNoForm.resetFields()
},
getFile() {
getFileNoPage().then(res => {
this.fileList = res.data.list
})
},
addfile() {
this.$refs.fileNoForm.validate(vaild=>{
if(vaild){
createFileNo(this.fileNoForm).then(()=>{
this.showFileNoDialog = false
this.getFile()
})
}else{
this.$message.error(this.$t('请完整填写表单'))
}
})
},
changeFile(val) {
let file = this.fileList.find(item=>item.id == val)
this.$set(this.formData.externalVO,'fromNo',file.fromNo)
this.$set(this.formData.externalVO,'baNo',file.baNo)
},
changeRequire(val) {
if(val != '自定义'){
this.$set(this.formData.externalVO,'clearanceRequire',val)
}else{
this.$set(this.formData.externalVO,'clearanceRequire','')
}
},
getCountry(countryId, districtId) {
let country = this.treeList.find(item=>item.id == countryId)
let district = country.children.find(item=>item.id == districtId)
return this.$l(country, 'title')+' '+this.$l(district, 'title')
},
delContact(index){
this.$confirm(this.$t('确定删除此联系人么?')).then(() => {
this.formData.contactList.splice(index, 1)
})
},
delBank(index){
if(this.formData.bankList[index].id){
this.$prompt(this.$t("请输入密码"), {
inputType: 'password'
})
.then(({value}) => {
if(value && value != ''){
return validatePwd({
busiType: 5,
pwd: value
})
}
this.$message.error(this.$t('密码不能为空'))
})
.then(res => {
if(!res.data){
return this.$message.error(this.$t('密码错误'))
}
this.formData.bankList.splice(index, 1)
})
return
}
this.$confirm(this.$t('确定删除此银行信息么?')).then(() => {
this.formData.bankList.splice(index, 1)
})
},
onAreaChange(type, val){
this.$set(this.formData, type, val)
},
}
}
</script>
<style lang="scss" scoped>
.el-upload__tip {
line-height: 1.2;
}
.card-header{
display: flex;
align-items: center;
justify-content: space-between;
.title{
font-size: 18px;
}
}
::v-deep .data-list .el-form-item__error{
position: static;
}
.red{
color: red;
}
.supplier-item{
margin-left: 30px;
}
</style>
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
<div class="app-container"> <div class="app-container">
<el-form ref="elForm" :model="formData" :rules="rules" inline size="small" label-width="100px" <el-form ref="elForm" :model="formData" :rules="rules" inline size="small" label-width="100px"
label-position="left"> label-position="left">
<div>
<el-form-item>
<el-radio v-model="formData.areaType" :label="0" :disabled="disabled">{{$t('国内')}}</el-radio>
<el-radio v-model="formData.areaType" :label="1" :disabled="disabled">{{$t('国外')}}</el-radio>
</el-form-item>
</div>
<div> <div>
<el-form-item :label="$t('公司全称')" prop="companyZh"> <el-form-item :label="$t('公司全称')" prop="companyZh">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable></el-input> <el-input v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable></el-input>
...@@ -12,13 +18,13 @@ ...@@ -12,13 +18,13 @@
</div> </div>
<div> <div>
<el-form-item :label="$t('合作开始时间')" prop="cooperationDateStart"> <el-form-item :label="$t('合作开始时间')" prop="cooperationDateStart">
<el-date-picker v-model="formData.cooperationDateStart" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker> <el-date-picker v-model="formData.cooperationDateStart" value-format="timestamp" clearable></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('合作结束时间')" prop="cooperationDateEnd"> <el-form-item :label="$t('合作结束时间')" prop="cooperationDateEnd">
<el-date-picker v-model="formData.cooperationDateEnd" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker> <el-date-picker v-model="formData.cooperationDateEnd" value-format="timestamp" clearable></el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
<div> <div v-if="formData.areaType==0">
<el-form-item :label="$t('公司电话')" prop="tell"> <el-form-item :label="$t('公司电话')" prop="tell">
<el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable></el-input> <el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable></el-input>
</el-form-item> </el-form-item>
...@@ -26,7 +32,7 @@ ...@@ -26,7 +32,7 @@
<el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable></el-input> <el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div> <div v-if="formData.areaType==0">
<el-form-item :label="$t('公司地址')" prop="address"> <el-form-item :label="$t('公司地址')" prop="address">
<area-selector <area-selector
:country="formData.country" :country="formData.country"
...@@ -39,23 +45,26 @@ ...@@ -39,23 +45,26 @@
<el-input v-model="formData.address" :placeholder="$t('请输入详细地址')" class="mt-10"></el-input> <el-input v-model="formData.address" :placeholder="$t('请输入详细地址')" class="mt-10"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div> <div v-if="formData.areaType==0">
<el-form-item :label="$t('备注')" prop="remark"> <el-form-item :label="$t('备注')" prop="remark">
<el-input v-model="formData.remark" type="textarea" :placeholder="$t('请输入备注')" <el-input v-model="formData.remark" type="textarea" :placeholder="$t('请输入备注')"
:autosize="{minRows: 4, maxRows: 4}" class="w-500"></el-input> :autosize="{minRows: 4, maxRows: 4}" class="w-500"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div> <div v-if="formData.areaType==0">
<el-form-item :label="$t('供应商类别')" prop="companyType"> <el-form-item :label="$t('供应商类别')" prop="companyType">
<dict-selector v-model="formData.companyTypeArr" type="company_type" multiple /> <dict-selector v-model="formData.companyTypeArr" type="company_type" multiple :disabled="disabled" />
</el-form-item> </el-form-item>
</div>
<div>
<el-form-item :label="$t('合作类型')" prop="cooperationType"> <el-form-item :label="$t('合作类型')" prop="cooperationType">
<dict-selector v-model="formData.cooperationType" type="cooperation_type" /> <dict-selector v-model="formData.cooperationType" type="cooperation_type" />
</el-form-item> </el-form-item>
</div> </div>
<div> <div v-if="formData.areaType==0">
<el-form-item :label="$t('营业执照')" prop="license"> <el-form-item :label="$t('营业执照')" prop="license">
<upload v-model="formData.license" /> <upload v-model="formData.license" />
</el-form-item> </el-form-item>
...@@ -63,13 +72,24 @@ ...@@ -63,13 +72,24 @@
<upload v-model="formData.contract" /> <upload v-model="formData.contract" />
</el-form-item> </el-form-item>
</div> </div>
<div> <div v-if="formData.areaType==0">
<el-form-item :label="$t('统一信用代码')" prop="licenseNumber"> <el-form-item :label="$t('统一信用代码')" prop="licenseNumber">
<el-input v-model="formData.licenseNumber" :placeholder="$t('请输入统一社会信用代码')" clearable <el-input v-model="formData.licenseNumber" :placeholder="$t('请输入统一社会信用代码')" clearable
:style="{width: '100%'}"></el-input> :style="{width: '100%'}"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<el-card> <div v-if="formData.areaType==0">
<el-form-item :label="$t('结算周期')" prop="settlementPeriod">
<dict-selector v-model="formData.settlementPeriod" type="settlement_period" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('价格优势')" prop="priceAdvantage">
<dict-selector v-model="formData.priceAdvantage" type="price_advantage" />
</el-form-item>
</div>
<div v-if="formData.areaType==0">
<el-card class="mt-10">
<div class="card-header" slot="header"> <div class="card-header" slot="header">
<div class="title">{{$t('联系人')}}</div> <div class="title">{{$t('联系人')}}</div>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="formData.contactList.push({})"></el-button> <el-button type="primary" icon="el-icon-plus" size="mini" @click="formData.contactList.push({})"></el-button>
...@@ -216,28 +236,309 @@ ...@@ -216,28 +236,309 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<el-card class="mt-10">
<div class="card-header" slot="header">
<div class="title">{{$t('海运优质资源条件')}}</div>
</div>
<div>
<el-form-item :label="$t('供应商优势船公司')" prop="shipCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.shipCompany" company-type="9" :disabled="false" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('海运船公司优势港口')" prop="ports" label-width="250">
<el-select v-model="formData.resourceVO.ports" filterable multiple clearable>
<el-option v-for="(item) in seaPort" :key="item.id" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('港口优势条件')" prop="portConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.portConditions" type="port_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('订舱公司')" prop="bookCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.bookCompany" company-type="1" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('订舱优势条件')" prop="bookConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.bookConditions" type="book_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('拖车公司')" prop="trailerCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.trailerCompany" company-type="4" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('拖车优势条件')" prop="trailerConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.trailerConditions" type="trailer_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('报关公司')" prop="customsCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.customsCompany" company-type="2" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('报关优势条件')" prop="customsConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.customsConditions" type="customs_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('证书公司')" prop="certificateCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.certificateCompany" company-type="3" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('证书优势条件')" prop="certificateConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.certificateConditions" type="certificate_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作不良记录登记')" prop="badCooperationRecord" label-width="250">
<el-input v-model="formData.resourceVO.badCooperationRecord" :placeholder="$t('请输入合作不良记录登记')" show-word-limit clearable></el-input>
</el-form-item>
</div>
</el-card>
<el-card class="mt-10">
<div class="card-header" slot="header">
<div class="title">{{$t('空运优质资源条件')}}</div>
</div>
<div>
<el-form-item :label="$t('空运优势机场')" prop="airdrome" label-width="250">
<el-select v-model="formData.resourceVO.airdrome" filterable multiple clearable>
<el-option v-for="(item) in airPort" :key="item.id" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('空运优势航空公司')" prop="airCompany" label-width="250">
<suppliers-selector v-model="formData.resourceVO.airCompany" company-type="10" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('航空公司优势条件')" prop="airConditions" label-width="250">
<dict-selector v-model="formData.resourceVO.airConditions" type="port_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('订舱公司')" prop="bookCompanyAir" label-width="250">
<suppliers-selector v-model="formData.resourceVO.bookCompanyAir" company-type="5" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('订舱优势条件')" prop="bookConditionsAir" label-width="250">
<dict-selector v-model="formData.resourceVO.bookConditionsAir" type="book_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('报关公司')" prop="customsCompanyAir" label-width="250">
<suppliers-selector v-model="formData.resourceVO.customsCompanyAir" company-type="7" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('报关优势条件')" prop="customsConditionsAir" label-width="250">
<dict-selector v-model="formData.resourceVO.customsConditionsAir" type="customs_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('证书公司')" prop="certificateCompanyAir" label-width="250">
<suppliers-selector v-model="formData.resourceVO.certificateCompanyAir" company-type="3" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('证书优势条件')" prop="certificateConditionsAir" label-width="250">
<dict-selector v-model="formData.resourceVO.certificateConditionsAir" type="certificate_conditions" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作不良记录登记')" prop="badCooperationRecordAir" label-width="250">
<el-input v-model="formData.resourceVO.badCooperationRecordAir" :placeholder="$t('请输入合作不良记录登记')" show-word-limit clearable></el-input>
</el-form-item>
</div>
</el-card>
</div>
<div v-if="formData.areaType==1">
<h1>代理商</h1>
<h2>收货人</h2>
<div class="supplier-item">
<el-form-item :label="$t('公司名称')" prop="receiveCompanyName">
<el-input v-model="formData.externalVO.receiveCompanyName" :placeholder="$t('请输入公司名称')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('地址')" prop="receiveAddress">
<el-input v-model="formData.externalVO.receiveAddress" :placeholder="$t('请输入地址')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('电话')" prop="receiveTel">
<el-input v-model="formData.externalVO.receiveTel" :placeholder="$t('请输入电话')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('邮箱')" prop="receiveEmail">
<el-input v-model="formData.externalVO.receiveEmail" :placeholder="$t('请输入邮箱')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div style="display: flex;align-items: flex-end;">
<h2>通知方</h2>
<el-button style="margin-left: 30px;" type="text" @click="sameReceive">{{$t('与收货人相同')}}</el-button>
</div>
<div class="supplier-item">
<el-form-item :label="$t('公司名称')" prop="notifyCompanyName">
<el-input v-model="formData.externalVO.notifyCompanyName" :placeholder="$t('请输入公司名称')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('地址')" prop="notifyAddress">
<el-input v-model="formData.externalVO.notifyAddress" :placeholder="$t('请输入地址')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('电话')" prop="notifyTel">
<el-input v-model="formData.externalVO.notifyTel" :placeholder="$t('请输入电话')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('邮箱')" prop="notifyEmail">
<el-input v-model="formData.externalVO.notifyEmail" :placeholder="$t('请输入邮箱')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<h2>货物描述</h2>
<div class="supplier-item">
<el-form-item :label="$t('品名')" prop="goodName">
<el-input v-model="formData.externalVO.goodName" :placeholder="$t('请输入品名')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('清关国家')" prop="clearanceFileId">
<el-select v-model="formData.externalVO.clearanceFileId" @change="changeFile">
<el-option v-for="(item) in fileList" :value="item.id" :label="getCountry(item.country,item.district)" :key="item.id" />
</el-select>
</el-form-item>
<el-button type="text" @click="addFileNo" v-hasPermi="['ecw:supplier:addno']">{{$t('新增清关文件号码')}}</el-button>
</div>
<div class="supplier-item">
<el-form-item :label="$t('From M No')" prop="fromNo">
<el-input v-model="formData.externalVO.fromNo" :placeholder="$t('请输入From M No')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('BA NO')" prop="baNo">
<el-input v-model="formData.externalVO.baNo" :placeholder="$t('请输入BA NO')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div class="supplier-item">
<el-form-item :label="$t('包装数量')" prop="packNum">
<el-input v-model="formData.externalVO.packNum" :placeholder="$t('请输入包装数量')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('包装单位')" prop="packUnit">
<el-input v-model="formData.externalVO.packUnit" :placeholder="$t('请输入包装单位')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('清关要求')" prop="clearanceRequireData">
<el-select v-model="formData.externalVO.clearanceRequireData" @change="changeRequire">
<el-option v-for="(item) in requireData" :value="item" :label="item" :key="item" />
</el-select>
</el-form-item>
<el-form-item v-if="formData.externalVO.clearanceRequireData=='自定义'" :label="$t('自定义要求')" prop="clearanceRequire">
<el-input v-model="formData.externalVO.clearanceRequire" :placeholder="$t('请输入自定义要求')" show-word-limit clearable></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('是否提供')" prop="provide">
<el-radio v-model="formData.externalVO.provide" :label="1">{{$t('提供')}}</el-radio>
<el-radio v-model="formData.externalVO.provide" :label="2">{{$t('不提供')}}</el-radio>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('合作不良记录登记')" prop="badCooperationRecord" label-width="250">
<el-input v-model="formData.externalVO.badCooperationRecord" :placeholder="$t('请输入合作不良记录登记')" show-word-limit clearable></el-input>
</el-form-item>
</div>
</div>
<el-form-item size="large" class="mt-20"> <el-form-item size="large" class="mt-20">
<el-button type="primary" @click="submitForm">{{$t('提交')}}</el-button> <el-button type="primary" @click="submitForm">{{$t('提交')}}</el-button>
<el-button @click="resetForm">{{$t('重置')}}</el-button> <el-button @click="resetForm">{{$t('重置')}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-dialog :title="$t('新增清关号码')" :visible.sync="showFileNoDialog" width="50%" append-to-body :close-on-click-modal="false">
<el-table v-if="!addFileNoShow" ref="consigneeTable" :data="fileList" highlight-current-row style="width: 100%">
<el-table-column type="index" width="50" />
<el-table-column prop="country" :label="$t('国家地区')" align="center" header-align="center">
<template slot-scope="scope">
{{getCountry(scope.row.country,scope.row.district)}}
</template>
</el-table-column>
<el-table-column prop="fromNo" :label="$t('From M No')" align="center" header-align="center" />
<el-table-column prop="baNo" :label="$t('BA NO')" align="center" header-align="center" />
<el-table-column
:label="$t('操作')"
align="center"
header-align="center"
width="250"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="selectFile(scope.row)"
>{{ $t('选择') }}</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="updateFileNo(scope.row)"
>{{ $t('编辑') }}</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="deleteFileNo(scope.row)"
>{{ $t('删除') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-form v-else ref="fileNoForm" :model="fileNoForm" :rules="fileNoRules">
<el-form-item :label="$t('国家')" prop="country">
<el-select v-model="fileNoForm.country">
<el-option v-for="(item) in treeList" :value="item.id" :label="$l(item, 'title')" :key="item.id" />
</el-select>
</el-form-item>
<el-form-item :label="$t('地区')" prop="district">
<el-select v-model="fileNoForm.district">
<el-option v-for="dict in districtList" :key="dict.id" :label="$l(dict, 'title')" :value="dict.id" />
</el-select>
</el-form-item>
<el-form-item :label="$t('From M No')" prop="fromNo">
<el-input v-model="fileNoForm.fromNo" :placeholder="$t('请输入From M No')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('BA NO')" prop="baNo">
<el-input v-model="fileNoForm.baNo" :placeholder="$t('请输入BA NO')" show-word-limit clearable></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
v-if="!addFileNoShow"
type="primary"
@click="addFileNoShow = true"
>{{ $t('新增') }}</el-button>
<el-button v-if="!addFileNoShow" @click="showFileNoDialog = false">{{
$t('取消')
}}</el-button>
<el-button v-if="addFileNoShow" type="primary" @click="addfile">{{
$t('提交')
}}</el-button>
<el-button
v-if="addFileNoShow"
@click="
addFileNoShow = false
getFile()
fileNoForm = {}
"
>{{ $t('返回') }}</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { createSupplier, updateSupplier, getSupplier} from "@/api/ecw/supplier"; import { createSupplier, updateSupplier, getSupplier, createFileNo, updateFileNo, getFileNoPage} from "@/api/ecw/supplier";
import upload from '@/components/ImageUpload' import upload from '@/components/ImageUpload'
import { getListTree } from "@/api/ecw/region"; import { getListTree } from "@/api/ecw/region";
import AreaSelector from '@/components/AreaSelector' import AreaSelector from '@/components/AreaSelector'
import {getCurrencyList} from '@/api/ecw/currency' import {getCurrencyList} from '@/api/ecw/currency'
import Selector from '@/components/Selector' import Selector from '@/components/Selector'
import {validatePwd} from '@/api/ecw/busiPwd' import {validatePwd} from '@/api/ecw/busiPwd'
import SuppliersSelector from '@/components/SuppliersSelector'
import { getDockPage } from "@/api/ecw/dock";
export default { export default {
components: {upload, AreaSelector, Selector}, components: {upload, AreaSelector, Selector, SuppliersSelector},
props: [], props: [],
data() { data() {
return { return {
disabled: false,
formData: { formData: {
areaType: 0,
companyZh: undefined, companyZh: undefined,
agentName: undefined, agentName: undefined,
tell: "", tell: "",
...@@ -246,11 +547,15 @@ export default { ...@@ -246,11 +547,15 @@ export default {
field110: undefined, field110: undefined,
companyTypeArr: [], companyTypeArr: [],
cooperationType: undefined, cooperationType: undefined,
settlementPeriod: undefined,
priceAdvantage: undefined,
license: null, license: null,
contract: null, contract: null,
licenseNumber: undefined, licenseNumber: undefined,
contactList:[], contactList:[],
bankList: [] bankList: [],
resourceVO: {},
externalVO: {}
}, },
rules: { rules: {
companyZh: [{ companyZh: [{
...@@ -278,11 +583,36 @@ export default { ...@@ -278,11 +583,36 @@ export default {
treeList:[], treeList:[],
provinceList:[], provinceList:[],
cityList:[], cityList:[],
currencyList:[] // 码头
allDocks: [],
currencyList:[],
requireData: [
'COO证书','CXX证书','ABC证书','QWE证书','自定义'
],
fileList: [],
fileNoForm: {},
fileNoRules: {
country: [{required: true,message: this.$t('请输入国家'),trigger: 'blur'}],
district: [{required: true,message: this.$t('请输入地区'),trigger: 'blur'}],
fromNo: [{required: true,message: this.$t('请输入From M No'),trigger: 'blur'}],
baNo: [{required: true,message: this.$t('请输入BA NO'),trigger: 'blur'}],
},
showFileNoDialog: false,
addFileNoShow: false
} }
}, },
computed: { computed: {
airPort(){
return this.allDocks.filter(item => item.portType == 1)
},
seaPort(){
return this.allDocks.filter(item => item.portType == 2)
},
districtList(){
if(!this.fileNoForm.country) return []
let country = this.treeList.find(item => item.id == this.fileNoForm.country)
return country && country.children || []
},
}, },
watch: { watch: {
'formData.country'(country){ 'formData.country'(country){
...@@ -307,19 +637,64 @@ export default { ...@@ -307,19 +637,64 @@ export default {
getCurrencyList().then(res => { getCurrencyList().then(res => {
this.currencyList = res.data this.currencyList = res.data
}) })
// 码头
getDockPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
this.allDocks = res.data.list;
});
this.getFile()
// 回显数据需要在加载了地区数据之后,否则无法正常回显 // 回显数据需要在加载了地区数据之后,否则无法正常回显
getListTree({treeType: 1}).then(response => { getListTree({treeType: 1}).then(response => {
this.treeList = response.data this.treeList = response.data
if(this.$route.query.id){ if(this.$route.query.id){
this.disabled = true
getSupplier(this.$route.query.id).then(response => { getSupplier(this.$route.query.id).then(response => {
/* response.data.companyType = response.data.companyType.split(",") || [] */ /* response.data.companyType = response.data.companyType.split(",") || [] */
this.formData = response.data this.formData = response.data
this.$set(this.formData, 'companyTypeArr', response.data.companyType?.split(",") || [])
this.$set(this.formData, 'companyTypeArr', this.strToArray(response.data.companyType))
this.$set(this.formData, 'settlementPeriod', response.data.settlementPeriod==0?null:response.data.settlementPeriod)
this.formData.bankList.forEach(item => { this.formData.bankList.forEach(item => {
item.currency = +item.currency item.currency = +item.currency
}) })
if(response.data.resourceBackVO){
this.formData.resourceVO = response.data.resourceBackVO
this.formData.externalVO = response.data.externalBackVO??{}
this.$set(this.formData.resourceVO,'shipCompany',this.strToArray(response.data.resourceBackVO.shipCompany))
this.$set(this.formData.resourceVO,'ports',this.strToArray(response.data.resourceBackVO.ports))
this.$set(this.formData.resourceVO,'bookCompany',this.strToArray(response.data.resourceBackVO.bookCompany))
this.$set(this.formData.resourceVO,'trailerCompany',this.strToArray(response.data.resourceBackVO.trailerCompany))
this.$set(this.formData.resourceVO,'customsCompany',this.strToArray(response.data.resourceBackVO.customsCompany))
this.$set(this.formData.resourceVO,'certificateCompany',this.strToArray(response.data.resourceBackVO.certificateCompany))
this.$set(this.formData.resourceVO,'airdrome',this.strToArray(response.data.resourceBackVO.airdrome))
this.$set(this.formData.resourceVO,'airCompany',this.strToArray(response.data.resourceBackVO.airCompany))
this.$set(this.formData.resourceVO,'bookCompanyAir',this.strToArray(response.data.resourceBackVO.bookCompanyAir))
this.$set(this.formData.resourceVO,'customsCompanyAir',this.strToArray(response.data.resourceBackVO.customsCompanyAir))
this.$set(this.formData.resourceVO,'certificateCompanyAir',this.strToArray(response.data.resourceBackVO.certificateCompanyAir))
}
if(response.data.externalBackVO){
this.formData.externalVO = response.data.externalBackVO
this.formData.resourceVO = response.data.resourceBackVO??{}
this.$set(this.formData.externalVO,'receiveCompanyName',response.data.externalBackVO.receiveCompanyName)
this.$set(this.formData.externalVO,'receiveAddress',response.data.externalBackVO.receiveAddress)
this.$set(this.formData.externalVO,'receiveTel',response.data.externalBackVO.receiveTel)
this.$set(this.formData.externalVO,'receiveEmail',response.data.externalBackVO.receiveEmail)
this.$set(this.formData.externalVO,'notifyCompanyName',response.data.externalBackVO.notifyCompanyName)
this.$set(this.formData.externalVO,'notifyAddress',response.data.externalBackVO.notifyAddress)
this.$set(this.formData.externalVO,'notifyTel',response.data.externalBackVO.notifyTel)
this.$set(this.formData.externalVO,'notifyEmail',response.data.externalBackVO.notifyEmail)
this.$set(this.formData.externalVO,'goodName',response.data.externalBackVO.goodName)
this.$set(this.formData.externalVO,'clearanceFileId',response.data.externalBackVO.clearanceFileId)
this.$set(this.formData.externalVO,'fromNo',response.data.externalBackVO.fromNo)
this.$set(this.formData.externalVO,'baNo',response.data.externalBackVO.baNo)
this.$set(this.formData.externalVO,'packNum',response.data.externalBackVO.packNum)
this.$set(this.formData.externalVO,'packUnit',response.data.externalBackVO.packUnit)
this.$set(this.formData.externalVO,'clearanceRequireData',['COO证书','CXX证书','ABC证书','QWE证书'].includes(response.data.externalBackVO.clearanceRequire)?response.data.externalBackVO.clearanceRequire:'自定义')
this.$set(this.formData.externalVO,'clearanceRequire',response.data.externalBackVO.clearanceRequire)
this.$set(this.formData.externalVO,'provide',response.data.externalBackVO.provide)
this.$set(this.formData.externalVO,'badCooperationRecord',response.data.externalBackVO.badCooperationRecord)
}
}); });
} }
}) })
...@@ -327,6 +702,75 @@ export default { ...@@ -327,6 +702,75 @@ export default {
}, },
mounted() {}, mounted() {},
methods: { methods: {
strToArray(val) {
if(!val || val == '') {
return []
}else{
let data = val.split(",")
return data.map(item=>Number(item))
}
},
sameReceive() {
this.$set(this.formData.externalVO,'notifyCompanyName',this.formData.externalVO.receiveCompanyName)
this.$set(this.formData.externalVO,'notifyAddress',this.formData.externalVO.receiveAddress)
this.$set(this.formData.externalVO,'notifyTel',this.formData.externalVO.receiveTel)
this.$set(this.formData.externalVO,'notifyEmail',this.formData.externalVO.receiveEmail)
},
addFileNo() {
this.showFileNoDialog = true
this.fileNoForm = {}
},
getFile() {
getFileNoPage().then(res => {
this.fileList = res.data.list
})
},
addfile() {
this.$refs.fileNoForm.validate(vaild=>{
if(vaild){
if(this.fileNoForm.id != null){
updateFileNo(this.fileNoForm).then(()=>{
this.getFile()
this.addFileNoShow = false
})
}else{
createFileNo(this.fileNoForm).then(()=>{
this.getFile()
this.addFileNoShow = false
})
}
}else{
this.$message.error(this.$t('请完整填写表单'))
}
})
},
changeFile(val) {
let file = this.fileList.find(item=>item.id == val)
this.$set(this.formData.externalVO,'fromNo',file.fromNo)
this.$set(this.formData.externalVO,'baNo',file.baNo)
},
selectFile(row) {
this.$set(this.formData.externalVO,'clearanceFileId',row.id)
this.$set(this.formData.externalVO,'baNo',row.baNo)
this.$set(this.formData.externalVO,'baNo',row.baNo)
this.showFileNoDialog = false
},
updateFileNo(row) {
this.addFileNoShow = true
this.fileNoForm = row
},
changeRequire(val) {
if(val != '自定义'){
this.$set(this.formData.externalVO,'clearanceRequire',val)
}else{
this.$set(this.formData.externalVO,'clearanceRequire','')
}
},
getCountry(countryId, districtId) {
let country = this.treeList.find(item=>item.id == countryId)
let district = country.children.find(item=>item.id == districtId)
return this.$l(country, 'title')+' '+this.$l(district, 'title')
},
delContact(index){ delContact(index){
this.$confirm(this.$t('确定删除此联系人么?')).then(() => { this.$confirm(this.$t('确定删除此联系人么?')).then(() => {
this.formData.contactList.splice(index, 1) this.formData.contactList.splice(index, 1)
...@@ -367,14 +811,32 @@ export default { ...@@ -367,14 +811,32 @@ export default {
if (!valid) { if (!valid) {
return this.$showFormValidateErrors(errors) return this.$showFormValidateErrors(errors)
} }
if(!this.formData.bankList.length){ if(this.formData.areaType == 0){
return this.$message.error(this.$t('请添加银行信息')) if(!this.formData.bankList.length){
return this.$message.error(this.$t('请添加银行信息'))
}
if(!this.formData.contactList.length){
return this.$message.error(this.$t('请添加联系人信息'))
}
} }
if(!this.formData.contactList.length){
return this.$message.error(this.$t('请添加联系人信息')) let data = JSON.parse(JSON.stringify(this.formData))
if(this.formData.areaType == 0) {
data.resourceVO.shipCompany = data.resourceVO.shipCompany?.toString()
data.resourceVO.ports = data.resourceVO.ports?.toString()
data.resourceVO.bookCompany = data.resourceVO.bookCompany?.toString()
data.resourceVO.trailerCompany = data.resourceVO.trailerCompany?.toString()
data.resourceVO.customsCompany = data.resourceVO.customsCompany?.toString()
data.resourceVO.certificateCompany = data.resourceVO.certificateCompany?.toString()
data.resourceVO.airdrome = data.resourceVO.airdrome?.toString()
data.resourceVO.airCompany = data.resourceVO.airCompany?.toString()
data.resourceVO.bookCompanyAir = data.resourceVO.bookCompanyAir?.toString()
data.resourceVO.customsCompanyAir = data.resourceVO.customsCompanyAir?.toString()
data.resourceVO.certificateCompanyAir = data.resourceVO.certificateCompanyAir?.toString()
}else{
delete data.resourceVO
} }
let data = Object.assign({}, this.formData)
// 修改的提交 // 修改的提交
if (data.id != null) { if (data.id != null) {
...@@ -393,7 +855,26 @@ export default { ...@@ -393,7 +855,26 @@ export default {
}); });
}, },
resetForm() { resetForm() {
this.$refs['elForm'].resetFields() this.formData = {
areaType: this.formData.areaType,
companyZh: undefined,
agentName: undefined,
tell: "",
address: "",
remark: undefined,
field110: undefined,
companyTypeArr: [],
cooperationType: undefined,
settlementPeriod: undefined,
priceAdvantage: undefined,
license: null,
contract: null,
licenseNumber: undefined,
contactList:[],
bankList: [],
resourceVO: {},
externalVO: {}
}
} }
} }
} }
...@@ -417,4 +898,8 @@ export default { ...@@ -417,4 +898,8 @@ export default {
.red{ .red{
color: red; color: red;
} }
.supplier-item{
margin-left: 30px;
}
</style> </style>
...@@ -66,6 +66,8 @@ ...@@ -66,6 +66,8 @@
</el-table-column> </el-table-column>
<el-table-column fixed="right" :label="$t('操作')" align="center" class-name="small-padding fixed-width"> <el-table-column fixed="right" :label="$t('操作')" 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="handleDetail(scope.row)"
v-hasPermi="['ecw:supplier:query']">{{$t('详情')}}</el-button>
<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:supplier:update']">{{$t('修改')}}</el-button> v-hasPermi="['ecw:supplier:update']">{{$t('修改')}}</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)"
...@@ -198,6 +200,11 @@ export default { ...@@ -198,6 +200,11 @@ export default {
handleAdd() { handleAdd() {
return this.$router.push('/supplier/edit') return this.$router.push('/supplier/edit')
}, },
/** 详情按钮操作 */
handleDetail(row) {
return this.$router.push('detail?id=' + row.id)
},
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
......
...@@ -268,6 +268,13 @@ ...@@ -268,6 +268,13 @@
<el-input v-model="form.remark" :placeholder="$t('请输入备注')" /> <el-input v-model="form.remark" :placeholder="$t('请输入备注')" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('会员控货下单要求')" prop="kycStatus">
<el-radio-group v-model="form.kycStatus">
<el-radio v-for="dict in kycDatas" :key="dict.value" :label="dict.value">{{$l(dict, 'label')}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button> <el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button>
...@@ -546,7 +553,8 @@ export default { ...@@ -546,7 +553,8 @@ export default {
// 数据字典 // 数据字典
statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS), statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS),
regionTypeDatas: getDictDatas(DICT_TYPE.ECW_REGION_TYPE), regionTypeDatas: getDictDatas(DICT_TYPE.ECW_REGION_TYPE),
transportDatas: getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE) transportDatas: getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE),
kycDatas: getDictDatas(DICT_TYPE.ECW_KYC_DATA)
}; };
}, },
......
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