yangfeng
2023-08-18 96fdf32bd5612b6c16dcbcc8352a9f54adcc8e7e
src/views/other/commonDialog/SelectCommonDialog.vue
@@ -10,15 +10,22 @@
    >
      <div class="bg-view">
        <div class="query-bg">
          <el-input placeholder="请输入内容" v-model="queryInput" size="mini" class="input-with-select">
          <!-- <el-input placeholder="请输入内容" v-model="queryInput" size="mini" class="input-with-select">
            <el-select v-model="select" slot="prepend" placeholder="请选择">
              <el-option v-for="item in commonOptions" :key="item.id" :label="item.name" :value="item.name">
              </el-option>
            </el-select>
          </el-input>
          </el-input> -->
          <SearchCommonView
            ref="searchCommonView"
            :search-options="searchOptions"
            @searchClick="searchClick"
            @resetClick="resetClick"
            :search-sel="searchSel"
          />
          <div class="btn">
            <el-button type="primary" size="mini" disabled>设置字段</el-button>
            <el-button type="primary" size="mini" disabled>快速创建</el-button>
            <!-- <el-button type="primary" size="mini" disabled>设置字段</el-button>
            <el-button type="primary" size="mini" disabled>快速创建</el-button> -->
          </div>
        </div>
        <TableCommonView ref="tableListRef" :table-list="tableList" :select-box="false" @selCommonClick="selNameClick">
@@ -32,6 +39,12 @@
</template>
<script>
import { getMasterOrderList } from "@/api/sales/masterOrder"
import { getQuotationList } from "@/api/sales/quotation"
import { getSalesDetailsList } from "@/api/sales/salesDetails"
import { getServiceContractList } from "@/api/serviceManage/serviceContract"
import { getServiceOrderList } from "@/api/serviceManage/clientServiceOrder"
import { getProductList } from "@/api/common/other"
export default {
  name: "EditSelCommonDialog",
  props: {
@@ -58,52 +71,260 @@
      searchSelOptions: [],
      loading: false,
      tableList: {},
      commonOptions: []
      searchOptions: [],
      search_map: {},
      searchSel: {},
      keyword: "",
      keywordType: ""
    }
  },
  created() {
    this.setTable()
    this.getData()
  },
  methods: {
    setTable() {
      if (this.editConfig.title === "销售总单") {
        this.tableList = {
          tableInfomation: this.editConfig.tableInfomation,
          tableInfomation: [],
          tableColumn: [
            { label: "单据编号", prop: "number", isClick: true }, // 单据编号
            { label: "负责人", prop: "member_id" } // 负责人
            { label: "负责人", prop: "member_name" } // 负责人
          ]
        }
        this.searchSel = { value: "number", label: "单据编号" }
      } else if (this.editConfig.title === "服务合同") {
        this.tableList = {
          tableInfomation: this.editConfig.tableInfomation,
          tableInfomation: [],
          tableColumn: [
            { label: "客户名称", prop: "clientId" }, // 客户名称
            { label: "客户名称", prop: "client_name" }, // 客户名称
            { label: "服务合同编号", prop: "number", isClick: true }, // 服务合同编号
            { label: "负责人", prop: "memberId" }, // 负责人
            { label: "负责人", prop: "member_name" }, // 负责人
            { label: "合计", prop: "total" }, // 合计
            { label: "签约日期", prop: "signTime", isTime: true }, // 签约日期
            { label: "合同状态", prop: "serviceContractStatusId" } // 合同状态
            { label: "合同状态", prop: "serviceContractStatus" } // 合同状态
          ]
        }
        this.searchSel = { value: "number", label: "服务合同编号" }
      } else if (this.editConfig.title === "销售明细单") {
        this.tableList = {
          tableInfomation: this.editConfig.tableInfomation,
          tableInfomation: [],
          tableColumn: [
            { label: "客户名称", prop: "clientId" }, // 客户名称
            { label: "客户名称", prop: "client_name" }, // 客户名称
            { label: "订单编号", prop: "number", isClick: true }, // 订单编号
            { label: "签约日期", prop: "signTime" }, // 签约日期
            { label: "销售负责人", prop: "memberId" }, // 销售负责人
            { label: "销售负责人", prop: "member_name" }, // 销售负责人
            { label: "合计", prop: "tptal" } // 合计
          ]
        }
        this.searchSel = { value: "number", label: "订单编号" }
      } else if (this.editConfig.title === "报价单") {
        this.tableList = {
          tableInfomation: [],
          tableColumn: [
            { label: "报价单号", prop: "number", isClick: true }, // 报价单号
            { label: "销售负责人", prop: "member_name" } // 销售负责人
          ]
        }
        this.searchSel = { value: "number", label: "报价单号" }
      } else if (this.editConfig.title === "客户服务单") {
        this.tableList = {
          tableInfomation: [],
          tableColumn: [
            { label: "服务单编号", prop: "serviceNumber", isClick: true }, // 服务单编号
            { label: "主题", prop: "subject" }, // 主题
            { label: "服务方式", prop: "serviceType_name" }, // 服务方式
            { label: "服务人员", prop: "serviceMan_name" }, // 服务人员
            { label: "优先级别", prop: "priorityLevel_name" }, // 优先级别
            { label: "处理状态", prop: "serviceOrderStatus_name" }, // 处理状态
            { label: "客户签名", prop: "qianming" } // 客户签名
          ]
        }
        this.searchSel = { value: "serviceNumber", label: "服务单编号" }
      } else if (this.editConfig.title === "产品名称") {
        this.tableList = {
          tableInfomation: [],
          tableColumn: [
            { label: "产品名称", prop: "name", isClick: true },
            { label: "产品编号", prop: "number" }
          ]
        }
        this.searchSel = { value: "Name", label: "产品名称" }
      }
      this.commonOptions = [{ id: 1, name: "全部字段" }]
      for (let i = 1; i < this.tableList.tableColumn.length; i++) {
      this.searchOptions = []
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        const label = this.tableList.tableColumn[i].label
        this.commonOptions.push({ id: (i + 1).toString(), name: label })
        const value = this.tableList.tableColumn[i].prop
        this.searchOptions.push({ value: value, label: label })
      }
    },
    // 请求数据
    async getData() {
      this.loading = true
      if (this.editConfig.title === "销售总单") {
        this.getMasterOrderList()
      } else if (this.editConfig.title === "服务合同") {
        this.getServiceContractList()
      } else if (this.editConfig.title === "销售明细单") {
        this.getSalesDetailsList()
      } else if (this.editConfig.title === "报价单") {
        this.getQuotationList()
      } else if (this.editConfig.title === "客户服务单") {
        this.getServiceOrderList()
      } else if (this.editConfig.title === "产品名称") {
        this.getProductList()
      }
    },
    // 销售总单
    async getMasterOrderList() {
      await getMasterOrderList({
        search_map: this.search_map,
        page: 0,
        pageSize: 0
      }).then((res) => {
        if (res.code === 200) {
          if (res.data.list && res.data.list.length > 0) {
            const list = res.data.list.map((item) => {
              return {
                ...item,
                member_name: item.member.username
              }
            })
            this.tableList.tableInfomation = list.slice(0, 5) || []
          } else {
            this.tableList.tableInfomation = []
          }
        }
        this.loading = false
      })
    },
    // 服务合同
    async getServiceContractList() {
      await getServiceContractList({
        keyword: this.keyword,
        keywordType: this.keywordType,
        page: 0,
        pageSize: 0
      }).then((res) => {
        if (res.code === 200) {
          if (res.data.list && res.data.list.length > 0) {
            const list = res.data.list.map((item) => {
              return {
                ...item,
                client_name: item.client.name,
                member_name: item.member.username,
                serviceContractStatus: item.serviceContractStatus.name
              }
            })
            this.tableList.tableInfomation = list.slice(0, 5) || []
          } else {
            this.tableList.tableInfomation = []
          }
        }
        this.loading = false
      })
    },
    // 报价单
    async getQuotationList() {
      await getQuotationList({
        search_map: this.search_map,
        page: 0,
        pageSize: 0
      }).then((res) => {
        if (res.code === 200) {
          if (res.data.list && res.data.list.length > 0) {
            const list = res.data.list.map((item) => {
              return {
                ...item,
                member_name: item.member.username
              }
            })
            this.tableList.tableInfomation = list.slice(0, 5) || []
          } else {
            this.tableList.tableInfomation = []
          }
        }
        this.loading = false
      })
    },
    // 销售明细单
    async getSalesDetailsList() {
      await getSalesDetailsList({
        keyword: this.keyword,
        keywordType: this.keywordType,
        page: 0,
        pageSize: 0
      }).then((res) => {
        if (res.code === 200) {
          if (res.data.list && res.data.list.length > 0) {
            const list = res.data.list.map((item) => {
              return {
                ...item,
                client_name: item.client.name,
                member_name: item.Member.username
              }
            })
            this.tableList.tableInfomation = list.slice(0, 5) || []
          } else {
            this.tableList.tableInfomation = []
          }
        }
        this.loading = false
      })
    },
    // 客户服务单
    async getServiceOrderList() {
      await getServiceOrderList({
        keyword: this.keyword,
        keywordType: this.keywordType,
        page: 0,
        pageSize: 0
      }).then((res) => {
        if (res.code === 200) {
          if (res.data.data && res.data.data.length > 0) {
            const list = res.data.data.map((item) => {
              return {
                ...item,
                client_name: item.Client.name,
                serviceType_name: item.ServiceType.name,
                faultType_name: item.FaultType.name,
                serviceContract_Number: item.ServiceContract.number,
                serviceMan_name: item.serviceMan.username,
                priorityLevel_name: item.PriorityLevel.name,
                serviceOrderStatus_name: item.ServiceOrderStatus_name
              }
            })
            this.tableList.tableInfomation = list.slice(0, 5) || []
          } else {
            this.tableList.tableInfomation = []
          }
        }
        this.loading = false
      })
    },
    // 产品名称
    async getProductList() {
      await getProductList({
        productName: "",
        productNumber: "",
        page: 1,
        pageSize: 5
      }).then((res) => {
        console.log(res.data)
        if (res.data.code === 200) {
          if (res.data.data.data && res.data.data.data.length > 0) {
            const list = res.data.data.data.map((item) => {
              return {
                ...item
              }
            })
            this.tableList.tableInfomation = list.slice(0, 5) || []
          } else {
            this.tableList.tableInfomation = []
          }
        }
        this.loading = false
      })
    },
    handleClose() {
      this.editConfig.editVisible = false
@@ -116,7 +337,29 @@
        this.$emit("selClient", row, "serviceContract")
      } else if (this.editConfig.title === "销售明细单") {
        this.$emit("selClient", row, "contract")
      } else if (this.editConfig.title === "报价单") {
        this.$emit("selClient", row, "quotation")
      } else if (this.editConfig.title === "客户服务单") {
        this.$emit("selClient", row, "customService")
      } else if (this.editConfig.title === "产品名称") {
        this.$emit("selClient", row, "productName")
      }
    },
    // 搜索
    searchClick(val, content) {
      console.log(val, content)
      this.search_map = {
        [val.value]: content
      }
      this.keyword = content
      this.keywordType = val.label
      this.getData()
    },
    resetClick() {
      this.search_map = {}
      this.keyword = ""
      this.keywordType = ""
      this.getData()
    }
  }
}
@@ -127,6 +370,7 @@
.bg-view {
  margin: 10px;
  .query-bg {
    margin-left: -20px;
    margin-bottom: 10px;
    display: flex;
    justify-content: space-between;