JXDS18FUJT 2 лет назад
Родитель
Сommit
c5f59d92e0
3 измененных файлов с 365 добавлено и 36 удалено
  1. 4 3
      src/api/order.js
  2. 360 32
      src/views/mobile/order/index.vue
  3. 1 1
      vue.config.js

+ 4 - 3
src/api/order.js

@@ -1,15 +1,16 @@
 import request from "@/utils/request";
 
 // 查询订单列表
-export function list(params) {
+export function getList(params) {
   return request({
-    url: "/activities/wx/order/list",
+    url: "/order/info/list",
+    method:'get',
     params
   });
 }
 
 // 订单退款
-export function refund(params) {
+export function refundOrder(params) {
   return request({
     url: "order/info/refund/" + params.outTradeNo,
     method: "put",

+ 360 - 32
src/views/mobile/order/index.vue

@@ -7,15 +7,103 @@
       v-show="showSearch"
       label-width="68px"
     >
-      <el-form-item label="订单号" prop="outTradeNo">
+      <el-form-item label="开始时间" label-width="120px" prop="outTradeNo">
+        <el-date-picker
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          v-model="queryParams.startTime"
+          type="datetime"
+          placeholder="默认是当前月份第一天"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="结束时间" label-width="120px" prop="outTradeNo">
+        <el-date-picker
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          v-model="queryParams.endTime"
+          type="datetime"
+          placeholder="默认是当前月份最后一天"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="商品ID" label-width="120px" prop="goodsId">
+        <el-input
+          v-model="queryParams.userId"
+          placeholder="商品ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="订单号" label-width="120px" prop="outTradeNo">
         <el-input
           v-model="queryParams.outTradeNo"
-          placeholder="请输入订单号"
+          placeholder="订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="商品名称" label-width="120px" prop="goodsName">
+        <el-input
+          v-model="queryParams.goodsName"
+          placeholder="请输入名称"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="退款订单号" label-width="120px" prop="outTradeNo">
+        <el-input
+          v-model="queryParams.outRefundNo"
+          placeholder="退款订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="是否分成" label-width="120px" prop="phoneType">
+                <el-select v-model="queryParams.isShare" placeholder="">
+                    <el-option value="" label="全部"></el-option>
+                    <el-option :value="1" label="是"></el-option>
+                    <el-option :value="0" label="否"></el-option>
+                </el-select>
+            </el-form-item> -->
+      <!-- <el-form-item label="支付状态" label-width="120px" prop="tradeType">
+                <el-select v-model="queryParams.tradeType">
+                    <el-option value="" key="4" label="全部"></el-option>
+                    <el-option value="1" key="1" label="支付成功">支付成功</el-option>
+                    <el-option value="2" key="2" label="支付失败">支付失败</el-option>
+                    <el-option value="3" key="3" label="已退款"></el-option>
+
+                </el-select>
+            </el-form-item> -->
+      <!-- <el-form-item label="支付类型" prop="payType">
+                <el-select v-model="queryParams.payType" placeholder="">
+                    <el-option :value="1" label="微信"></el-option>
+                    <el-option :value="2" label="支付宝"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="手机类型" prop="payType">
+                <el-select v-model="queryParams.payType" placeholder="">
+                    <el-option :value="1" label="苹果"></el-option>
+                    <el-option :value="2" label="安卓"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="驾校名称" prop="school">
+                <el-input v-model="queryParams.school" placeholder="请输入驾校名称" clearable size="small"
+                    @keyup.enter.native="handleQuery" />
+            </el-form-item>
+            <el-form-item label="驾校提成" prop="questionId">
+                <el-input v-model="queryParams.schoolCommission" placeholder="请输入驾校提成" clearable size="small"
+                    @keyup.enter.native="handleQuery" />
+            </el-form-item>
+            <el-form-item label="驾校名称" prop="schoolName">
+                <el-input v-model="queryParams.schoolName" placeholder="请输入驾校名称" clearable size="small"
+                    @keyup.enter.native="handleQuery" />
+            </el-form-item> -->
       <el-form-item>
         <el-button
           type="cyan"
@@ -30,21 +118,105 @@
       </el-form-item>
     </el-form>
 
+    <!-- <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+                <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
+                    v-hasPermi="['question:error:add']">新增</el-button>
+            </el-col>
+            <el-col :span="1.5">
+                <el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+                    v-hasPermi="['question:error:edit']">修改</el-button>
+            </el-col>
+            <el-col :span="1.5">
+                <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+                    v-hasPermi="['question:error:remove']">删除</el-button>
+            </el-col>
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row> -->
+
     <el-table
       v-loading="loading"
-      :data="orderList"
-      :row-class-name="tableRowClassName"
+      :data="errorList"
+      @selection-change="handleSelectionChange"
     >
-      <el-table-column label="订单号" align="center" prop="outTradeNo" />
+      <el-table-column type="selection" width="55" align="center" />
+
+      <el-table-column label="用户id" align="center" prop="userId" />
+      <!-- <el-table-column label="姓名" align="center" prop="userName" /> -->
+      <!-- <el-table-column label="身份证" align="center" prop="logincode" /> -->
+      <el-table-column
+        label="支付时间"
+        align="center"
+        width="180px"
+        prop="createTime"
+      />
+      <el-table-column label="商品名称" align="center" prop="goodsName" />
+      <!-- <el-table-column label="是否分成" align="center" prop="isShare">
+        <template slot-scope="scope">
+          <span v-if="scope.row.isShare == 1">是</span>
+          <span v-else-if="scope.row.isShare == 0">否</span>
+          <span v-else>其他</span>
+        </template>
+      </el-table-column> -->
+      <el-table-column
+        label="极速驾培订单ID"
+        align="center"
+        prop="outTradeNo"
+      />
+
+      <el-table-column label="支付方式" align="center" prop="goodsName">
+        <template slot-scope="scope">{{
+          scope.row.payType == 1 ? "微信" : "支付宝"
+        }}</template>
+      </el-table-column>
+      <el-table-column label="手机类型" align="center" prop="goodsName">
+        <template slot-scope="scope">
+          <span v-if="scope.row.phoneType == 1">苹果</span>
+          <span v-if="scope.row.phoneType == 2">安卓</span>
+          <span v-else>其他</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="客户端类型" align="center" prop="goodsName">
+        <template slot-scope="scope">
+          <span v-if="scope.row.foreType == 1">app</span>
+          <span v-if="scope.row.foreType == 2">小程序</span>
+          <span v-if="scope.row.foreType == 3">公众号</span>
+        </template>
+      </el-table-column>
+      <!-- <el-table-column label="驾校名称" align="center" prop="schoolName" /> -->
+      <!-- <el-table-column label="驾校提成" align="center" prop="schoolName">
+        <template slot-scope="scope">
+          {{ scope.row.schoolCommission / 100 }}元
+        </template>
+      </el-table-column> -->
+      <el-table-column label="订单价格" align="center" prop="total">
+        <template slot-scope="scope"> {{ scope.row.total / 100 }}元 </template>
+      </el-table-column>
       <el-table-column
         label="操作"
         align="center"
         class-name="small-padding fixed-width"
       >
         <template slot-scope="scope">
-          <el-button type="danger" @click="handleRefund(scope.row)" round
-            >发起退款</el-button
+          <el-button
+            v-if="!scope.row.outRefundNo"
+            :disabled="scope.row.outRefundNo"
+            size="mini"
+            type="text"
+            icon="el-icon-remove-outline"
+            @click="handleRefund(scope.row)"
+            >退款</el-button
           >
+          <el-popover
+            v-else
+            placement="bottom"
+            title="极速驾培订单退款ID"
+            width="200"
+            trigger="click"
+            :content="scope.row.outRefundNo"
+          >
+            <el-link type="danger" slot="reference">已退款</el-link>
+          </el-popover>
         </template>
       </el-table-column>
     </el-table>
@@ -56,14 +228,44 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
+
+    <!-- 添加或修改错题对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="用户id" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入用户id" />
+        </el-form-item>
+        <el-form-item label="题目id" prop="questionId">
+          <el-input v-model="form.questionId" placeholder="请输入题目id" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { list, refund } from "@/api/order";
-
+import {
+  getList,
+  getError,
+  refundOrder,
+  delError,
+  addError,
+  updateError,
+  exportError,
+} from "@/api/order";
+let date = new Date();
+let defaultStartTime = `${date.getFullYear()}-${
+  date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1
+}-01 00:00:00`;
+let defaultEndTime = `${date.getFullYear()}-${
+  date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1
+}-${new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()} 23:59:59`;
 export default {
-  name: "Code",
+  name: "Order",
   data() {
     return {
       // 遮罩层
@@ -78,16 +280,33 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 激活码表格数据
-      orderList: [],
+      // 错题表格数据
+      errorList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
       open: false,
       // 查询参数
       queryParams: {
+        startTime: defaultStartTime,
+        endTime: defaultEndTime,
+        tradeType: "",
+        userId: null,
+        isShare: "",
+        userName: "",
+        logincode: "",
+        outTradeNo: null,
         pageNum: 1,
         pageSize: 10,
+
+        // id: null,
+        // outRefundNo: null,
+        // payType: 1,
+        // phoneType: 1,
+        // school: "",
+        // schoolCommission: 0,
+        // schoolName: "",
+        // isShare: 0,
       },
       // 表单参数
       form: {},
@@ -99,15 +318,71 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询激活码列表 */
+    /** 查询错题列表 */
     getList() {
       this.loading = true;
-      list(this.queryParams).then((response) => {
-        this.orderList = response.rows;
+      getList(this.queryParams).then((response) => {
+        this.errorList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
     },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        tradeType: "",
+        userId: null,
+        isShare: "",
+        userName: "",
+        logincode: "",
+        outTradeNo: null,
+        pageNum: 1,
+        pageSize: 10,
+        // id: null,
+        // outRefundNo: null,
+        // payType: 1,
+        // phoneType: 1,
+        // school: "",
+        // schoolCommission: 0,
+        // schoolName: "",
+        // ,
+      };
+      this.resetForm("form");
+    },
+    handleRefund(row) {
+      const outTradeNo = row.outTradeNo;
+      this.$prompt(
+        `确认退款${row.goodsName}吗?
+            请附带退款理由: <div>用户ID:${row.userId}</div><div>退款金额:${
+          row.total / 100
+        }元</div> <div>订单号:${row.outTradeNo}</div> `,
+        "警告",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+          inputPlaceholder: "请输入退款理由",
+          dangerouslyUseHTMLString: true,
+          inputPattern: /[\u4E00-\u9FA5]/,
+          inputErrorMessage: "至少输入一个中文",
+        }
+      )
+        .then(function (obj) {
+          return refundOrder({
+            outTradeNo,
+            reason: obj.value,
+          });
+        })
+        .then(() => {
+          this.getList();
+          this.msgSuccess("退款成功");
+        });
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -118,26 +393,79 @@ export default {
       this.resetForm("queryForm");
       this.handleQuery();
     },
-    //发起退款按钮点击
-    handleRefund(row) {
-      const outTradeNo = row.outTradeNo;
-      this.$prompt("是否确认退款订单: " + outTradeNo, "警告", {
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加错题";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getError(id).then((response) => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改错题";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateError(this.form).then((response) => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addError(this.form).then((response) => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除错题编号为"' + ids + '"的数据项?', "警告", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-        inputPlaceholder: "请输入退款理由",
-        dangerouslyUseHTMLString: true,
-        inputPattern: /[\u4E00-\u9FA5]/,
-        inputErrorMessage: "至少输入一个中文",
-      }).then(async function () {
-        let res = await refund({ outTradeNo, reason });
-        this.getList();
-        this.msgSuccess("退款成功");
-      });
+      })
+        .then(function () {
+          return delError(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm("是否确认导出所有错题数据项?", "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(function () {
+          return exportError(queryParams);
+        })
+        .then((response) => {
+          this.download(response.data);
+        });
     },
   },
 };
-</script>
-
-<style>
-</style>
+</script>

+ 1 - 1
vue.config.js

@@ -34,7 +34,7 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `https://sdjk-admin1.zzxcx.net/stage-api/`,
+        target: `https://nbjk1.zzxcx.net/stage-api/`,
         changeOrigin: true,
         pathRewrite: {
           ["^" + process.env.VUE_APP_BASE_API]: "",