|  |  |  | 
|---|
|  |  |  | :visible.sync="editConfig.visible" | 
|---|
|  |  |  | :width="dialogWidth" | 
|---|
|  |  |  | :before-close="handleClose" | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | custom-class="iframe-dialog" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-form | 
|---|
|  |  |  | ref="form" | 
|---|
|  |  |  | :model="editConfig.infomation" | 
|---|
|  |  |  | :rules="rules" | 
|---|
|  |  |  | label-position="right" | 
|---|
|  |  |  | label-width="308px" | 
|---|
|  |  |  | label-width="168px" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="height: 60vh; overflow-x: hidden" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="basic-info-view"> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="客户名称" prop="customName"> | 
|---|
|  |  |  | <el-form-item label="回访单编号" prop="number"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-if=" | 
|---|
|  |  |  | editConfig.title == '编辑' || | 
|---|
|  |  |  | (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled)) | 
|---|
|  |  |  | " | 
|---|
|  |  |  | :disabled="editConfig.title == '编辑'" | 
|---|
|  |  |  | v-model="editConfig.infomation.number" | 
|---|
|  |  |  | placeholder="请输入编码" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-input> | 
|---|
|  |  |  | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" | 
|---|
|  |  |  | >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <!-- <WordInput | 
|---|
|  |  |  | v-if="codenumer && (explain != '' || isIdDisabled) && method == 0" | 
|---|
|  |  |  | :codenumer="codenumer" | 
|---|
|  |  |  | :sum="sum" | 
|---|
|  |  |  | :disabled="editConfig.title !== '新建' || isIdDisabled" | 
|---|
|  |  |  | :inputValue="inputValue" | 
|---|
|  |  |  | @codeList="codeList" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <span v-else-if="method == 0" style="color: #f56c6c" | 
|---|
|  |  |  | >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span v-else>{{ editConfig.title === "新建" ? "自动生成" : editConfig.infomation.number }}</span> --> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="客户名称" prop="client_name"> | 
|---|
|  |  |  | <div class="custom-name"> | 
|---|
|  |  |  | <el-input v-model="editConfig.infomation.customName"></el-input> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> | 
|---|
|  |  |  | <el-autocomplete | 
|---|
|  |  |  | v-model="editConfig.infomation.client_name" | 
|---|
|  |  |  | :fetch-suggestions=" | 
|---|
|  |  |  | (queryString, callback) => { | 
|---|
|  |  |  | querySearchAsync(queryString, callback, 'client') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | value-key="name" | 
|---|
|  |  |  | @select="handleSelectClient('client', $event)" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | ></el-autocomplete> | 
|---|
|  |  |  | <div class="common-select-btn" @click="selClientClick('client')"> | 
|---|
|  |  |  | <i class="el-icon-circle-plus-outline" title="选择"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | v-if="editConfig.infomation.client_name && editConfig.infomation.client_name.length > 0" | 
|---|
|  |  |  | class="common-select-btn" | 
|---|
|  |  |  | @click="clearupClient('client')" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <i class="el-icon-remove-outline" title="清除"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="回访单编号" prop="followupNumber"> | 
|---|
|  |  |  | <el-input v-model="editConfig.infomation.followupNumber"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="联系人姓名" prop="contactName"> | 
|---|
|  |  |  | <el-form-item label="联系人姓名" prop="contact_name"> | 
|---|
|  |  |  | <div class="custom-name"> | 
|---|
|  |  |  | <el-input v-model="editConfig.infomation.contactName"></el-input> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> | 
|---|
|  |  |  | <el-autocomplete | 
|---|
|  |  |  | v-model="editConfig.infomation.contact_name" | 
|---|
|  |  |  | :fetch-suggestions=" | 
|---|
|  |  |  | (queryString, callback) => { | 
|---|
|  |  |  | querySearchAsync(queryString, callback, 'contact') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | value-key="name" | 
|---|
|  |  |  | @select="handleSelectClient('contact', $event)" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | ></el-autocomplete> | 
|---|
|  |  |  | <div class="common-select-btn" @click="selClientClick('contact')"> | 
|---|
|  |  |  | <i class="el-icon-circle-plus-outline" title="选择"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | v-if="editConfig.infomation.contact_name && editConfig.infomation.contact_name.length > 0" | 
|---|
|  |  |  | class="common-select-btn" | 
|---|
|  |  |  | @click="clearupClient('contact')" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <i class="el-icon-remove-outline" title="清除"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="客户服务单" prop="customServiceForm"> | 
|---|
|  |  |  | <el-form-item label="客户服务单" prop="service_number"> | 
|---|
|  |  |  | <div class="custom-name"> | 
|---|
|  |  |  | <el-input v-model="editConfig.infomation.customServiceForm"></el-input> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> | 
|---|
|  |  |  | <el-autocomplete | 
|---|
|  |  |  | v-model="editConfig.infomation.service_number" | 
|---|
|  |  |  | :fetch-suggestions=" | 
|---|
|  |  |  | (queryString, callback) => { | 
|---|
|  |  |  | querySearchAsync(queryString, callback, 'customService') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | value-key="serviceNumber" | 
|---|
|  |  |  | @select="handleSelectClient('customService', $event)" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | ></el-autocomplete> | 
|---|
|  |  |  | <div class="common-select-btn" @click="selClientClick('customService')"> | 
|---|
|  |  |  | <i class="el-icon-circle-plus-outline" title="选择"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | v-if="editConfig.infomation.service_number && editConfig.infomation.service_number.length > 0" | 
|---|
|  |  |  | class="common-select-btn" | 
|---|
|  |  |  | @click="clearupClient('customService')" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <i class="el-icon-remove-outline" title="清除"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="回访人" prop="visitor"> | 
|---|
|  |  |  | <el-select v-model="editConfig.infomation.visitor" size="mini"> | 
|---|
|  |  |  | <el-option v-for="item in visitorOptions" :key="item.value" :label="item.label" :value="item.value"> | 
|---|
|  |  |  | <el-form-item label="回访人" prop="memberId"> | 
|---|
|  |  |  | <el-select v-model="editConfig.infomation.memberId" size="mini" style="width: 100%"> | 
|---|
|  |  |  | <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <!-- <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="项目计划" prop="planId"> | 
|---|
|  |  |  | <div class="custom-name"> | 
|---|
|  |  |  | <el-input v-model="editConfig.infomation.planId"></el-input> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> --> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="满意度" prop="satisfactionId"> | 
|---|
|  |  |  | <div class="common-select"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="editConfig.infomation.satisfactionId" | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | class="common-select-sel" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option v-for="item in satisfactionOptions" :key="item.id" :label="item.name" :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="及时率" prop="timelyRateId"> | 
|---|
|  |  |  | <div class="common-select"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="editConfig.infomation.timelyRateId" | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | class="common-select-sel" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option v-for="item in timelyRateOptions" :key="item.id" :label="item.name" :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="解决率" prop="solveRateId"> | 
|---|
|  |  |  | <div class="common-select"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="editConfig.infomation.solveRateId" | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | class="common-select-sel" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option v-for="item in solveRateOptions" :key="item.id" :label="item.name" :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="原服务人员" prop="oldMemberId"> | 
|---|
|  |  |  | <el-select v-model="editConfig.infomation.oldMemberId" size="mini" style="width: 100%"> | 
|---|
|  |  |  | <el-option v-for="item in oldMemberOptions" :key="item.id" :label="item.username" :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="项目计划" prop="projectPlan"> | 
|---|
|  |  |  | <div class="custom-name"> | 
|---|
|  |  |  | <el-input v-model="editConfig.infomation.projectPlan"></el-input> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> | 
|---|
|  |  |  | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> | 
|---|
|  |  |  | <el-form-item label="服务人员是否来过" prop="isVisitId"> | 
|---|
|  |  |  | <div class="common-select"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="editConfig.infomation.isVisitId" | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | class="common-select-sel" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option v-for="item in isVisitOptions" :key="item.id" :label="item.name" :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="满意度" prop="satisfaction"> | 
|---|
|  |  |  | <CommonSelectView | 
|---|
|  |  |  | :common-value="editConfig.infomation.satisfaction" | 
|---|
|  |  |  | :common-options="satisfactionOptions" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="及时率" prop="timelyRate"> | 
|---|
|  |  |  | <CommonSelectView | 
|---|
|  |  |  | :common-value="editConfig.infomation.timelyRate" | 
|---|
|  |  |  | :common-options="satisfactionOptions" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="解决率" prop="resolveRate"> | 
|---|
|  |  |  | <CommonSelectView | 
|---|
|  |  |  | :common-value="editConfig.infomation.resolveRate" | 
|---|
|  |  |  | :common-options="satisfactionOptions" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="原服务人员" prop="originServicePerson"> | 
|---|
|  |  |  | <el-select v-model="editConfig.infomation.originServicePerson" size="mini"> | 
|---|
|  |  |  | <el-option v-for="item in visitorOptions" :key="item.value" :label="item.label" :value="item.value"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | <el-form-item label="服务人员是否来过" prop="haveBeen"> | 
|---|
|  |  |  | <CommonSelectView :common-value="editConfig.infomation.haveBeen" :common-options="haveBeenOptions" /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="basic-info-view"> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <el-col :span="24"> | 
|---|
|  |  |  | <el-form-item label="备注" prop="notes"> | 
|---|
|  |  |  | <el-form-item label="备注" prop="remark"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | type="textarea" | 
|---|
|  |  |  | :autosize="{ minRows: 2, maxRows: 4 }" | 
|---|
|  |  |  | placeholder="请输入内容" | 
|---|
|  |  |  | v-model="editConfig.infomation.notes" | 
|---|
|  |  |  | v-model="editConfig.infomation.remark" | 
|---|
|  |  |  | ></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!-- 附件信息 --> | 
|---|
|  |  |  | <div class="basic-info-title">附件信息</div> | 
|---|
|  |  |  | <!-- <div class="basic-info-title">附件信息</div> | 
|---|
|  |  |  | <div class="basic-info-view"> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <el-col :span="12"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> | 
|---|
|  |  |  | <el-button type="primary" size="small" @click="saveClick('form')">保存</el-button> | 
|---|
|  |  |  | <el-button size="small" @click="editConfig.visible = false">取消</el-button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!-- 选择客户 --> | 
|---|
|  |  |  | <SelectClientDialog | 
|---|
|  |  |  | v-if="editSelectClientConfig.editVisible" | 
|---|
|  |  |  | :edit-common-config="editSelectClientConfig" | 
|---|
|  |  |  | @selClient="selClient" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <!-- 选择联系人 --> | 
|---|
|  |  |  | <SelectContactDialog | 
|---|
|  |  |  | v-if="editSelectContactConfig.editVisible" | 
|---|
|  |  |  | :edit-common-config="editSelectContactConfig" | 
|---|
|  |  |  | @selClient="selClient" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <!-- 客户服务订单 --> | 
|---|
|  |  |  | <SelectCommonDialog | 
|---|
|  |  |  | v-if="editSelCommonConfig.editVisible" | 
|---|
|  |  |  | :edit-common-config="editSelCommonConfig" | 
|---|
|  |  |  | @selClient="selClient" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-dialog> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import CommonSelectView from "@/components/makepager/CommonSelectView" | 
|---|
|  |  |  | import { getAllData } from "@/api/client/client" | 
|---|
|  |  |  | import { getAddServiceFollowup, getUpdateServiceFollowup } from "@/api/serviceManage/serviceFollowup" | 
|---|
|  |  |  | import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog" | 
|---|
|  |  |  | import SelectContactDialog from "@/views/other/commonDialog/SelectContactDialog" | 
|---|
|  |  |  | import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" | 
|---|
|  |  |  | import codeMixin from "@/components/makepager/mixin/codeMixin" | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: "AddServiceFollowupDialog", | 
|---|
|  |  |  | mixins: [codeMixin], | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | editCommonConfig: { | 
|---|
|  |  |  | type: Object, | 
|---|
|  |  |  | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | visible: false, | 
|---|
|  |  |  | title: "新建", | 
|---|
|  |  |  | infomation: { | 
|---|
|  |  |  | customName: "", | 
|---|
|  |  |  | followupNumber: "HF21", | 
|---|
|  |  |  | contactName: "", | 
|---|
|  |  |  | customServiceForm: "", | 
|---|
|  |  |  | visitor: "", | 
|---|
|  |  |  | projectPlan: "", | 
|---|
|  |  |  | satisfaction: "", | 
|---|
|  |  |  | timelyRate: "", | 
|---|
|  |  |  | resolveRate: "", | 
|---|
|  |  |  | originServicePerson: "", | 
|---|
|  |  |  | haveBeen: "", | 
|---|
|  |  |  | notes: "" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | components: { CommonSelectView }, | 
|---|
|  |  |  | components: { SelectClientDialog, SelectContactDialog, SelectCommonDialog }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | searchCommonHeight() { | 
|---|
|  |  |  | return this.$refs.searchCommonView.offsetHeight | 
|---|
|  |  |  | clientList() { | 
|---|
|  |  |  | return this.$store.state.getClientName.clientList | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | contactNamelist() { | 
|---|
|  |  |  | return this.$store.state.getClientName.contactNamelist | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | serviceOrderList() { | 
|---|
|  |  |  | return this.$store.state.getClientName.serviceOrderList | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | dialogWidth: "80%", | 
|---|
|  |  |  | dialogWidth: "50%", | 
|---|
|  |  |  | editConfig: this.editCommonConfig, | 
|---|
|  |  |  | rules: { | 
|---|
|  |  |  | followupNumber: [{ required: true, message: "请输入回访单单编号", trigger: "blur" }], | 
|---|
|  |  |  | visitor: [{ required: true, message: "请选择", trigger: "change" }] | 
|---|
|  |  |  | number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }], | 
|---|
|  |  |  | client_name: [{ required: true, message: "请选择客户名称", trigger: "change" }], | 
|---|
|  |  |  | service_number: [{ required: true, message: "请选择客户服务单", trigger: "change" }], | 
|---|
|  |  |  | memberId: [{ required: true, validator: this.validateMemberId, trigger: "change" }] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | satisfactionOptions: [], // 满意度 及时率 解决率 | 
|---|
|  |  |  | haveBeenOptions: [], // 服务人员是否来过 | 
|---|
|  |  |  | visitorOptions: [ | 
|---|
|  |  |  | // 回访人 | 
|---|
|  |  |  | { value: "1", label: "系统管理员" }, | 
|---|
|  |  |  | { value: "2", label: "销售总监" } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | satisfactionOptions: [], // 满意度 | 
|---|
|  |  |  | timelyRateOptions: [], // 及时率 | 
|---|
|  |  |  | solveRateOptions: [], // 解决率 | 
|---|
|  |  |  | oldMemberOptions: [], // 原服务人员 | 
|---|
|  |  |  | isVisitOptions: [], // 服务人员是否来过 | 
|---|
|  |  |  | memberOptions: [], | 
|---|
|  |  |  | editSelectClientConfig: { | 
|---|
|  |  |  | editVisible: false, | 
|---|
|  |  |  | title: "", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | editSelectContactConfig: { | 
|---|
|  |  |  | editVisible: false, | 
|---|
|  |  |  | title: "", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | editSelCommonConfig: { | 
|---|
|  |  |  | editVisible: false, | 
|---|
|  |  |  | title: "", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clientId: this.editCommonConfig.infomation.clientId, | 
|---|
|  |  |  | contactId: this.editCommonConfig.infomation.contactId, | 
|---|
|  |  |  | serviceOrderId: this.editCommonConfig.infomation.serviceOrderId | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | created() {}, | 
|---|
|  |  |  | created() { | 
|---|
|  |  |  | this.$store.dispatch("geClient") | 
|---|
|  |  |  | this.$store.dispatch("geContact") | 
|---|
|  |  |  | this.$store.dispatch("geServiceOrder") | 
|---|
|  |  |  | this.getCommonData() | 
|---|
|  |  |  | this.formInfo() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | watch: { | 
|---|
|  |  |  | "editCommonConfig.visible"(val) { | 
|---|
|  |  |  | if (val) { | 
|---|
|  |  |  | this.formInfo() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | formInfo() { | 
|---|
|  |  |  | this.objCode.type = "服务回访编码" | 
|---|
|  |  |  | this.objCode.codeStandID = "" | 
|---|
|  |  |  | if (this.editConfig.infomation.codeStandID) { | 
|---|
|  |  |  | this.objCode.codeStandID = this.editConfig.infomation.codeStandID | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.getRCodeStandardList() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getCommonData() { | 
|---|
|  |  |  | getAllData() | 
|---|
|  |  |  | .then((res) => { | 
|---|
|  |  |  | this.memberOptions = res.data.member | 
|---|
|  |  |  | // this.$set(this.editConfig.infomation,'memberId',this.editConfig.infomation.memberId) | 
|---|
|  |  |  | if (this.editConfig.title === "新建") { | 
|---|
|  |  |  | let username = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*=\s*([^;]*).*$)|^.*$/, "$1") | 
|---|
|  |  |  | this.memberOptions.map((item) => { | 
|---|
|  |  |  | if (item.username == username) { | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "memberId", item.id) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.satisfactionOptions = res.data.satisfaction // 满意度 | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "satisfactionId", this.editConfig.infomation.satisfactionId) | 
|---|
|  |  |  | this.timelyRateOptions = res.data.timely_rate // 及时率 | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "timelyRateId", this.editConfig.infomation.timelyRateId) | 
|---|
|  |  |  | this.solveRateOptions = res.data.solve_rate // 解决率 | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "solveRateId", this.editConfig.infomation.solveRateId) | 
|---|
|  |  |  | this.oldMemberOptions = res.data.member // 原服务人员 | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "oldMemberId", this.editConfig.infomation.oldMemberId) | 
|---|
|  |  |  | this.isVisitOptions = res.data.isVisit // 服务人员是否来过 | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "isVisitId", this.editConfig.infomation.isVisitId) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch((err) => { | 
|---|
|  |  |  | console.log(err) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 保存 | 
|---|
|  |  |  | saveClick(formName) { | 
|---|
|  |  |  | this.$refs[formName].validate((valid) => { | 
|---|
|  |  |  | if (valid) { | 
|---|
|  |  |  | console.log(this.editConfig.infomation) | 
|---|
|  |  |  | const params = this.saveParams() | 
|---|
|  |  |  | if (this.editConfig.title === "新建") { | 
|---|
|  |  |  | getAddServiceFollowup(params).then((res) => { | 
|---|
|  |  |  | console.log(res) | 
|---|
|  |  |  | this.editConfig.visible = false | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.$message.success("添加成功") | 
|---|
|  |  |  | this.$parent.getData() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | getUpdateServiceFollowup(params).then((res) => { | 
|---|
|  |  |  | console.log(res) | 
|---|
|  |  |  | this.editConfig.visible = false | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.$message.success("编辑成功") | 
|---|
|  |  |  | this.$parent.getData() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | console.log("error submit") | 
|---|
|  |  |  | return false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | saveParams() { | 
|---|
|  |  |  | let data = this.editConfig.infomation | 
|---|
|  |  |  | let params = { | 
|---|
|  |  |  | id: this.editConfig.title === "新建" ? 0 : data.id, | 
|---|
|  |  |  | clientId: this.clientId || 0, | 
|---|
|  |  |  | contactId: this.contactId || 0, | 
|---|
|  |  |  | file: data.file || "", | 
|---|
|  |  |  | isVisit: data.isVisitId || 0, | 
|---|
|  |  |  | memberId: data.memberId || 0, | 
|---|
|  |  |  | number: data.number || "", | 
|---|
|  |  |  | oldMemberId: data.oldMemberId || 0, | 
|---|
|  |  |  | planId: data.planId || 0, | 
|---|
|  |  |  | remark: data.remark || "", | 
|---|
|  |  |  | satisfaction: data.satisfactionId || 0, | 
|---|
|  |  |  | serviceOrderId: this.serviceOrderId || 0, | 
|---|
|  |  |  | solveRate: data.solveRateId || 0, | 
|---|
|  |  |  | timelyRate: data.timelyRateId || 0, | 
|---|
|  |  |  | codeStandID: data.ID | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return params | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleClose() { | 
|---|
|  |  |  | this.editConfig.visible = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 选择客户相关方法 | 
|---|
|  |  |  | querySearchAsync(queryString, cb, value) { | 
|---|
|  |  |  | var restaurants = [] | 
|---|
|  |  |  | if (value === "client") { | 
|---|
|  |  |  | restaurants = this.clientList | 
|---|
|  |  |  | } else if (value === "contact") { | 
|---|
|  |  |  | restaurants = this.contactNamelist | 
|---|
|  |  |  | } else if (value === "customService") { | 
|---|
|  |  |  | console.log(this.serviceOrderList) | 
|---|
|  |  |  | restaurants = this.serviceOrderList | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants | 
|---|
|  |  |  | cb(results) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | createStateFilter(queryString, value) { | 
|---|
|  |  |  | return (state) => { | 
|---|
|  |  |  | if (value === "customService") { | 
|---|
|  |  |  | return state.serviceNumber.toLowerCase().indexOf(queryString.toLowerCase()) === 0 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleSelectClient(value, item) { | 
|---|
|  |  |  | console.log(value) | 
|---|
|  |  |  | if (value === "client") { | 
|---|
|  |  |  | this.clientId = item.id | 
|---|
|  |  |  | } else if (value === "contact") { | 
|---|
|  |  |  | this.contactId = item.id | 
|---|
|  |  |  | } else if (value === "customService") { | 
|---|
|  |  |  | this.serviceOrderId = item.id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | selClientClick(value) { | 
|---|
|  |  |  | if (value === "client") { | 
|---|
|  |  |  | this.editSelectClientConfig.editVisible = true | 
|---|
|  |  |  | } else if (value === "contact") { | 
|---|
|  |  |  | this.editSelectContactConfig.editVisible = true | 
|---|
|  |  |  | } else if (value === "customService") { | 
|---|
|  |  |  | this.editSelCommonConfig.title = "客户服务单" | 
|---|
|  |  |  | this.editSelCommonConfig.editVisible = true | 
|---|
|  |  |  | this.editSelCommonConfig.tableInfomation = [...this.serviceOrderList] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | selClient(row, value) { | 
|---|
|  |  |  | console.log(value) | 
|---|
|  |  |  | if (value === "contact") { | 
|---|
|  |  |  | this.editConfig.infomation.contact_name = row.name | 
|---|
|  |  |  | this.contactId = row.id | 
|---|
|  |  |  | } else if (value === "client") { | 
|---|
|  |  |  | this.editConfig.infomation.client_name = row.name | 
|---|
|  |  |  | this.clientId = row.id | 
|---|
|  |  |  | } else if (value === "customService") { | 
|---|
|  |  |  | this.editConfig.infomation.service_number = row.serviceNumber | 
|---|
|  |  |  | this.serviceOrderId = row.id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 清除已选择用户 | 
|---|
|  |  |  | clearupClient(value) { | 
|---|
|  |  |  | if (value === "client") { | 
|---|
|  |  |  | this.editConfig.infomation.client_name = "" | 
|---|
|  |  |  | this.clientId = 0 | 
|---|
|  |  |  | } else if (value === "contact") { | 
|---|
|  |  |  | this.editConfig.infomation.contact_name = "" | 
|---|
|  |  |  | this.contactId = 0 | 
|---|
|  |  |  | } else if (value === "customService") { | 
|---|
|  |  |  | this.editConfig.infomation.service_number = "" | 
|---|
|  |  |  | this.serviceOrderId = 0 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 添加附件 | 
|---|
|  |  |  | addAnnexClick() {}, | 
|---|
|  |  |  | // 设置允许上传文件格式 | 
|---|
|  |  |  | setFormatClick() {} | 
|---|
|  |  |  | setFormatClick() {}, | 
|---|
|  |  |  | // 回访人自定义校验规则 | 
|---|
|  |  |  | validateMemberId(rule, value, callback) { | 
|---|
|  |  |  | if (this.editConfig.infomation?.memberId > 0) { | 
|---|
|  |  |  | callback() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callback(new Error("请选择回访人")) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- Add "scoped" attribute to limit CSS to this component only --> | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .service-followup { | 
|---|
|  |  |  | .basic-info { | 
|---|
|  |  |  | .basic-info-title { | 
|---|
|  |  |  | background-color: #f4f8fe; | 
|---|
|  |  |  | padding-left: 10px; | 
|---|
|  |  |  | font-size: 15px; | 
|---|
|  |  |  | font-weight: bold; | 
|---|
|  |  |  | color: #666; | 
|---|
|  |  |  | height: 42px; | 
|---|
|  |  |  | line-height: 42px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .basic-info-view { | 
|---|
|  |  |  | margin-top: 10px; | 
|---|
|  |  |  | padding-right: 40px; | 
|---|
|  |  |  | .custom-name { | 
|---|
|  |  |  | ::v-deep { | 
|---|
|  |  |  | .iframe-dialog .el-dialog__body { | 
|---|
|  |  |  | .basic-info { | 
|---|
|  |  |  | .basic-info-title { | 
|---|
|  |  |  | background-color: #f4f8fe; | 
|---|
|  |  |  | padding-left: 10px; | 
|---|
|  |  |  | font-size: 15px; | 
|---|
|  |  |  | font-weight: bold; | 
|---|
|  |  |  | color: #666; | 
|---|
|  |  |  | height: 42px; | 
|---|
|  |  |  | line-height: 42px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .basic-info-view { | 
|---|
|  |  |  | margin-top: 10px; | 
|---|
|  |  |  | padding-right: 40px; | 
|---|
|  |  |  | .custom-name, | 
|---|
|  |  |  | .common-select { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | .common-select-sel { | 
|---|
|  |  |  | width: 270px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .common-select-btn { | 
|---|
|  |  |  | margin-left: 5px; | 
|---|
|  |  |  | font-size: 16px; | 
|---|
|  |  |  | cursor: pointer; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .annex-view { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | .common-select-btn { | 
|---|
|  |  |  | margin-left: 5px; | 
|---|
|  |  |  | font-size: 18px; | 
|---|
|  |  |  | color: #6166d3; | 
|---|
|  |  |  | .setFormat { | 
|---|
|  |  |  | margin-left: 10px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .address-view { | 
|---|
|  |  |  | margin-top: 10px; | 
|---|
|  |  |  | padding-right: 40px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .annex-view { | 
|---|
|  |  |  | .unflod-collapse { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | height: 30px; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | color: #6166d3; | 
|---|
|  |  |  | .setFormat { | 
|---|
|  |  |  | margin-left: 10px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .unflod-collapse { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | height: 30px; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | color: #6166d3; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .dialog-footer { | 
|---|
|  |  |  | background-color: #f5f5f5; | 
|---|
|  |  |  | height: 55px; | 
|---|
|  |  |  | line-height: 55px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep { | 
|---|
|  |  |  | .el-dialog__header { | 
|---|
|  |  |  | padding: 12.5px 10px; | 
|---|
|  |  |  | border-bottom: 1px solid #e5e5e5; | 
|---|
|  |  |  | .el-dialog__title { | 
|---|
|  |  |  | font-size: 15px; | 
|---|
|  |  |  | color: #323232; | 
|---|
|  |  |  | font-weight: bold; | 
|---|
|  |  |  | .dialog-footer { | 
|---|
|  |  |  | background-color: #f5f5f5; | 
|---|
|  |  |  | height: 55px; | 
|---|
|  |  |  | line-height: 55px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .el-dialog__body { | 
|---|
|  |  |  | padding: 0px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .el-dialog__footer { | 
|---|
|  |  |  | padding: 0px; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | border-top: 1px solid #dadee5; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|