From 1e49e17d482e3a3e67108bdffa4ae5f374e26cb8 Mon Sep 17 00:00:00 2001
From: zhaoxiaoqiang <287285524@qq.com>
Date: Thu, 31 Aug 2023 18:05:46 +0800
Subject: [PATCH] 订单管理管理员订单管理

---
 src/views/qyp-project-order/index.vue          |  312 +++++++++++
 src/views/qyp-project-order/history.vue        |    3 
 src/views/qyp-project-management/promotion.vue |  183 ++++--
 src/api/user.js                                |   11 
 src/components/table.vue                       |   16 
 src/views/qyp-project-order/admin.vue          |  344 ++++++++++++
 src/api/listapi.js                             |    7 
 src/views/qyp-project-management/index.vue     |  287 ++++++++--
 src/components/fl-select.vue                   |    2 
 src/components/upload.vue                      |  368 ++++---------
 src/api/credit.js                              |   16 
 src/utils/MenuUtils.js                         |    3 
 12 files changed, 1,102 insertions(+), 450 deletions(-)

diff --git a/src/api/credit.js b/src/api/credit.js
index 836257d..cad6a5a 100644
--- a/src/api/credit.js
+++ b/src/api/credit.js
@@ -73,4 +73,20 @@
     method: 'post',
     data
   })
+}
+// 订单详情
+export function orderDtl(data) {
+  return request({
+    url: '/qyp/order/orderDtl',
+    method: 'post',
+    data
+  })
+}
+// 订单详情
+export function orderInit(data) {
+  return request({
+    url: '/qyp/order/orderInit',
+    method: 'post',
+    data
+  })
 }
\ No newline at end of file
diff --git a/src/api/listapi.js b/src/api/listapi.js
index 73d7d0b..596aff3 100644
--- a/src/api/listapi.js
+++ b/src/api/listapi.js
@@ -40,5 +40,12 @@
       data,
     });
   },
+  orderList(data) {
+    return request({
+      url: "/qyp/order/orderList",
+      method: "post",
+      data,
+    });
+  },
 };
 export default accountApi;
diff --git a/src/api/user.js b/src/api/user.js
index e4f2984..daa10ef 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -137,13 +137,20 @@
 // =================
 export function uploadFile(data) {  //文件上传公共
   return request({
-    url: '/pub/uploadFile',
+    url: '/pub/upload',
     method: 'post',
     data
   })
 }
 
-
+// 项目文件上传
+export function projFileUpload(data) {  //文件上传公共
+  return request({
+    url: '/qyp/manual/projFileUpload',
+    method: 'post',
+    data
+  })
+}
 
 
 
diff --git a/src/components/secect.vue b/src/components/fl-select.vue
similarity index 98%
rename from src/components/secect.vue
rename to src/components/fl-select.vue
index 5e8b4ed..de4e823 100644
--- a/src/components/secect.vue
+++ b/src/components/fl-select.vue
@@ -4,7 +4,7 @@
  * @LastEditors: zxq
  * @LastEditTime: 2023-01-03 11:08:50
  * @Description: Description
- * @FilePath: \qyp-plat\src\components\secect.vue
+ * @FilePath: \qyp-plat\src\components\fl-select.vue
 -->
 <template>
   <el-select  
diff --git a/src/components/table.vue b/src/components/table.vue
index 350b0ac..606de18 100644
--- a/src/components/table.vue
+++ b/src/components/table.vue
@@ -1,8 +1,8 @@
 <!--
  * @Author: zxq
  * @Date: 2021-09-13 17:29:07
- * @LastEditTime: 2023-04-23 11:27:58
- * @LastEditors: zxq
+ * @LastEditTime: 2023-08-31 17:14:36
+ * @LastEditors: zhaoxiaoqiang 287285524@qq.com
  * @Description: In User Settings Edit
  * @FilePath: \qyp_finlean_plat\src\components\table.vue
 -->
@@ -31,11 +31,13 @@
       @select-all="selectAll"
       @cell-click="cellClick"
       @select="select"
+      :row-key="getRowKey"
     >
       <el-table-column
         v-if="hasSelection"
         type="selection"
         :border="border"
+        :reserve-selection="true"
         :selectable="selectHandle"
         width="50"
       ></el-table-column>
@@ -247,8 +249,7 @@
       type: Object,
       default: () => {
         return {};
-      },
-      
+      }
     },
      //订单明细 导出路径
     exportOrderUrl: {
@@ -295,6 +296,10 @@
      type:String,
      default:'items'
     },
+    rowKey:{
+      type:String,
+      default:'id'
+    }
   },
   components: {
     expandDom: {
@@ -388,6 +393,9 @@
     },
   },
   methods: {
+    getRowKey (row) {
+      return row[this.rowKey]
+    },
     pageChange(newPage) {
       this.queryData.page = newPage;
       this.getData();
diff --git a/src/components/upload.vue b/src/components/upload.vue
index 0af7d97..faf40f5 100644
--- a/src/components/upload.vue
+++ b/src/components/upload.vue
@@ -2,294 +2,156 @@
  * @Author: zxq
  * @Date: 2022-01-05 18:44:53
  * @LastEditors: zhaoxiaoqiang 287285524@qq.com
- * @LastEditTime: 2023-08-24 14:39:04
+ * @LastEditTime: 2023-08-31 14:56:53
  * @Description: Description
- * @FilePath: \qyp_finlean_plat\src\components\upload.vue
+ * @FilePath: \sjzl-plat\src\components\upload.vue
 -->
 <template>
-  <div style="width: 100%">
+  <div>
     <el-upload
-      action="#"
-      :limit="limit"
-      multiple
-      class="upload-demo"
-      :list-type="!isUploadOther?'picture-card':''"
-      :disabled="disabled"
-      :on-exceed="masterFileMax"
-      :before-upload="beforeAvatarUpload"
-      :http-request="uploadFileData"
-      :file-list="PicList"
-      :class="[uploadDisabled ? 'updispaly' : '']"
-    >
-      <el-button v-if="isUploadOther" size="small" icon="el-icon-plus" type="primary" >点击上传</el-button>
-      <i v-else slot="default" class="el-icon-plus"></i>
-      <div slot="file" slot-scope="{ file }">
-        <template v-if="isUploadOther">
-          <div class="pdf_style" v-if='file.url'>
-            <template
-              v-if="
-                file.url
-                  .substring(file.url.lastIndexOf('.'))
-                  .split('.')[1]
-                  .trim() != 'pdf'
-              "
+        action="#"
+        :limit='limit'
+          multiple
+        :disabled='disabled'
+        list-type="picture-card"
+        :on-exceed="masterFileMax"
+        :before-upload="beforeAvatarUpload"
+        :http-request="uploadFileData"
+        :file-list="pictureList"
+        >
+        <i slot="default" class="el-icon-plus"></i>
+        <div slot="file" slot-scope="{ file }">
+            <!-- <span>{{ file.url }}</span> -->
+            <img class="el-upload-list__item-thumbnail"  :src="file.url"  alt=""/>
+            <span class="el-upload-list__item-actions">
+            <span
+                class="el-upload-list__item-preview"
+                @click="handlePictureCardPreview(file)"
             >
-              <div :style="imgStyle" class="img_box">
-                <img
-                  class="el-upload-list__item-thumbnail"
-                  :style="imgStyle"
-                  :src="file.url"
-                  alt=""
-                />
-                <div class="el-upload-list__item-actions" :style="imgStyle">
-                  <span class="el-upload-list__item-preview">
-                    <i
-                      class="el-icon-zoom-in"
-                      style="color: #fff; font-size: 20px"
-                      @click="handlePictureCardPreview(file)"
-                    ></i>
-                    <i
-                      class="el-icon-delete"
-                      style="color: #fff; font-size: 20px"
-                      @click="handleRemoveLoanT(file)"
-                    ></i>
-                  </span>
-                </div>
-              </div>
-            </template>
-            <template v-else>
-              <div class="pdf_box">
-                <span>{{ file.fileName }}</span>
-                <i
-                  class="el-icon-delete delete_file"
-                  style="color: #fff; font-size: 20px"
-                  @click="handleRemoveLoanT(file)"
-                ></i>
-              </div>
-            </template>
-          </div>
-        </template>
-        <template v-else>
-          <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
-          <span class="el-upload-list__item-actions">
-            <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
-              <i class="el-icon-zoom-in"></i>
+                <i class="el-icon-zoom-in"></i>
             </span>
-            <span v-if='!disabled' class="el-upload-list__item-delete" @click="handleRemoveLoanT(file)">
-              <i class="el-icon-delete"></i>
+            <span  v-if='!disabled'
+                class="el-upload-list__item-delete"
+                @click="handleRemoveLoanT(file)"
+            >
+                <i class="el-icon-delete"></i>
             </span>
-          </span>
-        </template>
-      </div>
+            </span>
+        </div>
     </el-upload>
-    <el-dialog
-      title="查看图片"
-      :append-to-body="true"
-      top="0"
-      :visible.sync="imgVisible"
-      class="dialogImageUrlbox"
-    >
-      <img width="100%" :src="dialogImageUrl" alt="" />
+    <el-dialog title="查看图片" top="1vh"  :append-to-body='true' :visible.sync="imgVisible" class='dialogImageUrlbox'>
+      <img width="80%" :src="dialogImageUrl" alt="" />
     </el-dialog>
   </div>
 </template>
+
 <script>
-import axios from "axios";
 import { uploadFile } from "@/api/user";
 import { imgShrink } from "@/utils/validate";
-import {showTipOfStatuCode} from '@/utils/statusCodeManage'
+
 export default {
-  props: {
-    limit: {
-      type: Number | String,
-      default: "",
-    },
-    disabled: {
+  props:{
+     limit: {
+      type: Number,
+      default: 1
+     },
+     disabled: {
       type: Boolean,
-      default: false,
-    },
-    defaultList: {
+      default: false
+     },
+     defaultList:{
       type: Array,
-      default: () => {
-        return [];
-      },
-    },
-    imgSize: {
-      type: Object,
-      default: () => {
-        return {};
-      },
-    },
-    imgStyle: {
-      type: Object,
-      default: () => {
-        return {
-          width: "100px",
-          height: "100px",
-        };
-      },
-    },
-    isUploadOther: {
+      default: ()=>{
+          return []
+      }
+     },
+     isProject:{
       type: Boolean,
-      default: false,
-    },
+      default: false
+     }
   },
   data() {
-    return {
-      PicList: [],
-      imgVisible: false,
-      dialogImageUrl: "",
-      uploadFileForm: {
-        suffix: "",
-        base64Data: "",
-      },
-      uploadDisabled: false,
-    };
+      return {
+          pictureList:[],
+          imgVisible:false,
+          dialogImageUrl:'',
+          uploadFileForm:{
+             suffix:"",
+             base64Data:""
+          }
+      };
   },
-  watch: {
-    defaultList: {
-      handler: function (val) {
-        this.PicList = val;
-      },
-      deep: true,
-    },
+  watch:{
+      defaultList:{
+        handler: function(val) {
+          console.log(val)
+          this.pictureList = val;
+        },
+        deep: true
+    }
   },
   methods: {
-    beforeAvatarUpload(file, type) {
-      var testmsg = !/\/(?:jpg|jpeg|png|pdf)/i.test(file.type);
-      const isLt5M = file.size / 1024 / 1024 < 100;
-      if (testmsg) {
-        this.$message.error("请检查文件格式");
-        return false;
-      }
-      if (!isLt5M) {
-        this.$message.error("上传图片大小不能超过 100MB!");
-        return false;
-      }
-    },
-    uploadFileData(file, type) {
-      if(this.isUploadOther){
-        var formData = new FormData(); //新建表单对象
-        formData.append("file", file.file); //把文件对象添加到表单对象里
-        formData.append("filename", file.file.name); //把文件名称添加到表单对象里
-        axios.post("/sfPlat/pub/uploadLargeFile", formData).then(({ data }) => {
-            let { fileUrl, fileName, fileId } = data.body;
-            this.PicList.push({
-              fileUrl: fileUrl,
-              fileName,
-              url: fileUrl,
-              fileId,
-            });
-            this.$emit("sendList", this.PicList);
-          })
-          .catch((err) => {
-            showTipOfStatuCode(err)
-          });
-      }else{
+      beforeAvatarUpload(file,type) {
+          var testmsg = /^image\/(jpeg|png|jpg)$/.test(file.type);
+          const isLt5M = file.size / 1024 / 1024 < 15;
+          if (!testmsg) {
+              this.$message.error("上传图片格式不对!");
+              return false;
+          }
+          if (!isLt5M) {
+              this.$message.error("上传图片大小不能超过 15MB!");
+              return false;
+          }
+      },
+      uploadFileData(file,type) {
           //上传图片
           const fileName = file.file.name;
-          this.uploadFileForm.suffix = fileName.substr(fileName.lastIndexOf(".") + 1, fileName.length);
-          imgShrink(file.file,this.imgSize.width,this.imgSize.height).then(resBase64 => {
-            this.uploadFileForm.base64Data = resBase64.split(",")[1];
-            //直接拿到base64信息
-            uploadFile(this.uploadFileForm).then(res => {
-              this.PicList.push({
-                filePath: res.body.fileUrl,
-                fileName: fileName,
-                url: res.body.fileUrl,
-                fileId: res.body.fileId
+          this.uploadFileForm.suffix = fileName.substr( fileName.lastIndexOf(".") + 1,fileName.length); 
+          imgShrink(file.file).then(resBase64 => {
+              this.uploadFileForm.base64Data = resBase64.split(",")[1];
+              let apiEvent = {uploadFile};
+              //直接拿到base64信息
+              apiEvent["uploadFile"](this.uploadFileForm).then(res => {
+                  this.pictureList.push({
+                      filePath: res.body.fileUrl,
+                      fileName: fileName,
+                      uid: file.file.uid,
+                      url: res.body.fileUrl,
+                      fileId:res.body.fileId
+                  });
+                  this.$emit('sendList',this.pictureList);
               });
-              this.uploadDisabled = this.PicList.length >= 1 && this.limit==1
-              this.$emit('sendList', this.PicList);
-            });
           });
+      },
+      handlePictureCardPreview(file) {
+          this.dialogImageUrl = file.url;
+          this.imgVisible = true;
+      },
+      handleRemoveLoanT(file) {
+        const index = this.pictureList.findIndex(item => {
+            return item.uid == file.uid;
+        });
+        this.pictureList.splice(index,1);
+        this.$emit('sendList',this.pictureList);
+      },
+      masterFileMax(){
+        this.$message.warning(`请最多上传 ${this.limit} 个文件。`);
       }
-    },
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-      this.imgVisible = true;
-    },
-    handleRemoveLoanT(file) {
-      const index = this.PicList.findIndex((item) => {
-        return item.fileId == file.fileId;
-      });
-      this.PicList.splice(index, 1);
-      this.uploadDisabled = this.PicList.length >= 1 && this.limit == 1;
-      this.$emit("sendList", this.PicList);
-    },
-    masterFileMax() {
-      this.$message.warning(`最多上传 ${this.limit} 个文件。`);
-    },
   },
-  created() {},
   mounted() {
     if (this.defaultList.length > 0) {
-      this.PicList = this.defaultList;
-      this.uploadDisabled = this.PicList.length >= 1 && this.limit == 1;
+      this.pictureList = this.defaultList;
+      this.uploadDisabled = this.pictureList.length >= 1 && this.limit == 1;
     }
   },
 };
 </script>
 
-<style  lang="scss">
-.updispaly {
-  .el-upload--picture-card {
-    display: none;
-  }
-  .el-upload {
-    width: 100% !important;
-    height: 100% !important;
-  }
-  .uplaod_img > .el-upload--picture-card {
-    width: 100% !important;
-    height: 100% !important;
-  }
+<style>
+.el-upload--picture-card , .el-upload-list__item{
+  width: 74px !important;
+  height: 74px !important;
+  line-height: 76px !important;
 }
-.pdf_style{
-  .img_box {
-    position: relative;
-    margin-right: 5px;
-    margin-bottom: 5px;
-  }
-  .el-upload-list__item {
-    width: inherit !important;
-  }
-  .el-upload-list__item-actions {
-    position: absolute !important;
-    top: 0 !important;
-    left: 0;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    opacity: 0;
-    background: rgba(0, 0, 0, 0.5);
-  }
-
-  .img_box:hover .el-upload-list__item-actions {
-    opacity: 1;
-  }
-  .el-upload-list {
-    display: flex !important;
-    justify-content: flex-start !important;
-    align-items: center !important;
-    flex-wrap: wrap !important;
-  }
-  .pdf_box {
-    padding: 5px 0;
-    padding-right: 24px;
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-  }
-  .delete_file {
-    display: inline-block;
-    margin-left: 12px;
-    opacity: 0;
-  }
-  .pdf_box:hover .delete_file {
-    opacity: 1;
-    color: #666 !important;
-  }
-}
-
+ 
 </style>
diff --git a/src/utils/MenuUtils.js b/src/utils/MenuUtils.js
index f7dd72f..b77b0fd 100644
--- a/src/utils/MenuUtils.js
+++ b/src/utils/MenuUtils.js
@@ -14,8 +14,7 @@
     // 这个component属性是一个字符串,或者可能连字段名都是其他的key
     // 所以这里要做一些转换
     // 结构创建
-    let data = arr ? arr : []
-    console.log(data)
+    let data = arr ? arr : [];
     for (let i = 0, j = data.length; i < j; i++) {
         if (data[i].childPowerInfos == null || data[i].childPowerInfos.length == 0) {
             data[i].childPowerInfos = [{
diff --git a/src/views/qyp-project-management/index.vue b/src/views/qyp-project-management/index.vue
index 5826f29..b602ade 100644
--- a/src/views/qyp-project-management/index.vue
+++ b/src/views/qyp-project-management/index.vue
@@ -50,12 +50,15 @@
             </el-form-item>
           </div>
           <el-form-item style="text-align: right;">
-            <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" v-if='filterBtnById("150102")' @click="addProduct">新 增</el-button>
+            <!--  v-if='filterBtnById("150102")' -->
             <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" @click="onSearch">查 询</el-button>
           </el-form-item>
         </el-form>
       </div>
       <div class="table_box">
+        <div  style="margin-left: 10px;text-align: right;">
+          <el-button type="primary" size="small" @click="addProduct">新增项目</el-button>
+        </div>
         <Etable
           hasIndex
           httpUrl="projectList"
@@ -64,14 +67,51 @@
           @getDataList="getDataList"
           :exportUrl="{
             url: '/qyp/project/export',
-            powerId: '150103',
+            powerId: '',
             name: '项目列表',
           }"
         ></Etable>
       </div>
-      <el-dialog top="8vh"  title="新增商品" :visible.sync="addProd" width="60%">
-        <!-- 新增商品名称 -->
-       
+      <el-dialog top="2vh"  :title="title" :visible.sync="addProd" width="60%">
+          <!-- 新增商品名称 -->
+          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" size="small" label-width="100px" class="demo-ruleForm">
+            <el-form-item label="项目名称" prop="projName">
+              <el-input v-model="ruleForm.projName" :disabled="disabled" :maxlength="50"></el-input>
+            </el-form-item>
+            <el-form-item label="项目价格" prop="projPrice">
+              <el-input v-model="ruleForm.projPrice" :disabled="disabled" :maxlength="10"></el-input>
+            </el-form-item>
+            <el-form-item label="项目链接" prop="projUrl">
+              <el-input v-model="ruleForm.projUrl" :disabled="disabled" :maxlength="150"></el-input>
+            </el-form-item>
+            <el-form-item label="项目描述" prop="projDesc">
+              <el-input type="textarea" v-model="ruleForm.projDesc" :disabled="disabled"></el-input>
+            </el-form-item>
+            <el-form-item label="项目状态" prop="status">
+              <el-radio-group v-model="ruleForm.status" :disabled="disabled">
+                <el-radio v-for="item in relustObj.statusList" :key="item.code" :label="item.code">{{ item.name }}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="项目背景图" v-if="addProd" ref="backFilePath" prop="backFilePath">
+               <uploadImg  v-if="addProd" @sendList="imgSet($event,'backFilePath')" :disabled="disabled"  :defaultList="ruleForm.backFilePath"></uploadImg>
+            </el-form-item>
+            <el-form-item label="项目logo" ref="logoFilePath" prop="logoFilePath">
+              <uploadImg v-if="addProd" @sendList="imgSet($event,'logoFilePath')" :disabled="disabled"  :defaultList="ruleForm.logoFilePath"></uploadImg>
+            </el-form-item>
+            <el-form-item label="平台头图" ref="titleFilePath" prop="titleFilePath">
+              <uploadImg v-if="addProd"  @sendList="imgSet($event,'titleFilePath')" :disabled="disabled" :defaultList="ruleForm.titleFilePath"></uploadImg>
+            </el-form-item>
+            <el-form-item label="会员权益" ref="qyFilePath"  prop="qyFilePath">
+              <uploadImg v-if="addProd" @sendList="imgSet($event,'qyFilePath')"     :disabled="disabled" :defaultList="ruleForm.qyFilePath"></uploadImg>
+            </el-form-item>
+            <el-form-item label="活动规则" ref="ruleFilePath" prop="ruleFilePath">
+              <uploadImg v-if="addProd"  @sendList="imgSet($event,'ruleFilePath')" :disabled="disabled" :defaultList="ruleForm.ruleFilePath"></uploadImg>
+            </el-form-item>
+            <el-form-item style="text-align:right;" v-if="!disabled">
+              <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
+              <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
+            </el-form-item>
+          </el-form>
       
       </el-dialog>
     </div>
@@ -80,55 +120,49 @@
   <script>
   import Etable from "../../components/table.vue";
   import {projectInit,projectAdd,projectDtl,projectUpdata} from "@/api/credit";
-  //   import orderDetail from "./orderDetail.vue";
   import uploadImg from "@/components/upload.vue";
-  import MultipleSelect from "../../components/secect.vue";
-  import moment from 'moment';
   export default {
     name: "order",
-    components: { Etable, MultipleSelect, uploadImg },
+    components: { Etable,uploadImg },
     data() {
-      let validateImage = (rule, value, callback) => { //验证器
-        if (!this.payForm.prodListImages.length) {     //为true代表图片在  false报错
-          callback(new Error('请上传商品展示图片'));
+      let backFilePathImage = (rule, value, callback) => { //验证器
+        if (!this.ruleForm.backFilePath.length) {     //为true代表图片在  false报错
+          callback(new Error('请上传项目背景图'));
         } else {
           callback();
         }
       };
-      let validateImage1 = (rule, value, callback) => { //验证器
-        if (!this.payForm.prodImages.length) {     //为true代表图片在  false报错
-          callback(new Error('请上传商品轮播图'));
+      let logoFilePathImage = (rule, value, callback) => { //验证器
+        if (!this.ruleForm.logoFilePath.length) {     //为true代表图片在  false报错
+          callback(new Error('请上传项目logo图'));
         } else {
           callback();
         }
       };
-      let validateImage2 = (rule, value, callback) => { //验证器
-        if (!this.payForm.prodDescImages.length) {     //为true代表图片在  false报错
-          callback(new Error('请上传商品详情图片'));
+      let titleFilePathImage = (rule, value, callback) => { //验证器
+        if (!this.ruleForm.titleFilePath.length) {     //为true代表图片在  false报错
+          callback(new Error('请上传平台头图'));
+        } else {
+          callback();
+        }
+      };
+      let qyFilePathImage = (rule, value, callback) => { //验证器
+        if (!this.ruleForm.qyFilePath.length) {     //为true代表图片在  false报错
+          callback(new Error('请上传会员权益图'));
+        } else {
+          callback();
+        }
+      };
+      let ruleFilePathImage = (rule, value, callback) => { //验证器
+        if (!this.ruleForm.ruleFilePath.length) {     //为true代表图片在  false报错
+          callback(new Error('请上传会员权益图'));
         } else {
           callback();
         }
       };
       return {
-          disabled: true,
-          payForm: {
-            prodImages: [],
-            prodListImages:[],
-            prodDescImages:"",
-          },
-          licensePaths: [],
-          prodListImages:[],
-          prodDescImages:[],
-          payFormRule: {
-            prodListImage:[{ required: true,  trigger: "change",validator: validateImage}],
-            prodImages:[{ required: true,  trigger: "change",validator: validateImage1}],
-            prodDescImages:[{ required: true,  trigger: "change",validator: validateImage2}],
-            desc: [{ required: true, message: "请输入商品简介", trigger: "blur" }],
-            status:[{ required: true, message: "请选择上架状态", trigger: "change" }]
-          },
-          formInline: {
-            status:"all",
-          },
+          disabled: false,
+          formInline: {status:"all"},
           searchData: {},
           columns: [
             {
@@ -146,8 +180,7 @@
             {
               lable: "项目链接",
               prop: "projUrl",
-              align: "center",
-              width: "200",
+              align: "center"
             },
             {
               lable: "创建时间",
@@ -172,54 +205,124 @@
             {
               lable: "操作",
               align: "center",
-              width: "180",
+              width: "200",
               fixed: "right",
               render: (h, scope) => {
                 return h("div", [
                   h(
-                    "span",
+                    "el-button",
                     {
+                      props:{
+                        type:'text'
+                      },
                       style: {
-                        cursor: "pointer",
-                        color: "#3C8EFE",
-                        display: this.filterBtnById(150101)
-                          ? "inline-block"
-                          : "none",
+                        // display: this.filterBtnById(150101)
+                        //   ? "inline-block"
+                        //   : "none",
                       },
                       on: {
                         click: () => {
-                         
+                          this.title = '项目详情'; 
+                          this.disabled = true;
+                          let {projId} = scope.row;
+                          this.getProductDetail(projId);
                         },
                       },
                     },
                     "查看详情"
                   ),
                   h(
-                    "span",
+                    "el-button",
                     {
+                      props:{
+                        type:'text'
+                      },
                       style: {
-                        cursor: "pointer",
-                        "margin-left": "8px",
-                        color: "#3C8EFE",
-                        display: this.filterBtnById(150104)
-                          ? "inline-block"
-                          : "none",
+                        "margin-left": "15px",
+                        // display: this.filterBtnById(150104)
+                        //   ? "inline-block"
+                        //   : "none",
                       },
                       on: {
                         click: () => {
-                          
+                          this.title = '编辑项目'; 
+                          this.disabled = false;
+                          let {projId} = scope.row;
+                          this.getProductDetail(projId);
                         },
                       },
                     },
                     "编辑"
-                  ),
+                  )
                 ]);
               },
             },
           ],
           relustObj: {},
           addProd:false,
-          createdTime:[]
+          createdTime:[],
+          ruleForm:{
+            backFilePath:[],
+            logoFilePath:[],
+            titleFilePath:[],
+            qyFilePath:[],
+            ruleFilePath:[]
+          },
+          rules: {
+              projName: [
+                { required: true, message: '请输入项目名称', trigger: 'blur' }
+              ],
+              projPrice: [
+                { required: true, message: '请输入项目价格', trigger: 'blur' }
+              ],
+              projUrl: [
+                { required: true, message: '请输入项目链接', trigger: 'blur' }
+              ],
+              projDesc: [
+                { required: true, message: '请输入项目描述', trigger: 'blur' }
+              ],
+              status: [
+                { required: true, message: '请选择项目状态', trigger: 'change' }
+              ],
+              backFilePath: [
+                { required: true,trigger: 'change',validator: backFilePathImage }
+              ],
+              logoFilePath: [
+                { required: true,  trigger: 'change',validator: logoFilePathImage }
+              ],
+              titleFilePath: [
+                { required: true, trigger: 'change',validator: titleFilePathImage  }
+              ],
+              qyFilePath: [
+                { required: true,  trigger: 'change' ,validator: qyFilePathImage }
+              ],
+              ruleFilePath: [
+                { required: true,  trigger: 'change',validator: ruleFilePathImage  }
+              ]
+          },
+          title:"新增项目"
+      }
+    },
+    watch:{
+      addProd:{
+        handler: function(val) {
+          if(!val){
+            this.ruleForm = {
+              projName:"",
+              projPrice:"",
+              projUrl:"",
+              projDesc:"",
+              status:"",
+              backFilePath:[],
+              logoFilePath:[],
+              titleFilePath:[],
+              qyFilePath:[],
+              ruleFilePath:[]
+            };
+            this.$refs['ruleForm'].resetFields();
+          }
+        },
+        deep: true
       }
     },
     //生命周期 - 创建完成(可以访问当前this实例)
@@ -248,7 +351,9 @@
         this.addProd = false;
       },
       addProduct(){
-       this.disabled = false;
+        this.title = '新增项目';
+        this.addProd = true;
+        this.disabled = false;
       },
       onSearch() {
         if (this.createdTime && this.createdTime.length) {
@@ -284,19 +389,59 @@
       },
       getDataList(e) {
       },
-      // prodDescSend(e){
-      //    //文件上传
-      //   this.payForm.prodDescImages = e.map((res) => {
-      //     return res.filePath;
-      //   });
-      //   this.$refs.prodDescImagesIplaod.clearValidate();
-      // },
-      // productShowUSend(e){
-      //   this.payForm.prodListImages = e.map((res) => {
-      //     return res.filePath;
-      //   });
-      //   this.$refs.productShowUpload.clearValidate();
-      // },
+      submitForm(formName) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            let {backFilePath,logoFilePath,titleFilePath,qyFilePath,ruleFilePath,projId} = this.ruleForm;
+            let method = {projectUpdata,projectAdd};
+            let data  = {};
+            if(projId){
+              data = {...this.ruleForm,backFilePath:backFilePath[0],logoFilePath:logoFilePath[0],titleFilePath:titleFilePath[0],qyFilePath:qyFilePath[0],ruleFilePath:ruleFilePath[0]}
+            }else{
+              data = {...this.ruleForm,backFilePath:backFilePath[0],logoFilePath:logoFilePath[0],titleFilePath:titleFilePath[0],qyFilePath:qyFilePath[0],ruleFilePath:ruleFilePath[0]}
+            }
+            method[projId?"projectUpdata":"projectAdd"](data).then(res=>{
+              this.$message.success("创建成功");
+              this.addProd = false;
+              this.onSearch();
+            })
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      },
+      resetForm(formName) {
+        this.$refs[formName].resetFields();
+      },
+      imgSet(e,id){
+        let fileRef = id + "";
+         //文件上传
+        this.ruleForm[id] = e.map((res) => {
+          return res.filePath;
+        });
+        this.$refs[fileRef].clearValidate();
+      },
+      getProductDetail(projId,type){
+        projectDtl({projId:projId}).then(({body})=>{
+          let {backFilePath,logoFilePath,titleFilePath,qyFilePath,ruleFilePath} = body;
+          body.backFilePath = this.setDefaultImg(backFilePath,'backFilePath');
+          body.logoFilePath = this.setDefaultImg(logoFilePath,'logoFilePath');
+          body.titleFilePath = this.setDefaultImg(titleFilePath,"titleFilePath");
+          body.qyFilePath = this.setDefaultImg(qyFilePath,"qyFilePath");
+          body.ruleFilePath = this.setDefaultImg(ruleFilePath,"ruleFilePath");
+          this.ruleForm = body;
+          this.$nextTick(()=>{ 
+            this.addProd = true; 
+          });
+        })
+      },
+      setDefaultImg(url,type){
+        let backArr = [url].map((n,index)=>{
+          return {url:n,filePath:n,uid:type+index,fileId:type+index,fileName:n,name:n};
+        });
+        return backArr
+      }
     }
   };
   </script>
diff --git a/src/views/qyp-project-management/promotion.vue b/src/views/qyp-project-management/promotion.vue
index 54113f3..5994076 100644
--- a/src/views/qyp-project-management/promotion.vue
+++ b/src/views/qyp-project-management/promotion.vue
@@ -80,12 +80,14 @@
             </div>
           </div>
           <el-form-item style="text-align: right;">
-            <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" v-if='filterBtnById("150102")' @click="addProduct">新 增</el-button>
             <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" @click="onSearch">查 询</el-button>
           </el-form-item>
         </el-form>
       </div>
       <div class="table_box">
+        <div  style="margin-left: 10px;text-align: right;">
+          <el-button type="primary" size="small" @click="addPromotion">新增推广位</el-button>
+        </div>
         <Etable
           hasIndex
           httpUrl="promoteList"
@@ -99,10 +101,41 @@
           }"
         ></Etable>
       </div>
-      <el-dialog top="8vh"  title="新增商品" :visible.sync="addProd" width="60%">
+      <el-dialog top="2vh"  :title="title" :visible.sync="addProd" width="50%">
         <!-- 新增商品名称 -->
-       
-      
+        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" :disabled="disabled" size="small" label-width="100px" class="demo-ruleForm">
+            <el-form-item label="项目" prop="projId">
+              <el-select v-model="ruleForm.projId"  placeholder="请选择项目">
+                <el-option
+                  v-for="item in relustObj.projList"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="代理名称" prop="agencyName">
+              <el-input v-model="ruleForm.agencyName" :disabled="disabled"></el-input>
+            </el-form-item>
+            <el-form-item label="推广位名称" prop="promName">
+              <el-input v-model="ruleForm.promName"></el-input>
+            </el-form-item>
+            <el-form-item label="推广位姓名" prop="promoterName">
+              <el-input v-model="ruleForm.promoterName"></el-input>
+            </el-form-item>
+            <el-form-item label="推广位电话" prop="promoterMblNo">
+              <el-input v-model="ruleForm.promoterMblNo"></el-input>
+            </el-form-item>
+            <el-form-item label="推广位状态" prop="status">
+              <el-radio-group v-model="ruleForm.status" :disabled="disabled">
+                <el-radio v-for="item in relustObj.statusList" :key="item.code" :label="item.code">{{ item.name }}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item style="text-align:right;" v-if="!disabled">
+              <el-button type="primary" @click="submitForm('ruleForm')">保 存</el-button>
+              <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
+            </el-form-item>
+        </el-form>
       </el-dialog>
     </div>
   </template>
@@ -111,39 +144,14 @@
   import Etable from "@/components/table.vue";
   import {promoteInit,promoteAdd,promoteDtl,promotePpdate} from "@/api/credit";
   import uploadImg from "@/components/upload.vue";
-  import MultipleSelect from "@/components/secect.vue";
+  import MultipleSelect from "@/components/fl-select.vue";
   export default {
     name: "order",
     components: { Etable, MultipleSelect, uploadImg },
     data() {
-      let validateImage = (rule, value, callback) => { //验证器
-        if (!this.payForm.prodListImages.length) {     //为true代表图片在  false报错
-          callback(new Error('请上传商品展示图片'));
-        } else {
-          callback();
-        }
-      };
-      let validateImage1 = (rule, value, callback) => { //验证器
-        if (!this.payForm.prodImages.length) {     //为true代表图片在  false报错
-          callback(new Error('请上传商品轮播图'));
-        } else {
-          callback();
-        }
-      };
-      let validateImage2 = (rule, value, callback) => { //验证器
-        if (!this.payForm.prodDescImages.length) {     //为true代表图片在  false报错
-          callback(new Error('请上传商品详情图片'));
-        } else {
-          callback();
-        }
-      };
       return {
-          disabled: true,
-          payForm: {
-            prodImages: [],
-            prodListImages:[],
-            prodDescImages:"",
-          },
+          disabled: false,
+          ruleForm: {},
           columns: [
             {
               lable: "推广位链接",
@@ -204,37 +212,46 @@
               render: (h, scope) => {
                 return h("div", [
                   h(
-                    "span",
+                    "el-button",
                     {
+                      props:{
+                        type:'text',
+                        size:'small'
+                      },
                       style: {
-                        cursor: "pointer",
-                        color: "#3C8EFE",
-                        display: this.filterBtnById(150101)
-                          ? "inline-block"
-                          : "none",
+                        // display: this.filterBtnById(150101)
+                        //   ? "inline-block"
+                        //   : "none",
                       },
                       on: {
                         click: () => {
-                         
+                          this.title ='推广位详情';
+                          this.disabled =true;
+                          let { promId } = scope.row;
+                          this.getProductDetail(promId)
                         },
                       },
                     },
                     "查看详情"
                   ),
                   h(
-                    "span",
+                    "el-button",
                     {
+                      props:{
+                        type:'text',
+                        size:'small'
+                      },
                       style: {
-                        cursor: "pointer",
-                        "margin-left": "8px",
-                        color: "#3C8EFE",
-                        display: this.filterBtnById(150104)
-                          ? "inline-block"
-                          : "none",
+                        // display: this.filterBtnById(150101)
+                        //   ? "inline-block"
+                        //   : "none",
                       },
                       on: {
                         click: () => {
-                          
+                          this.disabled = false;
+                          this.title ='编辑推广位';
+                          let { promId } = scope.row;
+                          this.getProductDetail(promId)
                         },
                       },
                     },
@@ -244,25 +261,40 @@
               },
             },
           ],
-          licensePaths: [],
-          prodListImages:[],
-          prodDescImages:[],
-          payFormRule: {
-            prodListImage:[{ required: true,  trigger: "change",validator: validateImage}],
-            prodImages:[{ required: true,  trigger: "change",validator: validateImage1}],
-            prodDescImages:[{ required: true,  trigger: "change",validator: validateImage2}],
-            desc: [{ required: true, message: "请输入商品简介", trigger: "blur" }],
+          rules: {
+            projId:[{ required: true,  trigger: "change",message: "请选择项目"}],
+            agencyName:[{ required: true,  trigger: "blur",message: "请输入代理名称"}],
+            promName:[{ required: true,  trigger: "blur",message: "请输入推广位名称"}],
+            promoterName:[{ required: true,  trigger: "blur",message: "请输入推广位姓名"}],
+            promoterMblNo:[{ required: true,  trigger: "blur",message: "请输入推广位电话"}],
             status:[{ required: true, message: "请选择上架状态", trigger: "change" }]
           },
           formInline: {
             status:"all",
           },
           searchData: {},
-          
           relustObj: {},
           addProd:false,
           createdTime:[],
-          promotionCreatedTime:[]
+          promotionCreatedTime:[],
+          title:'新增推广位'
+      }
+    },
+    watch:{
+      addProd:{
+        handler: function(val) {
+          if(!val){
+            this.ruleForm = {
+              agencyName:"",
+              promName:"",
+              promoterName:"",
+              promoterMblNo:"",
+              status:""
+            };
+            this.$refs['ruleForm'].resetFields();
+          }
+        },
+        deep: true
       }
     },
     //生命周期 - 创建完成(可以访问当前this实例)
@@ -274,14 +306,14 @@
         //只能输入整数
         e.target.value = e.target.value.replace(/[^\d]/g, "");
       },
-      addPDH(){
-        this.$refs['skuObj'].validate((valid) => {
+      submitForm(){
+        this.$refs['ruleForm'].validate((valid) => {
             if(valid){
-              let {productAttr,prodName,prodFundType,prodOsType} = this.skuObj;
-              let data = {prodName,prodFundType,prodOsType,prodBrandCode:productAttr[1].value,prodModelCode:productAttr[2].value,prodType:productAttr[0].value};
-              prodAdd(data).then((res)=>{
+              let { promId } = this.ruleForm;
+              let event = {promoteAdd,promotePpdate};
+              event[promId?"promotePpdate":"promoteAdd"](this.ruleForm).then((res)=>{
                 this.addProd = false;
-                this.initSerch();
+                this.onSearch();
               })
             }
         })
@@ -290,7 +322,9 @@
         this.$refs["skuObj"].resetFields();
         this.addProd = false;
       },
-      addProduct(){
+      addPromotion(){
+       this.addProd = true;
+       this.title='新增推广位';
        this.disabled = false;
       },
       onSearch() {
@@ -334,19 +368,14 @@
       },
       getDataList(e) {
       },
-      // prodDescSend(e){
-      //    //文件上传
-      //   this.payForm.prodDescImages = e.map((res) => {
-      //     return res.filePath;
-      //   });
-      //   this.$refs.prodDescImagesIplaod.clearValidate();
-      // },
-      // productShowUSend(e){
-      //   this.payForm.prodListImages = e.map((res) => {
-      //     return res.filePath;
-      //   });
-      //   this.$refs.productShowUpload.clearValidate();
-      // },
+      getProductDetail(promId,type){
+        promoteDtl({promId:promId}).then(({body})=>{
+          this.ruleForm = body;
+          this.$nextTick(()=>{ 
+            this.addProd = true; 
+          });
+        })
+      },
     }
   };
   </script>
diff --git a/src/views/qyp-project-order/admin.vue b/src/views/qyp-project-order/admin.vue
index 85de38c..8ae691e 100644
--- a/src/views/qyp-project-order/admin.vue
+++ b/src/views/qyp-project-order/admin.vue
@@ -1,28 +1,334 @@
 <template>
-    <div>
+    <div class="main_index">
+      <div class="search_from">
+        <el-form
+          :model="formInline"
+          inline
+          label-width="100px"
+          class="form-flex"
+          size="small"
+        >
+          <div style="width: 90%">
+            <el-form-item label="订单编号:">
+              <el-input
+                v-model.trim="formInline.orderId"
+                style="width: 240px"
+                @keyup.native="keyupEvent($event)"
+                type="tel"
+                clearable
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="电话号码:">
+              <el-input
+                v-model.trim="formInline.mblNo"
+                style="width: 240px"
+                @keyup.native="keyupEvent($event)"
+                type="tel"
+                clearable
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+           
+            <el-form-item label="签约时间:">
+              <el-date-picker
+                v-model="createdTime"
+                style="width: 240px"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+                type="daterange"
+                range-separator="-"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="推广位:">
+                <el-select
+                    v-model="formInline.promId"
+                    style="width:240px"
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option label="全部" value="all"></el-option>
+                    <el-option
+                      v-for="item in relustObj.promoteList"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    ></el-option>
+                  </el-select>
+            </el-form-item>
+            <el-form-item label="订单状态:">
+                  <el-select
+                    v-model="formInline.orderStatus"
+                    style="width:240px"
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option label="全部" value="all"></el-option>
+                    <el-option
+                      v-for="item in relustObj.orderStatusList"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    ></el-option>
+                  </el-select>
+            </el-form-item>
+            <el-form-item label="代理名称:">
+                  <el-select
+                    v-model="formInline.agencyName"
+                    style="width:240px"
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option label="全部" value="all"></el-option>
+                    <el-option
+                      v-for="item in relustObj.agencyList"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    ></el-option>
+                  </el-select>
+            </el-form-item>
+          </div>
+          <el-form-item style="text-align: right;">
 
+            <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" @click="onSearch">查 询</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="table_box">
+        <div  style="margin-left: 10px;text-align: right;">
+          <el-button type="primary" size="small" @click="addProduct">导出excel</el-button>
+        </div>
+        <Etable
+          hasIndex
+          hasSelection
+          rowKey="orderId"
+          httpUrl="orderList"
+          :columns="columns"
+          :searchData="searchData"
+          @getDataList="getDataList"
+          @handleSelectionChange="handleSelectionChange"
+          :exportUrl="{
+            url: '/qyp/order/orderExport',
+            powerId: '',
+            name: '订单列表',
+          }"
+        ></Etable>
+      </div>
+      <el-dialog top="2vh"  :title="title" :visible.sync="addProd" width="60%">
+        <el-descriptions>
+            <el-descriptions-item label="订单编号">{{ orderDetail.orderId }}</el-descriptions-item>
+            <el-descriptions-item label="订单创建时间">{{ orderDetail.creTime }}</el-descriptions-item>
+            <el-descriptions-item label="订单状态">{{ orderDetail.orderStatusStr }}</el-descriptions-item>
+            <el-descriptions-item label="电话号码">{{ orderDetail.mblNo }}</el-descriptions-item>
+            <el-descriptions-item label="代理名称">{{ orderDetail.agencyName }}</el-descriptions-item>
+            <el-descriptions-item label="推广位名称">{{ orderDetail.promName }}</el-descriptions-item>
+            <el-descriptions-item label="签约时间">{{ orderDetail.signTime }}</el-descriptions-item>
+            <el-descriptions-item label="解约时间">{{ orderDetail.terminateTime }}</el-descriptions-item>
+            <el-descriptions-item label="项目名称">{{ orderDetail.projName }}</el-descriptions-item>
+        </el-descriptions>
+      </el-dialog>
     </div>
-</template>
-
-<script>
-export default {
+  </template>
+  
+  <script>
+  import Etable from "../../components/table.vue";
+  import {orderInit,orderDtl} from "@/api/credit";
+  import uploadImg from "@/components/upload.vue";
+  export default {
+    name: "order",
+    components: { Etable,uploadImg },
     data() {
-        return {
-
-        };
+      return {
+          formInline: {status:"all"},
+          searchData: {},
+          columns: [
+            {
+              lable: "订单编号",
+              prop: "orderId",
+              align: "center",
+              width: "300",
+            },
+            {
+              lable: "签约时间",
+              prop: "signTime",
+              align: "center",
+              width: "180",
+            },
+            {
+              lable: "订单状态",
+              prop: "orderStatusStr",
+              align: "center"
+            },
+            {
+              lable: "电话号码",
+              prop: "mblNo",
+              align: "center",
+              width: "150",
+            },
+            {
+              lable: "代理名称",
+              prop: "agencyName",
+              align: "center",
+              width: "180",
+            },
+            {
+              lable: "推广位名称",
+              prop: "promName",
+              align: "center",
+              width: "180"
+            },
+            {
+              lable: "支付金额",
+              prop: "payAmt",
+              align: "center",
+              width: "180"
+            },
+            {
+              lable: "支付方式",
+              prop: "payType",
+              align: "center",
+              width: "180"
+            },
+            {
+              lable: "是否使用优惠券",
+              prop: "useCoup",
+              align: "center",
+              width: "180"
+            },
+            {
+              lable: "",
+            },
+            {
+              lable: "操作",
+              align: "center",
+              width: "200",
+              fixed: "right",
+              render: (h, scope) => {
+                return h("div", [
+                  h(
+                    "el-button",
+                    {
+                      props:{
+                        type:'text'
+                      },
+                      style: {
+                        // display: this.filterBtnById(150101)
+                        //   ? "inline-block"
+                        //   : "none",
+                      },
+                      on: {
+                        click: () => {
+                          this.title = '订单详情'; 
+                          let {orderId} = scope.row;
+                          this.getProductDetail(orderId);
+                        },
+                      },
+                    },
+                    "查看详情"
+                  )
+                ]);
+              },
+            },
+          ],
+          relustObj: {},
+          addProd:false,
+          createdTime:[],
+          title:"新增项目",
+          orderDetail:{},
+          exportExcelList:[]
+      }
     },
+    watch:{
+      addProd:{
+        handler: function(val) {
+          if(!val){
+          }
+        },
+        deep: true
+      }
+    },
+    //生命周期 - 创建完成(可以访问当前this实例)
     created() {
-
-    },
-    mounted() {
-
+      this.initSerch();
     },
     methods: {
-
+      addProduct(){
+        if(!this.exportExcelList.length){
+            return this.$message.error("请选择订单后导出");
+        }
+      },
+      keyupEvent(e) {
+        //只能输入整数
+        e.target.value = e.target.value.replace(/[^\d]/g, "");
+      },
+      onSearch() {
+        if (this.createdTime && this.createdTime.length) {
+          this.formInline.signStartTime = this.createdTime[0];
+          this.formInline.signEndTime = this.createdTime[1];
+        } else {
+          this.formInline.signStartTime = null;
+          this.formInline.signEndTime = null;
+        }
+        let objForm = JSON.parse(JSON.stringify(this.formInline));
+        for (let key in objForm) {
+          if (objForm[key] === "all") {
+            delete objForm[key];
+          }
+        }
+        this.searchData = { ...objForm };
+      },
+      initSerch() {
+        orderInit().then(({ body }) => {
+          this.relustObj = body;
+        });
+      },
+      getDataList(e) {
+      },
+      handleSelectionChange(list){
+        this.exportExcelList = list;
+      },
+      getProductDetail(orderId){
+        orderDtl({orderId:orderId}).then(({body})=>{
+         this.orderDetail = body;
+         this.addProd = true;
+        })
+      }
     }
-};
-</script>
-
-<style scoped lang="less">
-
-</style>
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .main_index {
+    background-color: #f0f2f5;
+    .table_box_num {
+      margin-top: 5px;
+      display: flex;
+      justify-content: flex-end;
+      align-items: center;
+      color: #666;
+      font-size: 14px;
+      font-weight: bold;
+      padding-right: 16px;
+      box-sizing: border-box;
+      span {
+        display: inline-block;
+        &:nth-child(even) {
+          margin-right: 20px;
+          color: #333;
+        }
+      }
+    }
+    .el-form-div {
+      width: 100%;
+      display: flex;
+    }
+    .tips{
+      color: #f56c6c;
+    }
+  }
+  </style>
+  
\ No newline at end of file
diff --git a/src/views/qyp-project-order/history.vue b/src/views/qyp-project-order/history.vue
index 3d99a85..bbe31b8 100644
--- a/src/views/qyp-project-order/history.vue
+++ b/src/views/qyp-project-order/history.vue
@@ -1,8 +1,9 @@
+
 <!--
  * @Author: zhaoxiaoqiang 287285524@qq.com
  * @Date: 2023-08-24 15:16:23
  * @LastEditors: zhaoxiaoqiang 287285524@qq.com
- * @LastEditTime: 2023-08-24 16:57:47
+ * @LastEditTime: 2023-08-31 08:58:17
  * @FilePath: \qyp_plat\src\views\qyp-project-order\history.vue
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
diff --git a/src/views/qyp-project-order/index.vue b/src/views/qyp-project-order/index.vue
index 85de38c..0a2c42f 100644
--- a/src/views/qyp-project-order/index.vue
+++ b/src/views/qyp-project-order/index.vue
@@ -1,28 +1,300 @@
 <template>
-    <div>
-
+    <div class="main_index">
+      <div class="search_from">
+        <el-form
+          :model="formInline"
+          inline
+          label-width="100px"
+          class="form-flex"
+          size="small"
+        >
+          <div style="width: 90%">
+            <el-form-item label="订单编号:">
+              <el-input
+                v-model.trim="formInline.orderId"
+                style="width: 240px"
+                @keyup.native="keyupEvent($event)"
+                type="tel"
+                clearable
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="电话号码:">
+              <el-input
+                v-model.trim="formInline.mblNo"
+                style="width: 240px"
+                @keyup.native="keyupEvent($event)"
+                type="tel"
+                clearable
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+           
+            <el-form-item label="签约时间:">
+              <el-date-picker
+                v-model="createdTime"
+                style="width: 240px"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+                type="daterange"
+                range-separator="-"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="推广位:">
+                <el-select
+                    v-model="formInline.promId"
+                    style="width:240px"
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option label="全部" value="all"></el-option>
+                    <el-option
+                      v-for="item in relustObj.promoteList"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    ></el-option>
+                  </el-select>
+            </el-form-item>
+            <el-form-item label="订单状态:">
+                  <el-select
+                    v-model="formInline.orderStatus"
+                    style="width:240px"
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option label="全部" value="all"></el-option>
+                    <el-option
+                      v-for="item in relustObj.orderStatusList"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    ></el-option>
+                  </el-select>
+            </el-form-item>
+          </div>
+          <el-form-item style="text-align: right;">
+            <!--  v-if='filterBtnById("150102")' -->
+            <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" @click="onSearch">查 询</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="table_box">
+        <div  style="margin-left: 10px;text-align: right;">
+          <el-button type="primary" size="small" @click="addProduct">导出excel</el-button>
+        </div>
+        <Etable
+          hasIndex
+          hasSelection
+          rowKey="orderId"
+          httpUrl="orderList"
+          :columns="columns"
+          :searchData="searchData"
+          @getDataList="getDataList"
+          @handleSelectionChange="handleSelectionChange"
+          :exportUrl="{
+            url: '/qyp/order/orderExport',
+            powerId: '',
+            name: '订单列表',
+          }"
+        ></Etable>
+      </div>
+      <el-dialog top="2vh"  :title="title" :visible.sync="addProd" width="60%">
+        <el-descriptions>
+            <el-descriptions-item label="订单编号">{{ orderDetail.orderId }}</el-descriptions-item>
+            <el-descriptions-item label="订单创建时间">{{ orderDetail.creTime }}</el-descriptions-item>
+            <el-descriptions-item label="订单状态">{{ orderDetail.orderStatusStr }}</el-descriptions-item>
+            <el-descriptions-item label="电话号码">{{ orderDetail.mblNo }}</el-descriptions-item>
+            <el-descriptions-item label="代理名称">{{ orderDetail.agencyName }}</el-descriptions-item>
+            <el-descriptions-item label="推广位名称">{{ orderDetail.promName }}</el-descriptions-item>
+            <el-descriptions-item label="签约时间">{{ orderDetail.signTime }}</el-descriptions-item>
+            <el-descriptions-item label="解约时间">{{ orderDetail.terminateTime }}</el-descriptions-item>
+            <el-descriptions-item label="项目名称">{{ orderDetail.projName }}</el-descriptions-item>
+        </el-descriptions>
+      </el-dialog>
     </div>
-</template>
-
-<script>
-export default {
+  </template>
+  
+  <script>
+  import Etable from "../../components/table.vue";
+  import {orderInit,orderDtl} from "@/api/credit";
+  import uploadImg from "@/components/upload.vue";
+  export default {
+    name: "order",
+    components: { Etable,uploadImg },
     data() {
-        return {
-
-        };
+      return {
+          formInline: {status:"all"},
+          searchData: {},
+          columns: [
+            {
+              lable: "订单编号",
+              prop: "orderId",
+              align: "center",
+              width: "300",
+            },
+            {
+              lable: "签约时间",
+              prop: "signTime",
+              align: "center",
+              width: "180",
+            },
+            {
+              lable: "订单状态",
+              prop: "orderStatusStr",
+              align: "center"
+            },
+            {
+              lable: "电话号码",
+              prop: "mblNo",
+              align: "center",
+              width: "150",
+            },
+            {
+              lable: "代理名称",
+              prop: "agencyName",
+              align: "center",
+              width: "180",
+            },
+            {
+              lable: "推广位名称",
+              prop: "promName",
+              align: "center",
+              width: "180"
+            },
+            {
+              lable: "",
+            },
+            {
+              lable: "操作",
+              align: "center",
+              width: "200",
+              fixed: "right",
+              render: (h, scope) => {
+                return h("div", [
+                  h(
+                    "el-button",
+                    {
+                      props:{
+                        type:'text'
+                      },
+                      style: {
+                        // display: this.filterBtnById(150101)
+                        //   ? "inline-block"
+                        //   : "none",
+                      },
+                      on: {
+                        click: () => {
+                          this.title = '订单详情'; 
+                          let {orderId} = scope.row;
+                          this.getProductDetail(orderId);
+                        },
+                      },
+                    },
+                    "查看详情"
+                  )
+                ]);
+              },
+            },
+          ],
+          relustObj: {},
+          addProd:false,
+          createdTime:[],
+          title:"新增项目",
+          orderDetail:{},
+          exportExcelList:[]
+      }
     },
+    watch:{
+      addProd:{
+        handler: function(val) {
+          if(!val){
+          }
+        },
+        deep: true
+      }
+    },
+    //生命周期 - 创建完成(可以访问当前this实例)
     created() {
-
-    },
-    mounted() {
-
+      this.initSerch();
     },
     methods: {
-
+      addProduct(){
+        if(!this.exportExcelList.length){
+            return this.$message.error("请选择订单后导出");
+        }
+      },
+      keyupEvent(e) {
+        //只能输入整数
+        e.target.value = e.target.value.replace(/[^\d]/g, "");
+      },
+      onSearch() {
+        if (this.createdTime && this.createdTime.length) {
+          this.formInline.signStartTime = this.createdTime[0];
+          this.formInline.signEndTime = this.createdTime[1];
+        } else {
+          this.formInline.signStartTime = null;
+          this.formInline.signEndTime = null;
+        }
+        let objForm = JSON.parse(JSON.stringify(this.formInline));
+        for (let key in objForm) {
+          if (objForm[key] === "all") {
+            delete objForm[key];
+          }
+        }
+        this.searchData = { ...objForm };
+      },
+      initSerch() {
+        orderInit().then(({ body }) => {
+          this.relustObj = body;
+        });
+      },
+      getDataList(e) {
+      },
+      handleSelectionChange(list){
+        this.exportExcelList = list;
+      },
+      getProductDetail(orderId){
+        orderDtl({orderId:orderId}).then(({body})=>{
+         this.orderDetail = body;
+         this.addProd = true;
+        })
+      }
     }
-};
-</script>
-
-<style scoped lang="less">
-
-</style>
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .main_index {
+    background-color: #f0f2f5;
+    .table_box_num {
+      margin-top: 5px;
+      display: flex;
+      justify-content: flex-end;
+      align-items: center;
+      color: #666;
+      font-size: 14px;
+      font-weight: bold;
+      padding-right: 16px;
+      box-sizing: border-box;
+      span {
+        display: inline-block;
+        &:nth-child(even) {
+          margin-right: 20px;
+          color: #333;
+        }
+      }
+    }
+    .el-form-div {
+      width: 100%;
+      display: flex;
+    }
+    .tips{
+      color: #f56c6c;
+    }
+  }
+  </style>
+  
\ No newline at end of file

--
Gitblit v1.8.0