ソースを参照

财务订单发布页面修改

wayne 6 年 前
コミット
870379cafd

+ 2 - 1
components/menu/data.js

@@ -19,7 +19,8 @@ export default [
 			},
 			{
 				title: '人工财务表单',
-				path: baseUrl + 'order_detail'
+				path: baseUrl + 'artificial_order',
+				hidden: true
 			},
 			{
 				title: '余额变动管理',

+ 384 - 0
pages/main/index/artificial_order.vue

@@ -0,0 +1,384 @@
+<template>
+  <div>
+    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-card class="box-card">
+        <div slot="header" class="header clearfix">
+          <span>基本信息</span>
+        </div>
+
+        <el-form-item label="订单编号">
+          <div class="order-number">
+            <span>{{form.orderNo ? form.orderNo : '未生成'}}</span>
+            <span>{{form.orderNo ? `订单编号:${form.orderNo}` : '未生成订单'}}</span>
+            <span class="order-status" v-if="form.status === '0'">订单创建</span>
+            <span class="order-status" v-else-if="form.status === '100'">待审核</span>
+            <span class="order-status" v-else-if="form.status === '101'">审核中</span>
+            <span class="order-status" v-else-if="form.status === '102'">订单审核成功</span>
+            <span class="order-status" v-else-if="form.status === '200'">订单开始处理</span>
+            <span class="order-status" v-else-if="form.status === '201'">订单处理中</span>
+            <span class="order-status" v-else-if="form.status === '202'">订单已处理</span>
+            <span class="order-status" v-else-if="form.status === '300'">订单成功</span>
+            <span class="order-status" v-else-if="form.status === '301'">订单部分退款</span>
+            <span class="order-status" v-else-if="form.status === '302'">订单已失败</span>
+            <span class="order-status" v-else-if="form.status === '303'">订单全额退款</span>
+            <span class="order-status" v-else-if="form.status === '400'">订单支付中</span>
+            <span class="order-status" v-else-if="form.status === '401'">订单支付成功</span>
+            <span class="order-status" v-else-if="form.status === '402'">订单支付失败</span>
+            <span class="order-status" v-else>未生成</span>
+          </div>
+        </el-form-item>
+
+        <el-form-item label="订单用户" prop="uid">
+          <el-input v-model="form.uid" placeholder="请输入用户uid"></el-input>
+        </el-form-item>
+
+        <el-form-item label="订单名称" prop="productTitle">
+          <el-input v-model="form.productTitle" placeholder="请输入订单名称,尽量遵循命名规则"></el-input>
+        </el-form-item>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="订单类型" prop="productType">
+              <el-select v-model="form.productType" placeholder="请选择订单类型">
+                <el-option
+                  v-for="item in productTypes"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="交易类型" prop="orderType">
+              <el-select v-model="form.orderType" placeholder="请选择交易类型">
+                <el-option
+                  v-for="item in orderTypes"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="订单金额" prop="price">
+              <el-input v-model="form.price" placeholder="请输入实际金额"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="变更余额">
+              <el-radio v-model="radio" label="1">收入</el-radio>
+              <el-radio v-model="radio" label="2">支出</el-radio>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="收支类型" prop="channel">
+              <el-select v-model="form.channel" placeholder="请选择支付方式">
+                <el-option
+                  v-for="item in channels"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="支付编码">
+              <el-input v-model="form.outOrderId" placeholder="请输入支付编号,选填"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-card>
+
+      <el-card class="box-card">
+        <div slot="header" class="header clearfix">
+          <span>其他信息(选填)</span>
+        </div>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="项目ID">
+              <el-input v-model="form.productId" placeholder="请输入项目ID"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="关联订单">
+              <el-input v-model="form.originOrderNo" placeholder="请输入平台订单编号"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-form-item label="外部备注">
+          <el-input v-model="form.publicComment" placeholder="请输入用户可见的备注信息"></el-input>
+        </el-form-item>
+
+        <el-form-item label="内部备注">
+          <quill-editor
+            ref="quillEditor"
+            class="editer"
+            :options="editorOption"
+            v-model="form.privateComment"
+          ></quill-editor>
+        </el-form-item>
+      </el-card>
+    
+      <el-form-item>
+        <el-button class="save-btn" type="primary" @click="saveSubmit()">保存</el-button>
+        <el-button class="cancel-btn">取消</el-button>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button class="comfirm-btn" type="primary" @click="confirmSubmit()">确认提交订单</el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      action: "",
+      id: "",
+      form: {
+        uid: "",
+        productTitle: "",
+        productType: "",
+        orderType: "",
+        price: "",
+        channel: "",
+        outOrderId: "",
+        productId: "",
+        originOrderNo: "",
+        publicComment: "",
+        privateComment: "",
+        orderNo: "",
+        status: ""
+      },
+      rules: {
+        uid: [{ required: true, message: "请输入用户uid", trigger: "blur" }],
+        productTitle: [{ required: true, max: 25, message: "请输入订单名称,尽量遵守命名规则", trigger: "blur" }],
+        productType: [{ required: true, message: "请选择订单类型", trigger: "change" }],
+        orderType: [{ required: true, message: "请选择交易类型", trigger: "change" }],
+        price: [{ required: true, message: "请输入实际金额0-10万元", trigger: "blur" }]
+      },
+      orderTypes: [],
+      productTypes: [],
+      channels: [],
+      orderState: [],
+      radio: "1",
+      editorOption: {
+        modules: {
+          toolbar: [
+            ["bold", "italic", "underline", "strike"], // toggled buttons
+            ["blockquote", "code-block"],
+            [{ header: 1 }, { header: 2 }], // custom button values
+            [{ list: "ordered" }, { list: "bullet" }],
+            [{ script: "sub" }, { script: "super" }], // superscript/subscript
+            [{ indent: "-1" }, { indent: "+1" }], // outdent/indent
+            [{ direction: "rtl" }], // text direction
+            [{ size: ["small", false, "large", "huge"] }], // custom dropdown
+            [{ header: [1, 2, 3, 4, 5, 6, false] }],
+            [{ font: [] }],
+            ["clean"], // remove formatting button
+            ["link", "image"]
+          ],
+          imageResize: {}
+        }
+      }
+    };
+  },
+  mounted() {
+    console.log(this.$route.query);
+    const type = this.$route.query.type;
+    if (type === "create") {
+      this.action = "create";
+      this.getAllChoice();
+    } else if (type === "edit") {
+      this.action = "";
+      this.id = this.$route.query.id;
+      this.getAllChoice();
+      this.getOrder();
+    }
+  },
+  methods: {
+    async getAllChoice() {
+      let res = await this.$post("/api/admin/order/get_all_choice", {
+        action: this.action
+      });
+      if (res) {
+        console.log(res);
+        const allChoice = res.data;
+        this.orderTypes = allChoice.order_types;
+        this.productTypes = allChoice.product_types;
+        this.channels = allChoice.channels;
+        this.orderState = allChoice.order_state;
+      }
+    },
+    async getOrder() {
+      let res = await this.$post("/api/admin/order/get", {
+        order_id: this.id
+      });
+      if (res) {
+        if (res.status === 1 && res.data) {
+          const data = res.data;
+          this.form.uid = data.uid || "";
+          this.form.productTitle = data.product_title || "";
+          this.form.productType = data.product_type || "";
+          this.form.orderType = data.order_type || "";
+          this.form.price = data.price || "";
+          this.form.channel = data.channel || "";
+          this.form.outOrderId = data.out_order_id || "";
+          this.form.productId = data.product_id || "";
+          this.form.originOrderNo = data.origin_order_no || "";
+          this.form.publicComment = data.public_comment || "";
+          this.form.privateComment = data.private_comment || "";
+          this.form.orderNo = data.order_no || "";
+          this.form.status = data.status || "";
+        }
+      }
+    },
+    async saveOrder() {
+      let res = await this.$post("/api/admin/order/create", {
+        id: this.id,
+        uid: this.form.uid,
+        product_title: this.form.productTitle,
+        product_type: this.form.productType,
+        order_type: this.form.orderType,
+        price: this.form.price,
+        channel: this.form.channel,
+        out_order_id: this.form.outOrderId,
+        origin_order_no: this.form.originOrderNo,
+        public_comment: this.form.publicComment,
+        private_comment: this.form.privateComment
+      });
+      if (res) {
+        if (res.status === 1 && res.data && res.data.order_id) {
+          // this.id = res.data.id
+        } else if (res.info) {
+          console.log(res.info);
+        }
+      }
+    },
+    async confirmOrder() {
+      let res = await this.$post("/api/admin/order/confirm_order", {
+        id: this.id,
+        uid: this.form.uid,
+        product_title: this.form.productTitle,
+        product_type: this.form.productType,
+        order_type: this.form.orderType,
+        price: this.form.price,
+        channel: this.form.channel,
+        out_order_id: this.form.outOrderId,
+        origin_order_no: this.form.originOrderNo,
+        public_comment: this.form.publicComment,
+        private_comment: this.form.privateComment
+      });
+    },
+    saveSubmit() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          this.saveOrder()
+        } else {
+          console.log("error submit!!")
+          return false
+        }
+      })
+    },
+    confirmSubmit() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          this.confirmOrder()
+        } else {
+          console.log("error submit!!")
+          return false
+        }
+      })
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.box-card {
+  margin-bottom: 10px;
+  width: 100%;
+}
+
+.header {
+  font-size: 24px;
+  color: #222222;
+  font-weight: 600;
+}
+
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+}
+
+.clearfix:after {
+  clear: both;
+}
+
+.order-number {
+  display: flex;
+  align-items: center;
+}
+
+.order-number span:first-child {
+  flex: 1;
+  font-size: 14px;
+  color: #999999;
+}
+
+.order-number span:nth-child(2) {
+  font-size: 14px;
+  color: #999999;
+}
+
+.order-status {
+  display: block;
+  margin-left: 7px;
+  padding: 0 2px;
+  height: 22px;
+  line-height: 22px;
+  border: 1px solid #3c95ff;
+  font-size: 12px;
+  color: #308eff;
+}
+
+.el-select {
+  width: 100%;
+}
+
+.editer {
+  width: 100%;
+  height: 600px;
+  padding: 0 0 50px;
+}
+
+.save-btn {
+  width: 100px;
+  height: 40px;
+}
+
+.cancel-btn {
+  margin-left: 10px;
+  width: 100px;
+  height: 40px;
+}
+
+.comfirm-btn {
+  width: 210px;
+  height: 40px;
+}
+</style>

+ 9 - 1
pages/main/index/artificial_orders.vue

@@ -6,7 +6,7 @@
     <div class="type-boxs">
       <div class="clear">
         <div class="floatr">
-          <el-button type="primary">新增订单</el-button>
+          <el-button type="primary" @click="createOrder()">新增订单</el-button>
           <el-button>导出报表</el-button>
         </div>
       </div>
@@ -299,6 +299,14 @@ export default {
       var data = res.data;
       this.finaceList = data.orders;
       this.totalCount = Number(data.count);
+    },
+    createOrder() {
+      this.$router.push({
+        path:'artificial_order/',
+        query:{
+          type:'create'
+        }}
+      )
     }
   }
 };

+ 0 - 280
pages/main/index/order_detail.vue

@@ -1,280 +0,0 @@
-<template>
-  <div>
-    <el-card class="box-card">
-
-      <div slot="header" class="header clearfix">
-        <span>基本信息</span>
-      </div>
-      <el-form ref="form" :model="form" label-width="80px">
-
-        <el-form-item label="订单编号">
-          <div class="order-number">
-            <span>未生成</span>
-            <span>订单编号: 7r99r40048</span>
-            <button>待提交</button>
-          </div>
-        </el-form-item>
-
-        <el-form-item label="订单用户">
-          <el-input v-model="form.user" placeholder="请输入用户uid"></el-input>
-        </el-form-item>
-
-        <el-form-item label="订单名称">
-          <el-input v-model="form.name" placeholder="请输入订单名称,尽量遵循命名规则"></el-input>
-        </el-form-item>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="订单类型">
-              <el-select v-model="value" placeholder="请选择订单类型">
-                <el-option
-                  v-for="item in orderTypes"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="交易类型">
-              <el-select v-model="value" placeholder="请选择交易类型">
-                <el-option
-                  v-for="item in productTypes"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="订单金额" placeholder="请输入实际金额">
-              <el-input v-model="form.user"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="交易类型">
-              <el-radio v-model="radio" label="1">收入</el-radio>
-              <el-radio v-model="radio" label="2">支出</el-radio>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="收支类型">
-              <el-select v-model="value" placeholder="请选择支付方式">
-                <el-option
-                  v-for="item in channels"
-                  :key="item.id"
-                  :label="item. name"
-                  :value="item.name">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="支付编码">
-              <el-input v-model="form.user" placeholder="请输入支付编号,选填"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-      </el-form>
-
-    </el-card>
-
-    <el-card class="box-card">
-
-      <div slot="header" class="header clearfix">
-        <span>其他信息(选填)</span>
-      </div>
-      <el-form ref="form" :model="form" label-width="80px">
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="关联项目">
-              <el-select v-model="value" placeholder="请选择项目类型">
-                <el-option
-                  v-for="item in orderState"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="项目ID">
-              <el-select v-model="value" placeholder="请输入项目ID">
-                <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-form-item label="关联订单">
-          <el-input v-model="form.user" placeholder="请输入平台订单编号"></el-input>
-        </el-form-item>
-
-        <el-form-item label="外部备注">
-          <el-input v-model="form.name" placeholder="请输入用户可见的备注信息"></el-input>
-        </el-form-item>
-
-        <el-form-item label="内部备注">
-          <el-input type="textarea" v-model="form.name" placeholder="请输入仅内部可见的备注信息,必填"></el-input>
-        </el-form-item>
-
-      </el-form>
-
-    </el-card>
-
-    <el-form ref="form" :model="form" style="padding: 20px;">
-
-      <el-form-item>
-        <el-button class="save-btn" type="primary">保存</el-button>
-        <el-button class="cancel-btn">取消</el-button>
-      </el-form-item>
-
-      <el-form-item>
-        <el-button class="comfirm-btn" type="primary">确认提交订单</el-button>
-      </el-form-item>
-
-    </el-form>
-
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      form: {
-        user: '',
-        name: '',
-      },
-      options: [{
-        value: '选项1',
-        label: '黄金糕'
-      }, {
-        value: '选项2',
-        label: '双皮奶'
-      }, {
-        value: '选项3',
-        label: '蚵仔煎'
-      }, {
-        value: '选项4',
-        label: '龙须面'
-      }, {
-        value: '选项5',
-        label: '北京烤鸭'
-      }],
-      orderTypes: [],
-      productTypes: [],
-      channels: [],
-      orderState: [],
-      value: '',
-      radio: '1'
-    }
-  },
-  mounted() {
-    this.getAllChoice()
-  },
-  methods: {
-    async getAllChoice() {
-      let res = await this.$post('/api/admin/order/get_all_choice', {
-        action: 'create'
-      })
-      if (res) {
-        console.log(res)
-        const allChoice = res.data
-        this.orderTypes = allChoice.order_types
-        this.productTypes = allChoice.product_types
-        this.channels = allChoice.channels
-        this.orderState = allChoice.order_state
-      }
-    },
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-  .box-card {
-    margin-bottom: 10px;
-    width: 100%;
-  }
-
-  .header {
-    font-size: 24px;
-    color: #222222;
-    font-weight: 600;
-  }
-
-  .clearfix:before,
-  .clearfix:after {
-    display: table;
-    content: "";
-  }
-
-  .clearfix:after {
-    clear: both
-  }
-
-  .order-number {
-    display: flex;
-    align-items: center;
-  }
-
-  .order-number span:first-child {
-    flex: 1;
-    font-size: 14px;
-    color: #999999;
-  }
-
-  .order-number span:nth-child(2) {
-    font-size: 14px;
-    color: #999999;
-  }
-
-  .order-number button {
-    margin-left: 7px;
-    height: 22px;
-    border: 1px solid #3C95FF;
-    font-size: 12px;
-    color: #308EFF;
-  }
-
-  .el-select {
-    width: 100%;
-  }
-
-  textarea {
-    width: 100%;
-    height: 100px;
-  }
-
-  .save-btn {
-    width: 100px;
-    height:40px;
-  }
-
-  .cancel-btn {
-    margin-left: 10px;
-    width: 100px;
-    height:40px;
-  }
-
-  .comfirm-btn {
-    width: 210px;
-    height:40px;
-  }
-</style>