| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | @confirm="confirm" |
| | | @close="reject" |
| | | > |
| | | <div class="modal_wrap"> |
| | | <div class="modal_content"> |
| | | <div class="header"> |
| | | <div class="left"> |
| | | <div class="h1">éæ£ææ¥</div> |
| | | <div class="time">ææ¥æ¶é´ï¼{{model.createDate}}</div> |
| | | </div> |
| | | <div class="right" v-if="model.status==0">å¾
å¤ç</div> |
| | | <div class="right" style="background:#53b76f " v-if="model.status==1">å·²å¤ç</div> |
| | | <div class="right" style="background:#dc362e " v-if="model.status==2">å·²éå</div> |
| | | </div> |
| | | <div class="info"> |
| | | <div class="title">éæ£ææ¥è¯¦æ
</div> |
| | | <div class="list"> |
| | | <div class="item"> |
| | | <div class="label">ææ¥äºº</div> |
| | | <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">鿣åºå</div> |
| | | <div class="value">{{model.areaName || ''}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">éæ£ç±»å</div> |
| | | <div class="value">{{model.categoryName || ''}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">鿣æè¿°</div> |
| | | <div class="value">{{model.content || ''}}</div> |
| | | </div> |
| | | <div class="item" style="width: 100%"> |
| | | <div class="label">ç°åºæ
åµ</div> |
| | | <div class="value" v-if="model.submitFileList ==null || !model.submitFileList.length">æ </div> |
| | | <div class="value" v-if="model.submitFileList !=null && model.submitFileList.length"> |
| | | <div v-for="item in model.submitFileList" :key="item.id" style="display: inline;margin-right: 20px"> |
| | | <video |
| | | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" |
| | | ref="videoRef" |
| | | controls |
| | | preload="auto" |
| | | style="width: 80px;height: 80px;object-fit: contain;" |
| | | :src="item.fileurlFull" |
| | | /> |
| | | <el-image |
| | | v-else-if="item.fileurlFull" |
| | | style="width:80px; height: 80px" |
| | | :src="item.fileurlFull" |
| | | :preview-src-list="[item.fileurlFull]"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="item" v-if="model.status==1||model.status==2" style="width: 100%"> |
| | | <div class="label">å¤çå</div> |
| | | <div class="value" v-if="model.dealBeforeFileList !=null && model.dealBeforeFileList.length"> |
| | | <div v-for="item in model.dealBeforeFileList" :key="item.id" style="display: inline;margin-right: 20px"> |
| | | <video |
| | | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" |
| | | ref="videoRef" |
| | | autoplay |
| | | controls |
| | | preload="auto" |
| | | style="width: 80px;height: 80px;object-fit: contain;" |
| | | :src="item.fileurlFull" |
| | | /> |
| | | <el-image |
| | | v-else-if="item.fileurlFull" |
| | | style="width:80px; height: 80px" |
| | | :src="item.fileurlFull" |
| | | :preview-src-list="[item.fileurlFull]"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="item" v-if="model.status==1" style="width: 100%"> |
| | | <div class="label">å¤çå</div> |
| | | <div class="value" v-if="model.dealAfterFileList !=null && model.dealAfterFileList.length"> |
| | | <div v-for="item in model.dealAfterFileList" :key="item.id" style="display: inline;margin-right: 20px"> |
| | | <video |
| | | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" |
| | | ref="videoRef" |
| | | autoplay |
| | | controls |
| | | preload="auto" |
| | | style="width: 80px;height: 80px;object-fit: contain;" |
| | | :src="item.fileurlFull" |
| | | /> |
| | | <el-image |
| | | v-else-if="item.fileurlFull" |
| | | style="width:80px; height: 80px" |
| | | :src="item.fileurlFull" |
| | | :preview-src-list="[item.fileurlFull]"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="item" v-if="model.status==1 || model.status==2"> |
| | | <div class="label" v-if="model.status==1">å¤ç说æ</div> |
| | | <div class="label" v-if="model.status==2">éå说æ</div> |
| | | <div class="value">{{model.checkInfo}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="side"> |
| | | <div class="side_title">å®¡æ¹æµç¨</div> |
| | | <div class="list"> |
| | | <div class="item" v-for="(item,index) in logList" :key="item.id"> |
| | | <div class="separate" v-if="index < logList.length-1"></div> |
| | | <div class="info"> |
| | | <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="(model.status ==1) || index < logList.length-1"/> |
| | | <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="(model.status==0) && index == logList.length-1"/> |
| | | <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="(model.status==2) && index == logList.length-1"/> |
| | | <img v-if="item.avatar!=null && item.avatar !=''" :src="item.avatar" class="avatar" alt="" /> |
| | | <img v-if="item.avatar ==null ||item.avatar ==''" src="@/assets/avatar/man.png" class="avatar" alt="" /> |
| | | <div class="content"> |
| | | <div class="line"> |
| | | <div class="name">{{ item.title}}</div> |
| | | <div class="time">{{ item.createDate }}</div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="company"> |
| | | {{ item.createUserName }} |
| | | <div style="display: inline" v-if="index == logList.length-1"> |
| | | ï¼<span class="status-green" v-if="model.status==1">å·²å¤ç</span> |
| | | <span class="status-blue" v-if="model.status==0">å¾
å¤ç</span> |
| | | <span class="status-red" v-if="model.status==2">å·²éå</span>ï¼ |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- --> |
| | | <template v-slot:footer> |
| | | <el-button @click="openHandModal" type="primary" v-if="model.status==0&& model.checkUserId == userInfo.memberId" class="status-red">å¤ç</el-button> |
| | | <el-button type="primary" plain v-if="model.status==0 && model.checkUserId == userInfo.memberId" @click="handleTransfer">转交</el-button> |
| | | <el-button @click="openBackModal" v-if="model.status==0&& model.checkUserId == userInfo.memberId" type="danger" >éå</el-button> |
| | | <el-button @click="visible=false">è¿å</el-button> |
| | | </template> |
| | | |
| | | <el-dialog |
| | | append-to-body |
| | | title="转交" |
| | | class="dialogCl" |
| | | :visible.sync="isShowTransfer" |
| | | width="480px" |
| | | > |
| | | <el-form :model="transForm" ref="transForm" :rules="rulesTrans"> |
| | | <el-form-item label="éæ£è½¬äº¤äºº" prop="memberId"> |
| | | <el-select v-model="transForm.memberId" style="width: 300px" filterable clearable placeholder="è¯·éæ©è½¬äº¤å®å
¨å"> |
| | | <el-option |
| | | v-for="item in memberList" |
| | | :key="item.memberId" |
| | | :label="item.companyName ? `${item.realname}-${item.companyName}` : item.realname" |
| | | :value="item.memberId"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="isShowTransfer = false">åæ¶</el-button> |
| | | <el-button type="primary" :loading="transfering" @click="transferSubmit">ç¡®å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 鿣 --> |
| | | <el-dialog |
| | | append-to-body |
| | | title="鿣å¤ç" |
| | | class="dialogCl" |
| | | :visible.sync="isShowProblem" |
| | | width="600px" |
| | | > |
| | | <el-form :model="dealForm" :rules="rulesDeal" ref="dealForm" label-width="100px"> |
| | | <el-form-item label="æ´æ¹æ¶é´" prop="checkDate"> |
| | | <el-date-picker |
| | | class="w300" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="éæ©æ´æ¹æ¶é´" |
| | | v-model="dealForm.checkDate" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ¹å" prop="dealBeforeFileList"> |
| | | <div class="df_ac"> |
| | | <upload width="80px" height="80px" :list="dealForm.dealBeforeFileList" :tips="'å¾ç/è§é¢'" accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,0)" @success="uploadFileList($event, 0)" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ¹å" prop="dealAfterFileList"> |
| | | <div class="df_ac"> |
| | | <upload width="80px" height="80px" :list="dealForm.dealAfterFileList" :tips="'å¾ç/è§é¢'" accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,1)" @success="uploadFileList($event, 1)" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="å¤ç说æ"> |
| | | <el-input |
| | | type="textarea" |
| | | placeholder="请填å说æ" |
| | | :rows="4" |
| | | v-model="dealForm.checkInfo" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="isShowProblem = false">åæ¶</el-button> |
| | | <el-button type="primary" :loading="dealing" @click="dealDo" |
| | | >ç¡®å®</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | append-to-body |
| | | title="鿣éå" |
| | | |
| | | class="dialogCl" |
| | | :visible.sync="isBackProblem" |
| | | width="600px" |
| | | > |
| | | <el-form :model="backForm" :rules="rulesBack" ref="backForm" label-width="100px"> |
| | | <el-form-item label="éåæ¶é´" prop="checkDate"> |
| | | <el-date-picker |
| | | class="w300" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="datetime" |
| | | placeholder="éæ©éåæ¶é´" |
| | | v-model="backForm.checkDate" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="å¾ç/è§é¢" prop="dealBeforeFileList"> |
| | | <div class="df_ac"> |
| | | <upload width="80px" height="80px" :list="backForm.dealBeforeFileList" :tips="'å¾ç/è§é¢'" accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,2)" @success="uploadFileList($event, 2)" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="éå说æ"> |
| | | <el-input |
| | | type="textarea" |
| | | placeholder="请填å说æ" |
| | | :rows="4" |
| | | v-model="backForm.checkInfo" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="isBackProblem= false">åæ¶</el-button> |
| | | <el-button type="primary" :loading="transfering" @click="backDo" |
| | | >ç¡®å®</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import upload from '@/components/common/upload' |
| | | import dayjs from 'dayjs' |
| | | import { memberList } from '@/api/business/hiddenDangerParam' |
| | | import { mapState } from 'vuex' |
| | | import {findAllList as userList} from "@/api/system/user"; |
| | | export default { |
| | | components: { GlobalWindow, upload }, |
| | | extends: BaseOpera, |
| | | data () { |
| | | return { |
| | | title: '访客é¢çº¦è¯¦æ
', |
| | | visible: false, |
| | | transfering: false, |
| | | dataId: null, |
| | | model: { }, |
| | | logList: [], |
| | | isShowAppr: false, |
| | | apprTitle: 'åæ', |
| | | param: {}, |
| | | uploading: false, |
| | | dealing: false, |
| | | isShowProblem: false, |
| | | isBackProblem: false, |
| | | isShowTransfer: false, |
| | | rules: {}, |
| | | rulesTrans: { |
| | | memberId: [ |
| | | { required: true, message: 'è¯·éæ©' } |
| | | ] |
| | | }, |
| | | rulesDeal: { |
| | | checkDate: [ |
| | | { required: true, message: 'è¯·éæ©æ´æ¹æ¶é´' } |
| | | ], |
| | | dealBeforeFileList: [ |
| | | { required: true, message: '请ä¸ä¼ æ´æ¹åæ
åµ' } |
| | | ], |
| | | dealAfterFileList: [ |
| | | { required: true, message: '请ä¸ä¼ æ´æ¹åæ
åµ' } |
| | | ] |
| | | }, |
| | | rulesBack: { |
| | | checkDate: [ |
| | | { required: true, message: 'è¯·éæ©éåæ¶é´' } |
| | | ] |
| | | /*, |
| | | dealBeforeFileList: [ |
| | | { required: true, message: '请ä¸ä¼ æ´æ¹åæ
åµ' } |
| | | ] */ |
| | | }, |
| | | memberList: [], |
| | | transForm: { |
| | | memberId: null |
| | | }, |
| | | dealForm: { |
| | | checkDate: null, |
| | | checkInfo: null, |
| | | dealBeforeFileList: [], |
| | | dealAfterFileList: [] |
| | | }, |
| | | backForm: { |
| | | checkDate: null, |
| | | checkInfo: null, |
| | | dealBeforeFileList: [] |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/hiddenDanger', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | openHandModal () { |
| | | const { model } = this |
| | | this.isShowProblem = true |
| | | this.$set(this.dealForm, 'checkDate', dayjs().format('YYYY-MM-DD HH:mm:ss')) |
| | | if (model.submitFileList && model.submitFileList.length > 0) { |
| | | this.$set(this.dealForm, 'dealBeforeFileList', model.submitFileList.map(item => { |
| | | return { |
| | | fileurl: item.fileurl, |
| | | name: item.name, |
| | | url: item.fileurlFull |
| | | } |
| | | })) |
| | | } |
| | | }, |
| | | openBackModal () { |
| | | this.isBackProblem = true |
| | | this.$set(this.backForm, 'checkDate', dayjs().format('YYYY-MM-DD HH:mm:ss')) |
| | | }, |
| | | dele (index, type) { |
| | | if (type == 0) { |
| | | if (this.dealForm.dealBeforeFileList != null && this.dealForm.dealBeforeFileList.length > index) { |
| | | this.dealForm.dealBeforeFileList.splice(index, 1) |
| | | } |
| | | } else if (type == 1) { |
| | | if (this.dealForm.dealAfterFileList != null && this.dealForm.dealAfterFileList.length > index) { |
| | | this.dealForm.dealAfterFileList.splice(index, 1) |
| | | } |
| | | } else if (type == 2) { |
| | | if (this.backForm.dealBeforeFileList != null && this.backForm.dealBeforeFileList.length > index) { |
| | | this.backForm.dealBeforeFileList.splice(index, 1) |
| | | } |
| | | } |
| | | }, |
| | | uploadFileList (e, objType) { |
| | | if (objType === 0) { |
| | | if (this.dealForm.dealBeforeFileList == null) { |
| | | this.dealForm.dealBeforeFileList = [] |
| | | } |
| | | this.dealForm.dealBeforeFileList.push({ |
| | | fileurl: e.imgaddr, |
| | | url: e.url, |
| | | name: e.originname, |
| | | fileType: e.type |
| | | }) |
| | | } else if (objType === 1) { |
| | | if (this.dealForm.dealAfterFileList == null) { |
| | | this.dealForm.dealAfterFileList = [] |
| | | } |
| | | this.dealForm.dealAfterFileList.push({ |
| | | fileurl: e.imgaddr, |
| | | url: e.url, |
| | | name: e.originname, |
| | | fileType: e.type |
| | | }) |
| | | } else if (objType === 2) { |
| | | if (this.backForm.dealBeforeFileList == null) { |
| | | this.backForm.dealBeforeFileList = [] |
| | | } |
| | | this.backForm.dealBeforeFileList.push({ |
| | | fileurl: e.imgaddr, |
| | | url: e.url, |
| | | name: e.originname, |
| | | fileType: e.type |
| | | }) |
| | | } |
| | | }, |
| | | dealDo () { |
| | | this.$refs.dealForm.validate((valid) => { |
| | | // debugger |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.$dialog.actionConfirm('æä½ç¡®è®¤', 'æ¨ç¡®è®¤æäº¤è¯¥éæ£å¤çæ
åµåï¼') |
| | | .then(() => { |
| | | this.dealing = true |
| | | this.api.dealHiddenDanger({ |
| | | id: this.dataId, |
| | | status: 1, |
| | | dealTime: this.dealForm.checkDate, |
| | | checkInfo: this.dealForm.checkInfo, |
| | | dealBeforeFileList: this.dealForm.dealBeforeFileList, |
| | | dealAfterFileList: this.dealForm.dealAfterFileList |
| | | }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess('å¤çæå') |
| | | this.getDetail() |
| | | this.getLogList() |
| | | this.$emit('success') |
| | | this.isShowProblem = false |
| | | }) |
| | | .catch(e => { |
| | | }) |
| | | .finally(() => { |
| | | this.dealing = false |
| | | }) |
| | | }) |
| | | }) |
| | | }, |
| | | backDo () { |
| | | this.$refs.backForm.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.$dialog.actionConfirm('æä½ç¡®è®¤', 'æ¨ç¡®è®¤éåè¯¥éæ£å¤çæ
åµåï¼') |
| | | .then(() => { |
| | | this.dealing = true |
| | | this.api.dealHiddenDanger({ |
| | | id: this.dataId, |
| | | status: 2, |
| | | dealTime: this.backForm.checkDate, |
| | | checkInfo: this.backForm.checkInfo, |
| | | dealBeforeFileList: this.backForm.dealBeforeFileList |
| | | }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess('éåæå') |
| | | this.getDetail() |
| | | this.getLogList() |
| | | this.$emit('success') |
| | | this.isBackProblem = false |
| | | }) |
| | | .catch(e => { |
| | | }) |
| | | .finally(() => { |
| | | this.dealing = false |
| | | }) |
| | | }) |
| | | }) |
| | | }, |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.model = {} |
| | | this.dataId = target.id |
| | | this.$nextTick(() => { |
| | | this.memberList = [] |
| | | this.transForm = { |
| | | memberId: null |
| | | } |
| | | this.dealForm = { |
| | | checkDate: null, |
| | | checkInfo: null, |
| | | dealBeforeFileList: [], |
| | | dealAfterFileList: [] |
| | | } |
| | | this.backForm = { |
| | | checkDate: null, |
| | | checkInfo: null, |
| | | dealBeforeFileList: [] |
| | | } |
| | | this.getDetail() |
| | | this.getLogList() |
| | | }) |
| | | }, |
| | | transferSubmit () { |
| | | this.$refs.transForm.validate((valid) => { |
| | | // debugger |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.$dialog.actionConfirm('æä½ç¡®è®¤', 'æ¨ç¡®è®¤è½¬äº¤è¯¥éæ£ææ¥åï¼') |
| | | .then(() => { |
| | | this.transfering = true |
| | | this.api.transferHiddenDanger({ |
| | | id: this.dataId, |
| | | checkUserId: this.transForm.memberId |
| | | }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess('转交æå') |
| | | this.getDetail() |
| | | this.getLogList() |
| | | this.$emit('success') |
| | | this.isShowTransfer = false |
| | | }) |
| | | .catch(e => { |
| | | }) |
| | | .finally(() => { |
| | | this.transfering = false |
| | | }) |
| | | }) |
| | | }) |
| | | }, |
| | | getLogList () { |
| | | this.api.findLogList({ hiddenDangerId: this.dataId }) |
| | | .then(res => { |
| | | this.logList = res |
| | | }) |
| | | }, |
| | | getDetail () { |
| | | this.api.detail(this.dataId) |
| | | .then(res => { |
| | | this.model = res |
| | | }) |
| | | }, |
| | | confirm () { |
| | | console.log('--') |
| | | }, |
| | | handleTransfer () { |
| | | this.isShowTransfer = true |
| | | this.loadMemberList() |
| | | }, |
| | | loadMemberList () { |
| | | userList({ queryParam: this.filterText, querySpecial: 1, type: 2, companyType: 1, workStatus: 0 }) |
| | | .then(res => { |
| | | this.memberList = res || [] |
| | | }) |
| | | /*memberList({}).then(res => { |
| | | this.memberList = res |
| | | })*/ |
| | | }, |
| | | reject () { }, |
| | | handleAvatarSuccess () { }, |
| | | beforeAvatarUpload () { } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/variables.scss"; |
| | | .side_title{ |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | | color: #111111; |
| | | margin-bottom: 20px; |
| | | margin-left: 20px; |
| | | margin-top: 20px; |
| | | } |
| | | .upload_box { |
| | | width: 84px; |
| | | height: 84px; |
| | | border-radius: 4px; |
| | | background-color: #f7f7f7; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #999999; |
| | | border: 1px solid #e4e4e4; |
| | | .icon { |
| | | font-size: 24px; |
| | | } |
| | | .text { |
| | | font-size: 12px; |
| | | } |
| | | } |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | .modal_content { |
| | | flex: 1; |
| | | padding: 0px 30px; |
| | | border-radius: 8px; |
| | | overflow: hidden; |
| | | height: 100%; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | | color: #333333; |
| | | margin-bottom: 20px; |
| | | margin-top: 30px; |
| | | } |
| | | .info { |
| | | .list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | |
| | | .item { |
| | | display: flex; |
| | | width: 40%; |
| | | margin-bottom: 20px; |
| | | &:nth-of-type(2n) { |
| | | width: 60%; |
| | | } |
| | | |
| | | .label { |
| | | color: #888888; |
| | | width: 68px; |
| | | } |
| | | |
| | | .value { |
| | | color: #111111; |
| | | flex: 1; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 20px 30px; |
| | | margin: 0 -30px; |
| | | border-radius: 8px 8px 0 0; |
| | | background: linear-gradient(to right, #f2f6fe, #cadffa); |
| | | |
| | | .h1 { |
| | | font-weight: 600; |
| | | font-size: 22px; |
| | | color: #111111; |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | .time { |
| | | font-size: 14px; |
| | | color: #999999; |
| | | } |
| | | |
| | | .right { |
| | | height: 40px; |
| | | font-size: 16px; |
| | | color: #ffffff; |
| | | line-height: 40px; |
| | | padding: 0 20px; |
| | | background: #207ff7; |
| | | box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16); |
| | | border-radius: 16px 0px 16px 0px; |
| | | } |
| | | } |
| | | .table_info { |
| | | .name_wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | .avatar { |
| | | width: 40px; |
| | | height: 40px; |
| | | border-radius: 50%; |
| | | margin-right: 12px; |
| | | } |
| | | .content { |
| | | .line { |
| | | display: flex; |
| | | } |
| | | .tag { |
| | | color: #b2cbf9; |
| | | border: 1px solid #b2cbf9; |
| | | padding: 0px 4px; |
| | | border-radius: 4px; |
| | | margin-left: 6px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .side { |
| | | height: 100%; |
| | | width: 420px; |
| | | background: #ffffff; |
| | | border-left: 20px solid #f7f7f7; |
| | | .list { |
| | | .item { |
| | | padding: 8px 0; |
| | | position: relative; |
| | | .separate { |
| | | position: absolute; |
| | | border-left: 2px dashed #cccccc; |
| | | left: 31px; |
| | | height: calc(100% - 24px); |
| | | top: 46px; |
| | | } |
| | | .info { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-left: 20px; |
| | | .icon { |
| | | position: relative; |
| | | z-index: 11; |
| | | color: #53b76f; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .iconnew{ |
| | | width: 24px; |
| | | height: 24px; |
| | | } |
| | | .icon1 { |
| | | position: relative; |
| | | z-index: 11; |
| | | color: deepskyblue; |
| | | font-size: 24px; |
| | | } |
| | | .icon2 { |
| | | position: relative; |
| | | z-index: 11; |
| | | color: #dc362e; |
| | | font-size: 24px; |
| | | } |
| | | .avatar { |
| | | width: 40px; |
| | | height: 40px; |
| | | border-radius: 50%; |
| | | margin: 0 12px 0 16px; |
| | | //border: 1px solid; |
| | | } |
| | | .content { |
| | | flex: 1; |
| | | .line { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-content: center; |
| | | margin-bottom: 6px; |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 16px; |
| | | color: #111111; |
| | | } |
| | | .time { |
| | | color: #888888; |
| | | } |
| | | .company { |
| | | font-size: 13px; |
| | | color: #888888; |
| | | .status { |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .remark { |
| | | background: #f7f7f7; |
| | | border-radius: 4px; |
| | | padding: 13px 15px; |
| | | color: #666666; |
| | | margin-left: 120px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |