<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" style="width: 80px" :label="0" 
 | 
            >市内用车</el-radio 
 | 
          > 
 | 
          <el-radio v-model="form.type" 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:ss" 
 | 
            :picker-options="pickerOptions" 
 | 
            default-time="08:00:00" 
 | 
            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:ss" 
 | 
            :picker-options="pickerOptions2" 
 | 
            default-time="08:00:00" 
 | 
            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.id" 
 | 
              :label="item.name" 
 | 
              :value="item.id" 
 | 
            > 
 | 
            </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="600px" 
 | 
    > 
 | 
      <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; 
 | 
              }, 
 | 
            }" 
 | 
            @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.isUse == 1, 
 | 
                  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>已选择:{{ selDatetime }}</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:ss" 
 | 
            type="datetime" 
 | 
            :picker-options="pickerOptions" 
 | 
            @change="seletedShiwaiDate" 
 | 
          > 
 | 
          </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:ss" 
 | 
            type="datetime" 
 | 
            :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>已选择:{{ selDatetime }}</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' 
 | 
  
 | 
export default { 
 | 
  name: 'OperCarUseBookParamWindow', 
 | 
  extends: BaseOpera, 
 | 
  components: { GlobalWindow }, 
 | 
  data () { 
 | 
    return { 
 | 
      // 表单数据 
 | 
      isShowTime: false, 
 | 
      isShowShiwai: false, 
 | 
  
 | 
      memberList: [], 
 | 
      timeList: [], 
 | 
      selDatetime: '', 
 | 
      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' 
 | 
      }, 
 | 
      // 验证规则 
 | 
      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, 19) + ' - ' + this.form.endTime.slice(11, 19)) 
 | 
          // this.startPickerOptions = this.startPickerOptions 
 | 
        } 
 | 
      }, 
 | 
      deep: true, 
 | 
      immediate: true 
 | 
    }, 
 | 
    'form.startTime': { 
 | 
      handler (newValue, oldValue) { 
 | 
        if (newValue) { 
 | 
          this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 19) + ' - ' + '23:59:59') 
 | 
          // 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.id) { 
 | 
              memberList.push(item) 
 | 
            } 
 | 
          }) 
 | 
        }) 
 | 
        form.memberNames = memberList.map(i => i.name).join(',') 
 | 
        form.memberList = memberList 
 | 
        form.memberIds = form.memberIds.join(',') 
 | 
        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.isShowShiwai = true 
 | 
      } 
 | 
    }, 
 | 
    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) 
 | 
        this.$set(this.form, 'endTime', selTimeList[selTimeList.length - 1].endTime) 
 | 
        this.isShowTime = false 
 | 
        this.$set(this.form, 'planUseDate', null) 
 | 
        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.isShowShiwai = false 
 | 
        }) 
 | 
      } 
 | 
    }, 
 | 
    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 = '' 
 | 
      } else { 
 | 
        this.selDatetime = this.form.dateDay.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[selTimeLists.length - 1].endHours 
 | 
      } 
 | 
    }, 
 | 
    seletedDate (e) { 
 | 
      this.gettimes() 
 | 
    }, 
 | 
    seletedShiwaiDate () { 
 | 
      const { form } = this 
 | 
      if (form.startTime && form.endTime) { 
 | 
        this.selDatetime = form.startTime + '-' + form.endTime 
 | 
        carUseBookList({ 
 | 
          carId: form.carId, 
 | 
          startTime: form.startTime, 
 | 
          endTime: form.endTime 
 | 
        }).then(res => { 
 | 
          this.info = res || [] 
 | 
        }) 
 | 
      } 
 | 
    }, 
 | 
    gettimes () { 
 | 
      const { form } = this 
 | 
      carCanReservationDate({ 
 | 
        dateDay: form.dateDay, 
 | 
        carId: form.carId 
 | 
      }).then(res => { 
 | 
        this.timeList = res || [] 
 | 
        this.timeList.forEach((i, j) => { 
 | 
          i.checked = '0', 
 | 
          i.index = j 
 | 
        }) 
 | 
      }) 
 | 
    }, 
 | 
    initData () { 
 | 
      getCarList({ 
 | 
        type: 1 
 | 
      }).then(res => { 
 | 
        this.carsList = res 
 | 
      }) 
 | 
      findTypeMemberInfo({ 
 | 
        type: '2', 
 | 
        companyType: 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; 
 | 
  justify-content: space-between; 
 | 
  flex-wrap: wrap; 
 | 
  .item { 
 | 
    width: 154px; 
 | 
    height: 32px; 
 | 
    line-height: 32px; 
 | 
    text-align: center; 
 | 
    background: #f7f7f7; 
 | 
    border-radius: 4px; 
 | 
    margin-bottom: 10px; 
 | 
  } 
 | 
  .active { 
 | 
    background-color: $primary-color; 
 | 
    color: #fff; 
 | 
  } 
 | 
  .disable { 
 | 
    background-color: #cccccc; 
 | 
    color: #999999; 
 | 
  } 
 | 
  .hasSub { 
 | 
      color: #fff; 
 | 
      background: #cccccc; 
 | 
    } 
 | 
} 
 | 
.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> 
 |