src/views/other/commonDialog/SelectContactDialog.vue
@@ -10,41 +10,31 @@
    >
      <div class="bg-view">
        <div class="query-bg">
          <el-input placeholder="请输入内容" v-model="queryInput" size="mini" class="input-with-select">
            <el-select v-model="select" slot="prepend" placeholder="请选择" disabled>
              <el-option label="全部字段" value="1"></el-option>
              <el-option label="联系人姓名" value="2"></el-option>
              <el-option label="联系人编号" value="3"></el-option>
              <el-option label="客户名称" value="4"></el-option>
              <el-option label="手机" value="5"></el-option>
            </el-select>
          </el-input>
          <SearchCommonView
            ref="searchCommonView"
            :search-options="searchOptions"
            @searchClick="searchClick"
            @resetClick="resetClick"
          />
          <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>
        <el-table
          :data="tableData"
          border
          size="mini"
        <TableCommonView
          ref="tableListRef"
          v-loading="loading"
          :header-cell-style="{ background: '#f7f7f7' }"
          :table-list="tableList"
          :select-box="false"
          @selContactsClick="selNameClick"
          @selTableCol="selTableCol"
        >
          <el-table-column label="联系人姓名" prop="name" show-overflow-tooltip>
            <template slot-scope="scope">
              <span class="sel-name" @click="selNameClick(scope.row)">{{ scope.row.name }}</span>
            </template>
          </el-table-column>
          <el-table-column label="联系人编号" prop="number"></el-table-column>
          <el-table-column label="客户名称" prop="client_name"></el-table-column>
          <el-table-column label="手机" prop="phone"></el-table-column>
          <div slot="empty">
            <el-empty :image-size="100"></el-empty>
          </div>
        </el-table>
        </TableCommonView>
        <div slot="footer" class="dialog-footer">
          <div class="remark">说明:支持多字段模糊查询,仅显示符合条件的前5条数据</div>
          <!-- <div class="remark">说明:支持多字段模糊查询,仅显示符合条件的前5条数据</div> -->
          <div class="btn-pager">
            <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
          </div>
        </div>
      </div>
    </el-dialog>
@@ -53,8 +43,10 @@
<script>
import { getContactList } from "@/api/client/contacts"
import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
export default {
  name: "EditSelClientDialog",
  mixins: [pageMixin],
  props: {
    editCommonConfig: {
      type: Object,
@@ -62,11 +54,8 @@
        return {
          editVisible: false,
          title: "",
          infomation: {
            name: "",
            color: "",
            setDefault: ""
          }
          clientId: 0,
          infomation: {}
        }
      }
    }
@@ -79,22 +68,66 @@
      editConfig: this.editCommonConfig,
      queryInput: "",
      select: "1",
      tableData: [],
      tableList: [],
      searchSelOptions: [],
      loading: false
      loading: false,
      search_map: {},
      tableColumn: [
        { label: "联系人姓名", prop: "name", isContactClick: true, default: true }, // 联系人姓名
        // { label: "联系人编号", prop: "number" }, // 联系人编号
        { label: "客户名称", prop: "client_name" }, // 客户名称
        { label: "手机", prop: "phone" } // 手机号码
      ],
      showCol: ["联系人姓名",  "客户名称", "手机"]
    }
  },
  created() {
    this.search_map = {
      client_id: this.editConfig.clientId
    }
    this.setTable()
    this.getData()
  },
  methods: {
    setTable() {
      this.tableList = {
        selectIndex: true,
        tableInfomation: [],
        allcol: [],
        showcol: this.showCol,
        tableColumn: this.setColumnVisible(this.showCol)
      }
      this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
      this.searchOptions = []
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        const label = this.tableList.tableColumn[i].label
        const value = this.tableList.tableColumn[i].prop
        this.searchOptions.push({ value: value, label: label })
      }
    },
    setColumnVisible(showCol) {
      return this.tableColumn.map((ele) => {
        return {
          ...ele,
          isShowColumn: showCol.includes(ele.label)
        }
      })
    },
    selTableCol(val) {
      this.showcol = val
      this.tableList.tableColumn = this.setColumnVisible(val)
    },
    handleClose() {
      this.editConfig.editVisible = false
    },
    // 请求数据
    async getData() {
      this.loading = true
      await getContactList()
      await getContactList({
        search_map: this.search_map,
        page: this.pagerOptions.currPage,
        pageSize: this.pagerOptions.pageSize
      })
        .then((res) => {
          console.log(res)
          if (res.code === 200) {
@@ -105,18 +138,19 @@
                  client_name: item.Client.name
                }
              })
              this.tableData = list.slice(0, 5) || []
              this.tableList.tableInfomation = list || []
              this.pagerOptions.totalCount = res.data.count
            } else {
              this.tableData = []
              this.tableList.tableInfomation = []
            }
          } else {
            this.tableData = []
            this.tableList.tableInfomation = []
          }
          this.loading = false
        })
        .catch((err) => {
          console.log(err)
          this.tableData = []
          this.tableList.tableInfomation = []
          this.loading = false
        })
    },
@@ -124,26 +158,17 @@
      this.editConfig.editVisible = false
      this.$emit("selClient", row, "contact")
    },
    // 时间显示
    dateFormat(fmt, date) {
      let ret = ""
      date = new Date(date)
      const opt = {
        "Y+": date.getFullYear().toString(), // 年
        "m+": (date.getMonth() + 1).toString(), // 月
        "d+": date.getDate().toString(), // 日
        "H+": date.getHours().toString(), // 时
        "M+": date.getMinutes().toString(), // 分
        "S+": date.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    // 搜索
    searchClick(val, content) {
      console.log(val, content)
      this.search_map = {
        [val.value]: content
      }
      for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt)
        if (ret) {
          fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"))
        }
      }
      return fmt
      this.getData()
    },
    resetClick() {
      this.search_map = {}
      this.getData()
    }
  }
}
@@ -154,6 +179,7 @@
.bg-view {
  margin: 10px;
  .query-bg {
    margin-left: -20px;
    margin-bottom: 10px;
    display: flex;
    justify-content: space-between;
@@ -173,9 +199,16 @@
  cursor: pointer;
}
.dialog-footer {
  height: 40px;
  line-height: 40px;
  height: 50px;
  line-height: 50px;
  color: red;
  .btn-pager {
    display: flex;
    margin-top: 0px;
    .page {
      margin-left: auto;
    }
  }
}
::v-deep {
  .input-with-select .el-input-group__prepend {