|  | @@ -79,6 +79,27 @@
 | 
	
		
			
				|  |  |            />
 | 
	
		
			
				|  |  |          </el-select>
 | 
	
		
			
				|  |  |        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <!-- sop名称 -->
 | 
	
		
			
				|  |  | +      <el-form-item label="SOP名称" prop="sopId" v-if="queryParams.sendType == 2">
 | 
	
		
			
				|  |  | +        <el-autocomplete
 | 
	
		
			
				|  |  | +          v-model="sopSearchText"
 | 
	
		
			
				|  |  | +          :fetch-suggestions="querySopAsync"
 | 
	
		
			
				|  |  | +          placeholder="请输入SOP名称"
 | 
	
		
			
				|  |  | +          clearable
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +          style="width: 200px"
 | 
	
		
			
				|  |  | +          @select="handleSopSelect"
 | 
	
		
			
				|  |  | +          @clear="handleSopClear"
 | 
	
		
			
				|  |  | +          :trigger-on-focus="false"
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <template slot-scope="{ item }">
 | 
	
		
			
				|  |  | +            <div class="sop-item">
 | 
	
		
			
				|  |  | +              <span class="sop-name">{{ item.name }}</span>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-autocomplete>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  |        <!-- 营期时间 -->
 | 
	
		
			
				|  |  |        <el-form-item label="营期时间" prop="scheduleTime">
 | 
	
		
			
				|  |  |          <el-input
 | 
	
	
		
			
				|  | @@ -207,7 +228,7 @@
 | 
	
		
			
				|  |  |        <el-table-column label="记录编号" align="center" prop="logId"/>
 | 
	
		
			
				|  |  |       <el-table-column label="客户昵称" align="center" prop="externalUserName" v-if="queryParams.sendType == 2"/>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      <!–      
 | 
	
		
			
				|  |  | +      <!–
 | 
	
		
			
				|  |  |        <el-table-column label="会员ID" align="center" prop="userId" v-if="queryParams.sendType == 1"/>
 | 
	
		
			
				|  |  |        –>
 | 
	
		
			
				|  |  |       <el-table-column label="客户头像" align="center" prop="externalUserAvatar" v-if="queryParams.sendType == 2">
 | 
	
	
		
			
				|  | @@ -477,6 +498,7 @@ import {addTagByWatch, delTagByWatch} from "../../../api/qw/externalContact";
 | 
	
		
			
				|  |  |  import {allListTagGroup} from "../../../api/qw/tagGroup";
 | 
	
		
			
				|  |  |  import Vue from 'vue'
 | 
	
		
			
				|  |  |  import Calendar from 'vue-mobile-calendar'
 | 
	
		
			
				|  |  | +import {infoSop} from "@/api/qw/sop";
 | 
	
		
			
				|  |  |  Vue.use(Calendar)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default {
 | 
	
	
		
			
				|  | @@ -606,6 +628,10 @@ export default {
 | 
	
		
			
				|  |  |          { dictLabel: '是', dictValue: 1 },
 | 
	
		
			
				|  |  |          { dictLabel: '否', dictValue: 0 }
 | 
	
		
			
				|  |  |        ],
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // SOP搜索相关
 | 
	
		
			
				|  |  | +      sopSearchText: '', // SOP搜索框显示的文本
 | 
	
		
			
				|  |  | +      selectedSopId: null, // 选中的SOP ID
 | 
	
		
			
				|  |  |        // 查询参数
 | 
	
		
			
				|  |  |        queryParams: {
 | 
	
		
			
				|  |  |          pageNum: 1,
 | 
	
	
		
			
				|  | @@ -631,6 +657,7 @@ export default {
 | 
	
		
			
				|  |  |          scheduleEndTime: null,
 | 
	
		
			
				|  |  |          sendType:process.env.VUE_APP_COURSE_DEFAULT,
 | 
	
		
			
				|  |  |          isVip: null,
 | 
	
		
			
				|  |  | +        sopId: null, // sopId
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        // 表单参数
 | 
	
		
			
				|  |  |        form: {},
 | 
	
	
		
			
				|  | @@ -845,6 +872,10 @@ export default {
 | 
	
		
			
				|  |  |        this.queryParams.qecETime = null;
 | 
	
		
			
				|  |  |        this.queryParams.scheduleStartTime = null;
 | 
	
		
			
				|  |  |        this.queryParams.scheduleEndTime = null;
 | 
	
		
			
				|  |  | +      this.queryParams.sopId = null; // 重置SOP ID
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 重置SOP搜索
 | 
	
		
			
				|  |  | +      this.handleSopClear();
 | 
	
		
			
				|  |  |        // 统一重置日历组件
 | 
	
		
			
				|  |  |        this.resetCalendars();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1145,6 +1176,53 @@ export default {
 | 
	
		
			
				|  |  |          tagIds:[]
 | 
	
		
			
				|  |  |        };
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 异步查询SOP列表
 | 
	
		
			
				|  |  | +     * @param {string} queryString - 查询字符串
 | 
	
		
			
				|  |  | +     * @param {function} callback - 回调函数
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    querySopAsync(queryString, callback) {
 | 
	
		
			
				|  |  | +      if (!queryString) {
 | 
	
		
			
				|  |  | +        callback([]);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      infoSop({ name: queryString }).then(response => {
 | 
	
		
			
				|  |  | +        if (response && response.rows) {
 | 
	
		
			
				|  |  | +          const suggestions = response.rows.map(item => ({
 | 
	
		
			
				|  |  | +            value: item.name,
 | 
	
		
			
				|  |  | +            id: item.id,
 | 
	
		
			
				|  |  | +            name: item.name
 | 
	
		
			
				|  |  | +          }));
 | 
	
		
			
				|  |  | +          callback(suggestions);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          callback([]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }).catch(error => {
 | 
	
		
			
				|  |  | +        console.error('通过sop查询失败:', error);
 | 
	
		
			
				|  |  | +        callback([]);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 选择SOP
 | 
	
		
			
				|  |  | +     * @param {object} item - 选中的SOP项
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    handleSopSelect(item) {
 | 
	
		
			
				|  |  | +      this.selectedSopId = item.id;
 | 
	
		
			
				|  |  | +      this.queryParams.sopId = item.id;
 | 
	
		
			
				|  |  | +      this.sopSearchText = item.name;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 清空SOP选择
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    handleSopClear() {
 | 
	
		
			
				|  |  | +      this.selectedSopId = null;
 | 
	
		
			
				|  |  | +      this.queryParams.sopId = null;
 | 
	
		
			
				|  |  | +      this.sopSearchText = '';
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
	
		
			
				|  | @@ -1220,4 +1298,15 @@ export default {
 | 
	
		
			
				|  |  |    background: rgba(0, 0, 0, 0.2);
 | 
	
		
			
				|  |  |    border-radius: 3px;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* SOP搜索框样式 */
 | 
	
		
			
				|  |  | +.sop-item {
 | 
	
		
			
				|  |  | +  display: flex;
 | 
	
		
			
				|  |  | +  align-items: center;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.sop-name {
 | 
	
		
			
				|  |  | +  font-size: 14px;
 | 
	
		
			
				|  |  | +  color: #606266;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 |