MrShi
2025-03-19 8cdd0cc43846713bebbc7caa1f5f0fca84e267d6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<template>
  <TableLayout :permissions="['business:goodsorder:query']">
    <!-- 搜索表单 -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="用户" prop="openid">
        <el-input v-model="searchForm.openid" placeholder="请输入用户" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="订单编号" prop="code">
        <el-input v-model="searchForm.code" placeholder="请输入订单编号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="交易单号" prop="onlineOrderid">
        <el-input v-model="searchForm.onlineOrderid" placeholder="请输入交易单号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="是否结算" prop="closeStatus">
        <el-select v-model="searchForm.closeStatus" placeholder="请选择">
          <el-option
            label="未结算"
            :value="0">
          </el-option>
          <el-option
            label="已结算"
            :value="1">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="支付时间" prop="payDate">
        <el-date-picker
          v-model="value1"
          type="daterange"
          @change="selectDate"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          format="yyyy-MM-dd"
          value-format="yyyy-MM-dd HH:mm:ss"
        ></el-date-picker>
      </el-form-item>
      <el-form-item label="订单类型" prop="bikeType">
        <el-select v-model="searchForm.bikeType" placeholder="请选择">
          <el-option
            label="单车类型"
            :value="3">
          </el-option>
          <el-option
            label="电车类型"
            :value="4">
          </el-option>
        </el-select>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- 表格和分页 -->
    <template v-slot:table-wrap>
      <ul class="toolbar">
        <li ><el-button type="primary" :loading="isWorking.export" v-permissions="['business:goodsorder:exportExcel']"  @click="exportExcel">导出</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        border
      >
        <el-table-column prop="openid" label="用户" min-width="225px" align="center"></el-table-column>
        <el-table-column prop="id" label="订单编号" min-width="235px" align="center"></el-table-column>
        <el-table-column label="订单类型" min-width="100px" align="center">
          <template slot-scope="{row}">
            <span v-if="row.bikeType === 3">单车类型</span>
            <span v-if="row.bikeType === 4">电车类型</span>
          </template>
        </el-table-column>
        <el-table-column prop="onlineOrderid" label="交易单号" min-width="225px" align="center"></el-table-column>
        <el-table-column prop="money" label="押金(元)" min-width="80px" align="center"></el-table-column>
        <el-table-column prop="payDate" label="交押金时间" min-width="145px" align="center"></el-table-column>
        <el-table-column prop="refundMoney" label="退押金(元)" min-width="90px" align="center"></el-table-column>
        <el-table-column prop="discountMoney" label="优惠金额" min-width="90px" align="center"></el-table-column>
        <el-table-column prop="closeMoney" label="结算金额(元)" min-width="100px" align="center">
          <template slot-scope="{row}">
            <span v-if="row.closeMoney > row.money">{{row.money}}</span>
            <span v-else>{{row.closeMoney}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="closeDate" label="结算时间" min-width="140px" align="center"></el-table-column>
        <el-table-column prop="refundDate" label="退款时间" min-width="140px" align="center"></el-table-column>
 
 
        <!-- <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="编辑时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="编辑人" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否已删除 0未删除 1已删除" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="memberId" label="用户编码(关联member表)" min-width="100px"></el-table-column>
        <el-table-column prop="money" label="交易金额" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0待支付 1已支付 2已取消 3支付失败 4已结算" min-width="100px"></el-table-column>
        <el-table-column prop="preOrderid" label="交易预订单号" min-width="100px"></el-table-column>
        <el-table-column prop="payStatus" label="支付状态 0待支付 1已支付 " min-width="100px"></el-table-column>
        <el-table-column prop="payWay" label="支付方式 0微信 1支付宝" min-width="100px"></el-table-column>
        <el-table-column prop="type" label="交易类型 0租车押金" min-width="100px"></el-table-column>
        <el-table-column prop="closeId" label="结算退款单号(关联refund)" min-width="100px"></el-table-column>
        <el-table-column prop="closeInfo" label="结算备注" min-width="100px"></el-table-column>
        <el-table-column prop="closeUserId" label="结算操作人编码(关联system_user)" min-width="100px"></el-table-column>
        <el-table-column prop="closeType" label="结算类型 0自动结算 1平台人工结算 2系统自动结算" min-width="100px"></el-table-column> -->
        <el-table-column
          label="操作"
          min-width="120"
          align="center"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="showDetail(row)">订单详情</el-button>
            <el-button type="text" @click="statement(row)" v-if="row.status != 4 && (row.memberRidesStatus > 1 || !row.memberRidesStatus)" style="color: red">结算</el-button>
            <el-button type="text" @click="refenMoney(row)"  v-if="row.status == 4 && (row.refundMoney < row.money)">退款</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <GoodsOrderDetail ref="goodsOrderDetail" />
    <BackGoodsorderWindow ref="backGoodsorderWindow" @success="handlePageChange" />
  </TableLayout>
</template>
 
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import GoodsOrderDetail from '@/components/business/goodsOrderDetail'
import BackGoodsorderWindow from '@/components/business/backGoodsorderWindow'
import { getDetail, getGoodsorderCanBanlanceDTO, closerGoodsorder } from '@/api/business/goodsorder'
import dayjs from 'dayjs'
export default {
  name: 'Goodsorder',
  extends: BaseTable,
  components: { TableLayout, Pagination, GoodsOrderDetail, BackGoodsorderWindow },
  data () {
    return {
      // 搜索
      searchForm: {
        id: '',
        createDate: '',
        creator: '',
        editDate: '',
        editor: '',
        isdeleted: '',
        info: '',
        code: '',
        openid: '',
        money: '',
        status: '',
        closeStatus: '',
        preOrderid: '',
        onlineOrderid: '',
        payStatus: '',
        payWay: '',
        payDate: '',
        type: 0,
        closeMoney: '',
        startDate: '',
        endDate: '',
        bikeType: ''
      },
      value1: [new Date(), new Date()]
    }
  },
  created () {
    this.config({
      module: '订单信息表',
      api: '/business/goodsorder',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.searchForm.startDate = dayjs().format('YYYY-MM-DD') + ' 00:00:00'
    this.searchForm.endDate = dayjs().format('YYYY-MM-DD') + ' 23:59:59'
    this.search()
  },
  methods: {
    reset() {
      this.value1 = []
      this.searchForm.startDate = ''
      this.searchForm.endDate = ''
      this.$refs.searchForm.resetFields()
      this.search()
    },
    selectDate(v) {
      this.searchForm.startDate = ''
      this.searchForm.endDate = ''
      if (v) {
        this.searchForm.startDate = v[0]
        this.searchForm.endDate = v[1]
      }
      this.search()
    },
    showDetail({id}) {
      getDetail(id)
        .then(res => {
          this.$refs.goodsOrderDetail.open('订单详情',res)
        })
        .catch(err => {
          this.$tip.apiFailed(err)
        })
 
    },
    statement({id}) {
      this.$dialog.messageWaring('确定强制结算码?结算后订单自动完成', '强制结算')
        .then(() => {
          closerGoodsorder(id)
            .then(() => {
              this.$tip.apiSuccess('结算成功')
              this.search()
            })
            .catch(err => {
              this.$tip.apiFailed(err)
            })
        })
        .catch(() => {})
 
    },
    refenMoney({id}) {
      getGoodsorderCanBanlanceDTO({orderId:id})
        .then(res => {
          this.$refs.backGoodsorderWindow.open('强制退款', {orderId:id, ...res})
        })
        .catch(err => {
          this.$tip.apiFailed(err)
        })
    }
  }
}
</script>