|
@@ -5,14 +5,29 @@
|
|
|
</h2>
|
|
|
<div class="m-core">
|
|
|
<div class="newBand"
|
|
|
+ v-permission="{child: 'routeOrder/add', parent: '/financeManager'}"
|
|
|
+ @click="()=>{routeOrderStatus = true;isAdd=true,form.applyType = null}">添加订单</div>
|
|
|
+ <div class="newBand"
|
|
|
@click="onOrderExport"
|
|
|
v-permission="{child: 'export/routeOrderList', parent: '/financeManager'}">报表导出</div>
|
|
|
- <div class="newBand"
|
|
|
- v-permission="{child: 'routeOrder/add', parent: '/financeManager'}"
|
|
|
- @click="()=>{routeOrderStatus = true;isAdd=true}">添加订单</div>
|
|
|
+
|
|
|
<div class="newBand"
|
|
|
v-permission="{child: 'adapay/exportBill', parent: '/financeManager'}"
|
|
|
@click="onAdaPayExport">汇付订单导出</div>
|
|
|
+ <div class="newBand"
|
|
|
+ @click="onDownload"
|
|
|
+ v-permission="'import/downloadTemplate?financeManager'">下载模板</div>
|
|
|
+ <el-upload v-permission="'import/routeOrder'"
|
|
|
+ style="display: inline-block; margin: 0 10px;"
|
|
|
+ action="/api-web/import/routeOrder"
|
|
|
+ :show-file-list="false"
|
|
|
+ :before-upload="beforeUpload"
|
|
|
+ accept=".xlsx,.xls"
|
|
|
+ :headers="headers"
|
|
|
+ :on-error="handleError"
|
|
|
+ :on-success="handleSuccess">
|
|
|
+ <div class="newBand">导入</div>
|
|
|
+ </el-upload>
|
|
|
<!-- 搜索类型 -->
|
|
|
<el-form :inline="true"
|
|
|
class="searchForm"
|
|
@@ -253,10 +268,11 @@
|
|
|
<el-form :model="form"
|
|
|
:rules="rules"
|
|
|
ref="ruleForm">
|
|
|
+ <div class="lookTitle">基本信息</div>
|
|
|
<el-form-item label="所属分部"
|
|
|
- prop="organId"
|
|
|
+ prop="routeOrganId"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <el-select v-model.trim="form.organId"
|
|
|
+ <el-select v-model.trim="form.routeOrganId"
|
|
|
:disabled="!isAdd"
|
|
|
@change="changeOrgin"
|
|
|
style="width: 100% !important;">
|
|
@@ -279,15 +295,14 @@
|
|
|
:value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <!-- <el-form-item label="金额(元)"
|
|
|
- prop="actualAmount"
|
|
|
+ <el-form-item label="学员编号"
|
|
|
+ prop="userId"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <el-input v-model="form.actualAmount"
|
|
|
- type="number"
|
|
|
- @mousewheel.native.prevent
|
|
|
- v-number
|
|
|
- placeholder="请输入金额"></el-input>
|
|
|
- </el-form-item> -->
|
|
|
+ <el-input v-model.trim="form.userId"
|
|
|
+ :disabled="!isAdd"
|
|
|
+ placeholder="请输入学员编号"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <div class="lookTitle">交易信息</div>
|
|
|
<el-form-item label="交易流水号"
|
|
|
prop="transNo"
|
|
|
:label-width="formLabelWidth">
|
|
@@ -316,25 +331,44 @@
|
|
|
placeholder="选择交易日期">
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="收入类型"
|
|
|
+ v-if="isAdd"
|
|
|
+ :label-width="formLabelWidth"
|
|
|
+ prop="applyType">
|
|
|
+ <el-select class="multiple"
|
|
|
+ style="width: 100% !important;"
|
|
|
+ v-model.trim="form.applyType"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ :disabled="!isAdd"
|
|
|
+ placeholder="请选择收入类型">
|
|
|
+ <el-option v-for="(item,index) in orderServerList"
|
|
|
+ :key="index"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="销售金额"
|
|
|
- prop="goodsAmount"
|
|
|
+ v-if="form.applyType == 'SELL' || !isAdd"
|
|
|
+ prop="saleAmount"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <el-input v-model="form.goodsAmount"
|
|
|
+ <el-input v-model="form.saleAmount"
|
|
|
@mousewheel.native.prevent
|
|
|
type="number"
|
|
|
:disabled="!isAdd"
|
|
|
placeholder="请输入销售金额" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="服务金额"
|
|
|
+ v-if="form.applyType == 'SERVICE' || !isAdd"
|
|
|
prop="serviceAmount"
|
|
|
:label-width="formLabelWidth">
|
|
|
<el-input type="number"
|
|
|
@mousewheel.native.prevent
|
|
|
:disabled="!isAdd"
|
|
|
v-model="form.serviceAmount"
|
|
|
- placeholder="请输入服务金额" />
|
|
|
+ placeholder="请输入收入金额" />
|
|
|
</el-form-item>
|
|
|
- <div v-if="form.goodsAmount">
|
|
|
+ <div v-if="form.applyType == 'SELL'">
|
|
|
<div v-for="(goodsList, index) in form.goodsList"
|
|
|
:key="index">
|
|
|
<el-form-item :label="'商品名称' + (index + 1)"
|
|
@@ -378,14 +412,14 @@
|
|
|
style="margin-left: 5px;"></el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
+ <div class="lookTitle">其它</div>
|
|
|
<el-form-item label="备注"
|
|
|
:label-width="formLabelWidth">
|
|
|
<el-input placeholder="请输入备注"
|
|
|
:disabled="!isAdd"
|
|
|
v-model.trim="form.memo"
|
|
|
type="textarea"
|
|
|
- :rows="2"></el-input>
|
|
|
+ :rows="3"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<span slot="footer"
|
|
@@ -414,6 +448,10 @@ import axios from "axios";
|
|
|
import qs from "qs";
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
import load from "@/utils/loading";
|
|
|
+import { orderServerList } from "@/utils/searchArray"
|
|
|
+import {
|
|
|
+ Export
|
|
|
+} from '@/utils/downLoadFile'
|
|
|
let validAmount = (rule, value, callback) => {
|
|
|
if (!value) {
|
|
|
callback(new Error("请输入商品数量"));
|
|
@@ -452,6 +490,7 @@ export default {
|
|
|
organList: [],
|
|
|
shopList: [],
|
|
|
cooperationList: [],
|
|
|
+ orderServerList: orderServerList,
|
|
|
pageInfo: {
|
|
|
// 分页规则
|
|
|
limit: 10, // 限制显示条数
|
|
@@ -467,7 +506,7 @@ export default {
|
|
|
routeOrderStatus: false,
|
|
|
isAdd: true,
|
|
|
form: {
|
|
|
- organId: null,
|
|
|
+ routeOrganId: null,
|
|
|
transNo: null,
|
|
|
type: "OTHER",
|
|
|
merNo: null,
|
|
@@ -475,12 +514,14 @@ export default {
|
|
|
memo: null,
|
|
|
payTime: null,
|
|
|
serviceAmount: null,
|
|
|
- goodsAmount: null,
|
|
|
+ saleAmount: null,
|
|
|
schoolId: null,
|
|
|
goodsList: [{
|
|
|
id: null,
|
|
|
number: null
|
|
|
- }]
|
|
|
+ }],
|
|
|
+ applyType: null,
|
|
|
+ userId: ''
|
|
|
},
|
|
|
validAmount: [
|
|
|
{ required: true, validator: validAmount, trigger: 'blur' },
|
|
@@ -504,9 +545,14 @@ export default {
|
|
|
payTime: [
|
|
|
{ required: true, message: "选择交易日期", trigger: "change" }
|
|
|
],
|
|
|
+ applyType: [
|
|
|
+ { required: true, message: "请选择收入类型", trigger: "change" }
|
|
|
+ ]
|
|
|
|
|
|
-
|
|
|
- }
|
|
|
+ },
|
|
|
+ headers: {
|
|
|
+ Authorization: getToken()
|
|
|
+ },
|
|
|
}
|
|
|
},
|
|
|
mounted () {
|
|
@@ -550,17 +596,18 @@ export default {
|
|
|
onOrderSubmit (formName) { // 添加订单
|
|
|
this.$refs[formName].validate(valid => {
|
|
|
if (valid) {
|
|
|
- if (!this.form.goodsAmount && !this.form.serviceAmount) {
|
|
|
+ if (!this.form.saleAmount && !this.form.serviceAmount) {
|
|
|
this.$message.error('请输入销售收入或服务收入')
|
|
|
return
|
|
|
}
|
|
|
- if (!this.form.goodsAmount) {
|
|
|
+ if (!this.form.saleAmount) {
|
|
|
this.form.goodsList = null
|
|
|
}
|
|
|
- this.form.goodies = {}
|
|
|
+ let goodsJson = {}
|
|
|
for (let i in this.form.goodsList) {
|
|
|
- this.form.goodies[this.form.goodsList[i]['id']] = this.form.goodsList[i]['number']
|
|
|
+ goodsJson[this.form.goodsList[i]['id']] = this.form.goodsList[i]['number']
|
|
|
}
|
|
|
+ this.form.goodsJson = JSON.stringify(goodsJson)
|
|
|
routeOrderAdd(this.form).then(res => {
|
|
|
if (res.code == 200) {
|
|
|
this.$message.success("添加成功");
|
|
@@ -816,22 +863,27 @@ export default {
|
|
|
|
|
|
getOrderInfo({ orderId: row.id }).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
- let orderInfo = res.data.studentPaymentOrder;
|
|
|
- this.changeOrgin(parseInt(orderInfo.organId))
|
|
|
- this.form = {
|
|
|
- organId: orderInfo.organId,
|
|
|
- transNo: orderInfo.transNo,
|
|
|
- type: "OTHER",
|
|
|
- merNo: orderInfo.merNos,
|
|
|
- actualAmount: orderInfo.actualAmount,
|
|
|
- memo: orderInfo.memo,
|
|
|
- payTime: orderInfo.payTime,
|
|
|
- serviceAmount: res.data.serviceAmount,
|
|
|
- goodsAmount: res.data.goodsAmount,
|
|
|
- schoolId: parseInt(orderInfo.musicGroupId) || ' ',
|
|
|
- goodsList: res.data.sellOrders.map(item => { return { id: item.goodsId, number: item.num } })
|
|
|
- },
|
|
|
+ this.$nextTick(some => {
|
|
|
+ let orderInfo = res.data.studentPaymentOrder;
|
|
|
+ this.changeOrgin(parseInt(orderInfo.organId))
|
|
|
+ this.form = {
|
|
|
+ routeOrganId: orderInfo.organId,
|
|
|
+ transNo: orderInfo.transNo,
|
|
|
+ userId: orderInfo.userId,
|
|
|
+ type: "OTHER",
|
|
|
+ merNo: orderInfo.merNos,
|
|
|
+ actualAmount: orderInfo.actualAmount,
|
|
|
+ memo: orderInfo.memo,
|
|
|
+ payTime: orderInfo.payTime,
|
|
|
+ serviceAmount: res.data.serviceAmount,
|
|
|
+ saleAmount: res.data.goodsAmount,
|
|
|
+ schoolId: parseInt(orderInfo.musicGroupId) || ' ',
|
|
|
+ applyType: 'SELL'
|
|
|
+ },
|
|
|
+ this.$set(this.form, 'goodsList', res.data.sellOrders.map(item => { return { id: item.goodsId, number: item.num } }))
|
|
|
+ console.log(this.form)
|
|
|
this.routeOrderStatus = true
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
},
|
|
@@ -852,11 +904,63 @@ export default {
|
|
|
})
|
|
|
.catch();
|
|
|
// orderDelete
|
|
|
+ },
|
|
|
+ onDownload () { // 下载模板
|
|
|
+ // // 报表导出
|
|
|
+ Export(this, {
|
|
|
+ url: "/api-web/import/downloadTemplate",
|
|
|
+ params: {
|
|
|
+ templateType: 'ROUTE_ORDER'
|
|
|
+ },
|
|
|
+ fileName: '财务管理导入模板.xlsx'
|
|
|
+ })
|
|
|
+ },
|
|
|
+ beforeUpload (file) {
|
|
|
+ // console.log(file.type)
|
|
|
+ // const isJPG = file.type === '.xlsx' || file.type === '.xls';
|
|
|
+ // // const isLt2M = file.size / 1024 / 1024 < 2;
|
|
|
+ // if (!isJPG) {
|
|
|
+ // this.$message.error('上传头像图片只能是 JPG 格式!');
|
|
|
+ // }
|
|
|
+ // return isJPG;
|
|
|
+ // this.goodsLoading = true
|
|
|
+ load.startLoading()
|
|
|
+ },
|
|
|
+ handleSuccess (response, file, fileList) { // 导入商品
|
|
|
+ // 报表导出
|
|
|
+ load.endLoading()
|
|
|
+ if (response.code == 200) {
|
|
|
+ this.$message.success('导入成功')
|
|
|
+ // this.getList()
|
|
|
+ } else if (response.code == 0) {
|
|
|
+ let str = this.fomatStr(response.msg)
|
|
|
+ this.$alert(str, '导入结果', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ callback: action => {
|
|
|
+ // this.getList()
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$message.error(response.msg)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleError (err, file, fileList) {
|
|
|
+ load.endLoading()
|
|
|
+ console.log(err, file, fileList)
|
|
|
+ },
|
|
|
+ fomatStr (str) {
|
|
|
+ let arr = str.split(';')
|
|
|
+ let newStr = ''
|
|
|
+ arr.forEach(item => {
|
|
|
+ newStr += `<p>${item}</p>`
|
|
|
+ })
|
|
|
+ return newStr
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
</script>
|
|
|
-<style lang="scss">
|
|
|
+<style lang="scss" scoped>
|
|
|
.newBand {
|
|
|
display: inline-block;
|
|
|
}
|
|
@@ -866,4 +970,12 @@ export default {
|
|
|
.setWidth {
|
|
|
display: inline-block;
|
|
|
}
|
|
|
+.lookTitle {
|
|
|
+ height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ font-weight: bold;
|
|
|
+ background-color: rgb(237, 238, 240);
|
|
|
+ padding: 0 20px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
</style>
|