Commit f3197757 authored by dcy's avatar dcy

Merge remote-tracking branch 'origin/dev' into dev

parents 95ef0c58 d337293c
......@@ -10,7 +10,7 @@ tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# 提取的需要翻译的文件列表
messages.txt
i18n-messages.txt
# Editor directories and files
.idea
.vscode
......
......@@ -2,6 +2,7 @@ const fs = require('fs');
const root = "./src"
let allFiles = []
function getFiles(dir){
let files = fs.readdirSync(dir)
files.forEach(file => {
......@@ -16,12 +17,12 @@ getFiles(root)
let messages = new Set()
allFiles.forEach(file => {
let data = fs.readFileSync(file, {encoding: 'utf-8'})
let matched = data.matchAll(/\$t\([\'\"]{1}([^\"\']+)[\'\"]{1}\)/g)
let matched = data.matchAll(/\$t\([\'\"]{1}([^\"\']+)[\'\"]{1}/g)
let i = 0
for(let item of matched){
i ++
messages.add(item[1])
}
})
fs.writeFileSync("./messages.txt", Array.from(messages).join("\n"))
fs.writeFileSync("./i18n-messages.txt", Array.from(messages).join("\n"))
console.log("done!")
\ No newline at end of file
......@@ -478,3 +478,8 @@ export default {
}
};
</script>
<style scoped>
.my-process-designer{
height: calc(100vh - 84px - 40px);
}
</style>
......@@ -11,8 +11,8 @@
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="流程名称" prop="processName">
<el-input v-model="queryParams.processName" placeholder="请输入流程名称" clearable/>
<el-form-item label="任务名称" prop="processName">
<el-input v-model="queryParams.processName" placeholder="请输入任务名称" clearable/>
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
......@@ -32,7 +32,7 @@
<dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.categoryId" />
</template>
</el-table-column>
<el-table-column label="流程名称" align="center" prop="processName"/>
<el-table-column label="任务名称" align="center" prop="processName"/>
<el-table-column label="流程发起人" align="center" prop="originatorName"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
......
......@@ -2,8 +2,8 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item :label="$t('流程名')" prop="name">
<el-input v-model="queryParams.name" :placeholder="$t('请输入流程名')" clearable @keyup.enter.native="handleQuery"/>
<el-form-item :label="$t('任务名称')" prop="name">
<el-input v-model="queryParams.name" :placeholder="$t('请输入任务名称')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
......
......@@ -196,7 +196,7 @@
</el-table-column>
<el-table-column label="价税合计(RMB)" align="center" prop="total" >
<template slot-scope="scope">
<span>{{ scope.row.total = (scope.row.totalAmount * scope.row.exchangeRate) + (scope.row.totalAmount * scope.row.exchangeRate) * (scope.row.taxRate/100) }}</span>
<span>{{ scope.row.total = ((scope.row.totalAmount * scope.row.exchangeRate) + (scope.row.totalAmount * scope.row.exchangeRate) * (scope.row.taxRate/100)).toFixed(6) }}</span>
</template>
</el-table-column>
</el-table>
......@@ -247,7 +247,7 @@
</el-card>
<div slot="footer" style="margin: 20px 0">
<!-- <el-button type="primary" @click="submitDraft">保 存</el-button> -->
<el-button type="primary" @click="submitForm">新 增</el-button>
<el-button type="primary" @click="submitForm">{{id==0?'新 增':'编 辑'}}</el-button>
</div>
<el-dialog
:visible.sync="open"
......@@ -542,7 +542,7 @@ export default {
const index = sums.length - 1
sums[index - 1] = '价税合计大写'
const t = data.map(v => v.total).reduce((prev, curr) => {
return prev + curr;
return parseFloat(prev) + parseFloat(curr);
}, 0)
sums[index] = this.convertCurrency(t)
return sums;
......
<template>
<div class="app-container">
<el-card>
<div slot="header" class="card-title">付款单详情</div>
<el-form
ref="form"
:model="form"
label-width="120px"
label-position="left"
>
<el-descriptions :column="3" class="card" border>
<el-descriptions-item label="供应商">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="supplierId"
>
<!-- <customer-selector v-model="form.supplierId" @change="consignor = $event" /> -->
<el-select
v-model="form.supplierId"
placeholder="请选择供应商"
disabled
>
<el-option
v-for="supplier in allSupplier"
:key="supplier.id"
:label="supplier.companyZh"
:value="supplier.id"
></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="部门">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="departmentId"
>
<el-select
v-model="form.departmentId"
style="width: 300px"
disabled
>
<el-option
v-for="item in deptData"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="业务员">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="salesmanName"
>
<el-select v-model="form.salesmanName" disabled>
<el-option
v-for="item in creatorData"
:key="item.id"
:label="item.nickname"
:value="item.nickname"
/>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="申请日期">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="applicationAt"
>
<el-date-picker
clearable
v-model="form.applicationAt"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
type="date"
disabled
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="供应商银行账号" style="width: 50%">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="supplierBankAccount"
>
<el-select v-model="form.supplierBankAccount" disabled>
<el-option
v-for="item in bankData"
:key="item.id"
:label="item.bankName + '(' + item.bankAccount+ ')'"
:value="item.bankAccount"
/>
</el-select>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" class="card" border>
<el-descriptions-item label="最后付款日期">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="latestPayAt"
>
<el-date-picker
clearable
v-model="form.latestPayAt"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
type="date"
disabled
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="结算方式">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="settlementType"
>
<dict-tag
:type="DICT_TYPE.CUSTOMER_BALANCE"
v-model="form.settlementType"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
<el-card class="card">
<div slot="header" class="card-title">费用信息</div>
<el-table v-loading="loadings" :data="list" border :show-summary="!!list.length" :summary-method="getSummaries">
<el-table-column label="自编号" align="center" prop="payableNo" />
<el-table-column label="费用类型" align="center" prop="feeType">
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.FEE_TYPE"
:value="scope.row.feeType"
></dict-tag>
</template>
</el-table-column>
<el-table-column label="发票号码" align="center" prop="invoiceNumber" />
<el-table-column label="应付金额" align="center" prop="totalAmount" />
<el-table-column label="币种" align="center" prop="currencyId">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" />
</template>
</el-table-column>
<el-table-column label="汇率" align="center" prop="exchangeRate" />
<el-table-column label="税率%" align="center" prop="taxRate" />
<el-table-column label="价税合计(RMB)" align="center" prop="total" >
<template slot-scope="scope">
<span>{{ scope.row.total = ((scope.row.totalAmount * scope.row.exchangeRate) + (scope.row.totalAmount * scope.row.exchangeRate) * (scope.row.taxRate/100)).toFixed(6) }}</span>
</template>
</el-table-column>
</el-table>
<el-form
ref="forms"
:model="form"
label-width="120px"
label-position="left"
style="width: 50%"
>
<el-descriptions :column="1" class="card" border>
<el-descriptions-item label="账单号">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
required
error="账单号不能为空"
prop="accountNumber"
>
<el-input
v-model="form.accountNumber" disabled
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="发票">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="invoiceStatus"
>
<el-select
v-model="form.invoiceStatus"
disabled
>
<el-option label="未开票" value="0" />
<el-option label="已开票" value="1" />
</el-select>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
<div slot="footer" style="margin: 20px 0">
<!-- <el-button type="primary" @click="submitDraft">保 存</el-button> -->
<el-button type="primary" @click="$store.dispatch('tagsView/delCurrentView')">返回</el-button>
</div>
</div>
</template>
<script>
import { listSimpleUsers } from "@/api/system/user";
import { DICT_TYPE } from "@/utils/dict";
import { getToken } from "@/utils/auth";
import { getChannelList } from "@/api/ecw/channel";
import CustomerSelector from "@/components/CustomerSelector";
import { listSimpleDepts } from "@/api/system/dept";
import { getTradeCityList } from "@/api/ecw/region";
import { getSupplierPage,getSupplier } from "@/api/ecw/supplier";
import { getPayableList, getPayableInfoByIds, createPayment, getPaymentInfoByIds, getPaymentItem, updatePayment } from "@/api/ecw/financial"
import { getCurrencyPage } from "@/api/ecw/currency";
import NP from 'number-precision'
export default {
name: "CreatPayment",
components: {
CustomerSelector
},
data() {
return {
id: 0,
payableId: 0,
orderData: [],
total: 0,
loadings: false,
open: false,
form: {},
creatorData: [],
list: [],
defaultList: [],
channelList: [],
loading: "",
bankData: [],
params: {
page: 1,
rows: 20,
},
deptData: [],
deptArr: [],
queryParams: {
page: 1,
rows: 20,
},
multipleSelection: [],
tradeCityList: [],
allSupplier: [],
currencyList: [],
};
},
async created() {
await getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
let that = this;
if (that.$route.query.payableId && that.$route.query.payableId !== '0') {
this.payableId = this.$route.query.payableId;
getPayableInfoByIds({ id: this.payableId }).then(res => {
this.list = [{...res.data}]
this.$set(this.form, 'supplierId', res.data.supplierId)
})
}
if (that.$route.query.id && that.$route.query.id !== '0') {
this.id = this.$route.query.id;
getPaymentInfoByIds({ id: this.id }).then(res => {
this.form = {
...res.data,
latestPayAt: this.parseTime(res.data.latestPayAt, '{y}-{m}-{d}'),
applicationAt: this.parseTime(res.data.applicationAt, '{y}-{m}-{d}'),
invoiceStatus: String(res.data.invoiceStatus),
}
this.$set(this.form,'supplierBankAccount',res.data.supplierBankAccount)
console.log(this.form)
})
getPaymentItem({ id: this.id }).then(res => {
this.list = [...res.data]
this.defaultList = [...res.data]
})
}
listSimpleUsers().then((res) => (that.creatorData = res.data));
getChannelList().then((res) => (that.channelList = res.data));
getTradeCityList().then((res) => (that.tradeCityList = res.data));
// getBankAccountPage(that.params).then(
// (res) => (that.bankData = res.data.list)
// );
getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allSupplier = data.list;
this.selectChange(this.form.supplierId)
});
listSimpleDepts().then((res) => {
res.data.forEach((item) => {
if (item.parentId == 0) {
that.deptArr.push(item);
} else {
that.deptData.push(item);
}
});
that.deptData.forEach((value) => {
var dept = that.deptArr.filter((itt) => itt.id == value.parentId);
if (dept.length > 0) {
value.name = dept[0].name + " | " + value.name;
}
});
});
},
computed: {
expoerCityList() {
return this.tradeCityList.filter((item) => item.type == 2);
},
importCityList() {
return this.tradeCityList.filter((item) => item.type == 1);
},
},
methods: {
getList() {
this.loading = true;
// 处理查询参数
let params = { ...this.queryParams };
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
// 执行查询
getPayableList(params).then((response) => {
this.orderData = response.data.list;
this.total = response.data.total;
this.loading = false;
this.$nextTick(() => {
this.list.forEach(itm => {
const t = this.orderData.find(v => v.id == itm.id)
t && this.$refs.multipleTable.toggleRowSelection(t, true)
})
})
});
},
getSummaries(param) {
const { columns, data } = param;
const sums = new Array(columns.length).map(v => '');
const index = sums.length - 1
sums[index - 1] = '价税合计大写'
const t = data.map(v => v.total).reduce((prev, curr) => {
return parseFloat(prev) + parseFloat(curr);
}, 0)
sums[index] = this.convertCurrency(t)
return sums;
},
/** 新增按钮操作 */
handleAdd() {
this.open = true;
},
submitForm() {
this.$refs.form.validate ((valid)=>{
if (valid) {
this.$refs.forms.validate((val) => {
if (val) {
const params = {...this.form}
if (this.list && this.list.length > 0) {
params.payableReqVOList = [...this.list]
}else{
this.$modal.msgError("请选择供应商未付款项");
return
}
if(!params.supplierBankAccount){
this.$modal.msgError("请选择供应商银行账号");
return
}
if (this.id && this.id !== '0') {
updatePayment(params).then(res => {
this.$modal.msgSuccess("修改成功");
this.$router.back();
})
} else {
createPayment(params).then(res => {
this.$modal.msgSuccess("新增成功");
this.$router.back();
})
}
}
})
}
})
},
submitDraft() {
this.$refs.form.validate ((valid)=>{
if (valid) {
const params = {...this.form}
if (this.list && this.list.length > 0) {
params.payableReqVOList = [...this.list]
}else{
this.$modal.msgError("请选择供应商未付款项");
return
}
if(!params.supplierBankAccount){
this.$modal.msgError("请选择供应商银行账号");
return
}
if (this.id && this.id !== '0') {
updatePayment(params).then(res => {
this.$modal.msgSuccess("修改成功");
this.$router.back();
})
} else {
createPayment(params).then(res => {
this.$modal.msgSuccess("新增成功");
this.$router.back();
})
}
// console.log(params, '-----params---------')
}
})
},
selectChangeBank(val){
this.$forceUpdate()
},
selectChange(val) {
this.bankData = []
// this.form.supplierBankAccount=''
if(val){
getSupplier(val).then((res)=>{
this.bankData = res.data.bankList
var bank = this.bankData.find(item=>item.bankAccount==this.form.supplierBankAccount)
if(this.bankData.length==0||!bank) this.form.supplierBankAccount=''
})
}
const t = this.allSupplier.find(v => v.id == val)
t && (this.form.supplierName = t.companyZh)
// t && (this.bankData = t.bankList)
},
handleQuery() {
this.queryParams.page = 1;
this.getList()
},
UStoRMB() {
return NP.divide(this.currencyList.find(v => v.titleEn === 'USD').huilv, 100).toFixed(6)
},
NANtoRMB() {
return NP.divide(this.currencyList.find(v => v.titleEn === 'NGN').huilv, 100).toFixed(6)
},
handleSelectionChange(val) {
this.multipleSelection = val.map(v => {
if(v.currencyId === 1) return Object.assign(v, { exchangeRate: this.UStoRMB() })
if(v.currencyId === 2) return Object.assign(v, { exchangeRate: 1 })
if(v.currencyId === 3) return Object.assign(v, { exchangeRate: this.NANtoRMB() })
});
},
hiddenDialog() {
this.open = false;
},
saveSelectList() {
if (this.id && this.id !== '0') {
this.list = [...this.defaultList, ...this.multipleSelection]
} else {
this.list = this.multipleSelection
}
this.open = false;
},
convertCurrency(money) {
//汉字的数字
var cnNums = new Array('', '', '', '', '', '', '', '', '', '');
//基本单位
var cnIntRadice = new Array('', '', '', '');
//对应整数部分扩展单位
var cnIntUnits = new Array('', '', '亿', '');
//对应小数部分单位
var cnDecUnits = new Array('', '', '', '');
//整数金额时后面跟的字符
var cnInteger = '';
//整型完以后的单位
var cnIntLast = '';
//最大处理的数字
var maxNum = 999999999999999.9999;
//金额整数部分
var integerNum;
//金额小数部分
var decimalNum;
//输出的中文金额字符串
var chineseStr = '';
//分离金额后用的数组,预定义
var parts;
// 传入的参数为空情况
if(money === '') {
return '';
}
money = parseFloat(money)
if(money >= maxNum){
return ''
}
// 传入的参数为0情况
if (money === 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr
}
// 转为字符串
money = money.toString();
// indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无
if (money.indexOf('.') == -1) {
integerNum = money;
decimalNum = ''
}else{
parts = money.split('.');
integerNum = parts[0];
decimalNum = parts[1].substr(0,4);
}
//转换整数部分
if(parseInt(integerNum,10) > 0){
let zeroCount = 0;
let IntLen = integerNum.length
for(let i = 0; i < IntLen; i++){
let n = integerNum.substr(i,1);
let p = IntLen - i - 1;
let q = p / 4;
let m = p % 4;
if( n == '0'){
zeroCount ++ ;
}else{
if(zeroCount > 0){
chineseStr += cnNums[0]
}
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if(m == 0 && zeroCount < 4){
chineseStr += cnIntUnits[q];
}
}
// 最后+ 元
chineseStr += cnIntLast;
}
// 转换小数部分
if(decimalNum != ''){
let decLen = decimalNum.length;
for(let i = 0; i <decLen; i++){
let n = decimalNum.substr(i,1);
if(n != '0'){
chineseStr += cnNums[Number(n)] + cnDecUnits[i]
}
}
}
if(chineseStr == ''){
chineseStr += cnNums[0] + cnIntLast + cnInteger;
}else if(decimalNum == ''){
chineseStr += cnInteger;
}
return chineseStr
},
openDialog() {
this.getList()
},
oninput(num) {
let str = num
let len1 = str.substr(0, 1)
let len2 = str.substr(1, 1)
//如果第一位是0,第二位不是点,就用数字把点替换掉
if (str.length > 1 && len1 == 0 && len2 != '.') {
str = str.substr(1, 1)
}
//第一位不能是.
if (len1 == '.') {
str = ''
}
//限制只能输入一个小数点
if (str.indexOf('.') != -1) {
let str_ = str.substr(str.indexOf('.') + 1)
if (str_.indexOf('.') != -1) {
str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
} else {
// if (str_.length > 2) {
// str = str.substr(0, str.indexOf('.') + 1) + str_.substr(0, 2)
// }
}
}
//正则替换
str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
// str = str.replace(/\.\d\d\d$/,'') // 小数点后只能输两位
return str
}
},
};
</script>
<style scoped>
.card {
margin-top: 20px;
}
.dialog-footer {
padding: 40px;
}
.card-title {
font-size: 18px;
font-weight: bold;
}
</style>
......@@ -98,7 +98,11 @@
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column label="付款单号" align="center" prop="paymentNo" />
<el-table-column label="付款单号" align="center" prop="paymentNo" >
<template slot-scope="scope">
<span style="color: #1890ff;" @click="paymentDetail(scope.row)">{{scope.row.paymentNo}}</span>
</template>
</el-table-column>
<el-table-column label="供应商" align="center" prop="supplierName" />
<el-table-column label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">
......@@ -119,7 +123,7 @@
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.ECW_PAYMENT_STATE"
:value="scope.row.state"
:value="scope.row.state"
/>
</template>
</el-table-column>
......@@ -137,7 +141,7 @@
<el-button v-if="scope.row.state == 4" size="mini" type="text" @click="verificationCancelClick(scope.row)">反核销</el-button>
<!-- <el-button v-if="scope.row.state == 3" size="mini" type="text">开票</el-button> -->
<el-button size="mini" type="text" @click="toprint(scope.row.id)">打印</el-button>
<el-button v-if="scope.row.state == 1 || scope.row.state == 3" size="mini" type="text" @click="deleteClick(scope.row)">删除</el-button>
<!-- <el-button size="mini" type="text" @click="open = true">导出订单</el-button> -->
......@@ -198,7 +202,7 @@ export default {
},
data() {
return {
open: false,
open: false,
showSearch: true,
loadings: false,
form: {},
......@@ -256,6 +260,10 @@ export default {
this.loading = false;
});
},
paymentDetail(row){
const id = row.id;
return this.$router.push("paymentDetail?id=" + id);
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.page = 1;
......
......@@ -120,12 +120,12 @@
</template>
</el-table-column>
<!-- <el-table-column label="自编号" align="center" prop="orderNo" /> -->
<el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope">
<span style="color: #1890ff;" @click="verificationCancelClick(scope.row)">{{scope.row.orderNo}}</span>
<!-- <el-table-column label="订单号" align="center" prop="orderNo"> -->
<!-- <template slot-scope="scope"> -->
<!-- <span style="color: #1890ff;" @click="verificationCancelClick(scope.row)">{{scope.row.orderNo}}</span> -->
<!-- <el-button size="mini" type="text" @click="verificationCancelClick(scope.row)">{{ scope.row.receiptNo }}</el-button> -->
</template>
</el-table-column>
<!-- </template> -->
<!-- </el-table-column> -->
<el-table-column label="客户名称" align="center" prop="customerName" />
<el-table-column label="创建日期" align="center" prop="createTime">
<template slot-scope="scope">
......
......@@ -1021,6 +1021,7 @@ export default {
console.log('产品未选择', item)
calcable = false
}
item.brandType = item.brand
})
if(this.calculating || !calcable) return false
this.calculating = true
......
......@@ -261,37 +261,37 @@
<el-input v-model="form.marks" ></el-input>
</el-form-item>
<el-form-item label="是否控货" prop="isCargoControl" class="ml-20">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCargoControl" form-type="radio" :disabled="inWarehouse"/>
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCargoControl" form-type="radio"/>
</el-form-item>
</div>
<div class="form-section" v-if="collectionProxy">
<el-form-item :label="$t('是否代收货款')" prop="isCollection">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCollection" form-type="radio" :disabled="inWarehouse" />
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCollection" form-type="radio" :disabled="false" />
</el-form-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-form-item :label="$t('代收货款金额')" v-if="collectionProxy && form.isCollection" prop="collectionProxy" class="ml-20">
<el-input v-model="form.collectionProxy" class="w-200 mr-10" :disabled="inWarehouse"></el-input>
<selector v-model="form.collectionProxyCurrency" :options="currencyList" label-field="titleZh" value-field="id" defaultable class="w-100" :disabled="inWarehouse"/>
<el-input v-model="form.collectionProxy" class="w-200 mr-10" :disabled="false"></el-input>
<selector v-model="form.collectionProxyCurrency" :options="currencyList" label-field="titleZh" value-field="id" defaultable class="w-100" :disabled="false"/>
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('单证报关')" :span="2" prop="customsType">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" defaultable :disabled="inWarehouse" />
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" defaultable :disabled="false" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('出单方式')" prop="issuingMethod">
<dict-selector :type="DICT_TYPE.ECW_SUING_METHOD" v-model="form.issuingMethod" form-type="radio" defaultable :disabled="inWarehouse"/>
<dict-selector :type="DICT_TYPE.ECW_SUING_METHOD" v-model="form.issuingMethod" form-type="radio" defaultable :disabled="false"/>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('入仓类型')" prop="warehouseType">
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="form.warehouseType" defaultable :disabled="inWarehouse" />
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="form.warehouseType" defaultable :disabled="false" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('外部仓库')" prop="warehouseType">
<el-checkbox label="" :checked="!!form.isExternalWarehouse" @change="form.isExternalWarehouse=$event" :disabled="inWarehouse"></el-checkbox>
<el-checkbox label="" :checked="!!form.isExternalWarehouse" @change="form.isExternalWarehouse=$event" :disabled="false"></el-checkbox>
</el-form-item>
<div v-if="form.isExternalWarehouse" class="pl-50">
<div v-for="(item, index) in form.externalWarehouseDtoList" class="flex" :key="index">
......@@ -327,7 +327,7 @@
</div>
<div>
<el-form-item :label="$t('收货方式')" prop="harvestMethod" class="ml-20">
<dict-selector :type="DICT_TYPE.ECW_HARVEST_METHOD" v-model="form.harvestMethod" :filter="item => item.value == 1 || homeDeliveryService" defaultable :disabled="inWarehouse" />
<dict-selector :type="DICT_TYPE.ECW_HARVEST_METHOD" v-model="form.harvestMethod" :filter="item => item.value == 1 || homeDeliveryService" defaultable :disabled="false" />
</el-form-item>
</div>
<div v-if="homeDeliveryService && form.harvestMethod == 2">
......@@ -339,21 +339,21 @@
@countryChange="onAreaChange('country', $event)"
@provinceChange="onAreaChange('province', $event)"
@cityChange="onAreaChange('city', $event)"
:disabled="inWarehouse"
:disabled="false"
></area-selector>
</el-form-item>
<el-form-item :label="$t('收货详细地址')" prop="consigneeAddress">
<el-input v-model="form.consigneeAddress" :disabled="inWarehouse"></el-input>
<el-input v-model="form.consigneeAddress" :disabled="false"></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('付款人')" prop="drawee">
<dict-selector :type="DICT_TYPE.DRAWEE" v-model="form.drawee" defaultable form-type="radio" :disabled="inWarehouse"/>
<dict-selector :type="DICT_TYPE.DRAWEE" v-model="form.drawee" defaultable form-type="radio" :disabled="false"/>
<el-table :data="customDraweeList" v-if="form.drawee==3" >
<el-table-column label="费用类型" prop="label" width="200px"></el-table-column>
<el-table-column label="付款人" width="300px">
<template slot-scope="{row}">
<dict-selector :type="DICT_TYPE.DRAWEE" :filter="(e) => e.value == '1' || e.value == '2'" v-model="row.value" form-type="radio" :disabled="inWarehouse"/>
<dict-selector :type="DICT_TYPE.DRAWEE" :filter="(e) => e.value == '1' || e.value == '2'" v-model="row.value" form-type="radio" :disabled="false"/>
</template>
</el-table-column>
</el-table>
......@@ -364,57 +364,57 @@
<el-card class="mt-10" v-if="transport">
<div class="card-title" slot="header">{{transport.label}}</div>
<el-form-item :label="$t('快递单号')">
<el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')" :disabled="inWarehouse">
<el-button type="primary" slot="append" @click="getOrderCourierNumber" :disabled="inWarehouse">{{$t('生成单号')}}</el-button>
<el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')" :disabled="false">
<el-button type="primary" slot="append" @click="getOrderCourierNumber" :disabled="false">{{$t('生成单号')}}</el-button>
</el-input>
</el-form-item>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('是否双清')">
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" defaultable :disabled="inWarehouse" />
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" defaultable :disabled="false" />
</el-form-item>
</div>
<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')">
<supplier-selector v-model="form.airlineCompany" company-type="10" :disabled="inWarehouse"/>
<supplier-selector v-model="form.airlineCompany" company-type="10" :disabled="false"/>
</el-form-item>
</div>
<div v-if="[2].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('船公司')">
<supplier-selector v-model="form.shippingCompany" company-type="9" :disabled="inWarehouse" />
<supplier-selector v-model="form.shippingCompany" company-type="9" :disabled="false" />
</el-form-item>
</div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('清关证书')">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="inWarehouse" />
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" />
</el-form-item>
<el-form-item label="清关证书备注" >
<el-input v-model="form.remarks" :disabled="inWarehouse"></el-input>
<el-input v-model="form.remarks" :disabled="false"></el-input>
</el-form-item>
</div>
<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item label="是否拆包">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="inWarehouse" />
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" />
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="inWarehouse" />
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" />
<span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span>
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('特殊要求')" >
<dict-selector v-model="form.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple :disabled="inWarehouse"/>
<dict-selector v-model="form.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple :disabled="false"/>
</el-form-item>
</div>
<el-form-item :label="$t('特殊要求备注')">
<el-input v-model="form.packageRemarks" :disabled="inWarehouse" ></el-input>
<el-input v-model="form.packageRemarks" :disabled="false" ></el-input>
</el-form-item>
</el-card>
<el-card class="mt-10" v-if="inWarehouse">
<el-card class="mt-10" v-if="showWorkFlow">
<div class="card-title" slot="header">{{$t('审批流程')}}</div>
<work-flow xmlkey="order_modify" v-model="ccIdArr" />
</el-card>
......@@ -561,9 +561,15 @@ export default {
objectiveId : [{required: true, message: this.$t('请选择目的城市')}],
lineId : [{required: true, message: this.$t('请选择路线')}],
channelId : [{required: true, message: this.$t('请选择出货渠道')}],
deliveryDate : [{required: true, message: this.$t('请选择送货日期')}],
deliveryDate : [{required: true, message: this.$t('请选择预计送货日期')}],
consigneeAddress : [{required: true, message: this.$t('请填写详细地址')}],
country : [{required: true, message: this.$t('收货地区填写不完整')}]
country : [{required: true, message: this.$t('收货地区填写不完整')}],
isCargoControl : [{required: true, message: this.$t('请选择是否控货')}],
isCollection : [{required: true, message: this.$t('请选择代收货款')}],
collectionProxy : [{required: true, message: this.$t('代收货款不能为空')}],
customsType : [{required: true, message: this.$t('请选择单证报关')}],
warehouseType : [{required: true, message: this.$t('请选择入仓类型')}],
harvestMethod : [{required: true, message: this.$t('请选择收货方式')}]
},
labelStyle: 'width:120px',
showBatchImportDialog: false, // 显示批量导入弹窗
......@@ -571,6 +577,7 @@ export default {
exportLoading: false, // 装下单模板下载状态
contactChooseType: null, // 联系人选择对象consignor(发货人) 或者 consignee(收货人)
quickCreateType: null, // 快速新建客户类型,1发货人,2收货人
showWorkFlow: false, // 是否显示工作流表单
};
},
computed:{
......@@ -794,6 +801,23 @@ export default {
if(res.data.ccIds){
this.ccIdArr = res.data.ccIds.split(",").filter(item => item && item != '')
}
// 审核中需要显示流程表单
if(this.form.applyStaus == 1){
this.showWorkFlow = true
}
// 如果已完成入仓,则需要监听必填内容,发生更改后需要填写审批表单
this.$nextTick(res => {
if(this.inWarehouse){
Object.keys(this.rules).forEach(field => {
console.log("watch", field)
this.$watch(`form.${field}`, () => {
this.showWorkFlow = true
})
})
}
})
})
},
onContactChoose(contact){
......
......@@ -32,12 +32,12 @@
<div v-if="orderExceptionData.orderExceptionType!='order_doc_exception'&&orderExceptionData.orderExceptionType!='order_consignor_exception'&&orderExceptionData.orderExceptionType!='order_other_exception'">
<el-row>
<el-form-item :label="$t('填单参数')+':'">
{{(shopData.num||0)+$t('')+(shopData.volume||0)+''+(shopData.weight||0)+'kg '+(shopData.quantity||0)+$t('')}}
{{(orderData.costVO.totalNum||0)+$t('')+(orderData.costVO.totalVolume||0)+''+(orderData.costVO.totalWeight||0)+'kg '+(orderData.costVO.totalQuantity||0)+$t('')}}
</el-form-item>
</el-row>
<el-row>
<el-form-item :label="$t('入仓参数')+':'">
<span>{{(shopData.warehouseInInfoVO?shopData.warehouseInInfoVO.cartonsNum:0)+$t('')+(shopData.warehouseInInfoVO?shopData.warehouseInInfoVO.volume:0)+''+(shopData.warehouseInInfoVO?shopData.warehouseInInfoVO.weight:0)+'kg '+(shopData.warehouseInInfoVO?shopData.warehouseInInfoVO.quantityAll:0) +$t('')}}</span>
<span>{{(orderData.sumNum||0)+$t('')+(orderData.sumVolume||0)+''+(orderData.sumWeight||0)+'kg '+(orderData.sumQuantity||0) +$t('')}}</span>
</el-form-item>
</el-row>
<el-row :span="12">
......@@ -48,7 +48,7 @@
</el-row>
<el-row v-if="orderExceptionData.orderExceptionType=='order_pay_exception'">
<el-form-item :label="$t('收费参数')+':'">
<span>{{orderData.entryNum||0}}{{$t('')}} {{orderData.entryVolume||0}}{{orderData.entryWeight||0}}Kg {{orderData.entryQuantity||0}}{{$t('')}}</span>
<span>{{orderData.sumNum||0}}{{$t('')}} {{orderData.wvolume||0}}{{orderData.vweight||0}}Kg {{orderData.sumQuantity||0}}{{$t('')}}</span>
</el-form-item>
</el-row>
<!-- <el-row :span="12">
......@@ -78,10 +78,15 @@
</el-table-column>
<el-table-column :label="$t('收入类型')">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.feeType"></dict-tag>
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="scope.row.feeType"></dict-tag>
</template>
</el-table-column>
<el-table-column :label="$t('应收金额')" prop="totalAmount" />
<el-table-column :label="$t('应收金额')" prop="totalAmount" >
<template slot-scope="{row}">
{{row.totalAmount}}
{{ currentMap[row.currencyId] }}
</template>
</el-table-column>
<!-- <el-table-column label="总金额美元" align="center" prop="totalAmount">
<template slot-scope="{row}">
{{row.totalAmount}}({{row.exchangeRate}})
......@@ -123,9 +128,21 @@
{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.cartonsNum:0}}
</template>
</el-table-column>
<el-table-column :label="$t('方数')" prop="volume" />
<el-table-column :label="$t('重量')" prop="weight" />
<el-table-column :label="$t('数量')" prop="quantity" />
<el-table-column :label="$t('方数')" prop="volume">
<template slot-scope="scope">
{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.volume:0}}
</template>
</el-table-column>
<el-table-column :label="$t('重量')" prop="weight">
<template slot-scope="scope">
{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.weight:0}}
</template>
</el-table-column>
<el-table-column :label="$t('数量')" prop="quantity">
<template slot-scope="scope">
{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.quantityAll:0}}
</template>
</el-table-column>
<el-table-column :label="$t('货值')" prop="worth" />
</el-table>
<el-form :model="handlerParams" ref="queryForms" size="small" :inline="true" label-width="120px" class="card">
......@@ -271,6 +288,7 @@
import FileUpload from '@/components/FileUpload'
import {getDictData, getDictDatas} from '@/utils/dict'
import {getOrder} from '@/api/ecw/order'
import { getCurrencyList } from '@/api/ecw/currency'
import {getExceptionById,handlerExceptionByExceptionId,getOrderItemById,getOrderFeeById} from "@/api/ecw/orderException"
import {getFirstReceivableListByOrderId} from '@/api/ecw/financial'
......@@ -301,7 +319,8 @@
routerList:[],
multipleSelection:[],
preException:[],
orderFee:[]
orderFee:[],
currencyList:[],
};
},
created() {
......@@ -311,6 +330,16 @@
this.getList()
}
getCurrencyList().then(res => this.currencyList = res.data)
},
computed: {
currentMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
},
},
methods: {
/** 查询列表 */
......@@ -325,9 +354,9 @@
that.loading = false;
that.orderId = response.data.orderId
that.getOrderData()
if(response.data.hasOwnProperty('orderItemId')){
that.getShopData(response.data.orderItemId)
}
// if(response.data.hasOwnProperty('orderItemId')){
// that.getShopData(response.data.orderItemId)
// }
if(that.orderExceptionData.orderExceptionType == 'order_pay_exception'){
that.getOrderFeeByIdData()
......
......@@ -3,7 +3,7 @@
<el-dialog
:title="title + ' - ' + warehousing.orderNo"
:visible.sync="opened"
width="1080px"
width="1280px"
>
<el-tabs v-model="activeName" type="card" @tab-click="handleTabs">
<el-tab-pane :label="edit ? '货物修改' : '货物入仓'" name="first">
......@@ -73,6 +73,9 @@
:data="tableData"
style="width: 100%">
<el-table-column label="箱数" width="150px">
<template v-slot:header>
<span style="color: red">*</span> 箱数
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.cartonsNum" :prop="$index + '.cartonsNum'">
<span v-if="tableData[$index].id && !edit">
......@@ -86,6 +89,9 @@
</template>
</el-table-column>
<el-table-column label="包装类型" width="100px">
<template v-slot:header>
<span style="color: red">*</span> 包装类型
</template>
<template v-slot="{r,c,$index}">
<el-form-item>
<span v-if="tableData[$index].id && !edit">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData[$index].unit) }}</span>
......@@ -118,22 +124,31 @@
</template>
</el-table-column>
<el-table-column label="体积(m³)">
<template v-slot:header>
<span style="color: red">*</span> 体积(m³)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.volume" :prop="$index + '.volume'">
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].volume }}</span>
<el-input v-else v-model.number="tableData[$index].volume" placeholder=""></el-input>
<el-input v-else v-model="tableData[$index].volume" placeholder="" type="number"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="重量(Kg)">
<template v-slot:header>
<span style="color: red">*</span> 重量(Kg)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.weight" :prop="$index + '.weight'">
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].weight }}</span>
<el-input v-else v-model.number="tableData[$index].weight" placeholder=""></el-input>
<el-input v-else v-model="tableData[$index].weight" placeholder="" type="number"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="数量" width="130px">
<template v-slot:header>
<span style="color: red">*</span> 数量
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.quantityAll" :prop="$index + '.quantityAll'">
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].quantityAll }}</span>
......@@ -400,13 +415,13 @@ export default {
recordMode: undefined
},
tableFormRules: {
cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "blur"}],
boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "blur"}],
boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "blur"}],
boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "blur"}],
volume: [{required: true, message: this.$t("体积不能为空"), trigger: "blur"}],
weight: [{required: true, message: this.$t("重量不能为空"), trigger: "blur"}],
quantityAll: [{required: true, message: "数量不能为空", trigger: "blur"}]
cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "change"}],
boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "change"}],
boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "change"}],
boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "change"}],
volume: [{required: true, message: this.$t("体积不能为空"), trigger: "change"}],
weight: [{required: true, message: this.$t("重量不能为空"), trigger: "change"}],
quantityAll: [{required: true, message: "数量不能为空", trigger: "change"}]
},
form1: {
"brand": "0",
......
......@@ -42,7 +42,7 @@
label="入库货物属性">
<template v-slot="{row}">
<template v-if="row.warehouseInInfoVO">
品牌:{{ ['无牌', '有牌', '中性'][row.brandType] }}<br>
品牌:{{ ['无牌', '有牌', '中性'][row.feeType] }}<br>
箱数:{{ row.warehouseInInfoVO.cartonsNum }}<br>
体积:{{ row.warehouseInInfoVO.volume }}<br>
重量:{{ row.warehouseInInfoVO.weight }}Kg
......@@ -343,12 +343,14 @@ export default {
if (r.code === 0) {
this.escapeBol = false;
this.finishVisible = false
const message = !r.data ? '该订单已成功入仓,是否打印?' : "<h3>货物已入仓,存在异常</h3>该订单已成功入仓,是否打印?"
this.$confirm(
'该订单已成功入仓,是否打印?',
message,
'货物已入仓',
{
confirmButtonText: '',
cancelButtonText: ''
cancelButtonText: '',
dangerouslyUseHTMLString: true
}
).then(() => {
this.isShowPrint = true
......
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