|
|
@@ -0,0 +1,394 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <ModalView
|
|
|
+ ref="mv"
|
|
|
+ cname="ElDialog"
|
|
|
+ :viewProps="{
|
|
|
+ width: '700px',
|
|
|
+ customClass: 'orderDetailModal',
|
|
|
+ appendToBody: true,
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <!-- 订单详情 -->
|
|
|
+ <el-form
|
|
|
+ v-if="!nextStep"
|
|
|
+ ref="form"
|
|
|
+ :inline="true"
|
|
|
+ :model="form"
|
|
|
+ label-width="90px"
|
|
|
+ >
|
|
|
+ <el-form-item label="订单号">
|
|
|
+ <el-input
|
|
|
+ v-model="form.orderNo"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="下单时间">
|
|
|
+ <el-input v-model="form.dtCreateTime" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="订单状态">
|
|
|
+ <el-input v-model="form.statusName" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="用户姓名">
|
|
|
+ <el-input
|
|
|
+ v-model="form.cName"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="用户电话">
|
|
|
+ <el-input
|
|
|
+ v-model="form.cPhone"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="技师姓名">
|
|
|
+ <el-input
|
|
|
+ v-model="form.jsName"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="技师昵称">
|
|
|
+ <el-input
|
|
|
+ v-model="form.cNickName"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="技师电话">
|
|
|
+ <el-input
|
|
|
+ v-model="form.jsPhone"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="总金额">
|
|
|
+ <el-input
|
|
|
+ v-model="form.totalPrice"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="项目金额">
|
|
|
+ <el-input
|
|
|
+ v-model="form.dPrice"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="车费">
|
|
|
+ <el-input v-model="form.fare" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="优惠金额">
|
|
|
+ <el-input v-model="form.preferential" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="服务地址">
|
|
|
+ <el-input type="textarea" v-model="form.address" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注">
|
|
|
+ <el-input v-model="form.cNote" type="textarea" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="订单明细">
|
|
|
+ <div class="orderDetails">
|
|
|
+ <el-table :data="form.cGoods" style="width: 100%">
|
|
|
+ <el-table-column prop="cTitle" label="标题"> </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="封面图"
|
|
|
+ align="center"
|
|
|
+ prop="cCover"
|
|
|
+ width="100"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <image-preview
|
|
|
+ :src="scope.row.cCover"
|
|
|
+ :width="50"
|
|
|
+ :height="50"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="cLdList" label="亮点"> </el-table-column>
|
|
|
+ <el-table-column prop="nMinute" label="时长"> </el-table-column>
|
|
|
+ <el-table-column prop="dPrice" label="价格"> </el-table-column>
|
|
|
+ <el-table-column prop="number" label="项目个数">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <!-- 审核表单 -->
|
|
|
+ <el-form v-if="nextStep" ref="form" :model="form" label-width="90px">
|
|
|
+ <el-form-item label="申请信息">
|
|
|
+ <el-input
|
|
|
+ v-model="form.cancelReason"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="申请退款,务必退款"
|
|
|
+ :rows="3"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目名称">
|
|
|
+ <el-input
|
|
|
+ v-model="form.cTitle"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目时长">
|
|
|
+ <el-input
|
|
|
+ v-model="form.nMinute"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="总金额">
|
|
|
+ <el-input v-model="form.totalPrice" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目金额">
|
|
|
+ <el-input v-model="form.dPrice" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="车费">
|
|
|
+ <el-input v-model="form.fare" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="优惠金额">
|
|
|
+ <el-input
|
|
|
+ v-model="form.preferential"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="服务状态">
|
|
|
+ <el-input
|
|
|
+ v-model="form.nStatus"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="服务时长">
|
|
|
+ <el-input
|
|
|
+ v-model="form.serviceDuration"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="退款金额">
|
|
|
+ <el-input-number
|
|
|
+ v-model="form.refundAmount"
|
|
|
+ :min="0.01"
|
|
|
+ :max="form.dTotalMoney || 9999999.99"
|
|
|
+ :step="0.01"
|
|
|
+ :precision="2"
|
|
|
+ style="width: 42%"
|
|
|
+ :disabled="isDisabled"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="审核备注">
|
|
|
+ <el-input
|
|
|
+ v-model="form.auditRemark"
|
|
|
+ type="textarea"
|
|
|
+ :rows="2"
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ :disabled="isDisabled"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <!-- 操作按钮 -->
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <!-- 详情 -->
|
|
|
+ <div v-if="isDisabled">
|
|
|
+ <el-button type="primary" @click="nextStep = !nextStep">{{
|
|
|
+ nextText
|
|
|
+ }}</el-button>
|
|
|
+ <el-button @click="close">关 闭</el-button>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <!-- 订单 -->
|
|
|
+ <div v-if="!nextStep">
|
|
|
+ <el-button @click="close">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="nextStep = !nextStep">{{
|
|
|
+ nextText
|
|
|
+ }}</el-button>
|
|
|
+ </div>
|
|
|
+ <!-- 审核 -->
|
|
|
+ <div v-if="nextStep">
|
|
|
+ <el-button type="primary" plain @click="nextStep = !nextStep">{{
|
|
|
+ nextText
|
|
|
+ }}</el-button>
|
|
|
+ <el-button type="primary" @click="reviewForm">确 认</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </ModalView>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { refundOrderDetail, refundOrderAudit } from '@/api/system/order'
|
|
|
+import ModalView from '@/components/ZModalView/index.vue'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'OrderDetail',
|
|
|
+ components: {
|
|
|
+ ModalView,
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ nextText() {
|
|
|
+ if (this.isDisabled) {
|
|
|
+ return this.nextStep ? '上一页' : '下一页'
|
|
|
+ } else {
|
|
|
+ return this.nextStep ? '上一步' : '下一步'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ title: '详情',
|
|
|
+ isDisabled: false,
|
|
|
+ nextStep: false,
|
|
|
+ id: '', // 主键id
|
|
|
+ // 表单参数
|
|
|
+ form: {
|
|
|
+ js: {
|
|
|
+ cName: '',
|
|
|
+ cPhone: '',
|
|
|
+ cNickName: '',
|
|
|
+ },
|
|
|
+ oldJs: {
|
|
|
+ cName: '',
|
|
|
+ cPhone: '',
|
|
|
+ },
|
|
|
+ cGoods: [],
|
|
|
+ },
|
|
|
+ arrival: '',
|
|
|
+ depart: '',
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ open(e) {
|
|
|
+ debugger
|
|
|
+ console.log(3);
|
|
|
+
|
|
|
+
|
|
|
+ this.id = e.id
|
|
|
+ this.form = {
|
|
|
+ js: {
|
|
|
+ cName: '',
|
|
|
+ cPhone: '',
|
|
|
+ cNickName: '',
|
|
|
+ },
|
|
|
+ oldJs: {
|
|
|
+ cName: '',
|
|
|
+ cPhone: '',
|
|
|
+ },
|
|
|
+ cGoods: [],
|
|
|
+ }
|
|
|
+ this.arrival = ''
|
|
|
+ this.depart = ''
|
|
|
+ this.$refs.mv.open(this.title)
|
|
|
+ if (e.auditStatus == '1') {
|
|
|
+ this.title = '详情'
|
|
|
+ }
|
|
|
+ this.isDisabled = e.auditStatus == '1'
|
|
|
+ this.loadOrderDetail(e.id)
|
|
|
+ },
|
|
|
+ loadOrderDetail(id) {
|
|
|
+ refundOrderDetail({ id: id }).then(res => {
|
|
|
+ if (res.code == 200 && res.data) {
|
|
|
+ this.form = res.data
|
|
|
+ let Longitude = this.form.arrivalLongitude
|
|
|
+ let numLatitude = +this.form.arrivalLatitude
|
|
|
+ let Latitude = numLatitude.toFixed(6)
|
|
|
+ let location = Longitude + `,` + Latitude
|
|
|
+ let arrival = 'arrival' //到达
|
|
|
+ this.fetchLocation(arrival, location)
|
|
|
+ let depart = 'depart' //出发
|
|
|
+ this.fetchLocation(depart, location)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**解析经纬度 */
|
|
|
+ async fetchLocation(title, location) {
|
|
|
+ const key = '5457092e6c62b83c1b2e45dbe973d858'
|
|
|
+ const url = `https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=${location}&key=${key}&radius=500&extensions=all`
|
|
|
+ try {
|
|
|
+ const response = await fetch(url)
|
|
|
+ const data = await response.json()
|
|
|
+ if (title == 'arrival') {
|
|
|
+ data.regeocode.formatted_address.length > 0
|
|
|
+ ? (this.arrival = data.regeocode.formatted_address)
|
|
|
+ : ''
|
|
|
+ } else if (title == 'depart') {
|
|
|
+ // this.depart = data.regeocode.formatted_address;
|
|
|
+ data.regeocode.formatted_address.length > 0
|
|
|
+ ? (this.depart = data.regeocode.formatted_address)
|
|
|
+ : (this.depart = '')
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('请求失败:', error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ reviewForm() {
|
|
|
+ if (!this.form.refundAmount) {
|
|
|
+ this.$message.error('请输入退款金额')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const params = {
|
|
|
+ id: this.id,
|
|
|
+ refundAmount: this.form.refundAmount,
|
|
|
+ auditRemark: this.form.auditRemark,
|
|
|
+ }
|
|
|
+ refundOrderAudit(params).then(response => {
|
|
|
+ if (response.code == 200) {
|
|
|
+ this.$message.success('审核成功')
|
|
|
+ this.$emit('refresh')
|
|
|
+ this.close()
|
|
|
+ } else {
|
|
|
+ this.$message.error(response.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 关闭对话框
|
|
|
+ close() {
|
|
|
+ this.nextStep = false
|
|
|
+ this.$refs.mv.close()
|
|
|
+ this.$emit('close')
|
|
|
+ },
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.orderDetailModal .el-dialog__body {
|
|
|
+ max-height: 600px;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.orderDetails {
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.old_js {
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-input__inner {
|
|
|
+ color: #333 !important;
|
|
|
+}
|
|
|
+::v-deep .el-textarea__inner {
|
|
|
+ color: #333 !important;
|
|
|
+}
|
|
|
+</style>
|