commit
c9c04a54fb
@ -54,6 +54,12 @@
|
|||||||
<div class="content unicode" style="display: block;">
|
<div class="content unicode" style="display: block;">
|
||||||
<ul class="icon_lists dib-box">
|
<ul class="icon_lists dib-box">
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont"></span>
|
||||||
|
<div class="name">驳回</div>
|
||||||
|
<div class="code-name">&#xe656;</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="dib">
|
<li class="dib">
|
||||||
<span class="icon iconfont"></span>
|
<span class="icon iconfont"></span>
|
||||||
<div class="name">组合</div>
|
<div class="name">组合</div>
|
||||||
@ -138,9 +144,9 @@
|
|||||||
<pre><code class="language-css"
|
<pre><code class="language-css"
|
||||||
>@font-face {
|
>@font-face {
|
||||||
font-family: 'iconfont';
|
font-family: 'iconfont';
|
||||||
src: url('iconfont.woff2?t=1731383577261') format('woff2'),
|
src: url('iconfont.woff2?t=1756799202901') format('woff2'),
|
||||||
url('iconfont.woff?t=1731383577261') format('woff'),
|
url('iconfont.woff?t=1756799202901') format('woff'),
|
||||||
url('iconfont.ttf?t=1731383577261') format('truetype');
|
url('iconfont.ttf?t=1756799202901') format('truetype');
|
||||||
}
|
}
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
||||||
@ -166,6 +172,15 @@
|
|||||||
<div class="content font-class">
|
<div class="content font-class">
|
||||||
<ul class="icon_lists dib-box">
|
<ul class="icon_lists dib-box">
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont icon-bohui"></span>
|
||||||
|
<div class="name">
|
||||||
|
驳回
|
||||||
|
</div>
|
||||||
|
<div class="code-name">.icon-bohui
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="dib">
|
<li class="dib">
|
||||||
<span class="icon iconfont icon-cc"></span>
|
<span class="icon iconfont icon-cc"></span>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@ -292,6 +307,14 @@
|
|||||||
<div class="content symbol">
|
<div class="content symbol">
|
||||||
<ul class="icon_lists dib-box">
|
<ul class="icon_lists dib-box">
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<svg class="icon svg-icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-bohui"></use>
|
||||||
|
</svg>
|
||||||
|
<div class="name">驳回</div>
|
||||||
|
<div class="code-name">#icon-bohui</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="dib">
|
<li class="dib">
|
||||||
<svg class="icon svg-icon" aria-hidden="true">
|
<svg class="icon svg-icon" aria-hidden="true">
|
||||||
<use xlink:href="#icon-cc"></use>
|
<use xlink:href="#icon-cc"></use>
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: "iconfont"; /* Project id 4742714 */
|
font-family: "iconfont"; /* Project id 4742714 */
|
||||||
src: url('iconfont.woff2?t=1731383577261') format('woff2'),
|
src: url('iconfont.woff2?t=1756799202901') format('woff2'),
|
||||||
url('iconfont.woff?t=1731383577261') format('woff'),
|
url('iconfont.woff?t=1756799202901') format('woff'),
|
||||||
url('iconfont.ttf?t=1731383577261') format('truetype');
|
url('iconfont.ttf?t=1756799202901') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
.iconfont {
|
.iconfont {
|
||||||
@ -13,6 +13,10 @@
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.icon-bohui:before {
|
||||||
|
content: "\e656";
|
||||||
|
}
|
||||||
|
|
||||||
.icon-cc:before {
|
.icon-cc:before {
|
||||||
content: "\e679";
|
content: "\e679";
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -5,6 +5,13 @@
|
|||||||
"css_prefix_text": "icon-",
|
"css_prefix_text": "icon-",
|
||||||
"description": "",
|
"description": "",
|
||||||
"glyphs": [
|
"glyphs": [
|
||||||
|
{
|
||||||
|
"icon_id": "8767032",
|
||||||
|
"name": "驳回",
|
||||||
|
"font_class": "bohui",
|
||||||
|
"unicode": "e656",
|
||||||
|
"unicode_decimal": 58966
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"icon_id": "836390",
|
"icon_id": "836390",
|
||||||
"name": "组合",
|
"name": "组合",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
240
src/components/approval/detail.vue
Normal file
240
src/components/approval/detail.vue
Normal file
@ -0,0 +1,240 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="110px" v-loading="loading" :disabled="true">
|
||||||
|
<el-form-item label="公司名称:">
|
||||||
|
<el-select v-model="itemInfo.company_id" placeholder="请选择" clearable filterable style="width: 320px;">
|
||||||
|
<el-option v-for="it in companyList" :key="it.id" :label="it.name" :value="it.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选品:">
|
||||||
|
<el-select v-model="itemInfo.manager_id" placeholder="请选择" clearable filterable style="width: 320px;">
|
||||||
|
<el-option v-for="it in managerList" :key="it.id" :label="it.username" :value="it.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="供应商名称:">
|
||||||
|
<el-select v-model="itemInfo.purchase_supplier_id" placeholder="请选择" clearable filterable style="width: 320px;">
|
||||||
|
<el-option v-for="it in supplierList" :key="it.id" :label="it.supplier_name" :value="it.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品信息:">
|
||||||
|
<el-table :data="goodsList" style="width: 100%;margin-top: 15px;" border>
|
||||||
|
<el-table-column prop="goods.title" label="商品名称" />
|
||||||
|
<el-table-column label="规格名称">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.sku && scope.row.sku.title || scope.row.title }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="预计产品单价(含税)" align="center" prop="expect_unit_price" />
|
||||||
|
<el-table-column label="实际产品单价(含税)" align="center" prop="real_unit_price" />
|
||||||
|
<el-table-column label="单位" align="center" prop="unit" />
|
||||||
|
<el-table-column label="预计采购数量" align="center" prop="expect_quantity" />
|
||||||
|
<el-table-column label="实际采购数量" prop="real_quantity" align="center" />
|
||||||
|
<el-table-column label="预付款比例(%)" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.prepayment_ratio }}%</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="交货时间" width="160" align="center" prop="delivery_date" />
|
||||||
|
<el-table-column label="预计订单金额(元)" align="center" prop="estimated_order_amount" />
|
||||||
|
<el-table-column label="实际订单金额" prop="real_amount" align="center" />
|
||||||
|
<el-table-column label="预付款(元)" align="center" prop="advance_payment" />
|
||||||
|
<el-table-column label="尾款(元)" align="center" prop="balance_payment" />
|
||||||
|
</el-table>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="其他费用:">
|
||||||
|
<el-table :data="feesList" style="width: 100%;margin-top: 15px;" border>
|
||||||
|
<el-table-column label="费用名称" >
|
||||||
|
<template #default="scope">
|
||||||
|
<span class="iconfont icon-bohui" v-if="scope.row.has_paid_amount * 1 == 0"></span>
|
||||||
|
<span>{{ scope.row.fee_name }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="订单金额" prop="amount" />
|
||||||
|
<el-table-column label="打款信息">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-select v-model="scope.row.other_expense_account_id" placeholder="请选择" clearable filterable>
|
||||||
|
<el-option v-for="it in accountList" :key="it.id" :label="it.name" :value="it.id" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注:">
|
||||||
|
<span>{{ itemInfo.remark }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="逾期交货说明:">
|
||||||
|
<span>{{ itemInfo.late_delivery_explanation }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="总计:">
|
||||||
|
<div class="sumbox">
|
||||||
|
总预计订单金额(元):<span>{{ sumData.total_amount || '0.00' }}</span>,
|
||||||
|
总预付款(元):<span>{{ sumData.pre_pay_amount || '0.00' }}</span>,
|
||||||
|
总尾款(元):<span>{{ sumData.balance_amount || '0.00' }}</span>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="h5Tit">其余信息</div>
|
||||||
|
<el-form-item label="开团时间:">
|
||||||
|
<span>{{ itemInfo.sold_start_time }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="预计到仓时间:">
|
||||||
|
<span>{{ itemInfo.arrived_time }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="仓库:">
|
||||||
|
<span>{{ itemInfo.warehouse_name }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div v-if="itemInfo.approval_instances && itemInfo.approval_instances.length">
|
||||||
|
<div v-for="it in itemInfo.approval_instances" :key="it.id">
|
||||||
|
<div v-if="(it.payment_voucher && it.payment_voucher.length) || (it.related_images && it.related_images.length)">
|
||||||
|
<h4>{{it.type == 1 ? '采购订单' : it.type == 2 ? '预付款打款' : '尾款打款'}}</h4>
|
||||||
|
<el-form label-position="right" label-width="110px">
|
||||||
|
<div v-if="it.amount * 1 > 0" style="padding-bottom: 10px;">申请打款金额:{{it.amount}}元</div>
|
||||||
|
<el-form-item label="支付凭证:" v-if="it.payment_voucher && it.payment_voucher.length">
|
||||||
|
<div class="imgBox">
|
||||||
|
<el-image :z-index="9999" v-for="(itm, j) in it.payment_voucher" :key="j" :src="itm" :hide-on-click-modal="true" :preview-src-list="[itm]" fit="cover" :preview-teleported="true" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同照片:" v-if="it.related_images && it.related_images.length">
|
||||||
|
<div class="imgBox">
|
||||||
|
<el-image :z-index="9999" v-for="(itm, j) in it.related_images" :key="j" :src="itm" :hide-on-click-modal="true" :preview-src-list="[itm]" fit="cover" :preview-teleported="true" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="space"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Plus, Search } from "@element-plus/icons"
|
||||||
|
import { reactive, toRefs, watch } from 'vue'
|
||||||
|
import { get } from '@/api/request'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { Plus, Search },
|
||||||
|
props: {
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
id: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setup(props, context) {
|
||||||
|
const data = reactive({
|
||||||
|
launchId: 0,
|
||||||
|
companyList: [],
|
||||||
|
managerList: [],
|
||||||
|
supplierList: [],
|
||||||
|
accountList: [],
|
||||||
|
loading: false,
|
||||||
|
goodsList: [],
|
||||||
|
itemInfo: {},
|
||||||
|
feesList: [],
|
||||||
|
sumData: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
function getDetail() {
|
||||||
|
data.loading = true
|
||||||
|
get(`/api/purchaseOrder/${props.id}`).then((res) => {
|
||||||
|
data.itemInfo = res.data
|
||||||
|
data.feesList = res.data.other_expenses
|
||||||
|
let num1 = 0, num2 = 0
|
||||||
|
res.data.products.forEach((item) => {
|
||||||
|
if(item.expect_unit_price && item.expect_quantity) {
|
||||||
|
item.estimated_order_amount = (item.expect_unit_price * item.expect_quantity).toFixed(2)
|
||||||
|
if(item.prepayment_ratio) {
|
||||||
|
item.advance_payment = ((item.estimated_order_amount * item.prepayment_ratio) / 100).toFixed(2)
|
||||||
|
item.balance_payment = (((item.estimated_order_amount * 100) - (item.advance_payment * 100)) / 100).toFixed(2)
|
||||||
|
}
|
||||||
|
num1 += item.expect_unit_price * item.expect_quantity
|
||||||
|
if(item.prepayment_ratio) {
|
||||||
|
num2 += num1 * item.prepayment_ratio
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
data.sumData.total_amount = num1.toFixed(2)
|
||||||
|
data.sumData.pre_pay_amount = (num2 / 100).toFixed(2)
|
||||||
|
data.sumData.balance_amount = (((data.sumData.total_amount * 100) - (data.sumData.pre_pay_amount * 100)) / 100).toFixed(2)
|
||||||
|
data.goodsList = res.data.products
|
||||||
|
data.loading = false
|
||||||
|
}).catch(() => {
|
||||||
|
data.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCompany() {
|
||||||
|
get(`/api/company/all`, {page: 1, pageSize: 1000}).then((res) => {
|
||||||
|
data.companyList = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getManagerList() {
|
||||||
|
get('/api/staff', {role_id: 1}).then((res) => {
|
||||||
|
data.managerList = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSupplier() {
|
||||||
|
get(`/api/purchaseSupplier`, {page: 1, pageSize: 1000}).then((res) => {
|
||||||
|
data.supplierList = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAccount() {
|
||||||
|
get(`/api/otherExpenseAccount`, {page: 1, pageSize: 1000}).then((res) => {
|
||||||
|
data.accountList = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(() => props, (newProps) => {
|
||||||
|
if (newProps.show) {
|
||||||
|
getDetail()
|
||||||
|
getCompany()
|
||||||
|
getManagerList()
|
||||||
|
getSupplier()
|
||||||
|
getAccount()
|
||||||
|
}
|
||||||
|
}, { deep: true, immediate: true })
|
||||||
|
|
||||||
|
return {
|
||||||
|
...toRefs(data),
|
||||||
|
getCompany,
|
||||||
|
getManagerList,
|
||||||
|
getSupplier,
|
||||||
|
getDetail,
|
||||||
|
getAccount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.space{
|
||||||
|
background: repeating-linear-gradient(-45deg, #F56C6C 0, #F56C6C 20%, transparent 0, transparent 25%, #1989fa 0, #1989fa 45%, transparent 0, transparent 50%);
|
||||||
|
height: 2px;
|
||||||
|
background-size: 80px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.icon-bohui{
|
||||||
|
color: #f00;
|
||||||
|
margin-right: 5px;
|
||||||
|
font-size: 20px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
.imgBox{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
.el-image{
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,9 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="showDialog" title="审批记录" width="700px" @close="closeDialog">
|
<el-dialog v-model="showDialog" title="审批记录" width="700px" @close="closeDialog">
|
||||||
<div style="padding-top: 30px;">
|
<div style="padding-top: 30px;min-height: 200px;" v-loading="loading">
|
||||||
<el-timeline style="max-width: 600px">
|
<el-timeline style="max-width: 600px">
|
||||||
<el-timeline-item v-for="(item, index) in logsList" :key="index">
|
<el-timeline-item v-for="(item, index) in logsList" :key="index">
|
||||||
<div><span style="color: #f00;">{{Status[item.status]}}</span>#{{Type[item.type]}}</div>
|
<div><span style="color: #f00;">{{Status[item.status]}}</span>#{{Type[item.type]}}</div>
|
||||||
|
<div v-if="item.payment_voucher && item.payment_voucher.length">
|
||||||
|
<div style="padding: 5px 0;">支付凭证:</div>
|
||||||
|
<div class="imgBox">
|
||||||
|
<el-image :z-index="9999" v-for="(it, i) in item.payment_voucher" :key="i" :src="it" :hide-on-click-modal="true" :preview-src-list="[it]" fit="cover" :preview-teleported="true" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div style="color: #888;padding-top:5px;">{{item.created_at}}</div>
|
<div style="color: #888;padding-top:5px;">{{item.created_at}}</div>
|
||||||
<div style="padding-top: 30px;" v-if="item.records.length">
|
<div style="padding-top: 30px;" v-if="item.records.length">
|
||||||
<el-timeline style="max-width: 600px">
|
<el-timeline style="max-width: 600px">
|
||||||
@ -92,5 +98,14 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
.imgBox{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
.el-image{
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="showDialog" title="采购订单审批" width="1200px" @close="closeDialog">
|
<el-dialog v-model="showDialog" title="采购订单审批" width="1200px" @close="closeDialog">
|
||||||
<el-form label-position="right" label-width="110px" v-loading="loading" :disabled="elType == 'view'">
|
<el-form label-position="right" label-width="110px" v-loading="loading">
|
||||||
<el-form-item label="公司名称:">
|
<el-form-item label="公司名称:">
|
||||||
<el-select v-model="itemInfo.company_id" placeholder="请选择" clearable filterable style="width: 320px;">
|
<el-select v-model="itemInfo.company_id" placeholder="请选择" clearable filterable style="width: 320px;">
|
||||||
<el-option v-for="it in companyList" :key="it.id" :label="it.name" :value="it.id" />
|
<el-option v-for="it in companyList" :key="it.id" :label="it.name" :value="it.id" />
|
||||||
@ -28,7 +28,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="预计产品单价(含税)" align="center">
|
<el-table-column label="预计产品单价(含税)" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input class="inpt" type="text" v-model="scope.row.expect_unit_price" />
|
<el-input class="inpt" type="text" v-model="scope.row.expect_unit_price" @input="blurInput(scope.row)" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单位" align="center">
|
<el-table-column label="单位" align="center">
|
||||||
@ -38,12 +38,14 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="预计采购数量" align="center">
|
<el-table-column label="预计采购数量" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input class="inpt" type="text" v-model="scope.row.expect_quantity" />
|
<el-input class="inpt" type="text" v-model="scope.row.expect_quantity" @input="blurInput(scope.row)" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="预付款比例(%)" align="center">
|
<el-table-column label="预付款比例(%)" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div style="display: flex;align-items: center;"><el-input type="text" class="inpt" v-model="scope.row.prepayment_ratio" /> %</div>
|
<div style="display: flex;align-items: center;">
|
||||||
|
<el-input type="text" class="inpt" v-model="scope.row.prepayment_ratio" @input="blurInput(scope.row)" /> %
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="交货时间" width="160" align="center">
|
<el-table-column label="交货时间" width="160" align="center">
|
||||||
@ -59,9 +61,12 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="100">
|
<el-table-column label="预计订单金额(元)" align="center" prop="estimated_order_amount" />
|
||||||
|
<el-table-column label="预付款(元)" align="center" prop="advance_payment" />
|
||||||
|
<el-table-column label="尾款(元)" align="center" prop="balance_payment" />
|
||||||
|
<el-table-column label="操作" align="center" width="60">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="danger" size="mini" @click="removeGoods(scope.$index, scope.row.product_id)"><el-icon><DeleteFilled /></el-icon></el-button>
|
<el-button type="text" @click="removeGoods(scope.$index, scope.row.id)"><el-icon color="#f00"><DeleteFilled /></el-icon></el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -78,7 +83,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="订单金额">
|
<el-table-column label="订单金额">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input type="text" v-model="scope.row.amount" />
|
<el-input type="text" v-model="scope.row.amount" @input="getSumData()" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="打款信息">
|
<el-table-column label="打款信息">
|
||||||
@ -102,13 +107,13 @@
|
|||||||
<el-input v-model="itemInfo.late_delivery_explanation" placeholder="请填写逾期交货说明" type="textarea" :rows="4"></el-input>
|
<el-input v-model="itemInfo.late_delivery_explanation" placeholder="请填写逾期交货说明" type="textarea" :rows="4"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="总计:">
|
<el-form-item label="总计:">
|
||||||
<div class="sumbox">
|
<div class="sumbox" >
|
||||||
总预计订单金额(元):<span>{{ sumData.total_amount || '0.00' }}</span>,
|
总预计订单金额(元):<span>{{ sumData.total_amount || '0.00' }}</span>,
|
||||||
总预付款(元):<span>{{ sumData.pre_pay_amount || '0.00' }}</span>,
|
总预付款(元):<span>{{ sumData.pre_pay_amount || '0.00' }}</span>,
|
||||||
总尾款(元):<span>{{ sumData.balance_amount || '0.00' }}</span>
|
总尾款(元):<span>{{ sumData.balance_amount || '0.00' }}</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<div class="space"></div>
|
<div class="space"></div>
|
||||||
<div class="h5Tit">其余信息</div>
|
<div class="h5Tit">其余信息</div>
|
||||||
<el-form-item label="开团时间:">
|
<el-form-item label="开团时间:">
|
||||||
@ -136,7 +141,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<span class="dialog-footer" v-if="elType != 'view'">
|
<span class="dialog-footer">
|
||||||
<el-button @click="closeDialog()">取消</el-button>
|
<el-button @click="closeDialog()">取消</el-button>
|
||||||
<el-button type="primary" @click="commitApproval()" :loading="btnloading">提交审批</el-button>
|
<el-button type="primary" @click="commitApproval()" :loading="btnloading">提交审批</el-button>
|
||||||
</span>
|
</span>
|
||||||
@ -148,7 +153,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<span class="span">商品名称:</span>
|
<span class="span">商品名称:</span>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<el-select v-model="filter.goodsIds" placeholder="请选择" clearable filterable class="wid100">
|
<el-select v-model="filter.goods_ids" placeholder="请选择" clearable filterable class="wid100">
|
||||||
<el-option v-for="it in goodskuList" :key="it.id" :label="it.title" :value="it.id" />
|
<el-option v-for="it in goodskuList" :key="it.id" :label="it.title" :value="it.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@ -208,16 +213,11 @@ export default {
|
|||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0,
|
default: 0,
|
||||||
},
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: '',
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup(props, context) {
|
setup(props, context) {
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
launchId: 0,
|
launchId: 0,
|
||||||
elType: '',
|
|
||||||
showDialog: false,
|
showDialog: false,
|
||||||
companyList: [],
|
companyList: [],
|
||||||
managerList: [],
|
managerList: [],
|
||||||
@ -245,11 +245,22 @@ export default {
|
|||||||
data.loading = true
|
data.loading = true
|
||||||
get(`/api/purchaseOrder/${data.launchId}`).then((res) => {
|
get(`/api/purchaseOrder/${data.launchId}`).then((res) => {
|
||||||
data.itemInfo = res.data
|
data.itemInfo = res.data
|
||||||
|
data.sumData.total_amount = res.data.expect_amount
|
||||||
|
data.sumData.pre_pay_amount = res.data.prepayment_amount
|
||||||
|
data.sumData.balance_amount = res.data.final_payment_amount
|
||||||
data.feesList = res.data.other_expenses
|
data.feesList = res.data.other_expenses
|
||||||
data.goodsList = res.data.products
|
|
||||||
res.data.products.forEach((item) => {
|
res.data.products.forEach((item) => {
|
||||||
data.goodsIds.push(item.product_id)
|
data.goodsIds.push(item.id)
|
||||||
|
|
||||||
|
if(item.expect_unit_price && item.expect_quantity) {
|
||||||
|
item.estimated_order_amount = (item.expect_unit_price * item.expect_quantity).toFixed(2)
|
||||||
|
if(item.prepayment_ratio) {
|
||||||
|
item.advance_payment = ((item.estimated_order_amount * item.prepayment_ratio) / 100).toFixed(2)
|
||||||
|
item.balance_payment = (((item.estimated_order_amount * 100) - (item.advance_payment * 100)) / 100).toFixed(2)
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
data.goodsList = res.data.products
|
||||||
data.loading = false
|
data.loading = false
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
data.loading = false
|
data.loading = false
|
||||||
@ -393,7 +404,7 @@ export default {
|
|||||||
item.product_id = item.goods_id
|
item.product_id = item.goods_id
|
||||||
item.sku_id = item.id
|
item.sku_id = item.id
|
||||||
data.goodsList.push(item)
|
data.goodsList.push(item)
|
||||||
data.goodsIds.push(item.goods_id)
|
data.goodsIds.push(item.id)
|
||||||
})
|
})
|
||||||
data.showGoods = false
|
data.showGoods = false
|
||||||
}
|
}
|
||||||
@ -421,28 +432,50 @@ export default {
|
|||||||
handleSearch()
|
handleSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function blurInput(row) {
|
||||||
|
if(row.expect_unit_price && row.expect_quantity) {
|
||||||
|
row.estimated_order_amount = (row.expect_unit_price * row.expect_quantity).toFixed(2)
|
||||||
|
if(row.prepayment_ratio) {
|
||||||
|
row.advance_payment = ((row.estimated_order_amount * row.prepayment_ratio) / 100).toFixed(2)
|
||||||
|
row.balance_payment = (((row.estimated_order_amount * 100) - (row.advance_payment * 100)) / 100).toFixed(2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
watch(() => data.goodsList, (newProps) => {
|
watch(() => data.goodsList, (newProps) => {
|
||||||
let num1 = 0, num2 = 0, num3 = 0
|
getSumData()
|
||||||
for (let index = 0; index < newProps.length; index++) {
|
}, { deep: true })
|
||||||
let item = newProps[index]
|
|
||||||
|
function getSumData() {
|
||||||
|
if(data.launchId) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let num1 = 0, num2 = 0
|
||||||
|
for (let index = 0; index < data.goodsList.length; index++) {
|
||||||
|
let item = data.goodsList[index]
|
||||||
if(item.expect_unit_price && item.expect_quantity) {
|
if(item.expect_unit_price && item.expect_quantity) {
|
||||||
num1 += item.expect_unit_price * item.expect_quantity
|
num1 += item.expect_unit_price * item.expect_quantity * 100
|
||||||
if(item.prepayment_ratio) {
|
if(item.prepayment_ratio) {
|
||||||
num2 += num1 * item.prepayment_ratio
|
num2 += num1 * item.prepayment_ratio
|
||||||
num3 += num1 * 100 - num2
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.sumData.total_amount = num1.toFixed(2)
|
for (let index = 0; index < data.feesList.length; index++) {
|
||||||
data.sumData.pre_pay_amount = (num2 / 100).toFixed(2)
|
let item = data.feesList[index]
|
||||||
data.sumData.balance_amount = (num3 / 100).toFixed(2)
|
if(item.amount * 1 > 0) {
|
||||||
}, { deep: true })
|
num1 += item.amount * 100
|
||||||
|
num2 += item.amount * 10000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.sumData.total_amount = (num1 / 100).toFixed(2)
|
||||||
|
data.sumData.pre_pay_amount = (num2 / 10000).toFixed(2)
|
||||||
|
data.sumData.balance_amount = (((data.sumData.total_amount * 100) - (data.sumData.pre_pay_amount * 100)) / 100).toFixed(2)
|
||||||
|
}
|
||||||
|
|
||||||
watch(() => props, (newProps) => {
|
watch(() => props, (newProps) => {
|
||||||
if (newProps.show) {
|
if (newProps.show) {
|
||||||
data.showDialog = true
|
data.showDialog = true
|
||||||
data.launchId = newProps.id
|
data.launchId = newProps.id
|
||||||
data.elType = newProps.type || ''
|
|
||||||
if(data.launchId) {
|
if(data.launchId) {
|
||||||
getDetail()
|
getDetail()
|
||||||
}
|
}
|
||||||
@ -475,7 +508,9 @@ export default {
|
|||||||
removeGoods,
|
removeGoods,
|
||||||
addFee,
|
addFee,
|
||||||
removeFee,
|
removeFee,
|
||||||
openGoods
|
openGoods,
|
||||||
|
blurInput,
|
||||||
|
getSumData
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="showDialog" title="预付款打款审批" width="700px" @close="closeDialog">
|
<el-dialog v-model="showDialog" title="预付款打款审批" width="1250px" @close="closeDialog">
|
||||||
<el-form label-position="right" label-width="90px" v-loading="loading">
|
<approval-detail :id="detail_id" :show="showDialog"></approval-detail>
|
||||||
|
<el-form label-position="right" label-width="90px">
|
||||||
<el-form-item label="订单合同:">
|
<el-form-item label="订单合同:">
|
||||||
<el-upload
|
<el-upload
|
||||||
ref="uploadRef"
|
ref="uploadRef"
|
||||||
@ -21,7 +22,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<span class="dialog-footer">
|
<span class="dialog-footer">
|
||||||
<el-button @click="closeDialog()">取消</el-button>
|
<el-button @click="closeDialog()">取消</el-button>
|
||||||
<el-button type="primary" @click="commitApproval()" :loading="loading">提交审批</el-button>
|
<el-button type="primary" @click="commitApproval()" :loading="loading">提交</el-button>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@ -37,9 +38,10 @@ import { Plus, Search } from "@element-plus/icons"
|
|||||||
import { reactive, toRefs, watch, ref, nextTick } from 'vue'
|
import { reactive, toRefs, watch, ref, nextTick } from 'vue'
|
||||||
import { get, post } from '@/api/request'
|
import { get, post } from '@/api/request'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
|
import approvalDetail from '@/components/approval/detail.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Plus, Search },
|
components: { Plus, Search, approvalDetail },
|
||||||
props: {
|
props: {
|
||||||
show: {
|
show: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@ -48,6 +50,10 @@ export default {
|
|||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0,
|
default: 0,
|
||||||
|
},
|
||||||
|
instance_id: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup(props, context) {
|
setup(props, context) {
|
||||||
@ -62,6 +68,7 @@ export default {
|
|||||||
showDialog: false,
|
showDialog: false,
|
||||||
imgsList: [],
|
imgsList: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
|
detail_id: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
const commitApproval = () => {
|
const commitApproval = () => {
|
||||||
@ -123,6 +130,7 @@ export default {
|
|||||||
if (newProps.show) {
|
if (newProps.show) {
|
||||||
data.showDialog = true
|
data.showDialog = true
|
||||||
data.launchId = newProps.id
|
data.launchId = newProps.id
|
||||||
|
data.detail_id = newProps.id
|
||||||
}
|
}
|
||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<span class="dialog-footer">
|
<span class="dialog-footer">
|
||||||
<el-button @click="closeDialog()">取消</el-button>
|
<el-button @click="closeDialog()">取消</el-button>
|
||||||
<el-button type="primary" @click="commitApproval()" :loading="loading">提交审批</el-button>
|
<el-button type="primary" @click="commitApproval()" :loading="loading">保存</el-button>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<span class="dialog-footer">
|
<span class="dialog-footer">
|
||||||
<el-button @click="closeDialog()">取消</el-button>
|
<el-button @click="closeDialog()">取消</el-button>
|
||||||
<el-button type="primary" @click="commitApproval()" :loading="loading">提交审批</el-button>
|
<el-button type="primary" @click="commitApproval()" :loading="loading">提交</el-button>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|||||||
@ -67,16 +67,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="总预计订单金额/总预防款/总尾款" align="center">
|
<el-table-column label="总预计订单金额/总预付款/总尾款" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>{{ scope.row.total_amount }}</div>
|
<div>{{ scope.row.expect_amount }}</div>
|
||||||
<div>{{ scope.row.prepayment_amount }}</div>
|
<div>{{ scope.row.prepayment_amount }}</div>
|
||||||
<div>{{ scope.row.final_payment_amount }}</div>
|
<div>{{ scope.row.final_payment_amount }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="总实际订单金额/总实际已支付金额/总实际未支付金额" align="center">
|
<el-table-column label="总实际订单金额/总实际已支付金额/总实际未支付金额" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>{{ scope.row.has_paid_amount }}</div>
|
<div>{{ scope.row.total_amount }}</div>
|
||||||
<div>{{ scope.row.has_paid_prepayment_amount }}</div>
|
<div>{{ scope.row.has_paid_prepayment_amount }}</div>
|
||||||
<div>{{ scope.row.has_paid_final_payment_amount }}</div>
|
<div>{{ scope.row.has_paid_final_payment_amount }}</div>
|
||||||
</template>
|
</template>
|
||||||
@ -90,9 +90,9 @@
|
|||||||
<el-table-column label="操作" align="center" width="260">
|
<el-table-column label="操作" align="center" width="260">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="elbtn">
|
<div class="elbtn">
|
||||||
<el-button type="primary" v-if="scope.row.approval_type != 4" text @click="resubmit(scope.row.id)"><el-icon><RefreshLeft /></el-icon>重新提审</el-button>
|
<el-button type="primary" v-if="scope.row.approval_type != 4" text @click="resubmit(scope.row.id)"><el-icon><Edit /></el-icon>编辑</el-button>
|
||||||
|
|
||||||
<el-button type="primary" text @click="toPrepayment(scope.row.id)" v-if="(scope.row.approval_type == 1 && scope.row.order_approval_status == 2) || (scope.row.approval_type == 2 && scope.row.prepayment_approval_status == 3)"><el-icon><Position /></el-icon>发起预付款审批</el-button>
|
<el-button type="primary" text @click="toPrepayment(scope.row)" v-if="(scope.row.approval_type == 1 && scope.row.order_approval_status == 2) || (scope.row.approval_type == 2 && scope.row.prepayment_approval_status == 3)"><el-icon><Position /></el-icon>发起预付款审批</el-button>
|
||||||
|
|
||||||
<el-button type="primary" text @click="toPayment(scope.row.current_instance_id)"
|
<el-button type="primary" text @click="toPayment(scope.row.current_instance_id)"
|
||||||
v-if="(scope.row.approval_type == 2 && scope.row.prepayment_approval_status == 2) || (scope.row.approval_type == 3 && scope.row.final_payment_approval_status == 2)">
|
v-if="(scope.row.approval_type == 2 && scope.row.prepayment_approval_status == 2) || (scope.row.approval_type == 3 && scope.row.final_payment_approval_status == 2)">
|
||||||
@ -148,11 +148,15 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog v-model="showDetail" width="1400px" title="查看详情">
|
||||||
|
<approval-detail :id="curId" :show="showDetail"></approval-detail>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 订单审批 -->
|
<!-- 订单审批 -->
|
||||||
<order-approval :show="showOrderApproval" :type="elType" :id="curId" @refresh="handleSearch" @close="showOrderApproval = false"></order-approval>
|
<order-approval :show="showOrderApproval" :id="curId" @refresh="handleSearch" @close="showOrderApproval = false"></order-approval>
|
||||||
|
|
||||||
<!-- 预付款审批 -->
|
<!-- 预付款审批 -->
|
||||||
<order-prepayment :show="showPrepayment" :id="curId" @refresh="fetchData" @close="showPrepayment = false"></order-prepayment>
|
<order-prepayment :show="showPrepayment" :id="curId" :instance_id="current_instance_id" @refresh="fetchData" @close="showPrepayment = false"></order-prepayment>
|
||||||
|
|
||||||
<!-- 上传支付凭证 -->
|
<!-- 上传支付凭证 -->
|
||||||
<upload-payment :show="showPayment" :id="curId" @refresh="fetchData" @close="showPayment = false"></upload-payment>
|
<upload-payment :show="showPayment" :id="curId" @refresh="fetchData" @close="showPayment = false"></upload-payment>
|
||||||
@ -184,11 +188,12 @@ import balancePayment from '@/components/approval/balancepayment.vue'
|
|||||||
import updateApproval from '@/components/approval/update.vue'
|
import updateApproval from '@/components/approval/update.vue'
|
||||||
import approvalLogs from '@/components/approval/logs.vue'
|
import approvalLogs from '@/components/approval/logs.vue'
|
||||||
import uploadInvoice from '@/components/approval/uploadinvoice.vue'
|
import uploadInvoice from '@/components/approval/uploadinvoice.vue'
|
||||||
|
import approvalDetail from '@/components/approval/detail.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Search, Plus, Edit, ZoomIn, Delete, RefreshLeft, SwitchButton, Position, Upload, Clock,
|
Search, Plus, Edit, ZoomIn, Delete, RefreshLeft, SwitchButton, Position, Upload, Clock,
|
||||||
uploadPayment, balancePayment, updateApproval, orderApproval, orderPrepayment, approvalLogs, uploadInvoice
|
uploadPayment, balancePayment, updateApproval, orderApproval, orderPrepayment, approvalLogs, uploadInvoice, approvalDetail
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
@ -227,7 +232,8 @@ export default {
|
|||||||
suppliersList: [],
|
suppliersList: [],
|
||||||
allGoodsList: [],
|
allGoodsList: [],
|
||||||
curId: 0,
|
curId: 0,
|
||||||
elType: ''
|
current_instance_id: 0,
|
||||||
|
showDetail: false
|
||||||
})
|
})
|
||||||
|
|
||||||
function handleSearch() {
|
function handleSearch() {
|
||||||
@ -241,8 +247,8 @@ export default {
|
|||||||
page: data.page,
|
page: data.page,
|
||||||
pageSize: data.pageSize,
|
pageSize: data.pageSize,
|
||||||
...data.filter,
|
...data.filter,
|
||||||
start_date: data.submitTime ? data.submitTime[0] : '',
|
start_time: data.submitTime ? data.submitTime[0] : '',
|
||||||
end_date: data.submitTime ? data.submitTime[1] : ''
|
end_time: data.submitTime ? data.submitTime[1] : ''
|
||||||
}
|
}
|
||||||
get(`/api/purchaseOrder`, params).then((res) => {
|
get(`/api/purchaseOrder`, params).then((res) => {
|
||||||
data.goodsList = res.data
|
data.goodsList = res.data
|
||||||
@ -287,8 +293,9 @@ export default {
|
|||||||
data.showEditApproval = true
|
data.showEditApproval = true
|
||||||
}
|
}
|
||||||
|
|
||||||
function toPrepayment(id) {
|
function toPrepayment(row) {
|
||||||
data.curId = id
|
data.curId = row.id
|
||||||
|
data.current_instance_id = row.current_instance_id
|
||||||
data.showPrepayment = true
|
data.showPrepayment = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,15 +333,13 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleAdd() {
|
function handleAdd() {
|
||||||
data.elType = ''
|
|
||||||
data.curId = 0
|
data.curId = 0
|
||||||
data.showOrderApproval = true
|
data.showOrderApproval = true
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleView(id) {
|
function handleView(id) {
|
||||||
data.elType = 'view'
|
|
||||||
data.curId = id
|
data.curId = id
|
||||||
data.showOrderApproval = true
|
data.showDetail = true
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<span class="span">银行开户名:</span>
|
<span class="span">银行开户名:</span>
|
||||||
<div class="right"><el-input v-model="filter.bank_account_holder" class="wid100" clearable></el-input></div>
|
<div class="right"><el-input v-model="filter.bank_account_name" class="wid100" clearable></el-input></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<el-button type="primary" @click="handleSearch"><el-icon><Search /></el-icon> 筛选</el-button>
|
<el-button type="primary" @click="handleSearch"><el-icon><Search /></el-icon> 筛选</el-button>
|
||||||
@ -100,9 +100,7 @@ export default {
|
|||||||
opaType: '',
|
opaType: '',
|
||||||
showDialog: false,
|
showDialog: false,
|
||||||
opa_loading: false,
|
opa_loading: false,
|
||||||
itemInfo: {},
|
itemInfo: {}
|
||||||
supplier_name: '',
|
|
||||||
bank_account_holder: ''
|
|
||||||
})
|
})
|
||||||
|
|
||||||
function handleSearch() {
|
function handleSearch() {
|
||||||
|
|||||||
@ -39,10 +39,10 @@
|
|||||||
<div class="opaBox">
|
<div class="opaBox">
|
||||||
<el-button type="primary" @click="showAdd = true"><el-icon><Plus /></el-icon> 新增</el-button>
|
<el-button type="primary" @click="showAdd = true"><el-icon><Plus /></el-icon> 新增</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="goodsList" style="width: 100%" border v-loading="loading">
|
<el-table :data="tableData" style="width: 100%" border v-loading="loading">
|
||||||
<el-table-column prop="id" label="ID" width="80" align="center" />
|
<el-table-column prop="id" label="ID" width="80" align="center" />
|
||||||
<el-table-column prop="amount" label="审批金额" align="center" />
|
<el-table-column prop="amount" label="审批金额" align="center" />
|
||||||
<el-table-column prop="type" label="采购类型" align="center">
|
<el-table-column prop="type" label="审批类型" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ approvalType[scope.row.order.approval_type] }}</span>
|
<span>{{ approvalType[scope.row.order.approval_type] }}</span>
|
||||||
|
|
||||||
@ -51,7 +51,7 @@
|
|||||||
<div v-else-if="scope.row.order.approval_type == 3">{{ approvalStatus[scope.row.order.final_payment_approval_status] }}</div>
|
<div v-else-if="scope.row.order.approval_type == 3">{{ approvalStatus[scope.row.order.final_payment_approval_status] }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="总预计订单金额/总预防款/总尾款" align="center">
|
<el-table-column label="总预计订单金额/总预付款/总尾款" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>{{ scope.row.order.total_amount }}</div>
|
<div>{{ scope.row.order.total_amount }}</div>
|
||||||
<div>{{ scope.row.order.prepayment_amount }}</div>
|
<div>{{ scope.row.order.prepayment_amount }}</div>
|
||||||
@ -69,13 +69,13 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="提交人/提交时间" align="center">
|
<el-table-column label="提交人/提交时间" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>{{ scope.row.admin_user && scope.row.admin_user.username || '-' }}</div>
|
<div>{{ scope.row.creator && scope.row.creator.username || '-' }}</div>
|
||||||
<span>{{ scope.row.created_at }}</span>
|
<span>{{ scope.row.created_at }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="200">
|
<el-table-column label="操作" align="center" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" text @click="toApproval(scope.row.id)"><el-icon><Stamp /></el-icon>审批</el-button>
|
<el-button type="primary" text @click="toApproval(scope.row)"><el-icon><Stamp /></el-icon>审批</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -92,7 +92,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog v-model="showDialog" width="500px" title="审批">
|
<el-dialog v-model="showDialog" width="1200px" title="审批">
|
||||||
|
<approval-detail :id="detail_id" :show="showDialog"></approval-detail>
|
||||||
<el-form label-position="right" label-width="100px">
|
<el-form label-position="right" label-width="100px">
|
||||||
<el-form-item label="审批状态:">
|
<el-form-item label="审批状态:">
|
||||||
<el-radio-group v-model="spInfo.status">
|
<el-radio-group v-model="spInfo.status">
|
||||||
@ -112,36 +113,30 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<order-approval :show="showOrderApproval" :id="curId" @refresh="handleSearch" @close="showOrderApproval = false"></order-approval>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { onMounted, reactive, toRefs, ref, nextTick } from "vue"
|
import { onMounted, reactive, toRefs } from "vue"
|
||||||
import { get, post } from "@/api/request"
|
import { get, post } from "@/api/request"
|
||||||
import { Search, Plus, Edit, ZoomIn, Delete, Stamp } from '@element-plus/icons'
|
import { Search, Plus, Edit, ZoomIn, Delete, Stamp } from '@element-plus/icons'
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import orderApproval from '@/components/approval/order.vue'
|
import approvalDetail from '@/components/approval/detail.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Search, Plus, Edit, ZoomIn, Delete, orderApproval, Stamp
|
Search, Plus, Edit, ZoomIn, Delete, Stamp, approvalDetail
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
add_type: 1,
|
|
||||||
showDialog: false,
|
showDialog: false,
|
||||||
showOrderApproval: false,
|
|
||||||
filter: {},
|
filter: {},
|
||||||
submitTime: [],
|
submitTime: [],
|
||||||
goodsList: [],
|
tableData: [],
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
total: 0,
|
total: 0,
|
||||||
loading: false,
|
loading: false,
|
||||||
picVisible: false,
|
|
||||||
dialogImageUrl: '',
|
|
||||||
approvalType: {
|
approvalType: {
|
||||||
'1': '采购订单审批',
|
'1': '采购订单审批',
|
||||||
'2': '预付款打款审批',
|
'2': '预付款打款审批',
|
||||||
@ -154,11 +149,9 @@ export default {
|
|||||||
'2': '已完成',
|
'2': '已完成',
|
||||||
'3': '已取消'
|
'3': '已取消'
|
||||||
},
|
},
|
||||||
warehouseList: [],
|
|
||||||
suppliersList: [],
|
|
||||||
allGoodsList: [],
|
|
||||||
curId: 0,
|
curId: 0,
|
||||||
spInfo: {}
|
spInfo: {},
|
||||||
|
detail_id: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
function handleSearch() {
|
function handleSearch() {
|
||||||
@ -177,7 +170,7 @@ export default {
|
|||||||
end_time: data.submitTime ? data.submitTime[1] : ''
|
end_time: data.submitTime ? data.submitTime[1] : ''
|
||||||
}
|
}
|
||||||
get(`/api/purchaseOrder/instanceList`, params).then((res) => {
|
get(`/api/purchaseOrder/instanceList`, params).then((res) => {
|
||||||
data.goodsList = res.data
|
data.tableData = res.data
|
||||||
data.total = res.meta.total
|
data.total = res.meta.total
|
||||||
data.loading = false
|
data.loading = false
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@ -196,30 +189,13 @@ export default {
|
|||||||
fetchData()
|
fetchData()
|
||||||
}
|
}
|
||||||
|
|
||||||
function getWarehouseList() {
|
function toApproval(row) {
|
||||||
get(`/api/all/warehouses`).then((res) => {
|
data.curId = row.id
|
||||||
data.warehouseList = res.data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSuppliersList() {
|
|
||||||
get(`/api/suppliers`, {pageSize: 1000}).then((res) => {
|
|
||||||
data.suppliersList = res.data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAllGoodsList() {
|
|
||||||
get(`/api/all/goods`).then((res) => {
|
|
||||||
data.allGoodsList = res.data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function toApproval(id) {
|
|
||||||
data.curId = id
|
|
||||||
data.spInfo = {
|
data.spInfo = {
|
||||||
status: 2,
|
status: 2,
|
||||||
comment: ''
|
comment: ''
|
||||||
}
|
}
|
||||||
|
data.detail_id = row.purchase_order_id
|
||||||
data.showDialog = true
|
data.showDialog = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,9 +214,6 @@ export default {
|
|||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
fetchData()
|
fetchData()
|
||||||
getWarehouseList()
|
|
||||||
getSuppliersList()
|
|
||||||
getAllGoodsList()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -249,9 +222,6 @@ export default {
|
|||||||
handleCurrentChange,
|
handleCurrentChange,
|
||||||
handleSizeChange,
|
handleSizeChange,
|
||||||
fetchData,
|
fetchData,
|
||||||
getWarehouseList,
|
|
||||||
getSuppliersList,
|
|
||||||
getAllGoodsList,
|
|
||||||
toApproval,
|
toApproval,
|
||||||
commitApproval
|
commitApproval
|
||||||
}
|
}
|
||||||
|
|||||||
@ -89,8 +89,6 @@
|
|||||||
<div v-if="scope.row.goods_sku">{{ scope.row.goods_sku.actual_inventory }}({{ scope.row.goods_sku.lock_in_stock }})</div>
|
<div v-if="scope.row.goods_sku">{{ scope.row.goods_sku.actual_inventory }}({{ scope.row.goods_sku.lock_in_stock }})</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="goods_cost" label="商品成本" align="center" />
|
|
||||||
<el-table-column prop="freight_cost" label="运费成本" align="center" />
|
|
||||||
<el-table-column prop="refund_amount" label="退款金额" align="center" />
|
<el-table-column prop="refund_amount" label="退款金额" align="center" />
|
||||||
<el-table-column prop="red_refund_amount" label="红包退款有责金额" align="center" />
|
<el-table-column prop="red_refund_amount" label="红包退款有责金额" align="center" />
|
||||||
<el-table-column prop="total_profit" label="总利润" align="center" />
|
<el-table-column prop="total_profit" label="总利润" align="center" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user