llj
2025-12-15 a0010bcabbfbc3771aa05d54094f5d02bcdd5609
src/views/component/CustomerTypeDialog/index.vue
@@ -10,21 +10,21 @@
      <el-card class="search-card">
        <div slot="header" class="clearfix">
          <span>查询条件</span>
          <el-button
            style="float: right; padding: 3px 0"
          <el-button
            style="float: right; padding: 3px 0"
            type="text"
            @click="toggleCollapse"
          >
            {{ collapse ? '展开' : '收起' }}
          </el-button>
        </div>
        <el-form :model="queryParams" ref="queryForm" :inline="true">
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="客户分类代码">
                <el-input
                  v-model="queryParams.HNumber"
                <el-input
                  v-model="queryParams.HNumber"
                  placeholder="请输入客户分类代码"
                  clearable
                  @keyup.enter.native="handleQuery"
@@ -33,8 +33,8 @@
            </el-col>
            <el-col :span="8">
              <el-form-item label="客户分类名称">
                <el-input
                  v-model="queryParams.HName"
                <el-input
                  v-model="queryParams.HName"
                  placeholder="请输入客户分类名称"
                  clearable
                  @keyup.enter.native="handleQuery"
@@ -84,8 +84,8 @@
                </el-col>
                <el-col :span="8">
                  <el-form-item label="内容">
                    <el-input
                      v-model="queryParams.ColContent"
                    <el-input
                      v-model="queryParams.ColContent"
                      placeholder="请输入内容"
                      clearable
                    />
@@ -127,8 +127,8 @@
                </el-col>
                <el-col :span="8">
                  <el-form-item label="内容">
                    <el-input
                      v-model="queryParams.ColContent1"
                    <el-input
                      v-model="queryParams.ColContent1"
                      placeholder="请输入内容"
                      clearable
                    />
@@ -169,8 +169,8 @@
                </el-col>
                <el-col :span="8">
                  <el-form-item label="内容">
                    <el-input
                      v-model="queryParams.ColContent2"
                    <el-input
                      v-model="queryParams.ColContent2"
                      placeholder="请输入内容"
                      clearable
                    />
@@ -230,7 +230,7 @@
            @selection-change="handleSelectionChange"
          >
            <el-table-column type="selection" width="55" align="center" />
            <el-table-column
            <el-table-column
              v-for="column in tableColumns"
              :key="column.field"
              :prop="column.field"
@@ -292,7 +292,7 @@
      collapse: false,
      loading: false,
      treeLoading: false,
      // 查询参数
      queryParams: {
        HNumber: '',
@@ -307,35 +307,35 @@
        Comparator2: '0',
        ColContent2: ''
      },
      // 树形数据
      treeData: [],
      treeProps: {
        children: 'children',
        label: 'title'
      },
      // 表格数据
      tableData: [],
      tableColumns: [],
      selectedRow: null,
      multipleSelection: [],
      // 分页
      pagination: {
        page: 1,
        size: 50,
        total: 0
      },
      // 过滤方案
      currentFilterScheme: '',
      HInterID_Choose: 0,
      // 隐藏字段
      hiddenFields: ["HItemID"],
      baseURL: process.env.VUE_APP_BASE_URL || 'http://47.96.97.237/API/',
      baseURL: process.env.VUE_APP_BASE_API || 'http://47.96.97.237/API/',
      user: 'admin',
      HModName: 'Gy_CusType',
      HModuleName: '客户分类列表维护'
@@ -372,13 +372,13 @@
      this.loadTableData()
      this.getDefaultFilterScheme()
    },
    // 加载树形数据
    async loadTreeData() {
      this.treeLoading = true
      try {
        const response = await axios.get(`${this.baseURL}/Gy_BadReason/Gy_CusTypeTreeListByLevel`)
        if (response.data.count === 1) {
          this.treeData = JSON.parse(response.data.data)
        } else {
@@ -391,13 +391,13 @@
        this.treeLoading = false
      }
    },
    // 加载表格数据
    async loadTableData() {
      this.loading = true
      try {
        const sWhere = this.buildQueryCondition()
        const response = await axios.get(`${this.baseURL}/Gy_BadReason/Gy_CusTypeList`, {
          params: {
            sWhere: sWhere,
@@ -406,7 +406,7 @@
            size: this.pagination.size
          }
        })
        if (response.data.count === 1) {
          this.tableData = response.data.data
          this.pagination.total = response.data.total || response.data.data.length
@@ -421,11 +421,11 @@
        this.loading = false
      }
    },
    // 构建查询条件
    buildQueryCondition() {
      let sWhere = ""
      // 基本查询条件
      if (this.queryParams.HNumber) {
        sWhere += ` and 客户分类代码 like '%${this.queryParams.HNumber}%'`
@@ -433,16 +433,16 @@
      if (this.queryParams.HName) {
        sWhere += ` and 客户分类名称 like '%${this.queryParams.HName}%'`
      }
      // 处理三组过滤条件
      const filterGroups = [
        { colName: this.queryParams.ColName, comparator: this.queryParams.Comparator, content: this.queryParams.ColContent },
        { colName: this.queryParams.ColName1, comparator: this.queryParams.Comparator1, content: this.queryParams.ColContent1 },
        { colName: this.queryParams.ColName2, comparator: this.queryParams.Comparator2, content: this.queryParams.ColContent2 }
      ]
      filterGroups.forEach(filter => {
        if (filter.colName && filter.colName !== "0" &&
        if (filter.colName && filter.colName !== "0" &&
            filter.comparator && filter.comparator !== "0") {
          let com = ""
          switch (filter.comparator) {
@@ -465,26 +465,26 @@
          sWhere += ` and ${filter.colName} ${com}`
        }
      })
      // 添加打开类型的过滤条件
      sWhere += this.addSWhereByOpenType()
      return sWhere
    },
    // 根据打开类型添加条件
    addSWhereByOpenType() {
      // 这里可以根据需要添加特定的过滤条件
      return " and 禁用标志 = '否' and 审核人 != ''"
    },
    // 生成表格列
    generateTableColumns(columnList) {
      this.tableColumns = []
      // 添加选择列
      this.tableColumns.push({ type: 'selection', fixed: 'left' })
      // 动态生成列
      if (columnList && columnList.length > 0) {
        columnList.forEach(item => {
@@ -496,12 +496,12 @@
              sortable: true,
              width: 200
            }
            // 根据字段类型设置不同的模板
            if (item.ColmType === 'DateTime') {
              column.formatter = this.formatDate
            }
            this.tableColumns.push(column)
          }
        })
@@ -519,7 +519,7 @@
        this.tableColumns = [...this.tableColumns, ...defaultColumns]
      }
    },
    handleTreeNodeClick(data) {
      let sWhere = ""
      if (data.id !== '0') {
@@ -527,7 +527,7 @@
      }
      this.loadTableDataWithCondition(sWhere)
    },
    async loadTableDataWithCondition(sWhere) {
      this.loading = true
      try {
@@ -537,7 +537,7 @@
            user: this.user
          }
        })
        if (response.data.count === 1) {
          this.tableData = response.data.data
          this.pagination.total = response.data.total || response.data.data.length
@@ -548,12 +548,12 @@
        this.loading = false
      }
    },
    handleQuery() {
      this.pagination.page = 1
      this.loadTableData()
    },
    handleReset() {
      this.queryParams = {
        HNumber: '',
@@ -571,44 +571,44 @@
      this.pagination.page = 1
      this.loadTableData()
    },
    // 刷新
    handleRefresh() {
      this.loadTreeData()
      this.loadTableData()
    },
    toggleCollapse() {
      this.collapse = !this.collapse
    },
    // 行双击事件
    handleRowDblClick(row) {
      this.selectedRow = row
      this.confirmSelection()
    },
    // 行点击事件
    handleRowClick(row) {
      this.$refs.table.toggleRowSelection(row)
      this.selectedRow = row
    },
    handleCustomerTypeCodeClick(row) {
      console.log('点击客户分类代码:', row)
      this.selectedRow = row
      this.confirmSelection()
    },
    handleSelectionChange(selection) {
      this.multipleSelection = selection
      if (selection.length === 1) {
        this.selectedRow = selection[0]
      }
    },
    confirmSelection() {
      if (this.selectedRow) {
@@ -621,12 +621,12 @@
        this.$message.warning('请选择一条数据')
      }
    },
    // 退出
    handleExit() {
      this.dialogVisible = false
    },
    // 关闭对话框
    handleClose(done) {
      this.$confirm('确认关闭?')
@@ -635,20 +635,20 @@
        })
        .catch(_ => {})
    },
    // 分页大小改变
    handleSizeChange(size) {
      this.pagination.size = size
      this.pagination.page = 1
      this.loadTableData()
    },
    // 当前页改变
    handleCurrentChange(page) {
      this.pagination.page = page
      this.loadTableData()
    },
    // 格式化日期
    formatDate(dateString) {
      if (!dateString) return ''
@@ -659,7 +659,7 @@
        return dateString
      }
    },
    // 获取默认过滤方案
    async getDefaultFilterScheme() {
      try {
@@ -671,12 +671,12 @@
            Type: "Default"
          }
        })
        if (response.data.count === 1) {
          const data = response.data.data[0]
          this.HInterID_Choose = data.hmainid
          this.currentFilterScheme = `当前过滤方案:${data.方案名称} (${data.备注})`
          // 应用过滤条件
          this.applyFilterConditions(response.data.data)
        }
@@ -684,7 +684,7 @@
        console.error('获取过滤方案失败:', error)
      }
    },
    // 应用过滤条件
    applyFilterConditions(filterData) {
      filterData.forEach(item => {
@@ -693,17 +693,17 @@
        }
      })
    },
    // 保存过滤方案
    handleSaveScheme() {
      this.$message.info('保存方案功能')
    },
    // 读取过滤方案
    handleReadScheme() {
      this.$message.info('读取方案功能')
    },
    // 列设置
    handleColumnSetting() {
      this.$message.info('列设置功能')
@@ -791,4 +791,4 @@
.el-tree >>> .el-tree-node.is-current > .el-tree-node__content {
  background-color: #aef0f7;
}
</style>
</style>