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

订单报价单等优化和修复bug

parent 9e08d3dc
<template> <template>
<el-dialog title="选择联系人" visible :before-close="closeDialog" :close-on-click-modal="false"> <el-dialog title="选择联系人" visible :before-close="closeDialog" :close-on-click-modal="false">
<div class="header mb-10"> <div class="header mb-10 flex-center">
<div class="flex-center">关键字:</div> <div class="flex-center">关键字:</div>
<el-input v-model="form.searchKey" placeholder="" class="w-200"></el-input> <el-input v-model="form.searchKey" placeholder="" class="w-200"></el-input>
<el-button type="primary" class="ml-10" @click="handleQuery">搜索</el-button> <el-button type="primary" class="ml-10" @click="handleQuery">搜索</el-button>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
:value="index"> :value="index">
</el-option> </el-option>
</el-select> </el-select>
<el-button v-if="quickable" type="text" @click="showQuickCreate=true" class="ml-10">{{$t('快速新建')}}</el-button> <!-- <el-button v-if="quickable" type="text" @click="showQuickCreate=true" class="ml-10">{{$t('快速新建')}}</el-button> -->
<!-- <quick-create v-if="showQuickCreate" @success="onQuickCreateSuccess" @close="showQuickCreate=false" :default="{type}"></quick-create> --> <!-- <quick-create v-if="showQuickCreate" @success="onQuickCreateSuccess" @close="showQuickCreate=false" :default="{type}"></quick-create> -->
</div> </div>
...@@ -33,7 +33,7 @@ export default { ...@@ -33,7 +33,7 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
type: [String, Number], // 客户类别,新建时指定默认类别,也可以根据需要筛选联系人所属的客户类别 type: String, // 客户类别,新建时指定默认类别,也可以根据需要筛选联系人所属的客户类别
}, },
data(){ data(){
return { return {
...@@ -78,19 +78,10 @@ export default { ...@@ -78,19 +78,10 @@ export default {
const QuickCreateComp = Vue.extend(QuickCreateCustomer) const QuickCreateComp = Vue.extend(QuickCreateCustomer)
const dialog = new QuickCreateComp({ const dialog = new QuickCreateComp({
propsData:{ propsData:{
default: {type: this.type} type: this.type
}, },
}) })
/* dialog.$on = () => {
return {
success: this.onQuickCreateSuccess,
close: () => {
console.log('关闭拉')
this.showQuickCreate = false
}
}
} */
dialog.$on('close', () => { dialog.$on('close', () => {
console.log('关闭拉') console.log('关闭拉')
this.showQuickCreate = false this.showQuickCreate = false
...@@ -104,17 +95,8 @@ export default { ...@@ -104,17 +95,8 @@ export default {
dialog.$mount() dialog.$mount()
console.log({
dialog,
parent: this
})
window.dialogComp = dialog window.dialogComp = dialog
document.body.append(dialog.$el) document.body.append(dialog.$el)
/* dialog.remove = () => {
console.log('关闭拉11')
document.body.removeChild(dialog.$el)
} */
} }
}, },
created(){ created(){
...@@ -145,9 +127,11 @@ export default { ...@@ -145,9 +127,11 @@ export default {
.then(res => this.list = res.data) .then(res => this.list = res.data)
.finally(() => this.loading = false) .finally(() => this.loading = false)
}, },
onQuickCreateSuccess(id){ onQuickCreateSuccess(data){
this.showQuickCreate = false this.showQuickCreate = false
getCustomerContactsListByCustomer({customerId: id}).then(res => { this.list.unshift(data)
this.index = 0
/* getCustomerContactsListByCustomer({customerId: id}).then(res => {
if(!res.data || !res.data.length){ if(!res.data || !res.data.length){
return this.$message.error(this.$t('联系人信息获取失败')) return this.$message.error(this.$t('联系人信息获取失败'))
} }
...@@ -155,7 +139,7 @@ export default { ...@@ -155,7 +139,7 @@ export default {
data.contactsName = data.name // 字段名跟getCustomerContactsSelect对齐 data.contactsName = data.name // 字段名跟getCustomerContactsSelect对齐
this.list.unshift(data) this.list.unshift(data)
this.index = 0 this.index = 0
}) }) */
} }
} }
} }
......
<template> <template>
<div class="dict-selector"> <div class="dict-selector">
<el-select v-if="formType == 'select'" v-model="valueSync" :placeholder="placeholder" clearable :multiple="multiple" :disabled="disabled" @change="val => $emit('change', val)"> <el-select v-if="formType == 'select'" v-model="valueSync" :placeholder="placeholder" :clearable="clearable" :multiple="multiple" :disabled="disabled" @change="val => $emit('change', val)">
<el-option v-for="dict in formattedList" <el-option v-for="dict in formattedList"
:key="dict.value" :label="$l(dict, 'label')" :value="dict.value"/> :key="dict.value" :label="$l(dict, 'label')" :value="dict.value"/>
</el-select> </el-select>
...@@ -52,7 +52,8 @@ export default { ...@@ -52,7 +52,8 @@ export default {
filter: { filter: {
type: Function, type: Function,
default: () => true default: () => true
} },
clearable: Boolean
}, },
data(){ data(){
return { return {
......
...@@ -41,7 +41,6 @@ export default { ...@@ -41,7 +41,6 @@ export default {
}, },
watch:{ watch:{
index(val){ index(val){
let productId = val !== '' && val !== null ? this.list[val].id : null let productId = val !== '' && val !== null ? this.list[val].id : null
console.log('index val', val, productId) console.log('index val', val, productId)
this.$emit('input', productId) this.$emit('input', productId)
...@@ -50,15 +49,7 @@ export default { ...@@ -50,15 +49,7 @@ export default {
}, },
value(val){ value(val){
console.log('初始化内容', val) console.log('初始化内容', val)
/* let index = this.list.findIndex(item => item.id == val)
if(index < 0){
getProduct(val).then(res => {
this.list.unshift(res.data)
this.index = 0
})
} */
this.init() this.init()
} }
}, },
created(){ created(){
...@@ -67,14 +58,17 @@ export default { ...@@ -67,14 +58,17 @@ export default {
}, },
methods:{ methods:{
init(){ init(){
if(!this.value) return null if(!this.value){
this.index = null
return
}
let index = this.list.findIndex(item => item.id == this.value) let index = this.list.findIndex(item => item.id == this.value)
if(index < 0){ if(index < 0){
getProduct(this.value).then(res => { getProduct(this.value).then(res => {
this.list.unshift(res.data) this.list.unshift(res.data)
this.index = 0 this.index = 0
}) })
} }else this.index = index
}, },
remoteMethod(keyword){ remoteMethod(keyword){
let params = { let params = {
......
...@@ -73,14 +73,15 @@ export default { ...@@ -73,14 +73,15 @@ export default {
}, },
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }], name : [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
'customerContacts.0.phoneNew': [{ required: true, message: "手机号不能为空", trigger: "blur" }], 'customerContacts.0.phoneNew' : [{ required: true, message: this.$t("手机号不能为空"), trigger: "blur" }],
type: [{ required: true, message: "客户类别不能为空", trigger: "blur" }], 'customerContacts.0.name' : [{ required: true, message: this.$t("联系人不能为空"), trigger: "blur" }],
createTime: [{ required: true, message: "创建时间不能为空", trigger: "blur" }], type : [{ required: true, message: this.$t("客户类别不能为空"), trigger: "blur" }],
source: [{ required: true, message: "客户来源不能为空", trigger: "blur" }], createTime : [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
customerService: [{ required: true, message: "客户经理不能为空", trigger: "blur" }], source : [{ required: true, message: this.$t("客户来源不能为空"), trigger: "blur" }],
status: [{ required: true, message: "客户状态不能为空", trigger: "blur" }], customerService : [{ required: true, message: this.$t("客户经理不能为空"), trigger: "blur" }],
founder: [{ required: true, message: "创建人不能为空", trigger: "blur" }], status : [{ required: true, message: this.$t("客户状态不能为空"), trigger: "blur" }],
founder : [{ required: true, message: this.$t("创建人不能为空"), trigger: "blur" }],
}, },
serviceUserList: [], serviceUserList: [],
countryList: [], countryList: [],
...@@ -121,7 +122,7 @@ export default { ...@@ -121,7 +122,7 @@ export default {
// 添加的提交 // 添加的提交
createCustomer(this.form).then(res => { createCustomer(this.form).then(res => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
return getCustomerContactsSelect({ids: res.data}) return getCustomerContactsSelect({customerId: res.data})
}).then(res => { }).then(res => {
this.$emit('success', res.data[0]) this.$emit('success', res.data[0])
}) })
......
...@@ -11,17 +11,17 @@ ...@@ -11,17 +11,17 @@
<el-option <el-option
v-for="(item, index) in list" v-for="(item, index) in list"
:key="item.id" :key="item.id"
:label="`${item.name}(${item.number})`" :label="$l(item, 'company') + '('+item.companyCode+')'"
:value="index"> :value="index">
</el-option> </el-option>
</el-select> </el-select>
</template> </template>
<script> <script>
import {getSupplier, getSupplierPage} from '@/api/ecw/supplier' import {getSupplier, getSupplierPage} from '@/api/ecw/supplier'
// TODO 接口暂不支持关键词搜索,待接口支持后完善
export default { export default {
props:{ props:{
productType: [String, Number], companyType: [String, Number],
value: [String, Number] value: [String, Number]
}, },
data(){ data(){
...@@ -41,6 +41,7 @@ export default { ...@@ -41,6 +41,7 @@ export default {
} }
}, },
created(){ created(){
this.remoteMethod('')
this.init() this.init()
}, },
methods:{ methods:{
...@@ -52,14 +53,16 @@ export default { ...@@ -52,14 +53,16 @@ export default {
this.list.unshift(res.data) this.list.unshift(res.data)
this.index = 0 this.index = 0
}) })
} }else this.index = index
}, },
remoteMethod(keyword){ remoteMethod(keyword){
let params = {} let params = {
params.searchKey = keyword pageSize: 100
}
params.keyword = keyword
this.loading = true this.loading = true
getSupplierPage(params) getSupplierPage(params)
.then(res => this.list = res.data) .then(res => this.list = res.data.list)
.finally(() => this.loading = false) .finally(() => this.loading = false)
} }
} }
......
...@@ -60,8 +60,8 @@ ...@@ -60,8 +60,8 @@
<!-- <el-select v-model="item.fullCurrencyId" style="width:100px" > <!-- <el-select v-model="item.fullCurrencyId" style="width:100px" >
<el-option v-for="item in currencyList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in currencyList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> --> </el-select> -->
<selector v-if="[2,4,5].indexOf(form.type) > -1" v-model="item.fullCurrencyId" :options="currencyList" label-field="titleZh" value-field="id" defaultable style="width:100px" /> <selector v-if="[4,5].indexOf(form.type) > -1" v-model="item.fullCurrencyId" :options="currencyList" label-field="titleZh" value-field="id" defaultable style="width:100px" />
<selector v-if="form.type == 3" v-model="item.prodUnit" :options="unitList" label-field="titleZh" value-field="id" defaultable style="width:100px" /> <selector v-if="form.type == 2" v-model="item.combUnit" :options="combUnitList" label-field="label" value-field="value" defaultable style="width:100px" />
<span v-if="[2].indexOf(form.type) > -1"></span> <span v-if="[2].indexOf(form.type) > -1"></span>
<span v-if="[4].indexOf(form.type) > -1">折扣率</span> <span v-if="[4].indexOf(form.type) > -1">折扣率</span>
...@@ -267,7 +267,12 @@ export default { ...@@ -267,7 +267,12 @@ export default {
status: 1, status: 1,
}, },
// 表单校验 // 表单校验
rules: {}, rules: {
isCargoControl: [{required: true, message: '请选择是否控货'}],
brand: [{required: true, message: '请选择品牌'}],
orderAttr: [{required: true, message: '请选择订单属性'}],
documentDeclaration: [{required: true, message: '请选择单证报关'}]
},
currencyList:[], currencyList:[],
/* clearanceFeeList:[{},{}], /* clearanceFeeList:[{},{}],
freightFeeList:[{},{}], freightFeeList:[{},{}],
...@@ -317,12 +322,29 @@ export default { ...@@ -317,12 +322,29 @@ export default {
}) })
} }
return costType return costType
},
// 满减组合单位列表
combUnitList(){
let arr = []
this.currencyList.forEach(item => {
arr.push({
label: this.$l(item, 'title'),
value: 'fullCurrencyId_' + item.id
})
})
this.unitList.forEach(item => {
arr.push({
label: this.$l(item, 'title'),
value: 'prodUnit_' + item.id
})
})
return arr
} }
}, },
watch:{ watch:{
'form.type'(val){ 'form.type'(val){
// 方数满减3和特价6需要单位 // 方数满减3和特价6需要单位
if((val == 3 || val == 6) && !this.unitList.length){ if((val == 3 || val == 6 || val == 2) && !this.unitList.length){
this.getUnitList() this.getUnitList()
} }
...@@ -429,7 +451,13 @@ export default { ...@@ -429,7 +451,13 @@ export default {
return this.$message('暂无费用设置') return this.$message('暂无费用设置')
} }
// 非有优惠券需要把运费和清关费一起提交 // 非有优惠券需要把运费和清关费一起提交
let discountDetailedVOs = this.costType == 3 ? this.fee[3] : this.fee[1].concat(this.fee[2]) let discountDetailedVOs = this.costType == 3 ? this.fee[3] : this.fee[1].concat(this.fee[2]).filter(item => item.netReceiptsAmount || item.fullAmount)
discountDetailedVOs.map(item => {
if(item.combUnit){
let tmp = item.combUnit.split('_')
item[tmp[0]] = tmp[1]
}
})
let data = Object.assign({}, this.form, {discountDetailedVOs}) let data = Object.assign({}, this.form, {discountDetailedVOs})
// 开始时间必填 // 开始时间必填
if(!data.startTime)data.startTime = '2022-01-01 00:00:00' if(!data.startTime)data.startTime = '2022-01-01 00:00:00'
......
This diff is collapsed.
This diff is collapsed.
...@@ -3,16 +3,22 @@ ...@@ -3,16 +3,22 @@
<el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" <el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px"
label-position="left"> label-position="left">
<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 v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable></el-input>
:style="{width: '100%'}"></el-input> </el-form-item>
<el-form-item :label="$t('英文名称')" prop="companyEn">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司英文名')" show-word-limit clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('代理名称')" prop="agentName"> <!-- <el-form-item :label="$t('代理名称')" prop="agentName">
<el-input v-model="formData.agentName" :placeholder="$t('请输入代理名称')" clearable :style="{width: '100%'}"> <el-input v-model="formData.agentName" :placeholder="$t('请输入代理名称')" clearable :style="{width: '100%'}">
</el-input> </el-input>
</el-form-item> </el-form-item> -->
<el-form-item :label="$t('公司电话')" prop="tell"> <el-form-item :label="$t('公司电话')" prop="tell">
<el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable :style="{width: '100%'}"></el-input> <el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('邮件地址')" prop="email">
<el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable></el-input>
</el-form-item>
<el-form-item :label="$t('公司地址')" prop="address"> <el-form-item :label="$t('公司地址')" prop="address">
<!-- <el-select v-model="formData.country"> <!-- <el-select v-model="formData.country">
<el-option v-for="(item, index) in treeList" :value="item.id" :label="item.titleZh" :key="item.id" /> <el-option v-for="(item, index) in treeList" :value="item.id" :label="item.titleZh" :key="item.id" />
......
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