Browse Source

完善单车返利管理

master
yunuo970428 8 months ago
parent
commit
5edbe2f130
  1. 9
      anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatemanagement.js
  2. 115
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagement.vue
  3. 28
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagementAdd.vue
  4. 56
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagementEdit.vue
  5. 4
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagementInfo.vue

9
anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatemanagement.js

@ -52,5 +52,14 @@ export default {
url: '/scm/v1/scmvehrebate/fetchDetailsBySid/' + data,
method: 'get'
})
},
// 下载模板
downloadExcel: function() {
return request({
url: '/scm/v1/scmvehrebate/download',
method: 'post',
responseType: 'blob', // 表明返回服务器返回的数据类型
headers: { 'Content-Type': 'application/json' }
})
}
}

115
anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagement.vue

@ -178,9 +178,49 @@
</div>
</div>
</div>
<!-- 新增返利 -->
<bicyclerebatemanagementAdd v-show="viewState == 2" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!-- 编辑返利 -->
<bicyclerebatemanagementEdit v-show="viewState == 3" ref="divEdit" @doback="resetState" @reloadlist="getList"/>
<!-- 详情 -->
<bicyclerebatemanagementInfo v-show="viewState == 4" ref="divInfo" @doback="resetState"/>
<el-dialog :visible.sync="dialogVisible" width="70%" :show-close="false">
<div>
<el-button style="font-weight: bold" size="small" type="text" @click="downLoad">下载单车返利模板</el-button>
</div>
<el-card class="box-card">
<div>
<el-upload
ref="upload"
class="upload-demo"
accept=".xls"
name="file"
:action="updateAction"
:on-success="handleSuccess"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false"
:multiple="false"
:limit="1"
:data="uploadData"
:headers="headers"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传</el-button>
</el-upload>
</div>
<div>
<h3>文件上传结果</h3>
<el-card class="box-card">
<div>{{ uploadResultMesssage }}</div>
</el-card>
</div>
</el-card>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
<el-button size="small" @click="dialogVisible = false">取消</el-button>
</div>
</el-dialog>
</div>
</template>
@ -280,7 +320,19 @@ export default {
size: 5,
total: 0
},
rules: {}
rules: {},
dialogVisible: false,
updateAction: process.env.VUE_APP_BASE_API + '/scm/v1/scmvehrebate/getExcelInfo',
fileList: [],
uploadResultMesssage: '',
uploadData: {
sid: '',
userSid: '',
orgPath: ''
},
headers: {
token: window.sessionStorage.getItem('token')
}
}
},
created() {
@ -359,7 +411,7 @@ export default {
req.listPage(this.listQuery).then((response) => {
console.log('列表查询结果:', response)
this.listLoading = false
if (response.success && response.data && response.data.total > 0) {
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
@ -425,7 +477,7 @@ export default {
})
req.delete(this.sids).then(resp => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
this.$message({ showClose: true, type: 'success', message: resp.msg })
}
this.getList()
loading.close()
@ -435,6 +487,63 @@ export default {
}).catch(() => {
})
},
doImport() {
this.dialogVisible = true
this.fileList = []
this.uploadResultMesssage = ''
},
downLoad() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.downloadExcel().then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '单车返利模版' + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
},
handleRemove() {
this.uploadResultMesssage = ''
},
submitUpload() {
this.uploadData.userSid = window.sessionStorage.getItem('userSid')
this.uploadData.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.$refs.upload.submit()
},
handleSuccess(resp, file, fileList) {
const _this = this
if (resp.success) {
_this.uploadResultMesssage = resp.msg
} else {
_this.uploadResultMesssage = resp.msg
}
},
handleConfirm() {
if (this.uploadResultMesssage === '') {
this.$message({ showClose: true, type: 'error', message: '请先上传单车返利模版' })
return
} else {
this.dialogVisible = false
this.uploadData.userSid = ''
this.uploadData.orgPath = ''
this.getList()
}
},
resetState() {
this.viewState = 1
},

28
anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagementAdd.vue

@ -19,47 +19,47 @@
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formadd">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="4" class="tleftb">
<span>返利类型</span>
<span><span class="icon">*</span>返利类型</span>
</el-col>
<el-col :span="4">
<el-form-item>
<el-form-item prop="rebateTypeValue">
<el-select v-model="formobj.rebateTypeValue" placeholder="请选择" filterable clearable @change="changeRebateType">
<el-option v-for="item in rebateType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>厂家返利名称</span>
<span><span class="icon">*</span>厂家返利名称</span>
</el-col>
<el-col :span="4">
<el-form-item><el-input v-model="formobj.rebateName" class="addinputw" placeholder="" clearable></el-input></el-form-item>
<el-form-item prop="rebateName"><el-input v-model="formobj.rebateName" class="addinputw" placeholder="" clearable></el-input></el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>所属年月</span>
<span><span class="icon">*</span>所属年月</span>
</el-col>
<el-col :span="4">
<el-form-item><el-date-picker v-model="formobj.palceGenDate" type="month" clearable format="yyyy-MM" value-format="yyyy-MM" placeholder="选择日期"/></el-form-item>
<el-form-item prop="palceGenDate"><el-date-picker v-model="formobj.palceGenDate" type="month" clearable format="yyyy-MM" value-format="yyyy-MM" placeholder="选择日期"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>计算方式</span>
<span><span class="icon">*</span>计算方式</span>
</el-col>
<el-col :span="4">
<el-form-item>
<el-form-item prop="calculationModeValue">
<el-select v-model="formobj.calculationModeValue" placeholder="请选择" filterable clearable @change="changeCalculationMode">
<el-option v-for="item in calculationMode_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>计算标准
<span><span class="icon">*</span>计算标准
<span v-if="formobj.calculationModeValue == '比例'">(%)</span>
<span v-else>()</span>
</span>
</el-col>
<el-col :span="12">
<el-form-item><el-input v-model="formobj.calculationStandard" @keyup.native="formobj.calculationStandard = getNumber(formobj.calculationStandard, 2)" clearable placeholder="" class="addinputw"></el-input></el-form-item>
<el-form-item prop="calculationStandard"><el-input v-model="formobj.calculationStandard" @keyup.native="formobj.calculationStandard = getNumber(formobj.calculationStandard, 2)" clearable placeholder="" class="addinputw"></el-input></el-form-item>
</el-col>
</el-row>
<div class="title">
@ -126,7 +126,13 @@ export default {
createBySid: '',
scmVehRebateVehs: []
},
rules: {},
rules: {
rebateTypeValue: [{ required: true, message: '返利类型不能为空', trigger: 'change' }],
rebateName: [{ required: true, message: '返利名称不能为空', trigger: 'blur' }],
palceGenDate: [{ required: true, message: '所属年月不能为空', trigger: 'change' }],
calculationModeValue: [{ required: true, message: '计算方式不能为空', trigger: 'change' }],
calculationStandard: [{ required: true, message: '计算标准不能为空', trigger: 'blur' }]
},
submitdisabled: false
}
},

56
anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagementEdit.vue

@ -19,47 +19,47 @@
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formadd">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="4" class="tleftb">
<span>返利类型</span>
<span><span class="icon">*</span>返利类型</span>
</el-col>
<el-col :span="4">
<el-form-item>
<el-form-item prop="rebateTypeValue">
<el-select v-model="formobj.rebateTypeValue" placeholder="请选择" filterable clearable @change="changeRebateType">
<el-option v-for="item in rebateType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>厂家返利名称</span>
<span><span class="icon">*</span>厂家返利名称</span>
</el-col>
<el-col :span="4">
<el-form-item><el-input v-model="formobj.rebateName" class="addinputw" placeholder="" clearable></el-input></el-form-item>
<el-form-item prop="rebateName"><el-input v-model="formobj.rebateName" class="addinputw" placeholder="" clearable></el-input></el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>所属年月</span>
<span><span class="icon">*</span>所属年月</span>
</el-col>
<el-col :span="4">
<el-form-item><el-date-picker v-model="formobj.palceGenDate" type="month" clearable format="yyyy-MM" value-format="yyyy-MM" placeholder="选择日期"/></el-form-item>
<el-form-item prop="palceGenDate"><el-date-picker v-model="formobj.palceGenDate" type="month" clearable format="yyyy-MM" value-format="yyyy-MM" placeholder="选择日期"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>计算方式</span>
<span><span class="icon">*</span>计算方式</span>
</el-col>
<el-col :span="4">
<el-form-item>
<el-form-item prop="calculationModeValue">
<el-select v-model="formobj.calculationModeValue" placeholder="请选择" filterable clearable @change="changeCalculationMode">
<el-option v-for="item in calculationMode_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>计算标准
<span><span class="icon">*</span>计算标准
<span v-if="formobj.calculationModeValue == '比例'">(%)</span>
<span v-else>()</span>
</span>
</el-col>
<el-col :span="12">
<el-form-item><el-input v-model="formobj.calculationStandard" @input="estimateRebateInput" @keyup.native="formobj.calculationStandard = getNumber(formobj.calculationStandard, 2)" clearable placeholder="" class="addinputw"></el-input></el-form-item>
<el-form-item prop="calculationStandard"><el-input v-model="formobj.calculationStandard" @keyup.native="formobj.calculationStandard = getNumber(formobj.calculationStandard, 2)" clearable placeholder="" class="addinputw"></el-input></el-form-item>
</el-col>
</el-row>
<div class="title">
@ -97,7 +97,7 @@
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.estimateRebate }}</span>
<span>{{ estimateRebateSum }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
@ -143,10 +143,29 @@ export default {
estimateRebate: '',
remarks: ''
},
rules: {},
rules: {
rebateTypeValue: [{ required: true, message: '返利类型不能为空', trigger: 'change' }],
rebateName: [{ required: true, message: '返利名称不能为空', trigger: 'blur' }],
palceGenDate: [{ required: true, message: '所属年月不能为空', trigger: 'change' }],
calculationModeValue: [{ required: true, message: '计算方式不能为空', trigger: 'change' }],
calculationStandard: [{ required: true, message: '计算标准不能为空', trigger: 'blur' }]
},
submitdisabled: false
}
},
computed: {
estimateRebateSum() {
let estimateRebate = '0'
if (this.formobj.calculationModeKey === '001') {
// = - * / 100
estimateRebate = Math.round(((parseFloat(this.formobj.manufactorSettlementPrice !== '' ? this.formobj.manufactorSettlementPrice : 0) - parseFloat(this.formobj.freight !== '' ? this.formobj.freight : 0)) * (parseFloat(this.formobj.calculationStandard) / 100)) * 100) / 100
} else if (this.formobj.calculationModeKey === '002') {
// =
estimateRebate = this.formobj.calculationStandard
}
return estimateRebate
}
},
methods: {
init() {
typeValues({ type: 'rebateType' }).then((res) => {
@ -178,15 +197,6 @@ export default {
}
return val
},
estimateRebateInput() {
if (this.formobj.calculationModeKey === '001') {
// = - * / 100
this.formobj.estimateRebate = Math.round(((parseFloat(this.formobj.manufactorSettlementPrice !== '' ? this.formobj.manufactorSettlementPrice : 0) - parseFloat(this.formobj.freight !== '' ? this.formobj.freight : 0)) * (parseFloat(this.formobj.calculationStandard) / 100)) * 100) / 100
} else if (this.formobj.calculationModeKey === '002') {
// =
this.formobj.estimateRebate = this.formobj.calculationStandard
}
},
changeRebateType(value) {
const choose = this.rebateType_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
@ -210,7 +220,9 @@ export default {
})
this.viewTitle = '【编辑】单车返利'
req.fetchBySid(row.sid).then((resp) => {
this.formobj = resp.data
if (resp.success) {
this.formobj = resp.data
}
}).catch((e) => {
this.formobj = row
})

4
anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagementInfo.vue

@ -127,7 +127,9 @@ export default {
})
this.viewTitle = '单车返利详情'
req.fetchBySid(row.sid).then((resp) => {
this.formobj = resp.data
if (resp.success) {
this.formobj = resp.data
}
}).catch((e) => {
this.formobj = row
})

Loading…
Cancel
Save