| | |
| | | :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="serviceNumber"> |
| | | <el-input |
| | | v-if=" |
| | | editConfig.title == '编辑' || |
| | | (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled)) |
| | | " |
| | | :disabled="editConfig.title == '编辑'" |
| | | v-model="editConfig.infomation.serviceNumber" |
| | | 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.serviceNumber |
| | | }}</span> --> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客户名称" prop="client_name"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'client') |
| | | } |
| | | " |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | @select="handleSelectClient('client', $event)" |
| | | style="width: 100%" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <div class="common-select-btn" @click="selClientClick('client')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | <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="number"> |
| | | <el-input v-model="editConfig.infomation.number"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="服务合同" prop="name"> |
| | | <el-form-item label="服务合同"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | v-model="editConfig.infomation.serviceContract_Number" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'serviceContract') |
| | | } |
| | | " |
| | | value-key="number" |
| | | @select="handleSelectClient('serviceContract', $event)" |
| | | style="width: 100%" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <div class="common-select-btn" @click="selClientClick('serviceContract')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | <div |
| | | v-if=" |
| | | editConfig.infomation.serviceContract_Number && |
| | | editConfig.infomation.serviceContract_Number.length > 0 |
| | | " |
| | | class="common-select-btn" |
| | | @click="clearupClient('serviceContract')" |
| | | > |
| | | <i class="el-icon-remove-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="故障类别" prop="orderType"> |
| | | <el-form-item label="故障类别" prop="faultTypeId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.orderType" |
| | | v-model="editConfig.infomation.faultTypeId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <!-- @focus="getFaultTypeList" --> |
| | | <el-option v-for="item in faultTypeOptions" :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 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="contactId"> |
| | | <el-input v-model="editConfig.infomation.contactId"></el-input> |
| | | <el-form-item label="主题" prop="subject"> |
| | | <el-input v-model="editConfig.infomation.subject" style="width: 100%"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="合同订单" prop="name"> |
| | | <el-form-item label="合同订单"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | v-model="editConfig.infomation.number" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'contract') |
| | | } |
| | | " |
| | | value-key="number" |
| | | @select="handleSelectClient('contract', $event)" |
| | | style="width: 100%" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <div class="common-select-btn" @click="selClientClick('contract')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | <div |
| | | v-if="editConfig.infomation.number && editConfig.infomation.number.length > 0" |
| | | class="common-select-btn" |
| | | @click="clearupClient('contract')" |
| | | > |
| | | <i class="el-icon-remove-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="产品类别" prop="orderType"> |
| | | <!-- <el-col :span="12"> |
| | | <el-form-item label="产品类别" prop="productCategory"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.orderType" |
| | | v-model="editConfig.infomation.productCategory" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | > |
| | | <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <el-option |
| | | v-for="item in productCategoryOptions" |
| | | :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> --> |
| | | <el-col :span="12"> |
| | | <el-form-item label="产品名称" prop="name"> |
| | | <el-form-item label="产品名称" prop="productName"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | v-model="editConfig.infomation.productName" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'productName') |
| | | } |
| | | " |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | @select="handleSelectClient('productName', $event)" |
| | | style="width: 100%" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <div class="common-select-btn" @click="selClientClick('productName')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | <div |
| | | v-if="editConfig.infomation.productName && editConfig.infomation.productName.length > 0" |
| | | class="common-select-btn" |
| | | @click="clearupClient('productName')" |
| | | > |
| | | <i class="el-icon-remove-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="服务方式" prop="orderType"> |
| | | <el-form-item label="服务方式" prop="serviceTypeId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.orderType" |
| | | v-model="editConfig.infomation.serviceTypeId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <el-option v-for="item in serviceTypeOptions" :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 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="orderType"> |
| | | <el-form-item label="服务人员" prop="serviceManId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.orderType" |
| | | v-model="editConfig.infomation.serviceManId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <el-option |
| | | v-for="item in serviceManOptions" |
| | | :key="item.id" |
| | | :label="item.username" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系人姓名" prop="client_name"> |
| | | <el-form-item label="联系人姓名" prop="contact_name"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | v-model="editConfig.infomation.contact_name" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'contact') |
| | | } |
| | | " |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | @select="handleSelectClient('contact', $event)" |
| | | style="width: 100%" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <div class="common-select-btn" @click="selClientClick('contact')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | <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="reportSourceId"> |
| | | <el-form-item label="严重程度" prop="severityId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.reportSourceId" |
| | | v-model="editConfig.infomation.severityId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in reportSourceOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <el-option v-for="item in severityOptions" :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="24"> |
| | | <el-form-item label="上门地址" prop="problemDescription"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.problemDescription" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="优先级别" prop="reportSourceId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.reportSourceId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | > |
| | | <el-option v-for="item in reportSourceOptions" :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 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="startTime"> |
| | | <el-date-picker v-model="editConfig.infomation.startTime" type="datetime" placeholder="选择日期"> |
| | | <el-form-item label="优先级别" prop="priorityLevelId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.priorityLevelId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in priorityLevelOptions" |
| | | :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="appointmentTime"> |
| | | <el-date-picker |
| | | v-model="editConfig.infomation.appointmentTime" |
| | | type="datetime" |
| | | placeholder="选择日期" |
| | | style="width: 100%" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售机会" prop="client_name"> |
| | | <el-form-item label="销售机会" prop="sale_chance_name"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | v-model="editConfig.infomation.sale_chance_name" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'chance') |
| | | } |
| | | " |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | @select="handleSelectClient('chance', $event)" |
| | | style="width: 100%" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | <div class="common-select-btn" @click="selClientClick('chance')"> |
| | | <i class="el-icon-circle-plus-outline"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | <div |
| | | v-if="editConfig.infomation.sale_chance_name && editConfig.infomation.sale_chance_name.length > 0" |
| | | class="common-select-btn" |
| | | @click="clearupClient('chance')" |
| | | > |
| | | <i class="el-icon-remove-outline"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="上门地址" prop="address"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.address" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="希望处理时间" prop="startTime"> |
| | | <el-date-picker v-model="editConfig.infomation.startTime" type="datetime" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="实际处理时间" prop="startTime"> |
| | | <el-date-picker v-model="editConfig.infomation.startTime" type="datetime" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="交通费" prop="reportSourceId"> |
| | | <el-input v-model="editConfig.infomation.problemDescription"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="收费金额" prop="reportSourceId"> |
| | | <el-input v-model="editConfig.infomation.problemDescription"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="花费时间" prop="reportSourceId"> |
| | | <el-form-item label="处理状态" prop="serviceOrderStatusId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.reportSourceId" |
| | | v-model="editConfig.infomation.serviceOrderStatusId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in reportSourceOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <el-option v-for="item in statusOptions" :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 class="common-select-btn"><i class="el-icon-setting"></i></div> --> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="常见问题" prop="problemDescription"> |
| | | <el-input v-model="editConfig.infomation.problemDescription"></el-input> |
| | | <el-form-item label="希望处理时间" prop="expectTime"> |
| | | <el-date-picker |
| | | v-model="editConfig.infomation.expectTime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="datetime" |
| | | placeholder="选择时间" |
| | | style="width: 100%" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="问题描述" prop="problemDescription"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.problemDescription" |
| | | ></el-input> |
| | | <el-col :span="12"> |
| | | <el-form-item label="实际处理时间" prop="realTime"> |
| | | <el-date-picker |
| | | v-model="editConfig.infomation.realTime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="datetime" |
| | | placeholder="选择时间" |
| | | style="width: 100%" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="交通费" prop="carFare"> |
| | | <el-input-number |
| | | v-model="editConfig.infomation.carFare" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :controls="false" |
| | | style="width: 100%" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="收费金额" prop="chargeAmount"> |
| | | <el-input-number |
| | | v-model="editConfig.infomation.chargeAmount" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :controls="false" |
| | | style="width: 100%" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="花费时间" prop="timeSpentId"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.timeSpentId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in timeSpentOptions" :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-row> |
| | | </div> |
| | | <!-- 定位地址 --> |
| | | <div class="basic-info-title">定位地址</div> |
| | | <!-- <div class="basic-info-title">定位地址</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> --> |
| | | <!-- 问题描述 --> |
| | | <div class="basic-info-title">问题描述</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="常见问题" prop="problemDescription"> |
| | | <el-input v-model="editConfig.infomation.problemDescription"></el-input> |
| | | <el-form-item label="常见问题" prop="faqId"> |
| | | <!-- <el-input v-model="editConfig.infomation.faqId"></el-input> --> |
| | | <el-select |
| | | v-model="editConfig.infomation.faqId" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in faqOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="问题描述" prop="problemDescription"> |
| | | <el-form-item label="问题描述" prop="problemDesc"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.problemDescription" |
| | | v-model="editConfig.infomation.problemDesc" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="解决方法" prop="problemDescription"> |
| | | <el-form-item label="解决方法" prop="solution"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.problemDescription" |
| | | v-model="editConfig.infomation.solution" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="内部备注" prop="problemDescription"> |
| | | <el-form-item label="内部备注" prop="solutionRemark"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.problemDescription" |
| | | v-model="editConfig.infomation.solutionRemark" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注" prop="problemDescription"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.problemDescription" |
| | | 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 v-if="editConfig.title === '编辑'" class="basic-info"> |
| | | <div class="basic-info-label" @click="expandClick('record')"> |
| | |
| | | :edit-common-config="editSelectClientConfig" |
| | | @selClient="selClient" |
| | | /> |
| | | <!-- 选择服务合同 合同订单 --> |
| | | <SelectCommonDialog |
| | | v-if="editSelCommonConfig.editVisible" |
| | | :edit-common-config="editSelCommonConfig" |
| | | @selClient="selClient" |
| | | /> |
| | | <!-- 选择联系人 --> |
| | | <SelectContactDialog |
| | | v-if="editSelectContactConfig.editVisible" |
| | | :edit-common-config="editSelectContactConfig" |
| | | @selClient="selClient" |
| | | /> |
| | | <!-- 选择销售机会 --> |
| | | <SelectChanceDialog |
| | | v-if="editSelectChanceConfig.editVisible" |
| | | :edit-common-config="editSelectChanceConfig" |
| | | @selClient="selClient" |
| | | /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getAllData } from "@/api/client/client" |
| | | import { getAddOrderManage, getUpdateOrderManage } from "@/api/serviceManage/orderManage" |
| | | import { getAddServiceOrder, getUpdateServiceOrder } from "@/api/serviceManage/clientServiceOrder" |
| | | import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" |
| | | import SelectContactDialog from "@/views/other/commonDialog/SelectContactDialog" |
| | | import SelectChanceDialog from "@/views/other/commonDialog/SelectChanceDialog" |
| | | import { getFaqList } from "@/api/common/other" |
| | | import { |
| | | getFaultTypeList, |
| | | getServiceTypeList, |
| | | getSeverityList, |
| | | getPriorityLevelList, |
| | | getTimeSpentList |
| | | } from "@/api/common/other" |
| | | import Status from "@/common/const/commonStatus" |
| | | import codeMixin from "./mixin/codeMixin" |
| | | |
| | | export default { |
| | | name: "AddClientServiceOrderDialog", |
| | | mixins: [pageMixin], |
| | | mixins: [pageMixin, codeMixin], |
| | | props: { |
| | | editCommonConfig: { |
| | | type: Object, |
| | |
| | | } |
| | | } |
| | | }, |
| | | components: { SelectClientDialog }, |
| | | components: { SelectClientDialog, SelectCommonDialog, SelectContactDialog, SelectChanceDialog }, |
| | | computed: { |
| | | clientList() { |
| | | return this.$store.state.getClientName.clientList |
| | | }, |
| | | searchCommonHeight() { |
| | | return this.$refs.searchCommonView.offsetHeight |
| | | serviceContractList() { |
| | | return this.$store.state.getClientName.serviceContractList |
| | | }, |
| | | salesDetailsList() { |
| | | return this.$store.state.getClientName.salesDetailsList |
| | | }, |
| | | contactNamelist() { |
| | | return this.$store.state.getClientName.contactNamelist |
| | | }, |
| | | saleChancelist() { |
| | | return this.$store.state.getClientName.saleChancelist |
| | | }, |
| | | productList() { |
| | | return this.$store.state.getClientName.productList |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogWidth: "80%", |
| | | dialogWidth: "50%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | clientId: [{ required: true, message: "请输入客户名称", trigger: "blur" }], |
| | | number: [{ required: true, message: "请输入工单编号", trigger: "blur" }], |
| | | orderType: [{ required: true, message: "请选择", trigger: "change" }], |
| | | problemDescription: [{ required: true, message: "请输入问题描述", trigger: "blur" }] |
| | | serviceNumber: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }], |
| | | client_name: [{ required: true, message: "请选择客户名称", trigger: "change" }], |
| | | subject: [{ required: true, message: "请输入主题", trigger: "blur" }], |
| | | // productCategory: [{ required: true, message: "请选择产品类别", trigger: "change" }], |
| | | serviceManId: [{ required: true, validator: this.validateMemberId, trigger: "change" }], |
| | | serviceOrderStatusId: [{ required: true, message: "请选择故障类别", trigger: "change" }], |
| | | problemDesc: [{ required: true, message: "请输入问题描述", trigger: "blur" }] |
| | | }, |
| | | orderTypeOptions: [{ id: 1, name: "类型1" }], // 工单类型 |
| | | reportSourceOptions: [], // 报修来源 |
| | | // sourceSheetOptions: [ |
| | | // { value: "1", label: "销售明细单" }, |
| | | // { value: "2", label: "服务合同" } |
| | | // ], |
| | | approvalWorkflowOptions: [], // 审批流程 |
| | | faultTypeOptions: [{ id: 1, name: "服务回访" }], // 故障类别 |
| | | productCategoryOptions: [ |
| | | { id: 1, name: "ERP迷你版" }, |
| | | { id: 2, name: "ERP专业版-财务模块" } |
| | | ], // 产品类别 |
| | | productNameList: [], // 产品名称 |
| | | serviceTypeOptions: [], // 服务方式 |
| | | serviceManOptions: [], // 服务人员 |
| | | severityOptions: [], // 严重程度 |
| | | priorityLevelOptions: [], // 优先级别 |
| | | statusOptions: Status.processStatus, // 处理状态 |
| | | timeSpentOptions: [], // 花费时间 |
| | | faqOptions: [], // 常见问题 |
| | | editSelectClientConfig: { |
| | | editVisible: false, |
| | | title: "", |
| | |
| | | currPage: 1, |
| | | pageSize: 5, |
| | | totalCount: 0 |
| | | } |
| | | }, |
| | | editSelCommonConfig: { |
| | | editVisible: false, |
| | | title: "", |
| | | infomation: {} |
| | | }, |
| | | editSelectContactConfig: { |
| | | editVisible: false, |
| | | title: "", |
| | | infomation: {} |
| | | }, |
| | | editSelectChanceConfig: { |
| | | editVisible: false, |
| | | title: "", |
| | | infomation: {} |
| | | }, |
| | | clientId: this.editCommonConfig.infomation.clientId, |
| | | contactId: this.editCommonConfig.infomation.contactId, |
| | | serviceContractId: this.editCommonConfig.infomation.serviceContractId, |
| | | SalesDetailsId: this.editCommonConfig.infomation.SalesDetailsId, |
| | | productName: this.editCommonConfig.infomation.productName, |
| | | saleChanceId: this.editCommonConfig.infomation.saleChanceId |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.getCommonData() |
| | | this.setTable() |
| | | }, |
| | | mounted() { |
| | | this.$store.dispatch("geServiceContract") |
| | | this.$store.dispatch("geSalesDetails") |
| | | this.$store.dispatch("geContact") |
| | | this.$store.dispatch("geChance") |
| | | this.$store.dispatch("geProductList") |
| | | this.getFaultTypeList() |
| | | this.getSeverityList() |
| | | this.getPriorityLevelList() |
| | | this.getTimeSpentList() |
| | | this.formInfo() |
| | | }, |
| | | watch: { |
| | | "editCommonConfig.visible"(val) { |
| | | if (val) { |
| | | this.formInfo() |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | formInfo() { |
| | | this.objCode.codeStandID = "" |
| | | if (this.editConfig.infomation.codeStandID) { |
| | | this.objCode.codeStandID = this.editConfig.infomation.codeStandID |
| | | } |
| | | this.getRCodeStandardList() |
| | | }, |
| | | setTable() { |
| | | this.recordTableList = { |
| | | tableInfomation: [], |
| | |
| | | } |
| | | }, |
| | | getCommonData() { |
| | | getAllData() |
| | | .then((res) => { |
| | | this.memberOptions = res.data.member |
| | | this.orderTypeOptions = res.data.orderType |
| | | this.reportSourceOptions = res.data.reportSource |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | }) |
| | | getAllData().then((res) => { |
| | | this.serviceManOptions = res.data.member |
| | | if (this.editConfig.title === "新建") { |
| | | let username = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*=\s*([^;]*).*$)|^.*$/, "$1") |
| | | this.serviceManOptions.map((item) => { |
| | | if (item.username == username) { |
| | | this.editConfig.infomation.serviceManId = item.id |
| | | } |
| | | }) |
| | | } |
| | | this.reportSourceOptions = res.data.reportSource |
| | | }) |
| | | this.getServiceTypeList() |
| | | this.getFaqList() |
| | | }, |
| | | // 获取常见问题列表 |
| | | async getFaqList() { |
| | | await getFaqList().then((res) => { |
| | | console.log(res) |
| | | if (res.data.code === 200) { |
| | | this.faqOptions = res.data.data.data |
| | | } |
| | | }) |
| | | }, |
| | | // 保存 |
| | | saveClick(formName) { |
| | |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddOrderManage(params) |
| | | .then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | message: "添加成功", |
| | | type: "success" |
| | | }) |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | }) |
| | | getAddServiceOrder(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateOrderManage(params) |
| | | .then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | message: "编辑成功", |
| | | type: "success" |
| | | }) |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | }) |
| | | getUpdateServiceOrder(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") |
| | |
| | | saveParams() { |
| | | let data = this.editConfig.infomation |
| | | let params = { |
| | | id: this.editConfig.title === "新建" ? 0 : data.id, |
| | | clientId: parseInt(data.clientId) || 0, |
| | | contactId: data.contactId || 0, |
| | | file: data.file || "", |
| | | name: data.name || "", |
| | | number: data.number || "", |
| | | orderType: data.orderType || 0, |
| | | problemDescription: data.problemDescription || "", |
| | | reportSourceId: data.reportSourceId || 0, |
| | | sourceSheet: data.sourceSheet || 0 |
| | | address: data.address || "", |
| | | appointmentTime: data.appointmentTime || "", |
| | | carFare: data.carFare || 0, |
| | | chargeAmount: data.chargeAmount || 0, |
| | | clientId: this.clientId || 0, |
| | | contactId: this.contactId || 0, |
| | | serviceContractId: this.serviceContractId || 0, |
| | | expectTime: data.expectTime || "", |
| | | faqId: data.faqId || 0, |
| | | faultTypeId: data.faultTypeId || 0, |
| | | id: data.id || 0, |
| | | SalesDetailsId: this.SalesDetailsId || 0, |
| | | priorityLevelId: data.priorityLevelId || 0, |
| | | problemDesc: data.problemDesc || "", |
| | | productName: this.productName, |
| | | productTypeName: "", |
| | | realTime: data.realTime || "", |
| | | remark: data.remark || "", |
| | | saleChanceId: this.saleChanceId || 0, |
| | | serviceManId: data.serviceManId || 0, |
| | | serviceNumber: data.serviceNumber || "", |
| | | serviceTypeId: data.serviceTypeId || 0, |
| | | severityId: data.severityId || 0, |
| | | solution: data.solution || "", |
| | | solutionRemark: data.solutionRemark || "", |
| | | serviceOrderStatusId: data.serviceOrderStatusId || 0, |
| | | subject: data.subject || "", |
| | | timeSpentId: data.timeSpentId || 0, |
| | | codeStandID: data.ID |
| | | } |
| | | return params |
| | | }, |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 选择客户相关方法 |
| | | querySearchAsync(queryString, cb) { |
| | | var restaurants = this.clientList |
| | | var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants |
| | | // 选择用户相关方法 |
| | | querySearchAsync(queryString, cb, value) { |
| | | var restaurants = [] |
| | | if (value === "client") { |
| | | restaurants = this.clientList |
| | | } else if (value === "serviceContract") { |
| | | restaurants = this.serviceContractList |
| | | } else if (value === "contract") { |
| | | restaurants = this.salesDetailsList |
| | | } else if (value === "productName") { |
| | | restaurants = this.productList |
| | | } else if (value === "contact") { |
| | | restaurants = this.contactNamelist |
| | | } else if (value === "chance") { |
| | | restaurants = this.saleChancelist |
| | | } |
| | | var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants |
| | | cb(results) |
| | | }, |
| | | createStateFilter(queryString) { |
| | | createStateFilter(queryString, value) { |
| | | return (state) => { |
| | | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | if (value === "serviceContract" || value === "contract") { |
| | | return state.number.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | } else if (value === "productName") { |
| | | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | } else { |
| | | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | } |
| | | } |
| | | }, |
| | | handleSelectClient(item) { |
| | | this.editConfig.infomation.client_id = item.id |
| | | handleSelectClient(value, item) { |
| | | if (value === "client") { |
| | | this.clientId = item.id |
| | | } else if (value === "serviceContract") { |
| | | this.serviceContractId = item.id |
| | | } else if (value === "contract") { |
| | | this.SalesDetailsId = item.id |
| | | } else if (value === "productName") { |
| | | this.productName = item.name |
| | | } else if (value === "contact") { |
| | | this.contactId = item.id |
| | | } else if (value === "chance") { |
| | | this.saleChanceId = item.id |
| | | } |
| | | }, |
| | | selClientClick() { |
| | | this.editSelectClientConfig.editVisible = true |
| | | selClientClick(value) { |
| | | console.log(value) |
| | | if (value === "client") { |
| | | this.editSelectClientConfig.editVisible = true |
| | | } else if (value === "serviceContract") { |
| | | this.editSelCommonConfig.title = "服务合同" |
| | | this.editSelCommonConfig.editVisible = true |
| | | } else if (value === "contract") { |
| | | this.editSelCommonConfig.title = "销售明细单" |
| | | this.editSelCommonConfig.editVisible = true |
| | | } else if (value === "productName") { |
| | | this.editSelCommonConfig.title = "产品名称" |
| | | this.editSelCommonConfig.editVisible = true |
| | | } else if (value === "contact") { |
| | | this.editSelectContactConfig.editVisible = true |
| | | } else if (value === "chance") { |
| | | this.editSelectChanceConfig.editVisible = true |
| | | } |
| | | }, |
| | | selClient(row) { |
| | | console.log(row) |
| | | this.editConfig.infomation.client_name = row.name |
| | | this.editConfig.infomation.client_id = row.id |
| | | selClient(row, value) { |
| | | console.log(row, 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 === "serviceContract") { |
| | | this.editConfig.infomation.serviceContract_Number = row.number |
| | | this.serviceContractId = row.id |
| | | } else if (value === "contract") { |
| | | this.editConfig.infomation.number = row.number |
| | | this.SalesDetailsId = row.id |
| | | } else if (value === "productName") { |
| | | this.editConfig.infomation.productName = row.name |
| | | this.productName = row.Name |
| | | } else if (value === "chance") { |
| | | this.editConfig.infomation.sale_chance_name = row.name |
| | | this.saleChanceId = row.id |
| | | } |
| | | }, |
| | | // 清除已选择用户 |
| | | clearupClient() { |
| | | this.editConfig.infomation.client_name = "" |
| | | this.editConfig.infomation.client_id = 0 |
| | | clearupClient(value) { |
| | | if (value === "client") { |
| | | this.editConfig.infomation.client_name = "" |
| | | this.clientId = 0 |
| | | } else if (value === "serviceContract") { |
| | | this.editConfig.infomation.serviceContract_Number = "" |
| | | this.serviceContractId = 0 |
| | | } else if (value === "contract") { |
| | | this.editConfig.infomation.number = "" |
| | | this.SalesDetailsId = 0 |
| | | } else if (value === "productName") { |
| | | this.editConfig.infomation.productName = "" |
| | | this.productName = "" |
| | | } else if (value === "contact") { |
| | | this.editConfig.infomation.contact_name = "" |
| | | this.contactId = 0 |
| | | } else if (value === "chance") { |
| | | this.editConfig.infomation.sale_chance_name = "" |
| | | this.saleChanceId = 0 |
| | | } |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | |
| | | this.isRecordExpand = !this.isRecordExpand |
| | | } else if (value === "contract") { |
| | | this.isConttractExpand = !this.isConttractExpand |
| | | } |
| | | }, |
| | | // 故障类别 |
| | | getFaultTypeList() { |
| | | getFaultTypeList().then((res) => { |
| | | this.faultTypeOptions = res.data.data ? res.data.data : [] |
| | | this.$set(this.editConfig.infomation, "faultTypeId", this.editConfig.infomation.faultTypeId) |
| | | }) |
| | | }, |
| | | // 服务方式 |
| | | getServiceTypeList() { |
| | | getServiceTypeList().then((res) => { |
| | | this.serviceTypeOptions = res.data.data ? res.data.data : [] |
| | | this.$set(this.editConfig.infomation, "serviceTypeId", this.editConfig.infomation.serviceTypeId) |
| | | }) |
| | | }, |
| | | // 严重程度 |
| | | getSeverityList() { |
| | | getSeverityList().then((res) => { |
| | | this.severityOptions = res.data.data ? res.data.data : [] |
| | | |
| | | this.$set(this.editConfig.infomation, "severityId", this.editConfig.infomation.severityId) |
| | | }) |
| | | }, |
| | | // 优先级别 |
| | | getPriorityLevelList() { |
| | | getPriorityLevelList().then((res) => { |
| | | this.priorityLevelOptions = res.data.data ? res.data.data : [] |
| | | |
| | | this.$set(this.editConfig.infomation, "priorityLevelId", this.editConfig.infomation.priorityLevelId) |
| | | }) |
| | | }, |
| | | // 花费时间 |
| | | getTimeSpentList() { |
| | | getTimeSpentList().then((res) => { |
| | | this.timeSpentOptions = res.data.data ? res.data.data : [] |
| | | this.$set(this.editConfig.infomation, "timeSpentId", this.editConfig.infomation.timeSpentId) |
| | | }) |
| | | }, |
| | | // 服务人员自定义校验规则 |
| | | validateMemberId(rule, value, callback) { |
| | | if (this.editConfig.infomation?.serviceManId > 0) { |
| | | callback() |
| | | } else { |
| | | callback(new Error("请选择服务人员")) |
| | | } |
| | | } |
| | | } |
| | |
| | | height: 55px; |
| | | line-height: 55px; |
| | | } |
| | | .el-input__inner { |
| | | text-align: left; |
| | | } |
| | | } |
| | | } |
| | | </style> |