| <template> | 
|   <GlobalWindow :title="title" width="1000px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> | 
|     <div class="modal_wrap"> | 
|       <el-form :model="form" ref="formRef" class="el_form" :rules="rules"> | 
|         <el-form-item label="用车范围" prop="type"> | 
|           <el-radio v-model="form.type" @change="changeType" style="width: 80px" :label="0">市内用车</el-radio> | 
|           <el-radio v-model="form.type" @change="changeType" style="width: 80px" :label="1">市外用车</el-radio> | 
|         </el-form-item> | 
|         <el-form-item label="选择车辆" prop="carId"> | 
|           <el-select v-model="form.carId" @change="clearTime" placeholder="选择车辆"> | 
|             <el-option v-for="item in carsList" :key="item.id" :label="item.code" :value="item.id"> | 
|             </el-option> | 
|           </el-select> | 
|         </el-form-item> | 
|         <el-form-item label="用车时间" prop="startTime"> | 
|           <div v-if="form.startTime && form.endTime" class="sel_btn text" @click="openTime"> | 
|             {{ form.startTime }}-{{ form.endTime }} | 
|           </div> | 
|           <div v-else class="sel_btn" @click="openTime">选择时间</div> | 
|         </el-form-item> | 
|         <el-form-item label="预计出发时间" prop="planUseDate"> | 
|           <el-date-picker v-if="form.type == '0'" :disabled="!form.startTime" v-model="form.planUseDate" | 
|             format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" type="datetime" placeholder="选择日期时间" /> | 
|           <el-date-picker v-if="form.type == '1'" :disabled="!form.startTime" v-model="form.planUseDate" | 
|             format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" type="datetime" placeholder="选择日期时间" /> | 
|         </el-form-item> | 
|         <el-form-item label="目的地" prop="addr"> | 
|           <el-input v-model="form.addr" placeholder="请输入内容"></el-input> | 
|         </el-form-item> | 
|         <el-form-item label="乘车人员" prop="memberIds"> | 
|           <el-select v-model="form.memberIds" multiple filterable placeholder="请选择"> | 
|             <el-option v-for="item in memberList" | 
|                        :key="item.memberId" :value="item.memberId" | 
|                        :label="item.companyName ? `${item.realname}-${item.companyName}` : item.realname" > | 
|             </el-option> | 
|           </el-select> | 
|         </el-form-item> | 
|         <el-form-item label="用车事由" prop="content"> | 
|           <el-input v-model="form.content" type="textarea" placeholder="请输入" :rows="4"></el-input> | 
|         </el-form-item> | 
|       </el-form> | 
|       <div class="tip_wrap"> | 
|         <h1>注意事项:</h1> | 
|         <div>1、公司车辆外出需办理用车申请表,经批准后方可外出(借出)。</div> | 
|         <div>2、市外用车需领导审核。</div> | 
|         <!-- <div> | 
|           3、借出车辆必须遵守交通规则,安全行驶。对于车辆发生交通意外,对当事人及第三方造成人身伤害及损失,公司可以协助处理保险公司赔偿相关事宜,但不承担任何责任和费用。 | 
|         </div> | 
|         <div> | 
|           4、公司借给申请人用车,申请借车人为第一责任人,不允许转借给其他人使用,若要借给他人使用。责任人要承担全部责任。 | 
|         </div> --> | 
|       </div> | 
|     </div> | 
|   | 
|     <!-- 市内 --> | 
|     <el-dialog title="选择用车时间" :visible.sync="isShowTime" append-to-body width="640px"> | 
|       <el-form :model="form" ref="modalRef" class="el_form" :rules="rules"> | 
|         <el-form-item label="用车日期" prop="dateDay"> | 
|           <el-date-picker v-model="form.dateDay" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" | 
|             :picker-options="{ | 
|               disabledDate(time) { | 
|                 return time.getTime() < Date.now() - 8.64e7 * 7; | 
|               }, | 
|             }" @change="seletedDate"> | 
|           </el-date-picker> | 
|         </el-form-item> | 
|         <el-form-item label="用车时间" prop="dateDay"> | 
|           <div> | 
|             <div class="time_list"> | 
|               <div class="item" :class="{ | 
|                 disable: item.pastFlag, | 
|                 active: item.checked == '1', | 
|                 hasSub: item.carUseBookId, | 
|               }" @click="datetimeClick(item, i)" v-for="(item, i) in timeList" :key="i"> | 
|                 {{ item.startHours }} - {{ item.endHours }} | 
|               </div> | 
|             </div> | 
|           </div> | 
|         </el-form-item> | 
|       </el-form> | 
|       <div class="color_op"> | 
|         <div class="item" v-for="item in colorOptions" :key="item.name"> | 
|           <div class="box" :style="{ background: item.color }"></div> | 
|           <div class="">{{ item.name }}</div> | 
|         </div> | 
|       </div> | 
|       <span slot="footer" class="dialog-footer"> | 
|         <div style="text-align: left;"> | 
|           <div>已选择:{{ selDatetime }}</div> | 
|           <div class="red">{{ selPastDatetime }}</div> | 
|         </div> | 
|         <div class="btn" @click="subTime">确认时间</div> | 
|       </span> | 
|     </el-dialog> | 
|     <!-- 市外 --> | 
|     <el-dialog title="选择用车时间" :visible.sync="isShowShiwai" append-to-body width="600px" :before-close="clearTime"> | 
|       <el-form :model="form" ref="modalRef" class="el_form" :rules="rules"> | 
|         <el-form-item label="用车开始时间" prop="startTime"> | 
|           <el-date-picker v-model="form.startTime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" | 
|             type="datetime" :default-time="defaultTime" :picker-options="pickerOptionsNow" | 
|             @change="seletedShiwaiDate(1)"> | 
|           </el-date-picker> | 
|         </el-form-item> | 
|         <el-form-item label="用车结束时间" prop="endTime"> | 
|           <el-date-picker v-model="form.endTime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" | 
|             type="datetime" :default-time="defaultTime" :picker-options="pickerOptions" @change="seletedShiwaiDate"> | 
|           </el-date-picker> | 
|         </el-form-item> | 
|       </el-form> | 
|       <div class="have_info" v-if="info && info.length > 0"> | 
|         <div class="tit">您申请的用车时段已有车辆预约</div> | 
|         <div class="content" v-for="(item, i) in info" :key="i"> | 
|           <div class="df_sb"> | 
|             <span class="card" v-if="item.carCode">{{ item.carCode }}</span> | 
|             <span>{{ i + 1 }}/{{ info.length }}</span> | 
|           </div> | 
|           <div class="line"> | 
|             <span>用车时段</span> | 
|             <span> | 
|               {{ item.startTime.slice(5, 16) }}至{{ | 
|                 item.endTime.slice(5, 16) | 
|               }}</span> | 
|           </div> | 
|           <div class="line"> | 
|             <span>目的地</span> | 
|             <span>{{ item.addr }}</span> | 
|           </div> | 
|           <div class="line"> | 
|             <span>乘车人数</span> | 
|             <span>{{ item.memberIds.split(",").length }}人</span> | 
|           </div> | 
|           <div class="line"> | 
|             <span>用车事由</span> | 
|             <span>{{ item.content }}</span> | 
|           </div> | 
|           <div class="line"> | 
|             <span>申请人</span> | 
|             <span>{{ item.memberName }} <span class="primaryColor">{{ item.memberMobile }}</span></span> | 
|           </div> | 
|         </div> | 
|       </div> | 
|   | 
|       <span slot="footer" class="dialog-footer"> | 
|         <div style="text-align: left;"> | 
|           <div>已选择:{{ selDatetime }}</div> | 
|           <div class="red">{{ selPastDatetime }}</div> | 
|         </div> | 
|         <div class="btn" :class="{ disable: info && info.length > 0 }" @click="subTime">确认时间</div> | 
|       </span> | 
|     </el-dialog> | 
|     <!-- 详情 --> | 
|     <el-dialog title="选择用车时间" :visible.sync="isShowDetail" append-to-body width="600px"> | 
|       <div class="detail_modal"> | 
|         <div class="title">车辆预约情况</div> | 
|         <div class="h1" v-if="activeInfo.carCode">{{ activeInfo.carCode }}</div> | 
|         <div class="line"> | 
|           <div class="label">预计用车时段</div> | 
|           <div class="value" v-if="activeInfo.startTime">{{ activeInfo.startTime.slice(5, 16) }} - {{ | 
|             activeInfo.endTime.slice(5, 16) }}</div> | 
|         </div> | 
|         <div class="line"> | 
|           <div class="label">目的地</div> | 
|           <div class="value">{{ activeInfo.addr }}</div> | 
|         </div> | 
|         <div class="line"> | 
|           <div class="label">乘车人数</div> | 
|           <div class="value" v-if="activeInfo.memberIds">{{ activeInfo.memberIds.split(',').length }}人</div> | 
|         </div> | 
|         <div class="line"> | 
|           <div class="label">用车事由</div> | 
|           <div class="value">{{ activeInfo.content || '' }}</div> | 
|         </div> | 
|         <div class="line"> | 
|           <div class="label">申请人</div> | 
|           <div class="value">{{ activeInfo.memberName }} <span class="primaryColor ml12">{{ activeInfo.memberPhone | 
|               }}</span></div> | 
|         </div> | 
|       </div> | 
|     </el-dialog> | 
|   </GlobalWindow> | 
| </template> | 
|   | 
| <script> | 
| import BaseOpera from '@/components/base/BaseOpera' | 
| import GlobalWindow from '@/components/common/GlobalWindow' | 
| import { allList } from '@/api/business/member' | 
| import { allList as getCarList } from '@/api/business/cars' | 
| import { carCanReservationDate, carUseBookCraete, carUseBookList, detail } from '@/api/business/carUseBook' | 
| import { findTypeMemberInfo } from '@/api/business/memberCard' | 
| import dayjs from 'dayjs' | 
| import { findAllList as userList } from '@/api/system/user' | 
|   | 
| export default { | 
|   name: 'OperCarUseBookParamWindow', | 
|   extends: BaseOpera, | 
|   components: { GlobalWindow }, | 
|   data () { | 
|     return { | 
|       // 表单数据 | 
|       isShowTime: false, | 
|       isShowShiwai: false, | 
|   | 
|       memberList: [], | 
|       timeList: [], | 
|       defaultTime: dayjs().format('HH:mm:ss'), | 
|       selDatetime: '', | 
|       selPastDatetime: '', | 
|       colorOptions: [ | 
|         { color: this.$store.state.primaryColor, name: '已选择' }, | 
|         { color: '#F7F7F7', name: '可预约' }, | 
|         { color: '#cccccc', name: '不可预约' } | 
|       ], | 
|       info: [], | 
|   | 
|       carsList: [], | 
|       form: { | 
|         type: 0, | 
|         startTime: '', | 
|         endTime: '', | 
|         memberIds: [] | 
|       }, | 
|       activeInfo: {}, | 
|       isShowDetail: false, | 
|       carBookInfo: {}, | 
|       pickerOptions: { | 
|         disabledDate: (time) => { | 
|           if (this.form.startTime) { | 
|             const minTime = new Date(this.form.startTime).getTime() - 8.64e7 | 
|             const maxTime = this.form.endTime ? new Date(this.form.endTime).getTime() : '' | 
|             return ( | 
|               // maxTime ? time.getTime() < minTime || time.getTime() > maxTime : time.getTime() < minTime | 
|               time.getTime() < minTime | 
|             ) | 
|           } else { | 
|             return time.getTime() < Date.now() - 8.64e7 | 
|           } | 
|         } | 
|       }, | 
|       pickerOptions2: { | 
|         disabledDate: (time) => { | 
|           if (this.form.startTime && this.form.endTime) { | 
|             const minTime = new Date(this.form.startTime).getTime() | 
|             const maxTime = new Date(this.form.endTime).getTime() | 
|             return ( | 
|               time.getTime() < minTime - 8.64e7 || time.getTime() > maxTime | 
|             ) | 
|           } else { | 
|             return time.getTime() < Date.now() - 8.64e7 | 
|           } | 
|         }, | 
|         selectableRange: '00:00:00 - 23:59:59' | 
|       }, | 
|       pickerOptionsNow: { | 
|         disabledDate: (time) => { | 
|           return time.getTime() < Date.now() - 8.64e7 * 7 | 
|         } | 
|       }, | 
|       // 验证规则 | 
|       rules: { | 
|         type: [{ required: true, message: '请选择', trigger: 'change' }], | 
|         carId: [{ required: true, message: '请选择', trigger: 'change' }], | 
|         startTime: [{ required: true, message: '请选择', trigger: 'change' }], | 
|         endTime: [{ required: true, message: '请选择', trigger: 'change' }], | 
|         planUseDate: [{ required: true, message: '请选择', trigger: 'change' }], | 
|         addr: [{ required: true, message: '请输入', trigger: 'blur' }], | 
|         memberIds: [{ type: 'array', required: true, message: '请选择', trigger: 'change' }], | 
|         content: [{ required: true, message: '请输入', trigger: 'blur' }] | 
|       } | 
|     } | 
|   }, | 
|   computed: { | 
|   | 
|   }, | 
|   // watch: { | 
|   //   'form.planUseDate': { | 
|   //     handler (newValue, oldValue) { | 
|   //       if (newValue) { | 
|   //         this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 16) + ' - ' + this.form.endTime.slice(11, 16)) | 
|   //         // this.startPickerOptions = this.startPickerOptions | 
|   //       } | 
|   //     }, | 
|   //     deep: true, | 
|   //     immediate: true | 
|   //   } | 
|   // }, | 
|   created () { | 
|     this.initData() | 
|   }, | 
|   methods: { | 
|     open () { | 
|       this.title = '新建公务车用车申请' | 
|       this.form = { | 
|         type: 0, | 
|         memberIds: [] | 
|       } | 
|       this.$nextTick(() => { | 
|         this.$refs.formRef.clearValidate() | 
|       }) | 
|       this.visible = true | 
|     }, | 
|     confirm () { | 
|       const form = JSON.parse(JSON.stringify(this.form)) | 
|       this.$refs.formRef.validate((valid) => { | 
|         const memberList = [] | 
|         form.memberIds.forEach(i => { | 
|           this.memberList.forEach(item => { | 
|             if (i === item.memberId) { | 
|               memberList.push(item) | 
|             } | 
|           }) | 
|         }) | 
|         form.memberNames = memberList.map(i => i.realname).join(',') | 
|         form.memberList = memberList | 
|         form.memberIds = form.memberIds.join(',') | 
|         form.startTime = form.startTime + ':00' | 
|         form.planUseDate = form.planUseDate + ':00' | 
|         form.endTime = form.endTime + ':59' | 
|         if (valid) { | 
|           carUseBookCraete({ | 
|             ...form | 
|           }).then(res => { | 
|             this.visible = false | 
|             this.$emit('success') | 
|           }) | 
|         } | 
|       }) | 
|     }, | 
|     openTime () { | 
|       const { form } = this | 
|       if (!form.carId) { | 
|         return this.$tip.error('请先选择车辆') | 
|       } | 
|       if (this.form.type === 0) { | 
|         this.$set(this.form, 'dateDay', '') | 
|         this.timeList = [] | 
|         this.isShowTime = true | 
|       } else { | 
|         this.clearTime() | 
|         this.selDatetime = '' | 
|         this.isShowShiwai = true | 
|       } | 
|     }, | 
|     changeType () { | 
|       this.$set(this.form, 'startTime', '') | 
|       this.$set(this.form, 'endTime', '') | 
|       this.$set(this.form, 'planUseDate', '') | 
|       this.$nextTick(() => { | 
|         this.$refs.formRef.clearValidate() | 
|       }) | 
|     }, | 
|     clearTime () { | 
|       this.isShowShiwai = false | 
|       this.$set(this.form, 'startTime', '') | 
|       this.$set(this.form, 'endTime', '') | 
|       this.$nextTick(() => { | 
|         if (this.$refs.modalRef) { | 
|           this.$refs.modalRef.clearValidate() | 
|         } | 
|       }) | 
|     }, | 
|     subTime () { | 
|       if (this.info && this.info.length > 0) return | 
|       if (this.form.type === 0) { | 
|         const selTimeList = this.timeList.filter(i => i.checked == '1') | 
|         if (selTimeList.length === 0) { | 
|           return this.$tip.error('请先选择用车时间段') | 
|         } | 
|         this.$set(this.form, 'startTime', selTimeList[0].startTime.slice(0, 16)) | 
|         this.$set(this.form, 'endTime', selTimeList[selTimeList.length - 1].endTime.slice(0, 16)) | 
|         this.isShowTime = false | 
|         this.$set(this.form, 'planUseDate', selTimeList[0].startTime.slice(0, 16)) | 
|         this.$forceUpdate() | 
|       } else { | 
|         this.$refs.modalRef.validate((valid) => { | 
|           const { form } = this | 
|           if (new Date(form.startTime).getTime() > new Date(form.endTime).getTime()) { | 
|             return this.$tip.error('结束时间应大于开始时间') | 
|           } | 
|           this.$set(this.form, 'planUseDate', form.startTime) | 
|           this.$forceUpdate() | 
|           this.isShowShiwai = false | 
|         }) | 
|       } | 
|       console.log('form', this.form) | 
|     }, | 
|     datetimeClick (item, index) { | 
|       if (item.carUseBookId) { | 
|         detail( | 
|           item.carUseBookId | 
|         ).then(res => { | 
|           this.activeInfo = res | 
|           this.isShowDetail = true | 
|         }) | 
|         return | 
|       } | 
|       if (item.isUse == '1') return | 
|       const { timeList } = this | 
|       const selTimeList = timeList.filter(i => i.checked == '1') | 
|       if (selTimeList.length === 0) { | 
|         this.timeList.forEach((ite, i) => { | 
|           if (i === index) { | 
|             ite.checked = '1' | 
|             this.$forceUpdate() | 
|           } | 
|         }) | 
|       } else { | 
|         const findIndex = selTimeList.findIndex(i => i.index === index) | 
|         console.log('findIndex', findIndex) | 
|         if (findIndex === -1) { | 
|           const startNum = index - selTimeList[0].index | 
|           const endNum = index - selTimeList[selTimeList.length - 1].index | 
|           if (startNum == 1 || startNum == -1 || endNum == 1 || endNum == -1) { | 
|             console.log('相邻') | 
|             item.checked = true | 
|             this.$forceUpdate() | 
|           } else { | 
|             return this.$tip.error('请选择相邻的时间段') | 
|           } | 
|         } else { | 
|           if (index === selTimeList[0].index || index === selTimeList[selTimeList.length - 1].index) { | 
|             item.checked = false | 
|             this.$forceUpdate() | 
|           } else { | 
|             return this.$tip.error('请先取消最外层的时间段') | 
|           } | 
|         } | 
|       } | 
|       const selTimeLists = this.timeList.filter(i => i.checked == '1') | 
|       // console.log('selTimeList', selTimeList); | 
|       if (selTimeLists.length === 0) { | 
|         this.selDatetime = '' | 
|         this.selPastDatetime = '' | 
|       } else { | 
|         const pastList = selTimeLists.filter(i => i.pastFlag) | 
|         if (pastList.length > 0) { | 
|           this.selPastDatetime = '当前选择包含已经过去时间,请确认后再提交;' | 
|         } else { | 
|           this.selPastDatetime = '' | 
|         } | 
|         this.selDatetime = this.form.dateDay.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[selTimeLists.length - 1].endHours | 
|       } | 
|     }, | 
|     seletedDate (e) { | 
|       this.gettimes() | 
|     }, | 
|     seletedShiwaiDate (str) { | 
|       const { form } = this | 
|       if (str && str == 1) { | 
|         this.$set(this.form, 'endTime', '') | 
|       } | 
|   | 
|       if (form.startTime && form.endTime) { | 
|         this.selDatetime = form.startTime + ' - ' + form.endTime | 
|         if (new Date(form.startTime).getTime() < new Date().getTime()) { | 
|           this.selPastDatetime = '当前选择包含已经过去时间,请确认后再提交;' | 
|         } else { | 
|           this.selPastDatetime = '' | 
|         } | 
|         carUseBookList({ | 
|           carId: form.carId, | 
|           startTime: form.startTime + ':00', | 
|           endTime: form.endTime + ':59' | 
|         }).then(res => { | 
|           this.info = res || [] | 
|         }) | 
|       } else { | 
|         this.selPastDatetime = '' | 
|       } | 
|     }, | 
|     gettimes () { | 
|       const { form } = this | 
|       carCanReservationDate({ | 
|         dateDay: form.dateDay, | 
|         carId: form.carId | 
|       }).then(res => { | 
|         this.timeList = res || [] | 
|         this.timeList.forEach((i, j) => { | 
|           i.pastFlag = new Date().getTime() > new Date(i.startTime).getTime() | 
|           i.checked = '0', | 
|           i.index = j | 
|         }) | 
|       }) | 
|     }, | 
|     initData () { | 
|       getCarList({ | 
|         type: 0 | 
|       }).then(res => { | 
|         this.carsList = res | 
|       }) | 
|       userList({ queryParam: this.filterText, querySpecial: 1, type: 2, companyType: 1, workStatus: 0 }) | 
|         .then(res => { | 
|           this.memberList = res || [] | 
|         }) | 
|       /* findTypeMemberInfo({ | 
|         type: '2', | 
|         companyType: 1, | 
|         querySpecial: 1 | 
|       }).then(res => { | 
|         this.memberList = res || [] | 
|       }) */ | 
|     } | 
|   } | 
| } | 
| </script> | 
|   | 
| <style scoped lang="scss"> | 
| @import "@/assets/style/variables.scss"; | 
|   | 
| div { | 
|   box-sizing: border-box; | 
| } | 
|   | 
| .modal_wrap { | 
|   display: flex; | 
|   padding: 20px 0; | 
|   | 
|   .el_form { | 
|     flex: 1; | 
|   | 
|     .sel_btn { | 
|       width: 100%; | 
|       height: 32px; | 
|       border-radius: 4px; | 
|       border: 1px solid #dcdfe6; | 
|       margin-top: 32px; | 
|       text-align: left; | 
|       padding-left: 12px; | 
|       color: #999999; | 
|       padding-right: 12px; | 
|       box-sizing: border-box; | 
|       cursor: pointer; | 
|     } | 
|   | 
|     .text { | 
|       color: #606266; | 
|     } | 
|   } | 
|   | 
|   .tip_wrap { | 
|     flex: 1; | 
|     margin-left: 30px; | 
|     padding: 0 30px; | 
|   | 
|     h1 { | 
|       margin-bottom: 20px; | 
|     } | 
|   | 
|     div { | 
|       line-height: 28px; | 
|     } | 
|   } | 
| } | 
|   | 
| .time_list { | 
|   display: flex; | 
|   flex-wrap: wrap; | 
|   | 
|   .item { | 
|     margin-right: 8px; | 
|     margin-bottom: 8px; | 
|     font-size: 14px; | 
|     font-weight: 400; | 
|     line-height: 14px; | 
|     width: 124px; | 
|     height: 36px; | 
|     display: flex; | 
|     justify-content: center; | 
|     align-items: center; | 
|     border-radius: 5px; | 
|     color: #111; | 
|     border: #cccccc solid 1px; | 
|     cursor: pointer; | 
|   } | 
|   | 
|   .disable { | 
|     color: #fff; | 
|     border-color: #cccccc; | 
|     background-color: #cccccc; | 
|   } | 
|   .active { | 
|     border-color: $primary-color; | 
|     background-color: #f6f9fe; | 
|     color: $primary-color; | 
|   } | 
|   .hasSub { | 
|     border-color: #bed6f9; | 
|     background-color: #bed6f9; | 
|     color: #fff; | 
|   } | 
| } | 
|   | 
| .color_op { | 
|   display: flex; | 
|   | 
|   .item { | 
|     display: flex; | 
|     align-items: center; | 
|     margin-right: 10px; | 
|   | 
|     .box { | 
|       margin-right: 4px; | 
|       width: 16px; | 
|       height: 16px; | 
|     } | 
|   } | 
| } | 
|   | 
| .dialog-footer { | 
|   display: flex; | 
|   align-items: center; | 
|   justify-content: space-between; | 
|   | 
|   .btn { | 
|     height: 42px; | 
|     line-height: 42px; | 
|     background-color: $primary-color; | 
|     color: #fff; | 
|     width: 120px; | 
|     text-align: center; | 
|     cursor: pointer; | 
|   } | 
|   | 
|   .disable { | 
|     background: #cccccc; | 
|   } | 
| } | 
|   | 
| .have_info { | 
|   padding: 0 0 60px; | 
|   | 
|   .tit { | 
|     color: #ed4545; | 
|     margin: 20px 0 12px; | 
|   } | 
|   | 
|   .content { | 
|     background: #f7f7f7; | 
|     border-radius: 8px; | 
|     padding: 15px 15px 5px; | 
|     margin-bottom: 10px; | 
|   | 
|     .card { | 
|       margin-bottom: 15px; | 
|       font-weight: 500; | 
|       font-size: 16px; | 
|       color: #222222; | 
|       background: #f7f7f7; | 
|       padding: 0; | 
|     } | 
|   | 
|     .line { | 
|       display: flex; | 
|       margin-bottom: 10px; | 
|   | 
|       span { | 
|         &:nth-of-type(1) { | 
|           width: 80px; | 
|           color: #888888; | 
|         } | 
|   | 
|         &:nth-of-type(2) { | 
|           flex: 1; | 
|         } | 
|       } | 
|     } | 
|   } | 
| } | 
|   | 
| .detail_modal { | 
|   padding: 20px 15px; | 
|   | 
|   .title { | 
|     text-align: center; | 
|     font-weight: 600; | 
|     font-size: 16px; | 
|     margin-bottom: 20px; | 
|   } | 
|   | 
|   .h1 { | 
|     font-weight: 600; | 
|     font-size: 16px; | 
|     margin-bottom: 16px; | 
|   } | 
|   | 
|   .line { | 
|     display: flex; | 
|     margin-bottom: 10px; | 
|   | 
|     .label { | 
|       width: 120px; | 
|       color: #888888; | 
|     } | 
|   | 
|     .value { | 
|       color: #333333; | 
|     } | 
|   } | 
| } | 
| </style> |