zhaoxiaoqiang
2023-09-07 e2f0865c2a1167d36208a8c41eb5f18c684c786b
src/views/qyp-project-order/index.vue
@@ -1,28 +1,305 @@
<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;">
            <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" v-if='filterBtnById("430101")' >导出excel</el-button>
        </div>
        <Etable
          hasIndex
          hasSelection
          rowKey="orderId"
          httpUrl="orderBaseList"
          :columns="columns"
          :searchData="searchData"
          @getDataList="getDataList"
          @handleSelectionChange="handleSelectionChange"
          :exportUrl="{
            url: '/qyp/order/orderBaseExport',
            powerId: '430102',
            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,orderBaseExport} from "@/api/order";
  import uploadImg from "@/components/upload.vue";
  import downloadUrl from "@/utils/excelDownLoadConfig";
  export default {
    name: "order",
    components: { Etable,uploadImg },
    data() {
        return {
        };
      return {
          formInline: {promId:"all",orderStatus:"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(430103)
                          ? "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("请选择订单后导出");
        }
        orderBaseExport({orderIdList:this.exportExcelList.join(',')}).then((res) => {
          downloadUrl.configDate2(res, '订单列表');
        });
      },
      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"||objForm[key] === ""||objForm[key] === null) {
            delete objForm[key];
          }
        }
        this.searchData = { ...objForm };
      },
      initSerch() {
        orderInit().then(({ body }) => {
          this.relustObj = body;
        });
      },
      getDataList(e) {
      },
      handleSelectionChange(list){
        this.exportExcelList = list.map(d=>{
          return d.orderId
        });
      },
      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>