Browse Source

完善销售单

master
yunuo970428 6 months ago
parent
commit
b8fcf73ae9
  1. 78
      yxt-as-ui/src/views/operation/salesticket/salesticket.vue
  2. 165
      yxt-as-ui/src/views/operation/salesticket/salesticketAdd.vue

78
yxt-as-ui/src/views/operation/salesticket/salesticket.vue

@ -86,6 +86,8 @@
<salesticketAdd v-show="viewState == 2 || viewState == 3" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!-- 详情 -->
<salesticketInfo v-show="viewState == 4" ref="divInfo" @doback="resetState" />
<!-- 结算 -->
<salesSettlementAdd v-show="viewState == 5" ref="divSettle" @doback="resetState" />
</div>
</template>
@ -96,6 +98,9 @@ import ButtonBar from '@/components/ButtonBar'
import req from '@/api/operation/salesticket'
import salesticketAdd from './salesticketAdd'
import salesticketInfo from './salesticketInfo'
import salesSettlementAdd from '@/views/operation/salesSettlement/salesSettlementAdd'
import {getStorage} from "@/utils/auth";
import {getOrgSidByPath} from "@/api/Common/dictcommons";
export default {
name: 'SalesTicket',
@ -104,7 +109,8 @@ export default {
pageye,
ButtonBar,
salesticketAdd,
salesticketInfo
salesticketInfo,
salesSettlementAdd
},
data() {
return {
@ -124,6 +130,20 @@ export default {
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toSettle',
btnLabel: '结算'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toPrint',
btnLabel: '打印结算单'
},
{
type: 'info',
size: 'small',
@ -189,6 +209,12 @@ export default {
case 'doDel':
this.doDel()
break
case 'toSettle':
this.toSettle()
break
case 'toPrint':
this.toPrint()
break
case 'doClose':
this.doClose()
break
@ -298,6 +324,56 @@ export default {
}).catch(() => {
})
},
toSettle() {
if (this.sids.length === 1) {
req.settle(this.sids[0]).then((res) => {
if (res.success) {
this.viewState = 5
this.$refs['divSettle'].showAdd({ sid: this.sids[0] })
} else {
this.$message({ showClose: true, type: 'error', message: res.msg })
}
})
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行操作' })
}
},
toPrint() {
if (this.sids.length === 1) {
var createOrgSid = ''
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
createOrgSid = res.data
}
})
req.printSmsBill({ sid: this.sids[0], userSid: window.sessionStorage.getItem('userSid'), createOrgSid: createOrgSid, useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '销售结算单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '销售结算单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
})
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行操作' })
}
},
//
resetState() {
this.viewState = 1

165
yxt-as-ui/src/views/operation/salesticket/salesticketAdd.vue

@ -6,8 +6,6 @@
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="selectCustomer()">选择客户</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="settleAccounts()">结算</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="print()">打印</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -202,71 +200,6 @@
</div>
<!-- 选择客户 -->
<selectCustomer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
<!-- 结算 -->
<el-dialog :visible.sync="settleVisible" width="70%">
<el-form ref="formobj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>付款人姓名</div>
<el-form-item prop="settlementVo.payerName"><el-input class="addinputInfo addinputw" v-model="formobj.settlementVo.payerName" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">付款人编号</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.settlementVo.payerNo" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">应收金额</div>
<el-form-item><span class="addinputInfo">{{ ysjeTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">订金抵扣</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.settlementVo.depositdeductAmount = getNumber(formobj.settlementVo.depositdeductAmount, 2)" v-model="formobj.settlementVo.depositdeductAmount" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>结算方式</div>
<el-form-item prop="settlementVo.settleValue">
<el-select class="addinputInfo" v-model="formobj.settlementVo.settleValue" placeholder="请选择" @change="settleChange" clearable filterable>
<el-option v-for="item in settle_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>结算金额</div>
<el-form-item prop="settlementVo.settleAmount"><el-input class="addinputInfo addinputw" @keyup.native="formobj.settlementVo.settleAmount = getNumber(formobj.settlementVo.settleAmount, 2)" v-model="formobj.settlementVo.settleAmount" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他结算方式</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.settlementVo.otherSettleValue" placeholder="请选择" @change="otherSettleChange" clearable filterable>
<el-option v-for="item in otherSettle_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">其他结算金额</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.settlementVo.otherSettleAmount = getNumber(formobj.settlementVo.otherSettleAmount, 2)" v-model="formobj.settlementVo.otherSettleAmount" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">欠款金额</div>
<el-form-item><span class="addinputInfo">{{ qkjeTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span class="icon">*</span>结算时间</div>
<el-form-item prop="settlementVo.settleTime"><el-date-picker class="addinputInfo addinputw" v-model="formobj.settlementVo.settleTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" /></el-form-item>
</el-col>
</el-row>
</el-form>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="confirm"> </el-button>
<el-button type="info " size="mini" @click="settleVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -289,11 +222,8 @@ export default {
submitdisabled: false,
user_list: [], //
subject_list: [], //
settleVisible: false, //
invoiceType_list: [], //
companyInvoicing_list: [], //
settle_list: [], //
otherSettle_list: [], //
activeNames: '1',
index: 0,
// commodity
@ -430,12 +360,6 @@ export default {
let ysje = '0'
ysje = Math.round((parseFloat(ysje) + parseFloat(this.jeTotal) - parseFloat(this.yhTotal)) * 100) / 100
return ysje
},
// = - - -
qkjeTotal() {
let qkje = '0'
qkje = Math.round((parseFloat(this.ysjeTotal) - parseFloat(this.formobj.settlementVo.depositdeductAmount !== '' ? this.formobj.settlementVo.depositdeductAmount : '0') - parseFloat(this.formobj.settlementVo.settleAmount !== '' ? this.formobj.settlementVo.settleAmount : '0') - parseFloat(this.formobj.settlementVo.otherSettleAmount !== '' ? this.formobj.settlementVo.otherSettleAmount : '0')) * 100) / 100
return qkje
}
},
methods: {
@ -450,16 +374,6 @@ export default {
this.companyInvoicing_list = res.data
}
})
typeValues({ type: 'settle' }).then((res) => {
if (res.success) {
this.settle_list = res.data
}
})
typeValues({ type: 'otherSettle' }).then((res) => {
if (res.success) {
this.otherSettle_list = res.data
}
})
selSubjectInfo({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((resp) => {
if (resp.success) {
this.subject_list = resp.data
@ -786,84 +700,6 @@ export default {
}
})
},
settleAccounts() {
this.settleVisible = true
},
settleChange(value) {
const choose = this.settle_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
this.formobj.settlementVo.settleKey = choose[0].dictKey
} else {
this.formobj.settlementVo.settleKey = ''
}
},
otherSettleChange(value) {
const choose = this.otherSettle_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
this.formobj.settlementVo.otherSettleKey = choose[0].dictKey
} else {
this.formobj.settlementVo.otherSettleKey = ''
}
},
confirm() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
if (this.formobj.customerName === '') {
this.$message({ showClose: true, type: 'error', message: '客户信息不能为空' })
return
}
if (this.formobj.goodsVos.length === 0) {
this.$message({ showClose: true, type: 'error', message: '商品列表不能为空' })
return
}
this.formobj.receivableAmount = this.ysjeTotal
this.formobj.discountAmount = this.yhTotal
this.formobj.goodsAmount = this.clfTotal //
this.formobj.addAmount = this.fjfTotal //
this.submitdisabled = true
req.settle(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '结算成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
print() {
if (this.formobj.sid !== '') {
req.printSmsBill({ sid: this.formobj.sid, userSid: this.formobj.createBySid, createOrgSid: this.formobj.createOrgSid, useOrgSid: this.formobj.deptSid }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '销售单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '销售单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
})
} else {
this.$message({ showClose: true, type: 'error', message: '请保存相关信息后在进行打印' })
}
},
resetState() {
this.viewState = 1
},
@ -928,7 +764,6 @@ export default {
}
this.commodityData = []
this.subjoinData = []
this.settleVisible = false
this.submitdisabled = false
this.$emit('doback')
}

Loading…
Cancel
Save