Commit 9438c3a8 authored by qinj's avatar qinj

Merge branch 'dev' of http://120.25.63.219:6088/rex/portalhtml into dev

parents 9ef133d8 33768ac7
...@@ -32,7 +32,7 @@ export default { ...@@ -32,7 +32,7 @@ export default {
} }
}, },
created() { created() {
this.getTableData() // this.getTableData()
}, },
mounted() { mounted() {
}, },
......
const applyConfig = {
defaultColumns: {
minWidth: 120,
showOverflowTooltip: true,
align: 'center'
},
columns: {
numberID: {
type: 'input',
label: '序号'
},
GoodsORTaxableServicesName: {
type: 'input',
label: '货物或应税劳务、服务名称'
},
SpecificationModel: {
type: 'input',
label: '规格型号'
},
Unit: {
type: 'input',
label: '单位'
},
Quantity: {
type: 'input',
label: '数量'
},
UnitPrice: {
type: 'input',
label: '单价'
},
Money: {
type: 'input',
label: '金额'
},
TaxRate: {
type: 'input',
label: '税率'
},
TaxAmount: {
type: 'input',
label: '税额'
}
}
}
export default applyConfig
<template>
<div class="apply">
<Title :title="apply" />
<ele-table
ref="eleTable"
v-bind="applyConfig"
/>
</div>
</template>
<script>
import constant from './constant'
import Title from '@/components/Title'
export default {
components: {
Title
},
data() {
return {
apply: '开票申请信息',
applyConfig: constant
}
}
}
</script>
<style>
</style>
const tableConfig = {
defaultColumns: {
minWidth: 120,
showOverflowTooltip: true,
align: 'center'
},
columns: {
BillOfParcels: {
type: 'input',
label: '订单行',
fixed: 'left'
},
OrderID: {
type: 'input',
label: '订单编号'
},
OrderType: {
type: 'input',
label: '订单类型'
},
CustomerID: {
type: 'input',
label: '客户编号'
},
CustomerName: {
type: 'input',
label: '客户名称'
},
ReceiptPlace: {
type: 'input',
label: '收获地点'
},
ShippingTime: {
type: 'input',
label: '出货时间'
},
MaterialCode: {
type: 'input',
label: '物料编码'
},
MaterialCodeDescription: {
type: 'input',
label: '物料编码说明'
},
Quantity: {
type: 'input',
label: '数量'
},
Unit: {
type: 'input',
label: '单位'
},
UnitPrice: {
type: 'input',
label: '单价'
},
Money: {
type: 'input',
label: '金额'
},
InvoiceSource: {
type: 'input',
label: '发票来源'
},
Currency: {
type: 'input',
label: '币种'
},
ExchangeRate: {
type: 'input',
label: '汇率'
},
IsInformationComplete: {
type: 'input',
label: '资料是否齐全'
},
IsCustomsDeclaration: {
type: 'input',
label: '是否有报关单'
},
CustomsDeclarationID: {
type: 'input',
label: '报关单号'
},
CheckFeedback: {
type: 'input',
label: '审核反馈'
},
TwiceCheckFeedback: {
type: 'input',
label: '复核反馈'
},
ConfirmStatus: {
type: 'input',
label: '状态'
},
handle: {
label: '操作',
fixed: 'right',
minWidth: 200,
hideInFilter: true,
renderItem: (h, scope, listeners) => {
return h('div', [
h('el-button', {
on: {
click: (e) => listeners.handleEdit(scope.row)
},
props: {
icon: 'el-icon-success',
type: 'text'
}
}, '通过'),
h('el-button', {
on: {
click: (e) => listeners.handleTakeEffect(scope.row)
},
props: {
icon: 'el-icon-error',
type: 'text'
}
}, '未通过')
])
}
}
}
}
export default tableConfig
<template>
<div class="list">
<Title :title="list" />
<div class="listHanle">
<div class="listHanle_title">
<span><i class="el-icon-pie-chart" />行数:10</span>
<span>数量:1000</span>
<span>金额:1000</span>
</div>
</div>
<ele-table
ref="eleTable"
v-bind="tableConfig"
/>
</div>
</template>
<script>
import constant from './constant'
import Title from '@/components/Title'
export default {
components: {
Title
},
data() {
return {
tableConfig: constant,
list: '开票清单信息'
}
}
}
</script>
<style lang='scss' scoped>
.listHanle{
height: 60px;
line-height: 60px;
.listHanle_title {
float: right;
span{
padding-right: 20px;
}
}
}
</style>
const formConfigNote = {
isShowBackBtn: false,
isShowSubmitBtn: true,
detailUrl: '/invoiceApply/getOne',
formDesc: {
SpecialInstructions: {
type: 'input',
label: '特殊说明',
disabled: true,
layout: 12
},
ReferenceNote: {
type: 'input',
label: '参考备注',
disabled: true,
layout: 12
},
ActualNote: {
type: 'input',
label: '实际备注',
disabled: true,
layout: 12
}
}
}
export default formConfigNote
<template>
<div class="remarks">
<Title :title="remarks" />
<div class="remarks-btn">
<div class="addBtn">
<el-button type="text" @click="handleAdd">编辑</el-button>
</div>
</div>
<detail-table :table-config="formConfigNote" :table-data="tableData" />
</div>
</template>
<script>
import DetailTable from '@/components/DetailTable'
import constant from './constant'
import Title from '@/components/Title'
import { invoiceApplyUpdate, invoiceApplyGetOne } from '@/api/invoice'
export default {
components: {
DetailTable,
Title
},
props: {
objectId: {
type: Object,
default: () => {}
}
},
data() {
return {
remarks: '特殊开票及备注说明',
formConfigNote: constant,
tableData: {}
}
},
watch: {
objectId: {
handler(newVal) {
console.log(newVal)
},
deep: true,
immediate: true
}
},
methods: {
handleAdd() {
this.$prompt('实际备注', '编辑实际备注', {
confirmButtonText: '确定',
cancelButtonText: '取消'
}).then(({ value }) => {
// console.log(value, this.objectId)
invoiceApplyUpdate({ objectID: this.objectId.objectID, actualNote: value }).then(res => {
this.$message({
type: 'success',
message: '修改成功'
})
this.toUpdate()
})
}).catch(() => {
this.$message({
type: 'info',
message: '取消输入'
})
})
},
toUpdate() {
invoiceApplyGetOne(this.objectId).then(res => {
console.log(res.results[0])
this.tableData = res.results[0]
})
}
}
}
</script>
<style lang='scss' scoped>
.remarks-btn{
height: 30px;
line-height: 30px;
padding: 0 20px;
.addBtn{
float: right;
}
}
</style>
const formConfig = {
isShowBackBtn: false,
isShowSubmitBtn: true,
detailUrl: '/invoiceApply/getOne',
formDesc: {
CustomerName: {
type: 'input',
label: '客户名称',
disabled: true,
layout: 12
},
DetailedAddress: {
type: 'input',
label: '地址',
disabled: true,
layout: 12
},
TaxpayerIdentificationNumber: {
type: 'input',
label: '纳税人识别号',
disabled: true,
layout: 12
},
DepositBank: {
type: 'input',
layout: 12,
label: '开户行'
},
BankNumber: {
type: 'input',
label: '账户',
disabled: true,
layout: 12
},
Phone: {
type: 'input',
label: '电话',
disabled: true,
layout: 12
},
BillingType: {
type: 'input',
label: '开票类型',
disabled: true,
layout: 12
},
Currency: {
type: 'input',
label: '币种',
disabled: true,
layout: 12
}
}
}
export default formConfig
<template>
<div class="rise">
<Title :title="rise" />
<detail-table :table-config="formConfig" :table-data="tableData" />
</div>
</template>
<script>
import DetailTable from '@/components/DetailTable'
import constant from './constant'
import Title from '@/components/Title'
export default {
components: {
DetailTable,
Title
},
props: {
objectId: {
type: Object,
default: () => {}
}
},
data() {
return {
formConfig: constant,
rise: '客户抬头信息',
tableData: {}
}
}
}
</script>
<style>
</style>
<template>
<div v-loading="loading" class="app-container">
<div class="detail-header-container">
<div class="detail-header-title">
<h3>深圳市深蓝集团</h3>
<div class="detail-header-info">
<div>
<i class="el-icon-c-scale-to-original" />
<span>申请编码:{{ tableData.ID }}</span>
</div>
<div>
<i class="el-icon-c-scale-to-original" />
<span>申请状态:{{ tableData.Ext_QuoteStatus_KUT }}</span>
</div>
</div>
</div>
<div class="detail-header-info">
<div><span>申请总金额:{{ tableData.RequisitionTotalAmount }}</span></div>
<div><span>申请人:{{ tableData.RequisitionPerson }}</span></div>
<div><span>开票时间:{{ tableData.BillingTime }}</span></div>
<div><span>是否同步ERP:{{ tableData.IsToERP? '是':'否' }}</span></div>
<div><span>同步状态:{{ tableData.CreationDateTime? '同步成功':'同步失败' }}</span></div>
</div>
</div>
<div class="detail-content-container">
<Remarks :object-id="objectID" />
<Rise />
<Apply :object-id="objectID" />
<List :object-id="objectID" />
<div class="floor-btn">
<div class="btn">
<el-button
type="primary"
size="medium"
>
<i class="el-icon-error" />
不同意开票
</el-button>
<el-button
type="primary"
size="medium"
>
<i class="el-icon-success" />
同意开票
</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import { invoiceApplyGetOne } from '@/api/invoice'
import Remarks from './components/remarks-invoice/index'
import Rise from './components/rise-invoice/index'
import Apply from './components/apply-invoice/index'
import List from './components/list-invoice/index'
export default {
components: {
Remarks,
Rise,
Apply,
List
},
data() {
return {
tableData: {},
objectID: '',
loading: false
}
},
created() {
this.getTableData()
},
methods: {
getTableData() {
this.objectID = this.$route.query
this.loading = true
invoiceApplyGetOne(this.objectID).then(res => {
console.log(res)
this.tableData = res.results[0]
this.loading = false
})
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .apply .el-table--border{
margin-top: 40px;
}
.listHanle{
height: 60px;
line-height: 60px;
.listHanle_title {
float: right;
span{
padding-right: 20px;
}
}
}
.floor-btn{
height: 200px;
line-height: 200px;
.btn{
float: right;
}
}
.remarks-btn{
height: 30px;
line-height: 30px;
padding: 0 20px;
.addBtn{
float: right;
}
}
</style>
import { billingMessage } from '@/api/invoice'
const tableConfig = {
url: billingMessage.searchUrl,
defaultColumns: {
minWidth: 120,
showOverflowTooltip: true,
align: 'center'
},
columns: {
InvoiceNo: {
type: 'input',
showInSearch: true,
fixed: 'left',
label: '发票号码'
},
InvoicingRequisitionNo: {
type: 'input',
label: '申请单号'
},
InvoiceCode: {
type: 'input',
label: '发票代码'
},
InvoiceType: {
type: 'input',
showInSearch: true,
label: '发票类型'
},
InvoiceAmount: {
type: 'input',
label: '发票金额'
},
BillingTime: {
type: 'input',
label: '开票时间'
},
SignStatus: {
type: 'input',
label: '开票状态'
},
SignTime: {
type: 'input',
label: '签收时间'
},
SignBack: {
type: 'input',
label: '签收回执'
},
CourierCompany: {
type: 'input',
label: '快递公司'
},
CourierNumber: {
type: 'input',
label: '快递单号'
},
handle: {
label: '操作',
fixed: 'right',
minWidth: 200,
hideInFilter: true,
renderItem: (h, scope, listeners) => {
return h('div', [
h('el-button', {
on: {
click: (e) => listeners.enterInvoice(scope.row, '录入发票')
},
props: {
icon: 'el-icon-full-screen',
type: 'text'
}
}, '录入发票'),
h('el-button', {
on: {
click: (e) => listeners.uploadReceipt(scope.row, '上传回执')
},
props: {
icon: 'el-icon-circle-check',
type: 'text'
}
}, '上传回执')
])
}
}
}
}
export default tableConfig
<template>
<div class="app-container">
<ele-search
:columns="tableConfig.columns"
@handleSearch="handleSearch"
@handleReset="handleReset"
@handleFilter="handleFilter"
/>
<div class="table-container">
<TableBtns>
<template v-slot:left>
<el-button
type="primary"
icon="el-icon-success"
@click="confirmReceipt"
>确认收票</el-button>
<el-button
type="primary"
icon="el-icon-edit-outline"
@click="fillLogistics"
>填写物流</el-button>
</template>
</TableBtns>
<ele-table
ref="eleTable"
v-bind="tableConfig"
:expand-params="expandParams"
:listeners="tableListeners"
@handleSelectionChange="handleSelectionChange"
/>
</div>
</div>
</template>
<script>
import constant from './constant'
import tableMixin from '@/mixins/table'
import { billingMessageUpdate } from '@/api/invoice'
export default {
mixins: [tableMixin],
data() {
return {
expandParams: {}, // 筛选条件
tableListeners: {}, // 事件监听对象,供ele-table内部调用
tableConfig: constant,
selection: []
}
},
created() {
this.tableListeners = {
enterInvoice: this.enterInvoice, // 录入发票
uploadReceipt: this.uploadReceipt // 上传回执
}
},
methods: {
// 录入发票
enterInvoice(row) {
console.log('录入发票', row)
},
// 上传回执
uploadReceipt(row) {
console.log('上传回执', row)
},
handleSelectionChange(selection) {
console.log(selection)
this.selection = selection
},
confirmReceipt() {
console.log(this.selection)
if (this.selection.length === 0) {
this.$message({
type: 'warning',
message: '请选择需要收票的发票'
})
} else {
this.$confirm(' 是否确定签收发票?', '确定提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
billingMessageUpdate(this.selection).then(res => {
this.$message({
type: 'success',
message: '签收成功!'
})
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
})
}
},
fillLogistics() {
console.log('确认物流')
}
}
}
</script>
<style>
</style>
<template>
<div>
<h2>发票总览</h2>
</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
// import { invoiceApply } from '@/api/invoice'
const tableConfig = {
// url: invoiceApply.billingMessageSearchUrl,
defaultColumns: {
minWidth: 120,
showOverflowTooltip: true,
align: 'center'
},
columns: {
BillOfParcels: {
type: 'input',
fixed: 'left',
label: '订单行'
},
OrderID: {
type: 'input',
showInSearch: true,
label: '订单编号'
},
OrderType: {
type: 'input',
label: '订单类型'
},
InvoicingRequisitionNo: {
type: 'input',
label: '开票申请单号'
},
CustomerID: {
type: 'input',
label: '客户编号'
},
CustomerName: {
type: 'input',
showInSearch: true,
label: '客户名称'
},
ReceiptPlace: {
type: 'input',
label: '收货地点'
},
ShippingTime: {
type: 'input',
label: '出货时间'
},
MaterialCode: {
type: 'input',
label: '物料编码'
},
MaterialCodeDescription: {
type: 'input',
label: '物料编码说明'
},
Quantity: {
type: 'input',
label: '数量'
},
Unit: {
type: 'input',
label: '单位'
},
UnitPrice: {
type: 'input',
label: '单价'
},
Money: {
type: 'input',
label: '金额'
},
InvoiceSource: {
type: 'input',
label: '发票来源'
},
Currency: {
type: 'input',
label: '币种'
},
ExchangeRate: {
type: 'input',
label: '汇率'
},
// InvoiceCode: {
// type: 'input',
// label: '发票代码'
// },
InvoiceNo: {
type: 'input',
label: '发票号码'
},
IsInformationComplete: {
type: 'input',
label: '资料是否齐全'
},
IsEmbedded: {
type: 'input',
label: '是否嵌入式'
},
IsCustomsDeclaration: {
type: 'input',
label: '是否有报关单'
},
CustomsDeclarationID: {
type: 'input',
label: '报关单号'
},
CheckFeedback: {
type: 'input',
label: '审核反馈'
},
ConfirmStatus: {
type: 'input',
label: '确认状态'
},
SignStatus: {
type: 'input',
label: '状态',
fixed: 'right'
}
}
}
export default tableConfig
<template>
<div class="app-container">
<ele-search
:columns="tableConfig.columns"
@handleSearch="handleSearch"
@handleReset="handleReset"
@handleFilter="handleFilter"
/>
<div class="table-container">
<TableBtns>
<template v-slot:left>
<el-button
type="primary"
icon="el-icon-success"
size="medium"
@click="handleAdd"
>开票申请</el-button>
</template>
</TableBtns>
<ele-table
ref="eleTable"
v-bind="tableConfig"
:expand-params="expandParams"
:listeners="tableListeners"
@handleSelectionChange="handleSelectionChange"
/>
</div>
</div>
</template>
<script>
import constant from './constant'
import tableMixin from '@/mixins/table'
export default {
mixins: [tableMixin],
data() {
return {
expandParams: {}, // 筛选条件
tableListeners: {}, // 事件监听对象,供ele-table内部调用
tableConfig: constant
}
},
created() {
this.tableListeners = {
handleDetails: this.handleDetails, // 添加
handleTakeEffect: this.handleTakeEffect, // 生效
handleEdit: this.handleEdit // 编辑
}
},
methods: {
// 新增报价,报价申请
handleAdd() {
},
// 报价编辑
handleEdit(row) {
console.log('编辑页面', row)
},
// 报价单详情页
handleDetails(row) {
console.log(row)
},
// 报价单生效
handleTakeEffect() {
console.log('生效')
},
handleSelectionChange(selection) {
console.log(selection)
this.selection = selection
}
}
}
</script>
<style>
</style>
import { invoiceApply } from '@/api/invoice'
const tableConfig = {
url: invoiceApply.searchUrl,
defaultColumns: {
minWidth: 120,
showOverflowTooltip: true,
align: 'center'
},
columns: {
InvoicingRequisitionNo: {
type: 'input',
label: '申请单号',
showInSearch: true,
fixed: 'left'
},
RequisitionType: {
type: 'input',
label: '申请类型'
},
SignStatusText: {
type: 'input',
label: '开票状态',
showInSearch: true
},
RequisitionTotalAmount: {
type: 'input',
label: '申请总金额'
},
CustomerName: {
type: 'input',
label: '客户名称',
showInSearch: true
},
CreateName: {
type: 'input',
label: '申请人'
},
CreateOn: {
type: 'input',
label: '申请时间'
},
ReferenceNote: {
type: 'input',
label: '参考备注'
},
ActualNote: {
type: 'input',
label: '实际备注'
},
DisagreementReasons: {
type: 'input',
label: '不同意原因'
},
TwiceCheckNoPastReasons: {
type: 'input',
label: '复核未通过原因'
},
IsToERP: {
type: 'input',
label: '是否同步ERP'
},
Total_invoice_price: {
label: '操作',
fixed: 'right',
minWidth: 200,
hideInFilter: true,
renderItem: (h, scope, listeners) => {
return h('div', [
h('el-button', {
on: {
click: (e) => listeners.handleDetails(scope.row)
},
props: {
icon: 'el-icon-d-arrow-right',
type: 'text'
}
}, '详情')
])
}
}
}
}
export default tableConfig
<template>
<div class="app-container">
<ele-search
:columns="tableConfig.columns"
@handleSearch="handleSearch"
@handleReset="handleReset"
@handleFilter="handleFilter"
/>
<div class="table-container">
<TableBtns>
<template v-slot:left>
<el-button
icon="el-icon-upload2"
@click="handleAdd"
>导出申请</el-button>
<el-button
type="primary"
icon="el-icon-sort"
@click="handleSynchronization"
>ERP同步</el-button>
</template>
</TableBtns>
<ele-table
ref="eleTable"
v-bind="tableConfig"
:expand-params="expandParams"
:listeners="tableListeners"
@handleSelectionChange="handleSelectionChange"
/>
</div>
</div>
</template>
<script>
import constant from './constant'
import tableMixin from '@/mixins/table'
export default {
mixins: [tableMixin],
data() {
return {
expandParams: {}, // 筛选条件
tableListeners: {}, // 事件监听对象,供ele-table内部调用
tableConfig: constant
}
},
created() {
this.tableListeners = {
handleDetails: this.handleDetails // 详情
}
},
methods: {
// 详情页
handleDetails(row) {
console.log(row)
this.$router.push({ path: '/invoiceDetails', query: { objectID: row.ObjectID } })
},
handleSelectionChange(selection) {
console.log(selection)
this.selection = selection
}
}
}
</script>
<style>
</style>
<template>
<h2>复刻</h2>
</template>
<script>
export default {
}
</script>
<style>
</style>
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