Tang 1 سال پیش
والد
کامیت
be3e47060f

+ 22 - 1
src/apis/order.js

@@ -123,9 +123,30 @@ export default {
 			method: 'get',
 			params: data
 		})
-	}
+	},
   
   
+	prderhandle(data) {
+		return request({
+			url: '/prder/handle',
+			method: 'post',
+			data: data
+		})
+	},
+	prderhandleinputOrder(data) {
+		return request({
+			url: '/prder/handle/inputOrder',
+			method: 'post',
+			data: data
+		})
+	},
+	prderhandlelist(data) {
+		  return request({
+			  url: '/prder/handle/list',
+			  method: 'get',
+			  params: data
+		  })
+	  },
   
   
 }

+ 76 - 0
src/components/search.vue

@@ -0,0 +1,76 @@
+<template>
+  <div id="">
+    <el-form
+      size="small"
+      :inline="true"
+      :model="formData"
+      ref="ruleForm"
+      class="demo-form-inline"
+    >
+      <el-form-item
+        v-for="(item, index) in formSet"
+        :key="index"
+        :label="item.label || ''"
+      >
+        <el-select
+          v-if="item.scope == 'select'"
+          v-model="formData[item.prop]"
+          :placeholder="item.placeholder"
+          clearable
+        >
+          <el-option
+            v-for="(i, k) in item.options"
+            :key="k"
+            :label="i.label"
+            :value="i.value"
+          ></el-option>
+        </el-select>
+        <div v-else-if="item.scope == 'solt'">
+          <slot :name="item.soltName" :scope="item"></slot>
+        </div>
+        <el-input
+          v-else
+          clearable
+          v-model="formData[item.prop]"
+          :placeholder="item.placeholder"
+        ></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="search">查询</el-button>
+        <el-button type="primary" @click="init">重置</el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    formSet: {
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    formData: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {};
+  },
+  methods: {
+    search() {
+      this.$emit("search", this.formData);
+    },
+    init() {
+      this.$emit("init", this.formData);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 3 - 1
src/main.js

@@ -18,10 +18,12 @@ import axios from './axios.js'
 import 'moment/locale/zh-cn'
 import "./assets/css/quill.core.css";
 import bus from '@/common/eventBus';
+import search from "@/components/search";
 // 通用弹窗
 import BaseDialog from "@/components/BaseDialog";
 import dragVerify from "vue-drag-verify2"
 
+Vue.component("search", search);
 Vue.component("BaseDialog", BaseDialog);
 Vue.config.productionTip = false
 Vue.prototype.$store = store
@@ -38,7 +40,7 @@ Vue.use(dragVerify)
 // Vue.mixin(mixin)
 
 Object.keys(filters).forEach(key => {
-    Vue.filter(key, filters[key])
+  Vue.filter(key, filters[key])
 })
 
 /* eslint-disable no-new */

+ 136 - 0
src/pages/person-center/handle-order/index.vue

@@ -0,0 +1,136 @@
+<template>
+  <div id="">
+    <div class="header">
+      <h2>订单管理</h2>
+      <div>
+        <el-button :size="size" type="warning" @click="addOrder"
+          >新增</el-button
+        >
+        <el-button :size="size" type="primary">批量删除</el-button>
+      </div>
+    </div>
+    <el-divider></el-divider>
+    <search
+      :formSet="formSet"
+      :formData.sync="formData"
+      @search="search"
+      @init="init"
+    ></search>
+    <order-box ref="orderBox" />
+  </div>
+</template>
+
+<script>
+import orderBox from "./order/index.vue";
+export default {
+  components: { orderBox },
+  data() {
+    return {
+      size: "small",
+      formData: {},
+      formSet: [
+        {
+          prop: "goodsType",
+          placeholder: "请选择商品类型",
+          scope: "select",
+          options: [
+            {
+              label: "课程",
+              value: 1
+            },
+            {
+              label: "题库",
+              value: 2
+            }
+          ]
+        },
+        {
+          prop: "payStauts",
+          placeholder: "请选择订单状态",
+          scope: "select",
+          options: [
+            {
+              label: "待支付",
+              value: 0
+            },
+            {
+              label: "已支付",
+              value: 1
+            },
+            {
+              label: "已关闭",
+              value: -1
+            },
+            {
+              label: "审核中",
+              value: 2
+            },
+            {
+              label: "不通过",
+              value: -2
+            }
+          ]
+        },
+        // {
+        //   prop: "goodsType",
+        //   placeholder: "请选择退款状态",
+        //   scope: "select",
+        //   options: [
+        //     {
+        //       label: "课程",
+        //       value: 1
+        //     },
+        //     {
+        //       label: "题库",
+        //       value: 2
+        //     }
+        //   ]
+        // },
+        // {
+        //   prop: "goodsType",
+        //   placeholder: "请选择发票状态",
+        //   scope: "select",
+        //   options: [
+        //     {
+        //       label: "课程",
+        //       value: 1
+        //     },
+        //     {
+        //       label: "题库",
+        //       value: 2
+        //     }
+        //   ]
+        // },
+        {
+          prop: "searchKey",
+          placeholder: "输入姓名/身份证号/商品名称"
+        }
+      ]
+    };
+  },
+  methods: {
+    addOrder() {
+        this.$refs.orderBox.openBoxs()
+    },
+    search() {
+      console.log(1);
+    },
+    init() {
+      this.formData = {};
+      console.log(2);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.header {
+  margin-top: 10px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  & > h2 {
+    font-size: 18px;
+  }
+}
+</style>

+ 112 - 0
src/pages/person-center/handle-order/order/index.vue

@@ -0,0 +1,112 @@
+<template>
+  <div id="">
+    <el-dialog
+      :visible.sync="visible"
+      width="1000px"
+      :show-close="false"
+      :close-on-click-modal="false"
+      @closed="close"
+      :lock-scroll="true"
+      :fullscreen="fullscreen"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">{{ title }}</div>
+        <div class="rightBoxs">
+          <i
+            class="el-icon-full-screen full_style"
+            @click="fullscreen = !fullscreen"
+          ></i>
+          <img
+            src="@/assets/img/Close@2x.png"
+            alt=""
+            @click="visible = false"
+          />
+        </div>
+      </div>
+      <div>
+        <el-steps :active="0" finish-status="success" simple>
+          <el-step title="添加学员"></el-step>
+          <el-step title="选择商品"></el-step>
+          <el-step title="支付选择"></el-step>
+          <el-step title="完成"></el-step>
+        </el-steps>
+        <el-divider></el-divider>
+        <step-1></step-1>
+        <step-2></step-2>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import step1 from "./step-1/index.vue";
+import step2 from "./step-2.vue";
+export default {
+  components: { step1, step2 },
+  data() {
+    return {
+      title: "新增",
+      visible: false,
+      fullscreen: false
+    };
+  },
+  methods: {
+    openBoxs() {
+      this.visible = true;
+    },
+    close() {
+      this.visible = false;
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+/deep/ .el-dialog {
+  border-radius: 8px !important;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+/deep/.el-button {
+  border-radius: 8px;
+}
+.full_style {
+  cursor: pointer;
+  color: #6e6e6e;
+}
+</style>

+ 174 - 0
src/pages/person-center/handle-order/order/step-1/index.vue

@@ -0,0 +1,174 @@
+<template>
+  <div id="">
+    <search
+      :formSet="formSet"
+      :formData.sync="formData"
+      @search="search"
+      @init="init"
+    ></search>
+    <header class="header_t">
+      <h2>学员列表x条</h2>
+      <div>
+        <el-button :size="size" type="primary" @click="studentPage(-1)"
+          >新增</el-button
+        >
+        <el-button :size="size" type="primary">导入学员</el-button>
+        <el-button :size="size" type="primary">批量删除</el-button>
+        <el-button :size="size" type="warning">下一步</el-button>
+      </div>
+    </header>
+    <el-main>
+      <el-table
+        :size="size"
+        :data="tableData"
+        style="width: 100%"
+        border
+        :header-cell-style="{
+          'background-color': '#eee',
+          color: '#333',
+          fontSize: '14px'
+        }"
+      >
+        <el-table-column align="center" type="selection" width="55">
+        </el-table-column>
+        <el-table-column align="center" type="index" width="50" label="序号">
+        </el-table-column>
+        <el-table-column
+          v-for="(item, index) in tableSet"
+          :key="index"
+          align="center"
+          :label="item.label"
+          :prop="item.prop"
+          :width="item.width"
+        >
+          <template slot-scope="scope">
+            <span>{{ scope.row[item.prop] }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" type="index" label="操作" width="120">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              :size="size"
+              @click="studentPage(scope.$index, scope.row)"
+              >修改</el-button
+            >
+            <el-button type="text" :size="size" @click="del(scope.$index)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-main>
+    <student-page ref="studentPage" @backStudentData="backStudentData" />
+  </div>
+</template>
+
+<script>
+import studentPage from "./studentPage.vue";
+export default {
+  components: { studentPage },
+  data() {
+    const edu_level = () => {
+      let ary = this.$store.state.dictList["edu_level"].map(i => {
+        return {
+          label: i,
+          value: i
+        };
+      });
+      return ary;
+    };
+    return {
+      size: "small",
+      formSet: [
+        {
+          prop: "goodsType",
+          placeholder: "学历",
+          scope: "select",
+          options: edu_level()
+        },
+        {
+          prop: "searchKey",
+          placeholder: "输入姓名/身份证号/商品名称"
+        }
+      ],
+      formData: {},
+      tableSet: [
+        {
+          label: "姓名",
+          prop: "name"
+        },
+        {
+          label: "性别",
+          prop: "sex"
+        },
+        {
+          label: "身份证号",
+          prop: "idCard"
+        },
+        {
+          label: "学历",
+          prop: "edu"
+        },
+        {
+          label: "所属公司",
+          prop: "company"
+        }
+      ],
+      tableData: [{
+        name:"tang"
+      },{
+        name:"lian"
+      },{
+        name:"feng"
+      }]
+    };
+  },
+  methods: {
+    //学员编辑
+    studentPage(index, row) {
+      console.log(index);
+      this.$refs.studentPage.openBoxs(index, row);
+    },
+    backStudentData(index, row) {
+      if (index == -1) {
+        this.tableData.push(row);
+      } else {
+        this.tableData.splice(index, 1, row);
+      }
+    },
+    del(index) {
+      this.$confirm("确定删除吗", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          this.tableData.splice(index, 1);
+        })
+        .catch(() => {});
+    },
+    search() {},
+    init() {}
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.header_t {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  & > h2 {
+    font-size: 16px;
+    font-weight: 400;
+  }
+  & > div {
+    display: flex;
+    align-items: center;
+  }
+}
+.el-main {
+  padding: 20px 0px;
+}
+</style>

+ 188 - 0
src/pages/person-center/handle-order/order/step-1/studentPage.vue

@@ -0,0 +1,188 @@
+<template>
+  <div id="">
+    <el-dialog
+      :visible.sync="visible"
+      width="400px"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :append-to-body="true"
+      @closed="close"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">{{ index == -1 ? "新增" : "修改" }}</div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/img/Close@2x.png"
+            alt=""
+            @click="visible = false"
+          />
+        </div>
+      </div>
+      <div>
+        <el-form
+          size="small"
+          :model="ruleForm"
+          :rules="rules"
+          ref="ruleForm"
+          label-width="100px"
+          class="demo-ruleForm"
+        >
+          <el-form-item label="姓名" prop="realname">
+            <el-input v-model="ruleForm.realname"></el-input>
+          </el-form-item>
+          <el-form-item label="性别" prop="sex">
+            <el-select
+              v-model="ruleForm.sex"
+              placeholder="请选择性别"
+              style="width:100%;"
+            >
+              <el-option
+                v-for="(item, index) in $store.state.dictList['sys_user_sex']"
+                :key="index"
+                :label="item"
+                :value="item"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="身份证号" prop="idCard">
+            <el-input v-model="ruleForm.idCard"></el-input>
+          </el-form-item>
+          <el-form-item label="手机号码" prop="telphone">
+            <el-input v-model="ruleForm.telphone"></el-input>
+          </el-form-item>
+          <el-form-item label="学历" prop="eduLevel">
+            <el-select
+              v-model="ruleForm.eduLevel"
+              placeholder="请选择学历"
+              style="width:100%;"
+            >
+              <el-option
+                v-for="(item, index) in $store.state.dictList['edu_level']"
+                :key="index"
+                :label="item"
+                :value="item"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="所属公司" prop="companyName">
+            <el-input v-model="ruleForm.companyName"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="submitForm('ruleForm')">保存</el-button>
+      </div></el-dialog
+    >
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      index: -1,
+      visible: false,
+      ruleForm: {
+        realname: "",
+        sex: "",
+        idCard: "",
+        telphone: "",
+        eduLevel: "",
+        companyName: ""
+      },
+      rules: {
+        realname: [{ required: true, message: "请输入姓名", trigger: "blur" }],
+        sex: [{ required: true, message: "请选择性别", trigger: "change" }],
+        idCard: [
+          { required: true, message: "请输入身份证号", trigger: "blur" }
+        ],
+        telphone: [{ required: true, message: "请输入手机号码", trigger: "blur" }],
+        eduLevel: [{ required: true, message: "请选择学历", trigger: "change" }],
+        companyName: [
+          { required: true, message: "请输入所属公司", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  methods: {
+    submitForm(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.$confirm(
+            `确定${this.index == -1 ? "新增" : "修改"}吗?`,
+            "提示",
+            {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning"
+            }
+          )
+            .then(() => {
+              let row = Object.assign({}, this.ruleForm);
+              this.$emit("backStudentData", this.index, row);
+              this.visible = false;
+            })
+            .catch(() => {});
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    openBoxs(index, row) {
+      this.index = index;
+      this.ruleForm = Object.assign({}, row);
+      this.visible = true;
+    },
+    close() {
+      this.$refs["ruleForm"].resetFields();
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+/deep/ .el-dialog {
+  border-radius: 8px !important;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+/deep/.el-button {
+  border-radius: 8px;
+}
+</style>

+ 16 - 0
src/pages/person-center/handle-order/order/step-2.vue

@@ -0,0 +1,16 @@
+<template>
+  <div id="">
+    step2
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {};
+  },
+  methods: {}
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 21 - 0
src/pages/person-center/handle-rollCall/index.vue

@@ -0,0 +1,21 @@
+<template>
+  <div id="">
+经办名单
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+    }
+  },
+  methods: {
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 11 - 0
src/pages/person-center/index.vue

@@ -128,6 +128,17 @@
                 </router-link>
               </div>
             </div>
+            <div class="nav__section">
+              <div class="title">经办订单</div>
+              <div class="list">
+                <router-link to="/person-center/handle-order">
+                  <div class="item">订单管理</div>
+                </router-link>
+                <router-link to="/person-center/handle-rollCall">
+                  <div class="item">经办名单</div>
+                </router-link>
+              </div>
+            </div>
             <div class="nav__section">
               <div class="title">个人管理</div>
               <div class="list">

+ 10 - 0
src/router/index.js

@@ -661,6 +661,16 @@ const router = new Router({
           component: resolve => require(['@/pages/person-center/my-order/index'], resolve),
           name: '我的订单'
         },
+        {
+          path: 'handle-order',
+          component: resolve => require(['@/pages/person-center/handle-order/index'], resolve),
+          name: '订单管理'
+        },
+        {
+          path: 'handle-rollCall',
+          component: resolve => require(['@/pages/person-center/handle-rollCall/index'], resolve),
+          name: '经办名单'
+        },
         {
           path: 'my-mock',
           component: resolve => require(['@/pages/person-center/my-mock/index'], resolve),