zhaoxiaoqiang
2023-08-31 1e49e17d482e3a3e67108bdffa4ae5f374e26cb8
订单管理管理员订单管理
1 files renamed
11 files modified
1402 ■■■■ changed files
src/api/credit.js 16 ●●●●● patch | view | raw | blame | history
src/api/listapi.js 7 ●●●●● patch | view | raw | blame | history
src/api/user.js 11 ●●●● patch | view | raw | blame | history
src/components/fl-select.vue 2 ●●● patch | view | raw | blame | history
src/components/table.vue 16 ●●●● patch | view | raw | blame | history
src/components/upload.vue 260 ●●●● patch | view | raw | blame | history
src/utils/MenuUtils.js 3 ●●●● patch | view | raw | blame | history
src/views/qyp-project-management/index.vue 283 ●●●● patch | view | raw | blame | history
src/views/qyp-project-management/promotion.vue 183 ●●●●● patch | view | raw | blame | history
src/views/qyp-project-order/admin.vue 326 ●●●●● patch | view | raw | blame | history
src/views/qyp-project-order/history.vue 3 ●●●● patch | view | raw | blame | history
src/views/qyp-project-order/index.vue 292 ●●●●● patch | view | raw | blame | history
src/api/credit.js
@@ -74,3 +74,19 @@
    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
  })
}
src/api/listapi.js
@@ -40,5 +40,12 @@
      data,
    });
  },
  orderList(data) {
    return request({
      url: "/qyp/order/orderList",
      method: "post",
      data,
    });
  },
};
export default accountApi;
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
  })
}
src/components/fl-select.vue
File was renamed from src/components/secect.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  
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();
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"
        :limit='limit'
      multiple
      class="upload-demo"
      :list-type="!isUploadOther?'picture-card':''"
      :disabled="disabled"
        :disabled='disabled'
        list-type="picture-card"
      :on-exceed="masterFileMax"
      :before-upload="beforeAvatarUpload"
      :http-request="uploadFileData"
      :file-list="PicList"
      :class="[uploadDisabled ? 'updispaly' : '']"
        :file-list="pictureList"
    >
      <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>
        <i 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'
              "
            >
              <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>
            <!-- <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)">
            <span
                class="el-upload-list__item-preview"
                @click="handlePictureCardPreview(file)"
            >
              <i class="el-icon-zoom-in"></i>
            </span>
            <span v-if='!disabled' class="el-upload-list__item-delete" @click="handleRemoveLoanT(file)">
            <span  v-if='!disabled'
                class="el-upload-list__item-delete"
                @click="handleRemoveLoanT(file)"
            >
              <i class="el-icon-delete"></i>
            </span>
          </span>
        </template>
      </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: "",
      type: Number,
      default: 1
    },
    disabled: {
      type: Boolean,
      default: false,
      default: false
    },
    defaultList: {
      type: Array,
      default: () => {
        return [];
          return []
      }
      },
    },
    imgSize: {
      type: Object,
      default: () => {
        return {};
      },
    },
    imgStyle: {
      type: Object,
      default: () => {
        return {
          width: "100px",
          height: "100px",
        };
      },
    },
    isUploadOther: {
     isProject:{
      type: Boolean,
      default: false,
    },
      default: false
     }
  },
  data() {
    return {
      PicList: [],
          pictureList:[],
      imgVisible: false,
      dialogImageUrl: "",
          dialogImageUrl:'',
      uploadFileForm: {
        suffix: "",
        base64Data: "",
      },
      uploadDisabled: false,
             base64Data:""
          }
    };
  },
  watch: {
    defaultList: {
      handler: function (val) {
        this.PicList = val;
          console.log(val)
          this.pictureList = val;
      },
      deep: true,
    },
        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("请检查文件格式");
          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("上传图片大小不能超过 100MB!");
              this.$message.error("上传图片大小不能超过 15MB!");
        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{
          //上传图片
          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 => {
          imgShrink(file.file).then(resBase64 => {
            this.uploadFileForm.base64Data = resBase64.split(",")[1];
              let apiEvent = {uploadFile};
            //直接拿到base64信息
            uploadFile(this.uploadFileForm).then(res => {
              this.PicList.push({
              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.uploadDisabled = this.PicList.length >= 1 && this.limit==1
              this.$emit('sendList', this.PicList);
                  this.$emit('sendList',this.pictureList);
            });
          });
      }
    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.imgVisible = true;
    },
    handleRemoveLoanT(file) {
      const index = this.PicList.findIndex((item) => {
        return item.fileId == file.fileId;
        const index = this.pictureList.findIndex(item => {
            return item.uid == file.uid;
      });
      this.PicList.splice(index, 1);
      this.uploadDisabled = this.PicList.length >= 1 && this.limit == 1;
      this.$emit("sendList", this.PicList);
        this.pictureList.splice(index,1);
        this.$emit('sendList',this.pictureList);
    },
    masterFileMax() {
      this.$message.warning(`最多上传 ${this.limit} 个文件。`);
        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;
  }
}
.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>
.el-upload--picture-card , .el-upload-list__item{
  width: 74px !important;
  height: 74px !important;
  line-height: 76px !important;
}
</style>
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 = [{
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,6 +351,8 @@
        this.addProd = false;
      },
      addProduct(){
        this.title = '新增项目';
        this.addProd = true;
       this.disabled = false;
      },
      onSearch() {
@@ -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>
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>
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>
  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 {
        };
          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 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>
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
-->
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>
  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 {
        };
          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 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>