Merge remote-tracking branch 'origin/master'
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // å
¬ä¼å·éç¥ å页å表 |
| | | export function getH5List (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/wxNoticeConfig/page', data) |
| | | } |
| | | // å
¬ä¼å·éç¥ ç¶ææ´æ° |
| | | export function H5StatusUpdate (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/wxNoticeConfig/updateById', data) |
| | | } |
| | | // å
¬ä¼å·éç¥ æ¹éç¶ææ´æ° |
| | | export function H5StatussUpdate (data) { |
| | | return request.get('/visitsAdmin/cloudService/business/wxNoticeConfig/updateStatus/batch', { |
| | | params: { |
| | | ...data |
| | | } |
| | | }) |
| | | } |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | @confirm="confirm" |
| | | > |
| | | <GlobalWindow :title="title" :visible.sync="visible" @confirm="confirm"> |
| | | <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 class="time">æäº¤æ¶é´ï¼{{ model.createDate }}</div> |
| | | </div> |
| | | <span class="right" v-if="model.status === 0">ç³è¯·ä¸</span> |
| | | <span class="right" v-if="model.status === 1">审æ¹ä¸</span> |
| | | <span class="right" v-if="model.status === 0">ç³è¯·ä¸</span> |
| | | <span class="right" v-if="model.status === 1">审æ¹ä¸</span> |
| | | <span class="right" style="background:#53b76f " v-if="model.status === 2">审æ¹éè¿</span> |
| | | <span class="right" style="background:#dc362e " v-if="model.status === 3">审æ¹ä¸éè¿</span> |
| | | <span class="right" style="background:#B2B2B2; " v-if="model.status === 4">å·²æ¤é</span> |
| | |
| | | <div class="list"> |
| | | <div class="item" style="width: 100%"> |
| | | <div class="label">ç³è¯·äºº</div> |
| | | <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}} ({{model.companyName || ''}})</div> |
| | | <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || '' }}) |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">ç³è¯·è½¦è¾</div> |
| | | <div class="value">{{model.carCode || ''}}</div> |
| | | <div class="value">{{ model.carCode || '' }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">叿ºä¿¡æ¯</div> |
| | | <div class="value" v-if="model.driverId !=null">{{model.driverName || ''}} {{model.driverPhone || ''}}</div> |
| | | <div class="value" v-if="model.driverId ==null">æªææ´¾</div> |
| | | <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || '' }} |
| | | </div> |
| | | <div class="value" v-if="model.driverId == null">æªææ´¾</div> |
| | | </div> |
| | | <div class="item" > |
| | | <div class="label">ç¨è½¦äºç±</div> |
| | | <div class="value">{{model.content}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">ç¨è½¦äºç±</div> |
| | | <div class="value">{{ model.content }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">ä¹è½¦äººå</div> |
| | | <div class="value">{{model.memberNames || ''}}</div> |
| | | <div class="value">{{ model.memberNames || '' }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">ç®çå°ç±»å«</div> |
| | | <div class="value status-green" v-if="model.type == 0">ãå¸å
ç¨è½¦ã</div> |
| | | <div class="value status-red" v-if="model.type == 1">ãå¸å¤ç¨è½¦ã</div> |
| | | <div class="value status-red" v-if="model.type == 1">ãå¸å¤ç¨è½¦ã</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">ç®çå°</div> |
| | | <div class="value">{{model.addr || ''}}</div> |
| | | <div class="value">{{ model.addr || '' }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">é¢è®¡åºåæ¶é´</div> |
| | | <div class="value">{{model.planUseDate || ''}}</div> |
| | | <div class="value">{{ model.planUseDate || '' }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">ç¨è½¦æ¶æ®µ</div> |
| | | <div class="value">å§:{{model.startTime || ''}}<br>æ¢:{{model.endTime || ''}}</div> |
| | | <div class="value">å§:{{ model.startTime || '' }}<br>æ¢:{{ model.endTime || '' }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="side"> |
| | | <div class="side_title">å®¡æ¹æµç¨</div> |
| | | <div class="list" v-if="model.approveDateVO !=null && model.approveDateVO.approveList !=null"> |
| | | <div class="item" v-for="(item,index) in model.approveDateVO.approveList" :key="item.id"> |
| | | <div class="separate" v-if=" (index < model.approveDateVO.approveList.length-1)"></div> |
| | | <div class="list" v-if=" |
| | | model.approveDateVO != null && model.approveDateVO.approveList != null |
| | | "> |
| | | <div class="item" v-for="(item, index) in model.approveDateVO.approveList" :key="item.id"> |
| | | <div class="separate" v-if="index < model.approveDateVO.approveList.length - 1"></div> |
| | | <div class="info"> |
| | | <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="( item.status ==2)"/> |
| | | <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="( item.status==1)"/> |
| | | <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="( item.status==3)"/> |
| | | <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if=" (item.status==null || item.status==0 )"/> |
| | | <div style="display: inline" v-if="item.approveType !=1"> |
| | | <img v-if="item.faceImg!=null && item.faceImg !=''" :src="item.faceImg" class="avatar" alt="" /> |
| | | <img v-if="item.faceImg ==null ||item.faceImg ==''" src="@/assets/avatar/man.png" class="avatar" alt="" /> |
| | | <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" /> |
| | | <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" /> |
| | | <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" /> |
| | | <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" /> |
| | | <div style="display: inline" v-if="item.approveType != 1"> |
| | | <img v-if="item.faceImg != null && item.faceImg != ''" :src="item.faceImg" class="avatar" alt="" /> |
| | | <img v-if="item.faceImg == null || item.faceImg == ''" src="@/assets/avatar/man.png" class="avatar" |
| | | alt="" /> |
| | | </div> |
| | | <div style="display: inline" v-if="item.approveType == 1"> |
| | | <img v-if="item.type !=1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" /> |
| | | <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" /> |
| | | <div style="display: inline" v-if="item.approveType == 1"> |
| | | <img v-if="item.type != 1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" /> |
| | | <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" /> |
| | | </div> |
| | | <div class="content"> |
| | | <div class="line"> |
| | | <div class="name">{{ item.title}}</div> |
| | | <div class="name">{{ item.title }}</div> |
| | | <div class="time">{{ item.checkDate }}</div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="company"> |
| | | {{ item.memberName }} |
| | | <div style="display: inline" v-if="item.statusInfo!=null && item.statusInfo!=''"> |
| | | ï¼<span class="status-green">{{item.statusInfo ||''}}</span>ï¼ |
| | | <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''"> |
| | | ï¼<span :class="{ padding: item.statusInfo == 'å¤çä¸' || item.status == '1' }">{{ |
| | | item.statusInfo || "" |
| | | }}</span>ï¼ |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="item.approveType != 1 && item.checkInfo !=null && item.checkInfo !=''" class="remark"> |
| | | {{ item.checkInfo || '' }} |
| | | <div v-if=" |
| | | item.approveType != 1 && |
| | | item.checkInfo != null && |
| | | item.checkInfo != '' |
| | | " class="remark"> |
| | | {{ item.checkInfo || "" }} |
| | | </div> |
| | | <div v-if="item.approveType == 1 " class="childList"> |
| | | <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList"> |
| | | <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id"> |
| | | <img v-if="item1.faceImg!=null && item1.faceImg !=''" :src="item1.faceImg" class="avatar" alt="" /> |
| | | <img v-if="item1.faceImg ==null ||item1.faceImg ==''" src="@/assets/avatar/man.png" class="avatar" alt="" /> |
| | | <span > {{item1.memberName}}</span> |
| | | <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" /> |
| | | <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar" |
| | | alt="" /> |
| | | <span> {{ item1.memberName }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | <!-- --> |
| | | <template v-slot:footer> |
| | | <el-button @click="agreeOpen" type="primary" v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 " class="status-red">åæ</el-button> |
| | | <el-button @click="jectOpen" type="danger" v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 " >æç»</el-button> |
| | | <el-button @click="visible=false">è¿å</el-button> |
| | | <template v-slot:footer> |
| | | <el-button @click="agreeOpen" type="primary" |
| | | v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1" |
| | | class="status-red">åæ</el-button> |
| | | <el-button @click="jectOpen" type="danger" |
| | | v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1">æç»</el-button> |
| | | <el-button @click="visible = false">è¿å</el-button> |
| | | </template> |
| | | <el-dialog |
| | | append-to-body |
| | | title="åæç³è¯·" |
| | | style="text-align: center" |
| | | class="dialogCl" |
| | | :visible.sync="isShowProblem" |
| | | width="480px" |
| | | > |
| | | <el-form :model="dealForm" :rules="rules" ref="dealForm" > |
| | | <el-dialog append-to-body title="åæç³è¯·" style="text-align: center" class="dialogCl" :visible.sync="isShowProblem" |
| | | width="480px"> |
| | | <el-form :model="dealForm" :rules="rules" ref="dealForm"> |
| | | <!-- <el-form-item label="æ´¾è½¦å¸æº" prop="driverId" required v-if="model.approveDateVO!=null && model.approveDateVO.driverParam === 1"> --> |
| | | <el-form-item label="æ´¾è½¦å¸æº" prop="driverId" v-if="model.approveDateVO!=null && model.approveDateVO.driverParam == 1"> |
| | | <el-select v-model="dealForm.driverId" style="width: 300px" filterable clearable placeholder="è¯·éæ©æ´¾é£å¸æº"> |
| | | <el-option |
| | | v-for="item in memberList" |
| | | :key="item.id" |
| | | :label="item.name+'-'+item.phone" |
| | | :value="item.id"> |
| | | <el-form-item label="æ´¾è½¦å¸æº" prop="driverId" |
| | | v-if="model.approveDateVO != null && model.approveDateVO.driverParam == 1"> |
| | | <el-select v-model="dealForm.driverId" style="width: 300px" filterable clearable placeholder="è¯·éæ©æ´¾é£å¸æº"> |
| | | <el-option v-for="item in memberList" :key="item.id" :label="item.name + '-' + item.phone" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åæè¯´æ"> |
| | | <el-input |
| | | type="textarea" |
| | | placeholder="请填å说æ" |
| | | :rows="4" |
| | | v-model="dealForm.checkInfo" |
| | | /> |
| | | <el-input type="textarea" placeholder="请填å说æ" :rows="4" v-model="dealForm.checkInfo" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | |
| | | <el-button type="primary" :loading="dealing" @click="dealDo">ç¡®å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | append-to-body |
| | | title="æç»ç³è¯·" |
| | | style="text-align: center" |
| | | class="dialogCl" |
| | | :visible.sync="isBackProblem" |
| | | width="600px" |
| | | > |
| | | <el-form :model="backForm" ref="backForm" label-width="100px"> |
| | | <el-dialog append-to-body title="æç»ç³è¯·" style="text-align: center" class="dialogCl" :visible.sync="isBackProblem" |
| | | width="600px"> |
| | | <el-form :model="backForm" ref="backForm" label-width="100px"> |
| | | <el-form-item label="æç»è¯´æ"> |
| | | <el-input |
| | | type="textarea" |
| | | placeholder="请填å说æ" |
| | | :rows="4" |
| | | v-model="backForm.checkInfo" |
| | | /> |
| | | <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 @click="isBackProblem = false">åæ¶</el-button> |
| | | <el-button type="primary" :loading="dealing" @click="backDo">ç¡®å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | name: 'OperaCarUseBookWindow', |
| | | components: { GlobalWindow }, |
| | | extends: BaseOpera, |
| | | data () { |
| | | data() { |
| | | return { |
| | | title: 'å
¬å¡è½¦ç³è¯·', |
| | | visible: false, |
| | | dataId: null, |
| | | model: { }, |
| | | model: {}, |
| | | dealing: false, |
| | | isShowProblem: false, |
| | | isBackProblem: false, |
| | |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | api: '/business/carUseBook', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | dealDo () { |
| | | dealDo() { |
| | | this.$refs.dealForm.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | agreeOpen () { |
| | | agreeOpen() { |
| | | this.isShowProblem = true |
| | | this.$set(this.dealForm, 'checkInfo', '') |
| | | this.loadMemberList() |
| | | }, |
| | | jectOpen () { |
| | | jectOpen() { |
| | | this.isBackProblem = true |
| | | this.backForm = { |
| | | checkInfo: null |
| | | } |
| | | }, |
| | | backDo () { |
| | | backDo() { |
| | | this.$refs.backForm.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | open (title, target) { |
| | | open(title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.model = {} |
| | |
| | | this.getDetail() |
| | | }) |
| | | }, |
| | | getDetail () { |
| | | getDetail() { |
| | | this.api.detail(this.dataId) |
| | | .then(res => { |
| | | this.model = res |
| | | if (this.model.approveDateVO && this.model.approveDateVO.approveList.length > 0) { |
| | | this.model.approveDateVO.approveList.forEach(item => { |
| | | if (item.approveList && item.approveList.length == 1 && item.type !== 1) { |
| | | item.title = item.approveList[0].title |
| | | item.faceImg = item.approveList[0].faceImg |
| | | item.memberName = item.approveList[0].memberName |
| | | item.statusInfo = item.approveList[0].statusInfo |
| | | item.status = item.approveList[0].status |
| | | item.approveList = [] |
| | | } |
| | | }) |
| | | } |
| | | this.dealForm.driveId = res.driveId |
| | | }) |
| | | }, |
| | | loadMemberList () { |
| | | loadMemberList() { |
| | | driveList({}).then(res => { |
| | | this.memberList = res |
| | | }) |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | .upload_box { |
| | | width: 84px; |
| | | height: 84px; |
| | |
| | | align-items: center; |
| | | color: #999999; |
| | | border: 1px solid #e4e4e4; |
| | | |
| | | .icon { |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .text { |
| | | font-size: 12px; |
| | | } |
| | | } |
| | | .side_title{ |
| | | |
| | | .side_title { |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | | color: #111111; |
| | |
| | | margin-left: 20px; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | |
| | | .modal_content { |
| | | flex: 1; |
| | | padding: 0px 30px; |
| | |
| | | margin-bottom: 20px; |
| | | margin-top: 30px; |
| | | } |
| | | |
| | | .info { |
| | | .list { |
| | | display: flex; |
| | |
| | | display: flex; |
| | | width: 40%; |
| | | margin-bottom: 20px; |
| | | |
| | | &:nth-of-type(2n) { |
| | | width: 60%; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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% - 36px); |
| | | height: calc(100% - 30px); |
| | | top: 49px; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 40px; |
| | | height: 40px; |
| | |
| | | margin: 0 12px 0 16px; |
| | | //border: 1px solid; |
| | | } |
| | | .childList{ |
| | | |
| | | .childList { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-left: 100px; |
| | | } |
| | | |
| | | .company { |
| | | font-size: 13px; |
| | | color: #888888; |
| | | |
| | | .status { |
| | | color: #00ba67; |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | .m_content{ |
| | | |
| | | .m_content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .info { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-left: 20px; |
| | | |
| | | .icon { |
| | | position: relative; |
| | | z-index: 11; |
| | | color: #53b76f; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .icon1 { |
| | | position: relative; |
| | | z-index: 11; |
| | | color: deepskyblue; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .icon2 { |
| | | position: relative; |
| | | z-index: 11; |
| | | color: #dc362e; |
| | | font-size: 24px; |
| | | } |
| | | .iconnew{ |
| | | |
| | | .iconnew { |
| | | width: 24px; |
| | | height: 24px; |
| | | } |
| | | |
| | | .icon3 { |
| | | position: relative; |
| | | z-index: 11; |
| | | color:gray; |
| | | color: gray; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | |
| | | .line { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-content: center; |
| | | margin-bottom: 6px; |
| | | |
| | | .status { |
| | | color: #888888; |
| | | } |
| | | |
| | | .padding { |
| | | color: $primaryColor; |
| | | } |
| | | |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 16px; |
| | | color: #111111; |
| | | } |
| | | |
| | | .time { |
| | | color: #888888; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .remark { |
| | | background: #f7f7f7; |
| | | border-radius: 4px; |
| | |
| | | color: #666666; |
| | | margin-left: 100px; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/variables.scss"; |
| | | .side_title{ |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | |
| | | font-size: 13px; |
| | | color: #888888; |
| | | .status { |
| | | color: #00ba67; |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | } |
| | |
| | | <!-- æé人 --> |
| | | <template v-if="apprList[activeIndex].type == '1'"> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div v-for="(mem,memIndex) in apprList[activeIndex].objIds" :key="mem.id" |
| | | <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i @click="memDel(memIndex)" class="el-icon-close"></i> |
| | |
| | | "> |
| | | ä¼ä¸ç»ç»æ¶æ |
| | | </div> |
| | | <div style="width: 100%; height: 100%; overflow-y: scroll"> |
| | | <div style="width: 100%; max-height: 560px; overflow-y: scroll"> |
| | | <Tree :list="companyTree" :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | |
| | | }" @callback="callback" /> |
| | | </div> |
| | | </div> |
| | | <el-transfer filterable :titles="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" |
| | | <el-transfer filterable :titles="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> |
| | | </el-transfer> |
| | | </div> |
| | |
| | | activeType: '6', |
| | | subLoading: false, |
| | | apprList: [ |
| | | { remark: '审æ¹äºº', active: false,approveType: 0, memberType: 1, type: '1', objIds: [] }, |
| | | { remark: '审æ¹äºº', active: false, approveType: 0, memberType: 1, type: '1', objIds: [] }, |
| | | { remark: 'æé人', active: false, type: '1', objIds: [] } |
| | | ], |
| | | activeIndex: 0, |
| | |
| | | this.getfindCompanyTreePage() |
| | | this.apprList = [ |
| | | { remark: '审æ¹äºº', active: false, type: '0', memberType: 1, objIds: [] }, |
| | | { remark: 'æé人', active: false,approveType: 0, type: '1', objIds: [] } |
| | | { remark: 'æé人', active: false, approveType: 0, type: '1', objIds: [] } |
| | | ] |
| | | this.param = {} |
| | | this.searchForm = {} |
| | |
| | | this.activeIndex = 0 |
| | | }, |
| | | handleAddAppr() { |
| | | this.apprList.splice(this.apprList.length - 1, 0, { remark: '审æ¹äºº',approveType: 0, active: false, memberType: 1, type: 0, objIds: [] }) |
| | | this.apprList.splice(this.apprList.length - 1, 0, { remark: '审æ¹äºº', approveType: 0, active: false, memberType: 1, type: 0, objIds: [] }) |
| | | // this.apprList.push({ remark: '审æ¹äºº', active: false, type: '0' }) |
| | | }, |
| | | // è·åç»ç»æ |
| | |
| | | erpOrgId: '', |
| | | hasFace: '', |
| | | hkStatus: '', |
| | | includeChild: false, |
| | | includeChild: true, |
| | | type: 2 |
| | | }, |
| | | page: 1, |
| | | capacity: 30 |
| | | capacity: 300 |
| | | }).then(res => { |
| | | this.memberList = res.records || [] |
| | | this.memberList.forEach(item => { |
| | |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | ::v-deep .el-transfer-panel{ |
| | | |
| | | ::v-deep .el-transfer-panel { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | |
| | | ::v-deep .el-transfer-panel__body { |
| | | height: 500px; |
| | | } |
| | |
| | | <el-dropdown v-if="isLogined" trigger="click"> |
| | | <span class="el-dropdown-link"> |
| | | <!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> --> |
| | | <img |
| | | v-if="userInfo != null" |
| | | style="width: 30px !important" |
| | | src="@/assets/avatar/man.png" |
| | | alt="" |
| | | />{{ userInfo | displayName |
| | | <img v-if="userInfo != null" style="width: 30px !important" src="@/assets/avatar/man.png" alt="" />{{ |
| | | userInfo | displayName |
| | | }}<i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item @click.native="changePwd" |
| | | >ä¿®æ¹å¯ç </el-dropdown-item |
| | | > |
| | | <el-dropdown-item @click.native="changePwd">ä¿®æ¹å¯ç </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout">éåºç»å½</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </div> |
| | | </div> |
| | | <!-- ä¿®æ¹å¯ç --> |
| | | <GlobalAlertWindow |
| | | title="ä¿®æ¹å¯ç " |
| | | :visible.sync="visible.changePwd" |
| | | @confirm="confirmChangePwd" |
| | | @close="visible.changePwd = false" |
| | | > |
| | | <el-form |
| | | :model="changePwdData.form" |
| | | ref="changePwdDataForm" |
| | | :rules="changePwdData.rules" |
| | | > |
| | | <GlobalAlertWindow title="ä¿®æ¹å¯ç " :visible.sync="visible.changePwd" |
| | | :showClose="!userInfo.needChangePwd || userInfo.needChangePwd == '1'" |
| | | :showCancel="!userInfo.needChangePwd || userInfo.needChangePwd == '1'" @confirm="confirmChangePwd" |
| | | @close="visible.changePwd = false"> |
| | | <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules"> |
| | | <el-form-item label="åå§å¯ç " prop="oldPwd" required> |
| | | <el-input |
| | | v-model="changePwdData.form.oldPwd" |
| | | type="password" |
| | | placeholder="请è¾å
¥åå§å¯ç " |
| | | maxlength="30" |
| | | show-password |
| | | ></el-input> |
| | | <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="请è¾å
¥åå§å¯ç " maxlength="30" |
| | | show-password></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ°å¯ç " prop="newPwd" required> |
| | | <el-input |
| | | v-model="changePwdData.form.newPwd" |
| | | type="password" |
| | | placeholder="请è¾å
¥æ°å¯ç " |
| | | maxlength="30" |
| | | show-password |
| | | ></el-input> |
| | | <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="请è¾å
¥æ°å¯ç ï¼å¯ç éå
å«åæ¯ãæ°ååç¹æ®å符ä¸çè³å°ä¸¤ç§" maxlength="20" |
| | | show-password></el-input> |
| | | </el-form-item> |
| | | <!-- <div style="font-size: 12px;color:#999999">å¯ç éå
å«åæ¯ãæ°ååç¹æ®å符ä¸çè³å°ä¸¤ç§</div> --> |
| | | <el-form-item label="确认æ°å¯ç " prop="confirmPwd" required> |
| | | <el-input |
| | | v-model="changePwdData.form.confirmPwd" |
| | | type="password" |
| | | placeholder="è¯·åæ¬¡è¾å
¥æ°å¯ç " |
| | | maxlength="30" |
| | | show-password |
| | | ></el-input> |
| | | <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="è¯·åæ¬¡è¾å
¥æ°å¯ç " maxlength="20" |
| | | show-password></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | |
| | | { required: true, message: '请è¾å
¥åå§å¯ç ' } |
| | | ], |
| | | newPwd: [ |
| | | { required: true, message: '请è¾å
¥æ°å¯ç ' } |
| | | { required: true, message: '请è¾å
¥å¯ç ', trigger: 'blur' }, |
| | | { validator: this.validatePassword, trigger: 'blur' }, |
| | | ], |
| | | confirmPwd: [ |
| | | { required: true, message: 'è¯·åæ¬¡è¾å
¥æ°å¯ç ' } |
| | |
| | | // title () { |
| | | // return this.$route.meta.title |
| | | // } |
| | | }, |
| | | mounted() { |
| | | // console.log('userInfo',this.userInfo); |
| | | if (!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0') { |
| | | // this.visible.changePwd = true |
| | | } |
| | | |
| | | }, |
| | | filters: { |
| | | // å±ç¤ºåç§° |
| | |
| | | this.$refs.changePwdDataForm.resetFields() |
| | | }) |
| | | }, |
| | | getHeaderNav(type){ |
| | | validatePassword(rule, value, callback) { |
| | | if (!value) { |
| | | callback(new Error('请è¾å
¥å¯ç ')) |
| | | } else { |
| | | const lengthValid = /^.{6,20}$/.test(value) |
| | | const hasLetter = /[a-zA-Z]/.test(value) |
| | | const hasNumber = /[0-9]/.test(value) |
| | | const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value) |
| | | |
| | | const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length |
| | | |
| | | if (!lengthValid) { |
| | | callback(new Error('å¯ç é¿åº¦é为6å°20个å符')) |
| | | } else if (typesCount < 2) { |
| | | callback(new Error('å¯ç éå
å«åæ¯ãæ°ååç¹æ®å符ä¸çè³å°ä¸¤ç§')) |
| | | } else { |
| | | callback() // éªè¯éè¿ |
| | | } |
| | | } |
| | | }, |
| | | getHeaderNav(type) { |
| | | getAppHeaderNav(type).then(res => { |
| | | window.open(res, "_blank"); |
| | | window.open(res, "_blank") |
| | | }) |
| | | }, |
| | | // ç¡®å®ä¿®æ¹å¯ç |
| | |
| | | this.visible.changePwd = false |
| | | }) |
| | | .catch(e => { |
| | | // this.$tip.apiFailed(e) |
| | | // this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.changePwd = false |
| | |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | .common-header { |
| | | background-color: #2080f7; |
| | | } |
| | | .list{ |
| | | |
| | | .list { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-left: 60px; |
| | | .item{ |
| | | |
| | | .item { |
| | | margin-right: 40px; |
| | | font-size: 16px; |
| | | font-weight: 400; |
| | |
| | | justify-content: flex-start; |
| | | height: 40px; |
| | | cursor: pointer; |
| | | .linellae{ |
| | | |
| | | .linellae { |
| | | width: 64px; |
| | | height: 2px; |
| | | background: #FFFFFF; |
| | | } |
| | | } |
| | | .active{ |
| | | |
| | | .active { |
| | | font-weight: 500; |
| | | } |
| | | } |
| | | |
| | | .header { |
| | | overflow: hidden; |
| | | // background: #fff; |
| | |
| | | color: #fff; |
| | | display: flex; |
| | | align-items: center; |
| | | .title{ |
| | | |
| | | .title { |
| | | width: 200px; |
| | | } |
| | | |
| | | // display: inline; |
| | | .title-en { |
| | | font-size: 11px; |
| | |
| | | color: rgb(202, 214, 238); |
| | | } |
| | | } |
| | | |
| | | .user { |
| | | width: 212px; |
| | | box-sizing: border-box; |
| | |
| | | background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat; |
| | | flex-shrink: 0; |
| | | text-align: right; |
| | | cursor: pointer; |
| | | |
| | | .el-dropdown { |
| | | top: 2px; |
| | | color: #fff; |
| | | } |
| | | |
| | | img { |
| | | width: 32px; |
| | | position: relative; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 䏿èåæ¡ |
| | | .el-dropdown-menu { |
| | | width: 140px; |
| | | |
| | | .el-dropdown-menu__item:hover { |
| | | background: #e3edfb; |
| | | color: $primary-color; |
| | |
| | | :with-header="true" |
| | | :width="width" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | :wrapper-closable="false" |
| | | :append-to-body="true" |
| | | :show-close="!showClose" |
| | | @close="close" |
| | | > |
| | | <div slot="title" class="window__header"> |
| | |
| | | <div v-if="withFooter" class="window__footer"> |
| | | <slot name="footer"> |
| | | <el-button @click="confirm" :loading="confirmWorking" type="primary">ç¡®å®</el-button> |
| | | <el-button @click="close">åæ¶</el-button> |
| | | <el-button v-if="!showCancel" @click="close">åæ¶</el-button> |
| | | </slot> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | type: String, |
| | | default: '50%' |
| | | }, |
| | | showClose: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | showCancel: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦å
å«åºé¨æä½ |
| | | withFooter: { |
| | | type: Boolean, |
| | |
| | | title="éæ©ç¨è½¦æ¶é´" |
| | | :visible.sync="isShowTime" |
| | | append-to-body |
| | | width="600px" |
| | | width="640px" |
| | | > |
| | | <el-form :model="form" ref="modalRef" class="el_form" :rules="rules"> |
| | | <el-form-item label="ç¨è½¦æ¥æ" prop="dateDay"> |
| | |
| | | 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; |
| | | 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; |
| | | } |
| | | .active { |
| | | background-color: $primary-color; |
| | | color: #fff; |
| | | border-color: $primary-color; |
| | | background-color: #f6f9fe; |
| | | color: $primary-color; |
| | | } |
| | | .disable { |
| | | color: #fff; |
| | | border-color: #cccccc; |
| | | background-color: #cccccc; |
| | | color: #999999; |
| | | } |
| | | .hasSub { |
| | | color: #fff; |
| | | background: #cccccc; |
| | | border-color: #bed6f9; |
| | | background-color: #bed6f9; |
| | | color: #fff; |
| | | } |
| | | } |
| | | .color_op { |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="60%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <p class="tip">æ£å¨ä¸ºè§è²ã <em>{{role.name || '-'}}</em>ã é
ç½®æ°æ®æé</p> |
| | | <GlobalWindow :title="title" width="80%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> |
| | | <p class="tip">æ£å¨ä¸ºè§è²ã <em>{{ role.name || '-' }}</em>ã é
ç½®æ°æ®æé</p> |
| | | <p class="tip-warn"><i class="el-icon-warning"></i>æéï¼æéé
ç½®åééæ°ç»å½åçæ</p> |
| | | <el-form :model="form" ref="form" style="margin-top:15px"> |
| | | <el-form-item label="æéç±»åï¼" prop="type"> |
| | | <el-select v-model="form.type" clearable filterable placeholder="è¯·éæ©æéç±»å"> |
| | | <el-option |
| | | v-for="(item, index) in options" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | <el-option v-for="(item, index) in options" :key="index" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="form.type == 4" label="èªå®ä¹é¨é¨ï¼" prop="customData"> |
| | | <el-cascader |
| | | :options="departments" |
| | | v-model="form.customData" |
| | | :props=defaultProps |
| | | clearable |
| | | ></el-cascader> |
| | | <el-cascader :options="departments" v-model="form.customData" :props=defaultProps clearable></el-cascader> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { createRoleDataPermission } from '@/api/system/role' |
| | | import { fetchList } from '@/api/business/company' |
| | | // import the styles |
| | | // import the styles |
| | | import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
| | | export default { |
| | | name: 'OperaSystemRoleWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | options: [ |
| | | { name: 'å
¨é¨', id: 0 }, |
| | |
| | | value: 'id', |
| | | emitPath: false |
| | | }, |
| | | role:{}, |
| | | role: {}, |
| | | departments: [] |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | api: '/system/role', |
| | | 'field.id': 'id' |
| | |
| | | }, |
| | | methods: { |
| | | // é¨é¨æ ç¶ç»ææ°æ® |
| | | treeComList () { |
| | | treeComList() { |
| | | fetchList() |
| | | .then(res => { |
| | | // this.departments = this.tree([res]) |
| | | this.departments =this.newTree(res) |
| | | this.departments = this.newTree(res) |
| | | }) |
| | | }, |
| | | open (title, target,role) { |
| | | open(title, target, role) { |
| | | // console.log(title, target) |
| | | this.title = title |
| | | this.visible = true |
| | | this.role=role |
| | | this.role = role |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | console.log(target); |
| | | if (target.customData === undefined ||target.customData === null || target.customData === '') { |
| | | console.log(target) |
| | | if (target.customData === undefined || target.customData === null || target.customData === '') { |
| | | this.form.customData = [] |
| | | } else { |
| | | const customD = this.form.customData.split(',') |
| | | const customD = this.form.customData.split(',') |
| | | this.form.customData = customD.map((item) => { return parseInt(item) }) |
| | | } |
| | | }) |
| | | }, |
| | | newTree(tree) { |
| | | if(tree ==null){ |
| | | if (tree == null) { |
| | | return [] |
| | | } |
| | | return tree.map(item => { |
| | | let newItem = {...item} |
| | | if(newItem){ |
| | | newItem.children=newItem.childList |
| | | let newItem = { ...item } |
| | | if (newItem) { |
| | | newItem.children = newItem.childList |
| | | } |
| | | if (item.children && item.children.length == 0) { |
| | | this.$delete( newItem, 'children' ) |
| | | this.$delete(newItem, 'children') |
| | | } else { |
| | | newItem.children = this.newTree(newItem.children) |
| | | } |
| | | return newItem |
| | | }); |
| | | }) |
| | | }, |
| | | __confirmCreate () { |
| | | __confirmCreate() { |
| | | // console.log(JSON.stringify(this.form.customData)); |
| | | // return |
| | | this.$refs.form.validate((valid) => { |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | __confirmEdit () { |
| | | __confirmEdit() { |
| | | // console.log(JSON.stringify(this.form.customData)); |
| | | // return |
| | | this.$refs.form.validate((valid) => { |
| | |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | .transfer { |
| | | height: 600px; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | |
| | | ::v-deep .el-transfer-panel { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | |
| | | ::v-deep .el-transfer-panel__body { |
| | | height: 500px; |
| | | } |
| | | |
| | | ::v-deep .el-transfer-panel__list.is-filterable { |
| | | height: 480px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | width="582px" |
| | | title="é
ç½®è§è²æé" |
| | | @confirm="confirm" |
| | | > |
| | | <p class="tip" v-if="role != null">为è§è² <em>{{role.name}}</em> é
ç½®æé</p> |
| | | <GlobalWindow :visible.sync="visible" :confirm-working="isWorking" width="80%" title="é
ç½®è§è²æé" @confirm="confirm"> |
| | | <p class="tip" v-if="role != null">为è§è² <em>{{ role.name }}</em> é
ç½®æé</p> |
| | | <p class="tip-warn"><i class="el-icon-warning"></i>æéï¼æéé
ç½®åééæ°ç»å½åçæ</p> |
| | | <el-transfer |
| | | ref="permissionTransfer" |
| | | v-model="selectedIds" |
| | | filterable |
| | | class="transfer" |
| | | :filter-method="filterPermissions" |
| | | :titles="['æªæææé', 'å·²æææé']" |
| | | :props="{ |
| | | <el-transfer ref="permissionTransfer" v-model="selectedIds" filterable class="transfer" |
| | | :filter-method="filterPermissions" :titles="['æªæææé', 'å·²æææé']" :props="{ |
| | | key: 'id', |
| | | label: 'name' |
| | | }" |
| | | :data="permissions"> |
| | | }" :data="permissions"> |
| | | </el-transfer> |
| | | </GlobalWindow> |
| | | </template> |
| | |
| | | export default { |
| | | name: 'PermissionConfigWindow', |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | isWorking: false, |
| | |
| | | /** |
| | | * @role è§è²å¯¹è±¡ |
| | | */ |
| | | open (role) { |
| | | open(role) { |
| | | if (this.$refs.permissionTransfer) { |
| | | this.$refs.permissionTransfer.clearQuery('left') |
| | | this.$refs.permissionTransfer.clearQuery('right') |
| | |
| | | }) |
| | | }, |
| | | // ç¡®è®¤éæ©æé |
| | | confirm () { |
| | | confirm() { |
| | | this.isWorking = true |
| | | createRolePermission({ |
| | | roleId: this.role.id, |
| | |
| | | }) |
| | | }, |
| | | // æç´¢æé |
| | | filterPermissions (query, item) { |
| | | filterPermissions(query, item) { |
| | | const lowerCaseQuery = query.toLowerCase() |
| | | return item.code.toLowerCase().indexOf(lowerCaseQuery) > -1 || item.name.toLowerCase().indexOf(lowerCaseQuery) > -1 |
| | | } |
| | |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | .global-window { |
| | | .tip { |
| | | em { |
| | |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | |
| | | .tip-warn { |
| | | margin: 4px 0 12px 0; |
| | | font-size: 12px; |
| | | color: #999; |
| | | |
| | | i { |
| | | color: orange; |
| | | margin-right: 4px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .transfer { |
| | | height: 600px; |
| | | width: 100%; |
| | |
| | | <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> |
| | | </div> |
| | | <div v-for="(item, index) in apprList" :key="index"> |
| | | <div |
| | | class="item yellow" |
| | | :class="{ |
| | | active: activeIndex == index, |
| | | blue: item.type == '1', |
| | | }" |
| | | @click="flowClick(index)" |
| | | > |
| | | <div class="item yellow" :class="{ |
| | | active: activeIndex == index, |
| | | blue: item.type == '1', |
| | | }" @click="flowClick(index)"> |
| | | <div class="head">{{ item.remark }}</div> |
| | | <div class="content"> |
| | | <!-- å®¡æ¹ --> |
| | | <template v-if="item.type == 0"> |
| | | <template v-if="item.memberType == '0'"> |
| | | <div>被访人</div> |
| | | </template> |
| | | <div>被访人</div> |
| | | </template> |
| | | <template v-if="item.memberType == '2'"> |
| | | <div>é¨é¨ä¸»ç®¡</div> |
| | | </template> |
| | | <template v-if="item.memberType == '1'"> |
| | | <div v-if="item.objIds && item.objIds.length === 1"> |
| | | <span |
| | | >{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span |
| | | > |
| | | <span>{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span> |
| | | <span v-if="item.approveType == 0 && item.type == '0'"> |
| | | æç¾</span |
| | | > |
| | | æç¾</span> |
| | | <span v-if="item.approveType == 1 && item.type == '0'"> |
| | | ä¼ç¾</span |
| | | > |
| | | ä¼ç¾</span> |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | <span v-if="item.approveType == 0 && item.type == '0'"> |
| | | æç¾</span |
| | | > |
| | | æç¾</span> |
| | | <span v-if="item.approveType == 1 && item.type == '0'"> |
| | | ä¼ç¾</span |
| | | > |
| | | ä¼ç¾</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i class="el-icon-arrow-right"></i> |
| | |
| | | <!-- æé --> |
| | | <template v-if="item.type == 1"> |
| | | <div v-if="item.objIds && item.objIds.length === 1"> |
| | | <span |
| | | >{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span |
| | | > |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i |
| | | v-if="item.memberType == '1'" |
| | | class="el-icon-arrow-right" |
| | | ></i> |
| | | <span>{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span> |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i> |
| | | </template> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="line"></div> |
| | | <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> |
| | | </template> |
| | | <i |
| | | v-if="apprList.length - 2 === index" |
| | | @click="handleAddAppr()" |
| | | class="el-icon-circle-plus add" |
| | | ></i> |
| | | <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="config_data_item_label">éæ©è¯¥èç¹ç审æ¹äºº</div> |
| | | <div class="df_ac mb10"> |
| | | <div>审æ¹èç¹åç§°</div> |
| | | <el-input |
| | | class="w200 ml10" |
| | | v-model="apprList[activeIndex].remark" |
| | | ></el-input> |
| | | <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input> |
| | | </div> |
| | | <!-- æé人 --> |
| | | <template v-if="apprList[activeIndex].type == '1'"> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div |
| | | v-for="mem, memIndex in apprList[activeIndex].objIds" |
| | | :key="mem.id" |
| | | class="config_data_item_reviewed_content_item" |
| | | > |
| | | <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i @click="memDel(memIndex)" class="el-icon-close"></i> |
| | | </div> |
| | | <span class="add" @click="selStaff">+æ·»å </span> |
| | | </div> |
| | | </template> |
| | | <el-radio-group |
| | | v-if="apprList[activeIndex].type == '0'" |
| | | v-model="apprList[activeIndex].memberType" |
| | | > |
| | | <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType"> |
| | | <el-radio :label="0">被访人</el-radio> |
| | | <el-radio :label="1">æå®äººå</el-radio> |
| | | <el-radio :label="2">é¨é¨ä¸»ç®¡</el-radio> |
| | | </el-radio-group> |
| | | <div |
| | | class="config_data_item_reviewed" |
| | | v-if="apprList[activeIndex].memberType == 1" |
| | | > |
| | | <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1"> |
| | | <div class="config_data_item_reviewed_label"> |
| | | <span>æå®å®¡æ ¸äºº</span> |
| | | <span>ä¸è¶
è¿20人</span> |
| | | </div> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div |
| | | v-for="mem,memIndex in apprList[activeIndex].objIds" |
| | | :key="mem.id" |
| | | class="config_data_item_reviewed_content_item" |
| | | > |
| | | <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i class="el-icon-close" @click="memDel(memIndex)"></i> |
| | | </div> |
| | | <span class="add" @click="selStaff">+æ·»å </span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="config_data_item_reviewed" |
| | | v-if="apprList[activeIndex].memberType == 2" |
| | | > |
| | | <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2"> |
| | | <div class="config_data_item_reviewed_label"> |
| | | <span>é¨é¨ä¸»ç®¡</span> |
| | | </div> |
| | | <div class="config_data_item_reviewed_r"> |
| | | <span>被访人ç</span> |
| | | <el-select |
| | | v-model="apprList[activeIndex].objLevel" |
| | | placeholder="è¯·éæ©" |
| | | style="margin: 0 20px 0 10px" |
| | | > |
| | | <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px"> |
| | | <el-option label="ç´æ¥ä¸»ç®¡" :value="0" /> |
| | | <el-option label="äºçº§ä¸»ç®¡" :value="1" /> |
| | | <el-option label="ä¸çº§ä¸»ç®¡" :value="2" /> |
| | | <el-option label="å级主管" :value="4" /> |
| | | </el-select> |
| | | <el-checkbox |
| | | v-model="apprList[activeIndex].noleaderOpt" |
| | | :true-label="1" |
| | | :false-label="0" |
| | | >æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox |
| | | > |
| | | <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" |
| | | :false-label="0">æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="config_data_item" |
| | | v-if=" |
| | | (apprList[activeIndex].memberType == 1 || |
| | | apprList[activeIndex].memberType == 2) && |
| | | apprList[activeIndex].type == '0' |
| | | " |
| | | > |
| | | <div class="config_data_item" v-if=" |
| | | (apprList[activeIndex].memberType == 1 || |
| | | apprList[activeIndex].memberType == 2) && |
| | | apprList[activeIndex].type == '0' |
| | | "> |
| | | <div class="config_data_item_label"> |
| | | å®¡æ¹æ¹å¼ |
| | | <span>审æ¹äººä¸ºå¤ä¸ªæ¶ï¼éç¨çå®¡æ¹æ¹å¼</span> |
| | | </div> |
| | | <el-radio-group |
| | | v-model="apprList[activeIndex].approveType" |
| | | style="display: flex; flex-direction: column" |
| | | > |
| | | <el-radio :label="0" style="margin-bottom: 20px" |
| | | >æç¾ï¼å
¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio |
| | | > |
| | | <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column"> |
| | | <el-radio :label="0" style="margin-bottom: 20px">æç¾ï¼å
¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio> |
| | | <el-radio :label="1">ä¼ç¾ï¼ææå®¡æ¹äººé½åææå¯éè¿ï¼</el-radio> |
| | | </el-radio-group> |
| | | </div> |
| | | <div class="config_data_submit"> |
| | | <el-button |
| | | @click="onSubmit" |
| | | :loading="subLoading" |
| | | style="background: #435ebe" |
| | | type="primary" |
| | | >ä¿åé
置项</el-button |
| | | > |
| | | <el-button |
| | | v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" |
| | | type="danger" |
| | | plain |
| | | @click="handleDel" |
| | | >å é¤èç¹</el-button |
| | | > |
| | | <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" |
| | | type="primary">ä¿åé
置项</el-button> |
| | | <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain |
| | | @click="handleDel">å é¤èç¹</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <el-dialog title="éæ©åå·¥" :visible.sync="isShowTransfer" width="1000px"> |
| | | <div class="staff_modal"> |
| | | <div class="left"> |
| | | <div |
| | | style=" |
| | | <div style=" |
| | | width: 100%; |
| | | height: 50px; |
| | | background: rgba(242, 242, 242, 1); |
| | | line-height: 50px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | " |
| | | > |
| | | "> |
| | | ä¼ä¸ç»ç»æ¶æ |
| | | </div> |
| | | <div style="width: 100%; height: 100%; overflow-y: scroll"> |
| | | <Tree |
| | | :list="companyTree" |
| | | :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | | children: 'childList', |
| | | id: 'id', |
| | | }" |
| | | @callback="callback" |
| | | /> |
| | | <div style="width: 100%; max-height: 560px; overflow-y: scroll"> |
| | | <Tree :list="companyTree" :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | | children: 'childList', |
| | | id: 'id', |
| | | }" @callback="callback" /> |
| | | </div> |
| | | </div> |
| | | <el-transfer |
| | | filterable |
| | | :title="['æªé', 'å·²é']" |
| | | openAll |
| | | :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" |
| | | v-model="searchForm.objIds" |
| | | :data="memberList" |
| | | class="transfer" |
| | | > |
| | | <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> |
| | | </el-transfer> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | |
| | | TableLayout, |
| | | Tree |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | activeType: '0', |
| | | subLoading: false, |
| | |
| | | companyTree: [] |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.getfindCompanyTreePage() |
| | | this.initDate() |
| | | }, |
| | | methods: { |
| | | handleClick () { |
| | | handleClick() { |
| | | this.apprList = [] |
| | | const arr = [ |
| | | { remark: '审æ¹äºº', active: false, type: 0, objIds: [] }, |
| | |
| | | this.apprList = [...arr] |
| | | this.initDate() |
| | | }, |
| | | flowClick (i) { |
| | | flowClick(i) { |
| | | this.activeIndex = i |
| | | this.apprList.forEach((item, index) => { |
| | | if (i === index) { |
| | | item.active = true |
| | | console.log("====================",item.objIds) |
| | | console.log("====================", item.objIds) |
| | | if (item.objIds && item.objIds.length > 0) { |
| | | const objIds = item.objIds.map(i => { |
| | | return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}` |
| | |
| | | } |
| | | }) |
| | | }, |
| | | initDate () { |
| | | initDate() { |
| | | const { activeType } = this |
| | | approveTemplByType(activeType).then(res => { |
| | | if (res && res.paramList) { |
| | |
| | | companyName: i.companyName |
| | | } |
| | | }) |
| | | }else{ |
| | | } else { |
| | | item.objIds = [] |
| | | } |
| | | }) |
| | |
| | | // console.log(res); |
| | | }) |
| | | }, |
| | | onSubmit () { |
| | | onSubmit() { |
| | | const { apprList, activeType } = this |
| | | const temp = JSON.parse(JSON.stringify(apprList)) |
| | | temp.forEach((item, index) => { |
| | |
| | | this.subLoading = false |
| | | }) |
| | | }, |
| | | handleDel () { |
| | | handleDel() { |
| | | const { activeIndex } = this |
| | | this.apprList.splice(activeIndex, 1) |
| | | this.activeIndex = 0 |
| | | }, |
| | | handleAddAppr () { |
| | | this.apprList.splice(this.apprList.length - 1, 0, { remark: '审æ¹äºº',approveType: 0, active: false, type: 0, objIds: [] }) |
| | | handleAddAppr() { |
| | | this.apprList.splice(this.apprList.length - 1, 0, { remark: '审æ¹äºº', approveType: 0, active: false, type: 0, objIds: [] }) |
| | | // this.apprList.push({ remark: '审æ¹äºº', active: false, type: '0' }) |
| | | }, |
| | | |
| | | // è·åç»ç»æ |
| | | getfindCompanyTreePage () { |
| | | getfindCompanyTreePage() { |
| | | fetchList() |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | getMemberList () { |
| | | getMemberList() { |
| | | memberListPost({ |
| | | model: { |
| | | companyId: this.searchForm.companyId || '', |
| | |
| | | erpOrgId: '', |
| | | hasFace: '', |
| | | hkStatus: '', |
| | | includeChild: false, |
| | | includeChild: true, |
| | | type: 2 |
| | | }, |
| | | page: 1, |
| | | capacity: 30 |
| | | capacity: 300 |
| | | }).then(res => { |
| | | this.memberList = res.records || [] |
| | | this.memberList.forEach(item => { |
| | |
| | | // console.log('defaultProps', res) |
| | | }) |
| | | }, |
| | | callback (row) { |
| | | callback(row) { |
| | | console.log(row) |
| | | this.$set(this.searchForm, 'companyId', row.id) |
| | | this.$set(this.searchForm, 'erpOrgId', row.erpId) |
| | | this.getMemberList() |
| | | }, |
| | | TransferSub () { |
| | | TransferSub() { |
| | | const { activeIndex } = this |
| | | if (this.searchForm.objIds && this.searchForm.objIds.length > 0) { |
| | | if (this.searchForm.objIds.length > 20) return this.$message.warning('æå¤éæ©20人') |
| | |
| | | this.isShowTransfer = false |
| | | console.log(this.searchForm.objIds) |
| | | }, |
| | | memDel (memIndex) { |
| | | memDel(memIndex) { |
| | | const { activeIndex } = this |
| | | this.apprList.forEach((item, index) => { |
| | | if (activeIndex === index) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | selStaff () { |
| | | selStaff() { |
| | | this.isShowTransfer = true |
| | | this.getMemberList() |
| | | }, |
| | | seleItem (i) { |
| | | seleItem(i) { |
| | | this.list.forEach((item, index) => { |
| | | item.active = index === i |
| | | }) |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .config_list { |
| | | width: 543px; |
| | | height: 100%; |
| | |
| | | box-sizing: border-box; |
| | | border: 1px solid #eeeeee; |
| | | background: #f7f7f7; |
| | | |
| | | .config_list_head { |
| | | width: 100%; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | span { |
| | | font-size: 18px; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | } |
| | | } |
| | | |
| | | .config_content { |
| | | width: 100%; |
| | | height: calc(100% - 40px); |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | |
| | | &::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .active { |
| | | border: 2px solid #4456ac !important; |
| | | } |
| | | |
| | | .yellow { |
| | | background: #e89e42 !important; |
| | | } |
| | | |
| | | .blue { |
| | | background: #5094f3 !important; |
| | | } |
| | | |
| | | .arrows { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | position: relative; |
| | | |
| | | .line { |
| | | width: 1px; |
| | | height: 60px; |
| | | background-color: #ccc; |
| | | } |
| | | |
| | | .add { |
| | | font-size: 40px; |
| | | color: #2080f7; |
| | |
| | | z-index: 999; |
| | | top: 10px; |
| | | } |
| | | |
| | | img { |
| | | width: 12px; |
| | | } |
| | | } |
| | | |
| | | .item { |
| | | width: 200px; |
| | | cursor: pointer; |
| | |
| | | position: relative; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .head { |
| | | height: 32px; |
| | | line-height: 32px; |
| | | padding: 2px 12px; |
| | | color: #fff; |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | background-color: #fff; |
| | |
| | | padding: 0 12px; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .config_data { |
| | | flex: 1; |
| | | height: 100%; |
| | | margin-left: 20px; |
| | | |
| | | .config_data_submit { |
| | | margin-top: 50px; |
| | | } |
| | | |
| | | .config_data_item { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | margin-bottom: 30px; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | |
| | | .config_data_item_label { |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | margin-bottom: 20px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed { |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | |
| | | .config_data_item_reviewed_r { |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | flex-shrink: 0; |
| | | font-size: 14px; |
| | |
| | | color: #666666; |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed_label { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | &:nth-child(1) { |
| | | font-size: 14px; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed_content { |
| | | width: 400px; |
| | | margin-top: 10px; |
| | |
| | | display: flex; |
| | | align-items: flex-start; |
| | | flex-wrap: wrap; |
| | | |
| | | .add { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | cursor: pointer; |
| | | margin-top: 3px; |
| | | } |
| | | |
| | | .config_data_item_reviewed_content_item { |
| | | padding: 3px 5px; |
| | | background: #f4f7fc; |
| | |
| | | box-sizing: border-box; |
| | | margin-right: 10px; |
| | | margin-bottom: 10px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | } |
| | | |
| | | i { |
| | | color: #949ba2; |
| | | margin-left: 10px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .staff_modal { |
| | | display: flex; |
| | | |
| | | .left { |
| | | width: 300px; |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | .transfer { |
| | | height: 600px; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | ::v-deep .el-transfer-panel{ |
| | | |
| | | ::v-deep .el-transfer-panel { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | |
| | | ::v-deep .el-transfer-panel__body { |
| | | height: 500px; |
| | | } |
| | |
| | | <div class="config_content"> |
| | | <div class="item"> |
| | | <div class="head">å起人</div> |
| | | <div class="content">访客</div> |
| | | <div class="content">被访人</div> |
| | | </div> |
| | | <div class="arrows"> |
| | | <div class="line"></div> |
| | | <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> |
| | | </div> |
| | | <div v-for="(item, index) in apprList" :key="index"> |
| | | <div |
| | | class="item yellow" |
| | | :class="{ |
| | | active: activeIndex == index, |
| | | blue: item.type == '1', |
| | | }" |
| | | @click="flowClick(index)" |
| | | > |
| | | <div class="item yellow" :class="{ |
| | | active: activeIndex == index, |
| | | blue: item.type == '1', |
| | | }" @click="flowClick(index)"> |
| | | <div class="head">{{ item.remark }}</div> |
| | | <div class="content"> |
| | | <!-- å®¡æ¹ --> |
| | | <template v-if="item.type == 0"> |
| | | <template v-if="item.memberType == '0'"> |
| | | <div>被访人</div> |
| | | </template> |
| | | <div>被访人</div> |
| | | </template> |
| | | <template v-if="item.memberType == '2'"> |
| | | <div>é¨é¨ä¸»ç®¡</div> |
| | | </template> |
| | | <template v-if="item.memberType == '1'"> |
| | | <div v-if="item.objIds && item.objIds.length === 1"> |
| | | <span |
| | | >{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span |
| | | > |
| | | <span>{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span> |
| | | <span v-if="item.approveType == 0 && item.type == '0'"> |
| | | æç¾</span |
| | | > |
| | | æç¾</span> |
| | | <span v-if="item.approveType == 1 && item.type == '0'"> |
| | | ä¼ç¾</span |
| | | > |
| | | ä¼ç¾</span> |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | <span v-if="item.approveType == 0 && item.type == '0'"> |
| | | æç¾</span |
| | | > |
| | | æç¾</span> |
| | | <span v-if="item.approveType == 1 && item.type == '0'"> |
| | | ä¼ç¾</span |
| | | > |
| | | ä¼ç¾</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i class="el-icon-arrow-right"></i> |
| | |
| | | <!-- æé --> |
| | | <template v-if="item.type == 1"> |
| | | <div v-if="item.objIds && item.objIds.length === 1"> |
| | | <span |
| | | >{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span |
| | | > |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i |
| | | v-if="item.memberType == '1'" |
| | | class="el-icon-arrow-right" |
| | | ></i> |
| | | <span>{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span> |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i> |
| | | </template> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="line"></div> |
| | | <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> |
| | | </template> |
| | | <i |
| | | v-if="apprList.length - 2 === index" |
| | | @click="handleAddAppr()" |
| | | class="el-icon-circle-plus add" |
| | | ></i> |
| | | <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="config_data_item_label">éæ©è¯¥èç¹ç审æ¹äºº</div> |
| | | <div class="df_ac mb10"> |
| | | <div>审æ¹èç¹åç§°</div> |
| | | <el-input |
| | | class="w200 ml10" |
| | | v-model="apprList[activeIndex].remark" |
| | | ></el-input> |
| | | <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input> |
| | | </div> |
| | | <!-- æé人 --> |
| | | <template v-if="apprList[activeIndex].type == '1'"> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div |
| | | v-for="mem,memIndex in apprList[activeIndex].objIds" |
| | | :key="mem.id" |
| | | class="config_data_item_reviewed_content_item" |
| | | > |
| | | <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i @click="memDel(memIndex)" class="el-icon-close"></i> |
| | | </div> |
| | | <span class="add" @click="selStaff">+æ·»å </span> |
| | | </div> |
| | | </template> |
| | | <el-radio-group |
| | | v-if="apprList[activeIndex].type == '0'" |
| | | v-model="apprList[activeIndex].memberType" |
| | | > |
| | | <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType"> |
| | | <el-radio :label="0">被访人</el-radio> |
| | | <el-radio :label="1">æå®äººå</el-radio> |
| | | <el-radio :label="2">é¨é¨ä¸»ç®¡</el-radio> |
| | | </el-radio-group> |
| | | <div |
| | | class="config_data_item_reviewed" |
| | | v-if="apprList[activeIndex].memberType == 1" |
| | | > |
| | | <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1"> |
| | | <div class="config_data_item_reviewed_label"> |
| | | <span>æå®å®¡æ ¸äºº</span> |
| | | <span>ä¸è¶
è¿20人</span> |
| | | </div> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div |
| | | v-for="(mem, memIndex) in apprList[activeIndex].objIds" |
| | | :key="mem.id" |
| | | class="config_data_item_reviewed_content_item" |
| | | > |
| | | <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i class="el-icon-close" @click="memDel(memIndex)"></i> |
| | | </div> |
| | | <span class="add" @click="selStaff">+æ·»å </span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="config_data_item_reviewed" |
| | | v-if="apprList[activeIndex].memberType == 2" |
| | | > |
| | | <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2"> |
| | | <div class="config_data_item_reviewed_label"> |
| | | <span>é¨é¨ä¸»ç®¡</span> |
| | | </div> |
| | | <div class="config_data_item_reviewed_r"> |
| | | <span>被访人ç</span> |
| | | <el-select |
| | | v-model="apprList[activeIndex].objLevel" |
| | | placeholder="è¯·éæ©" |
| | | style="margin: 0 20px 0 10px" |
| | | > |
| | | <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px"> |
| | | <el-option label="ç´æ¥ä¸»ç®¡" :value="0" /> |
| | | <el-option label="äºçº§ä¸»ç®¡" :value="1" /> |
| | | <el-option label="ä¸çº§ä¸»ç®¡" :value="2" /> |
| | | <el-option label="å级主管" :value="4" /> |
| | | </el-select> |
| | | <el-checkbox |
| | | v-model="apprList[activeIndex].noleaderOpt" |
| | | :true-label="1" |
| | | :false-label="0" |
| | | >æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox |
| | | > |
| | | <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" |
| | | :false-label="0">æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="config_data_item" |
| | | v-if=" |
| | | (apprList[activeIndex].memberType == 1 || |
| | | apprList[activeIndex].memberType == 2) && |
| | | apprList[activeIndex].type == '0' |
| | | " |
| | | > |
| | | <div class="config_data_item" v-if=" |
| | | (apprList[activeIndex].memberType == 1 || |
| | | apprList[activeIndex].memberType == 2) && |
| | | apprList[activeIndex].type == '0' |
| | | "> |
| | | <div class="config_data_item_label"> |
| | | å®¡æ¹æ¹å¼ |
| | | <span>审æ¹äººä¸ºå¤ä¸ªæ¶ï¼éç¨çå®¡æ¹æ¹å¼</span> |
| | | </div> |
| | | <el-radio-group |
| | | v-model="apprList[activeIndex].approveType" |
| | | style="display: flex; flex-direction: column" |
| | | > |
| | | <el-radio :label="0" style="margin-bottom: 20px" |
| | | >æç¾ï¼å
¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio |
| | | > |
| | | <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column"> |
| | | <el-radio :label="0" style="margin-bottom: 20px">æç¾ï¼å
¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio> |
| | | <el-radio :label="1">ä¼ç¾ï¼ææå®¡æ¹äººé½åææå¯éè¿ï¼</el-radio> |
| | | </el-radio-group> |
| | | </div> |
| | | <div class="config_data_submit"> |
| | | <el-button |
| | | @click="onSubmit" |
| | | :loading="subLoading" |
| | | style="background: #435ebe" |
| | | type="primary" |
| | | >ä¿åé
置项</el-button |
| | | > |
| | | <el-button |
| | | v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" |
| | | type="danger" |
| | | plain |
| | | @click="handleDel" |
| | | >å é¤èç¹</el-button |
| | | > |
| | | <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" |
| | | type="primary">ä¿åé
置项</el-button> |
| | | <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain |
| | | @click="handleDel">å é¤èç¹</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <el-dialog title="éæ©åå·¥" :visible.sync="isShowTransfer" width="1000px"> |
| | | <div class="staff_modal"> |
| | | <div class="left"> |
| | | <div |
| | | style=" |
| | | <div style=" |
| | | width: 100%; |
| | | height: 50px; |
| | | background: rgba(242, 242, 242, 1); |
| | | line-height: 50px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | " |
| | | > |
| | | "> |
| | | ä¼ä¸ç»ç»æ¶æ |
| | | </div> |
| | | <div style="width: 100%; height: 100%; overflow-y: scroll"> |
| | | <Tree |
| | | :list="companyTree" |
| | | :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | | children: 'childList', |
| | | id: 'id', |
| | | }" |
| | | @callback="callback" |
| | | /> |
| | | <div style="width: 100%; max-height: 560px; overflow-y: scroll"> |
| | | <Tree :list="companyTree" :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | | children: 'childList', |
| | | id: 'id', |
| | | }" @callback="callback" /> |
| | | </div> |
| | | </div> |
| | | <el-transfer |
| | | filterable |
| | | :title="['æªé', 'å·²é']" |
| | | openAll |
| | | :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" |
| | | v-model="searchForm.objIds" |
| | | :data="memberList" |
| | | class="transfer" |
| | | > |
| | | <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> |
| | | </el-transfer> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | |
| | | TableLayout, |
| | | Tree |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | activeType: '2', |
| | | subLoading: false, |
| | |
| | | companyTree: [] |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.getfindCompanyTreePage() |
| | | this.initDate() |
| | | }, |
| | | methods: { |
| | | flowClick (i) { |
| | | flowClick(i) { |
| | | this.activeIndex = i |
| | | this.apprList.forEach((item, index) => { |
| | | if (i === index) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | initDate () { |
| | | initDate() { |
| | | const { activeType } = this |
| | | approveTemplByType(activeType).then(res => { |
| | | if (res && res.paramList) { |
| | |
| | | companyName: i.companyName |
| | | } |
| | | }) |
| | | }else{ |
| | | } else { |
| | | item.objIds = [] |
| | | } |
| | | }) |
| | |
| | | // console.log(res); |
| | | }) |
| | | }, |
| | | onSubmit () { |
| | | onSubmit() { |
| | | const { apprList, activeType } = this |
| | | const temp = JSON.parse(JSON.stringify(apprList)) |
| | | temp.forEach((item, index) => { |
| | |
| | | this.subLoading = false |
| | | }) |
| | | }, |
| | | handleDel () { |
| | | handleDel() { |
| | | const { activeIndex } = this |
| | | this.apprList.splice(activeIndex, 1) |
| | | this.activeIndex = 0 |
| | | }, |
| | | handleAddAppr () { |
| | | this.apprList.splice(this.apprList.length - 2, 0, { remark: '审æ¹äºº',approveType: 0, active: false, type: 0, objIds: [] }) |
| | | handleAddAppr() { |
| | | this.apprList.splice(this.apprList.length - 2, 0, { remark: '审æ¹äºº', approveType: 0, active: false, type: 0, objIds: [] }) |
| | | // this.apprList.push({ remark: '审æ¹äºº', active: false, type: '0' }) |
| | | }, |
| | | |
| | | // è·åç»ç»æ |
| | | getfindCompanyTreePage () { |
| | | getfindCompanyTreePage() { |
| | | fetchList() |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | getMemberList () { |
| | | getMemberList() { |
| | | memberListPost({ |
| | | model: { |
| | | companyId: this.searchForm.companyId || '', |
| | |
| | | erpOrgId: '', |
| | | hasFace: '', |
| | | hkStatus: '', |
| | | includeChild: false, |
| | | includeChild: true, |
| | | type: 2 |
| | | }, |
| | | page: 1, |
| | | capacity: 30 |
| | | capacity: 300 |
| | | }).then(res => { |
| | | this.memberList = res.records || [] |
| | | this.memberList.forEach(item => { |
| | |
| | | // console.log('defaultProps', res) |
| | | }) |
| | | }, |
| | | callback (row) { |
| | | callback(row) { |
| | | console.log(row) |
| | | this.$set(this.searchForm, 'companyId', row.id) |
| | | this.$set(this.searchForm, 'erpOrgId', row.erpId) |
| | | this.getMemberList() |
| | | }, |
| | | TransferSub () { |
| | | TransferSub() { |
| | | const { activeIndex } = this |
| | | if (this.searchForm.objIds && this.searchForm.objIds.length > 0) { |
| | | if (this.searchForm.objIds.length > 20) return this.$message.warning('æå¤éæ©20人') |
| | |
| | | this.isShowTransfer = false |
| | | console.log(this.searchForm.objIds) |
| | | }, |
| | | memDel (memIndex) { |
| | | memDel(memIndex) { |
| | | const { activeIndex } = this |
| | | this.apprList.forEach((item, index) => { |
| | | if (activeIndex === index) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | selStaff () { |
| | | selStaff() { |
| | | this.isShowTransfer = true |
| | | this.getMemberList() |
| | | }, |
| | | seleItem (i) { |
| | | seleItem(i) { |
| | | this.list.forEach((item, index) => { |
| | | item.active = index === i |
| | | }) |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .config_list { |
| | | width: 543px; |
| | | height: 100%; |
| | |
| | | box-sizing: border-box; |
| | | border: 1px solid #eeeeee; |
| | | background: #f7f7f7; |
| | | |
| | | .config_list_head { |
| | | width: 100%; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | span { |
| | | font-size: 18px; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | } |
| | | } |
| | | |
| | | .config_content { |
| | | width: 100%; |
| | | height: calc(100% - 40px); |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | |
| | | &::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .active { |
| | | border: 2px solid #4456ac !important; |
| | | } |
| | | |
| | | .yellow { |
| | | background: #e89e42 !important; |
| | | } |
| | | |
| | | .blue { |
| | | background: #5094f3 !important; |
| | | } |
| | | |
| | | .arrows { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | position: relative; |
| | | |
| | | .line { |
| | | width: 1px; |
| | | height: 60px; |
| | | background-color: #ccc; |
| | | } |
| | | |
| | | .add { |
| | | font-size: 40px; |
| | | color: #2080f7; |
| | |
| | | z-index: 999; |
| | | top: 10px; |
| | | } |
| | | |
| | | img { |
| | | width: 12px; |
| | | } |
| | | } |
| | | |
| | | .item { |
| | | width: 200px; |
| | | cursor: pointer; |
| | |
| | | position: relative; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .head { |
| | | height: 32px; |
| | | line-height: 32px; |
| | | padding: 2px 12px; |
| | | color: #fff; |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | background-color: #fff; |
| | |
| | | padding: 0 12px; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .config_data { |
| | | flex: 1; |
| | | height: 100%; |
| | | margin-left: 20px; |
| | | |
| | | .config_data_submit { |
| | | margin-top: 50px; |
| | | } |
| | | |
| | | .config_data_item { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | margin-bottom: 30px; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | |
| | | .config_data_item_label { |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | margin-bottom: 20px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed { |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | |
| | | .config_data_item_reviewed_r { |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | flex-shrink: 0; |
| | | font-size: 14px; |
| | |
| | | color: #666666; |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed_label { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | &:nth-child(1) { |
| | | font-size: 14px; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed_content { |
| | | width: 400px; |
| | | margin-top: 10px; |
| | |
| | | display: flex; |
| | | align-items: flex-start; |
| | | flex-wrap: wrap; |
| | | |
| | | .add { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | cursor: pointer; |
| | | margin-top: 3px; |
| | | } |
| | | |
| | | .config_data_item_reviewed_content_item { |
| | | padding: 3px 5px; |
| | | background: #f4f7fc; |
| | |
| | | box-sizing: border-box; |
| | | margin-right: 10px; |
| | | margin-bottom: 10px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | } |
| | | |
| | | i { |
| | | color: #949ba2; |
| | | margin-left: 10px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .staff_modal { |
| | | display: flex; |
| | | |
| | | .left { |
| | | width: 300px; |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | .transfer { |
| | | height: 600px; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | ::v-deep .el-transfer-panel{ |
| | | |
| | | ::v-deep .el-transfer-panel { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | |
| | | ::v-deep .el-transfer-panel__body { |
| | | height: 500px; |
| | | } |
| | |
| | | <div class="h3">æºæ
§ç©æµååºå®æ¶ä¸ä½åç³»ç»</div> |
| | | </div> |
| | | <div class="form_wrap"> |
| | | <!-- <div class="tabs"> |
| | | <div class="tab active"> |
| | | <div class="tabs"> |
| | | <div class="tab" @click="tabClick('0')" :class="{ active: activeTab == '0' }"> |
| | | <div class="name">å¸å·ç»å½</div> |
| | | <div class="icon"></div> |
| | | </div> |
| | | <div class="tab"> |
| | | <div class="tab" @click="tabClick('1')" :class="{ active: activeTab == '1' }"> |
| | | <div class="name">ææºç»å½</div> |
| | | <div class="icon"></div> |
| | | </div> |
| | | </div> --> |
| | | <div class="df_ac"> |
| | | <div class="label">å¸å·</div> |
| | | <div class="line"> |
| | | <el-input v-model="username" placeholder="请è¾å
¥å¸å·" maxlength="50" v-trim /> |
| | | </div> |
| | | </div> |
| | | <div class="df_ac"> |
| | | <div class="label">å¯ç </div> |
| | | <div class="line"> |
| | | <el-input v-model="password" placeholder="请è¾å
¥å¯ç " type="password" maxlength="30" show-password /> |
| | | <template v-if="activeTab == '0'"> |
| | | <div class="df_ac"> |
| | | <div class="label">å¸å·</div> |
| | | <div class="line"> |
| | | <el-input v-model="username" placeholder="请è¾å
¥å¸å·" maxlength="50" v-trim /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="df_ac"> |
| | | <div class="label">å¯ç </div> |
| | | <div class="line"> |
| | | <el-input v-model="password" placeholder="请è¾å
¥å¯ç " type="password" maxlength="30" show-password /> |
| | | </div> |
| | | </div> |
| | | <div class="df_ac"> |
| | | <div class="label">éªè¯ç </div> |
| | | <div class="line"> |
| | | <el-input v-model="captcha.value" placeholder="请è¾å
¥éªè¯ç " maxlength="4" @keypress.enter.native="login" /> |
| | | <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha"> |
| | | <span v-else><i class="el-icon-loading"></i></span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <template v-if="activeTab == '1'"> |
| | | <div class="df_ac"> |
| | | <div class="label">ææºå·</div> |
| | | <div class="line"> |
| | | <el-input v-model="password" placeholder="请è¾å
¥ææºå·" type="password" maxlength="30" show-password /> |
| | | </div> |
| | | </div> |
| | | <div class="df_ac"> |
| | | <div class="label">éªè¯ç </div> |
| | | <div class="line"> |
| | | <el-input v-model="captcha.value" placeholder="请è¾å
¥éªè¯ç " maxlength="4" @keypress.enter.native="login" /> |
| | | <span class="code_get" @click="getCode">è·åéªè¯ç </span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <div class="df_ac"> |
| | | <div class="label">éªè¯ç </div> |
| | | <div class="line"> |
| | | <el-input v-model="captcha.value" placeholder="请è¾å
¥éªè¯ç " maxlength="4" @keypress.enter.native="login" /> |
| | | <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha"> |
| | | <span v-else><i class="el-icon-loading"></i></span> |
| | | </div> |
| | | </div> |
| | | <el-button :loading="loading" type="primary" class="login_btn" |
| | | @click.native.prevent="login">ç«å³ç»å½</el-button> |
| | | <el-button :loading="loading" type="primary" class="login_btn" @click.native.prevent="login">ç«å³ç»å½</el-button> |
| | | <div class="btn_wrap"> |
| | | <el-checkbox v-model="isRemPsd"> |
| | | <span style="font-size: 13px; font-weight: 400" class="placeholder9">è®°ä½å¯ç </span> |
| | |
| | | isRemPsd: false, |
| | | username: '', |
| | | password: '', |
| | | activeTab: '0', |
| | | // éªè¯ç |
| | | captcha: { |
| | | loading: false, |
| | |
| | | .finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | getCode() { |
| | | console.log('getCode'); |
| | | |
| | | }, |
| | | tabClick(val) { |
| | | this.activeTab = val |
| | | }, |
| | | // å·æ°éªè¯ç |
| | | refreshCaptcha() { |
| | |
| | | background-color: #fff; |
| | | box-sizing: border-box; |
| | | /* padding: 50px 80px 20px; */ |
| | | padding: 80px 80px 20px; |
| | | padding: 50px 80px 20px; |
| | | position: relative; |
| | | |
| | | .tabs { |
| | |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | cursor: pointer; |
| | | |
| | | .icon { |
| | | width: 36px; |
| | |
| | | margin-bottom: 17px; |
| | | display: flex; |
| | | width: 100%; |
| | | |
| | | align-items: center; |
| | | position: relative; |
| | | .el-input { |
| | | height: 40px; |
| | | |
| | | flex: 1; |
| | | // font-size: 14px; |
| | | ::v-deep .el-input__inner { |
| | | height: 40px !important; |
| | |
| | | width: 100px; |
| | | margin-left: 10px; |
| | | } |
| | | .code_get{ |
| | | position: absolute; |
| | | top: 10px; |
| | | right: 10px; |
| | | font-size: 14px; |
| | | width: 72px; |
| | | z-index: 11; |
| | | margin-left: 10px; |
| | | cursor: pointer; |
| | | color: $primary-color; |
| | | } |
| | | } |
| | | |
| | | .forget { |
| | |
| | | .time-item { |
| | | margin-right: 8px; |
| | | margin-bottom: 8px; |
| | | border: #cccccc solid 1px; |
| | | font-size: 14px; |
| | | font-weight: 400; |
| | | line-height: 14px; |
| | |
| | | align-items: center; |
| | | border-radius: 5px; |
| | | color: #111; |
| | | border: #cccccc solid 1px; |
| | | cursor: pointer; |
| | | } |
| | | .time-item-sel { |
| | | border-color: $primary-color; |
| | |
| | | <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> |
| | | </div> |
| | | <div v-for="(item, index) in apprList" :key="index"> |
| | | <div |
| | | class="item yellow" |
| | | :class="{ |
| | | active: activeIndex == index, |
| | | blue: item.type == '1', |
| | | }" |
| | | @click="flowClick(index)" |
| | | > |
| | | <div class="item yellow" :class="{ |
| | | active: activeIndex == index, |
| | | blue: item.type == '1', |
| | | }" @click="flowClick(index)"> |
| | | <div class="head">{{ item.remark }}</div> |
| | | <div class="content"> |
| | | <!-- å®¡æ¹ --> |
| | |
| | | </template> |
| | | <template v-if="item.memberType == '1'"> |
| | | <div v-if="item.objIds && item.objIds.length === 1"> |
| | | <span |
| | | >{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span |
| | | > |
| | | <span>{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span> |
| | | <span v-if="item.approveType == 0 && item.type == '0'"> |
| | | æç¾</span |
| | | > |
| | | æç¾</span> |
| | | <span v-if="item.approveType == 1 && item.type == '0'"> |
| | | ä¼ç¾</span |
| | | > |
| | | ä¼ç¾</span> |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | <span v-if="item.approveType == 0 && item.type == '0'"> |
| | | æç¾</span |
| | | > |
| | | æç¾</span> |
| | | <span v-if="item.approveType == 1 && item.type == '0'"> |
| | | ä¼ç¾</span |
| | | > |
| | | ä¼ç¾</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i class="el-icon-arrow-right"></i> |
| | |
| | | <!-- æé --> |
| | | <template v-if="item.type == 1"> |
| | | <div v-if="item.objIds && item.objIds.length === 1"> |
| | | <span |
| | | >{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span |
| | | > |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i |
| | | v-if="item.memberType == '1'" |
| | | class="el-icon-arrow-right" |
| | | ></i> |
| | | <span>{{ item.objIds[0].name }} |
| | | {{ item.objIds[0].companyName }}</span> |
| | | </div> |
| | | <div v-else-if="item.objIds && item.objIds.length > 1"> |
| | | <span>{{ item.objIds[0].name }} ç</span> |
| | | </div> |
| | | <div v-else>è¯·éæ©</div> |
| | | <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i> |
| | | </template> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="line"></div> |
| | | <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> |
| | | </template> |
| | | <i |
| | | v-if="apprList.length - 2 === index" |
| | | @click="handleAddAppr()" |
| | | class="el-icon-circle-plus add" |
| | | ></i> |
| | | <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="config_data_item_label">éæ©è¯¥èç¹ç审æ¹äºº</div> |
| | | <div class="df_ac mb10"> |
| | | <div>审æ¹èç¹åç§°</div> |
| | | <el-input |
| | | class="w200 ml10" |
| | | v-model="apprList[activeIndex].remark" |
| | | ></el-input> |
| | | <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input> |
| | | </div> |
| | | <!-- æé人 --> |
| | | <template v-if="apprList[activeIndex].type == '1'"> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div |
| | | v-for="mem, memIndex in apprList[activeIndex].objIds" |
| | | :key="mem.id" |
| | | class="config_data_item_reviewed_content_item" |
| | | > |
| | | <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i @click="memDel(memIndex)" class="el-icon-close"></i> |
| | | </div> |
| | | <span class="add" @click="selStaff">+æ·»å </span> |
| | | </div> |
| | | </template> |
| | | <el-radio-group |
| | | v-if="apprList[activeIndex].type == '0'" |
| | | v-model="apprList[activeIndex].memberType" |
| | | > |
| | | <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType"> |
| | | <!-- <el-radio :label="0">被访人</el-radio> --> |
| | | <el-radio :label="1">æå®äººå</el-radio> |
| | | <el-radio :label="2">é¨é¨ä¸»ç®¡</el-radio> |
| | | </el-radio-group> |
| | | <div |
| | | class="config_data_item_reviewed" |
| | | v-if="apprList[activeIndex].memberType == 1" |
| | | > |
| | | <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1"> |
| | | <div class="config_data_item_reviewed_label"> |
| | | <span>æå®å®¡æ ¸äºº</span> |
| | | <span>ä¸è¶
è¿20人</span> |
| | | </div> |
| | | <div class="config_data_item_reviewed_content"> |
| | | <div |
| | | v-for="(mem, memIndex) in apprList[activeIndex].objIds" |
| | | :key="mem.id" |
| | | class="config_data_item_reviewed_content_item" |
| | | > |
| | | <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" |
| | | class="config_data_item_reviewed_content_item"> |
| | | <span>{{ mem.name }}</span> |
| | | <i class="el-icon-close" @click="memDel(memIndex)"></i> |
| | | </div> |
| | | <span class="add" @click="selStaff">+æ·»å </span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="config_data_item_reviewed" |
| | | v-if="apprList[activeIndex].memberType == 2" |
| | | > |
| | | <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2"> |
| | | <div class="config_data_item_reviewed_label"> |
| | | <span>é¨é¨ä¸»ç®¡</span> |
| | | </div> |
| | | <div class="config_data_item_reviewed_r"> |
| | | <span>ç³è¯·äººç</span> |
| | | <el-select |
| | | v-model="apprList[activeIndex].objLevel" |
| | | placeholder="è¯·éæ©" |
| | | style="margin: 0 20px 0 10px" |
| | | > |
| | | <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px"> |
| | | <el-option label="ç´æ¥ä¸»ç®¡" :value="0" /> |
| | | <el-option label="äºçº§ä¸»ç®¡" :value="1" /> |
| | | <el-option label="ä¸çº§ä¸»ç®¡" :value="2" /> |
| | | <el-option label="å级主管" :value="4" /> |
| | | </el-select> |
| | | <el-checkbox |
| | | v-model="apprList[activeIndex].noleaderOpt" |
| | | :true-label="1" |
| | | :false-label="0" |
| | | >æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox |
| | | > |
| | | <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" |
| | | :false-label="0">æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="config_data_item" |
| | | v-if=" |
| | | (apprList[activeIndex].memberType == 1 || |
| | | apprList[activeIndex].memberType == 2) && |
| | | apprList[activeIndex].type == '0' |
| | | " |
| | | > |
| | | <div class="config_data_item" v-if=" |
| | | (apprList[activeIndex].memberType == 1 || |
| | | apprList[activeIndex].memberType == 2) && |
| | | apprList[activeIndex].type == '0' |
| | | "> |
| | | <div class="config_data_item_label"> |
| | | å®¡æ¹æ¹å¼ |
| | | <span>审æ¹äººä¸ºå¤ä¸ªæ¶ï¼éç¨çå®¡æ¹æ¹å¼</span> |
| | | </div> |
| | | <el-radio-group |
| | | v-model="apprList[activeIndex].approveType" |
| | | style="display: flex; flex-direction: column" |
| | | > |
| | | <el-radio :label="0" style="margin-bottom: 20px" |
| | | >æç¾ï¼å
¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio |
| | | > |
| | | <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column"> |
| | | <el-radio :label="0" style="margin-bottom: 20px">æç¾ï¼å
¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio> |
| | | <el-radio :label="1">ä¼ç¾ï¼ææå®¡æ¹äººé½åææå¯éè¿ï¼</el-radio> |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-if="apprList[activeIndex].type == '0'" class="df_ac mb10"> |
| | | <div>å
许修æ¹"驾驶å"</div> |
| | | <el-switch |
| | | class="ml10" |
| | | :active-value="1" |
| | | :inactive-value="0" |
| | | v-model="apprList[activeIndex].driverParam" |
| | | ></el-switch> |
| | | <el-switch class="ml10" :active-value="1" :inactive-value="0" |
| | | v-model="apprList[activeIndex].driverParam"></el-switch> |
| | | </div> |
| | | <div class="config_data_submit"> |
| | | <el-button |
| | | @click="onSubmit" |
| | | :loading="subLoading" |
| | | style="background: #435ebe" |
| | | type="primary" |
| | | >ä¿åé
置项</el-button |
| | | > |
| | | <el-button |
| | | v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" |
| | | type="danger" |
| | | plain |
| | | @click="handleDel" |
| | | >å é¤èç¹</el-button |
| | | > |
| | | <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" |
| | | type="primary">ä¿åé
置项</el-button> |
| | | <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain |
| | | @click="handleDel">å é¤èç¹</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <el-dialog title="éæ©åå·¥" :visible.sync="isShowTransfer" width="1000px"> |
| | | <div class="staff_modal"> |
| | | <div class="left"> |
| | | <div |
| | | style=" |
| | | <div style=" |
| | | width: 100%; |
| | | height: 50px; |
| | | background: rgba(242, 242, 242, 1); |
| | | line-height: 50px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | " |
| | | > |
| | | "> |
| | | ä¼ä¸ç»ç»æ¶æ |
| | | </div> |
| | | <div style="width: 100%; height: 100%; overflow-y: scroll"> |
| | | <Tree |
| | | :list="companyTree" |
| | | :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | | children: 'childList', |
| | | id: 'id', |
| | | }" |
| | | @callback="callback" |
| | | /> |
| | | <div style="width: 100%; max-height: 560px; overflow-y: scroll"> |
| | | <Tree :list="companyTree" :defaultProps="{ |
| | | name: 'name', |
| | | status: 'fsStatus', |
| | | children: 'childList', |
| | | id: 'id', |
| | | }" @callback="callback" /> |
| | | </div> |
| | | </div> |
| | | <el-transfer |
| | | filterable |
| | | :title="['æªé', 'å·²é']" |
| | | openAll |
| | | :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" |
| | | v-model="searchForm.objIds" |
| | | :data="memberList" |
| | | class="transfer" |
| | | > |
| | | <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> |
| | | </el-transfer> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | |
| | | TableLayout, |
| | | Tree |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | activeType: '3', |
| | | subLoading: false, |
| | |
| | | companyTree: [] |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.getfindCompanyTreePage() |
| | | this.initDate() |
| | | }, |
| | | methods: { |
| | | handleClick () { |
| | | handleClick() { |
| | | this.apprList = [] |
| | | const arr = [ |
| | | { remark: '审æ¹äºº', active: false, type: 0, objIds: [] }, |
| | |
| | | this.apprList = [...arr] |
| | | this.initDate() |
| | | }, |
| | | flowClick (i) { |
| | | flowClick(i) { |
| | | this.activeIndex = i |
| | | this.apprList.forEach((item, index) => { |
| | | if (i === index) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | initDate () { |
| | | initDate() { |
| | | const { activeType } = this |
| | | approveTemplByType(activeType).then(res => { |
| | | if (res && res.paramList) { |
| | |
| | | companyName: i.companyName |
| | | } |
| | | }) |
| | | }else{ |
| | | } else { |
| | | item.objIds = [] |
| | | } |
| | | }) |
| | |
| | | // console.log(res); |
| | | }) |
| | | }, |
| | | onSubmit () { |
| | | onSubmit() { |
| | | const { apprList, activeType } = this |
| | | const temp = JSON.parse(JSON.stringify(apprList)) |
| | | temp.forEach((item, index) => { |
| | |
| | | this.subLoading = false |
| | | }) |
| | | }, |
| | | handleDel () { |
| | | handleDel() { |
| | | const { activeIndex } = this |
| | | this.apprList.splice(activeIndex, 1) |
| | | this.activeIndex = 0 |
| | | }, |
| | | handleAddAppr () { |
| | | this.apprList.splice(this.apprList.length - 1, 0, { remark: '审æ¹äºº',approveType: 0, active: false, type: 0, objIds: [] }) |
| | | handleAddAppr() { |
| | | this.apprList.splice(this.apprList.length - 1, 0, { remark: '审æ¹äºº', approveType: 0, active: false, type: 0, objIds: [] }) |
| | | // this.apprList.push({ remark: '审æ¹äºº', active: false, type: '0' }) |
| | | }, |
| | | |
| | | // è·åç»ç»æ |
| | | getfindCompanyTreePage () { |
| | | getfindCompanyTreePage() { |
| | | fetchList() |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | getMemberList () { |
| | | getMemberList() { |
| | | memberListPost({ |
| | | model: { |
| | | companyId: this.searchForm.companyId || '', |
| | |
| | | erpOrgId: '', |
| | | hasFace: '', |
| | | hkStatus: '', |
| | | includeChild: false, |
| | | includeChild: true, |
| | | type: 2 |
| | | }, |
| | | page: 1, |
| | | capacity: 30 |
| | | capacity: 300 |
| | | }).then(res => { |
| | | this.memberList = res.records || [] |
| | | this.memberList.forEach(item => { |
| | |
| | | // console.log('defaultProps', res) |
| | | }) |
| | | }, |
| | | callback (row) { |
| | | callback(row) { |
| | | console.log(row) |
| | | this.$set(this.searchForm, 'companyId', row.id) |
| | | this.$set(this.searchForm, 'erpOrgId', row.erpId) |
| | | this.getMemberList() |
| | | }, |
| | | TransferSub () { |
| | | TransferSub() { |
| | | const { activeIndex } = this |
| | | if (this.searchForm.objIds && this.searchForm.objIds.length > 0) { |
| | | if (this.searchForm.objIds.length > 20) return this.$message.warning('æå¤éæ©20人') |
| | |
| | | this.isShowTransfer = false |
| | | console.log(this.searchForm.objIds) |
| | | }, |
| | | memDel (memIndex) { |
| | | memDel(memIndex) { |
| | | const { activeIndex } = this |
| | | this.apprList.forEach((item, index) => { |
| | | if (activeIndex === index) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | selStaff () { |
| | | selStaff() { |
| | | this.isShowTransfer = true |
| | | this.getMemberList() |
| | | }, |
| | | seleItem (i) { |
| | | seleItem(i) { |
| | | this.list.forEach((item, index) => { |
| | | item.active = index === i |
| | | }) |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .config_list { |
| | | width: 543px; |
| | | height: 100%; |
| | |
| | | box-sizing: border-box; |
| | | border: 1px solid #eeeeee; |
| | | background: #f7f7f7; |
| | | |
| | | .config_list_head { |
| | | width: 100%; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | span { |
| | | font-size: 18px; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | } |
| | | } |
| | | |
| | | .config_content { |
| | | width: 100%; |
| | | height: calc(100% - 40px); |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | |
| | | &::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .active { |
| | | border: 2px solid #4456ac !important; |
| | | } |
| | | |
| | | .yellow { |
| | | background: #e89e42 !important; |
| | | } |
| | | |
| | | .blue { |
| | | background: #5094f3 !important; |
| | | } |
| | | |
| | | .arrows { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | position: relative; |
| | | |
| | | .line { |
| | | width: 1px; |
| | | height: 60px; |
| | | background-color: #ccc; |
| | | } |
| | | |
| | | .add { |
| | | font-size: 40px; |
| | | color: #2080f7; |
| | |
| | | z-index: 999; |
| | | top: 10px; |
| | | } |
| | | |
| | | img { |
| | | width: 12px; |
| | | } |
| | | } |
| | | |
| | | .item { |
| | | width: 200px; |
| | | cursor: pointer; |
| | |
| | | position: relative; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .head { |
| | | height: 32px; |
| | | line-height: 32px; |
| | | padding: 2px 12px; |
| | | color: #fff; |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | background-color: #fff; |
| | |
| | | padding: 0 12px; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .config_data { |
| | | flex: 1; |
| | | height: 100%; |
| | | margin-left: 20px; |
| | | |
| | | .config_data_submit { |
| | | margin-top: 50px; |
| | | } |
| | | |
| | | .config_data_item { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | margin-bottom: 30px; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | |
| | | .config_data_item_label { |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | margin-bottom: 20px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed { |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | |
| | | .config_data_item_reviewed_r { |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | flex-shrink: 0; |
| | | font-size: 14px; |
| | |
| | | color: #666666; |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed_label { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | &:nth-child(1) { |
| | | font-size: 14px; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .config_data_item_reviewed_content { |
| | | width: 400px; |
| | | margin-top: 10px; |
| | |
| | | display: flex; |
| | | align-items: flex-start; |
| | | flex-wrap: wrap; |
| | | |
| | | .add { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | |
| | | cursor: pointer; |
| | | margin-top: 3px; |
| | | } |
| | | |
| | | .config_data_item_reviewed_content_item { |
| | | padding: 3px 5px; |
| | | background: #f4f7fc; |
| | |
| | | box-sizing: border-box; |
| | | margin-right: 10px; |
| | | margin-bottom: 10px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | } |
| | | |
| | | i { |
| | | color: #949ba2; |
| | | margin-left: 10px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .staff_modal { |
| | | display: flex; |
| | | |
| | | .left { |
| | | width: 300px; |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | .transfer { |
| | | height: 600px; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | ::v-deep .el-transfer-panel{ |
| | | |
| | | ::v-deep .el-transfer-panel { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | |
| | | ::v-deep .el-transfer-panel__body { |
| | | height: 500px; |
| | | } |
| | |
| | | </div> |
| | | </div> |
| | | <div class="line"> |
| | | <div v-if="task.billCode" class="ite"> |
| | | <div v-if="task.billCode" style="width: 40%;" class="ite"> |
| | | <span>è¿è¾åå·ï¼</span> |
| | | <span>{{ task.billCode }}</span> |
| | | </div> |
| | | <div v-else class="ite"> |
| | | <div v-else class="ite" style="width: 40%;"> |
| | | <span>åååå·ï¼</span> |
| | | <span>{{ task.contractNum }}</span> |
| | | </div> |
| | | <div class="ite siji"> |
| | | <div class="ite jiashi"> |
| | | <span>驾驶åï¼</span> |
| | | <span>{{ task.driverName }}</span> |
| | | <span>{{ task.driverName }} {{ task.drivierPhone }}</span> |
| | | </div> |
| | | <div class="ite phone"> |
| | | <!-- <div class="ite phone"> |
| | | <span>ææºå·ï¼</span> |
| | | <span>{{ task.drivierPhone }}</span> |
| | | </div> |
| | | <div class="ite"> |
| | | </div> --> |
| | | <div class="ite" style="width: 40%"> |
| | | <span>æ»è¿è¾éï¼</span> |
| | | <span>{{ task.totalNum }}䏿¯</span> |
| | | </div> |
| | | <div v-if="task.billCode" class="ite" style="width: 66.6%"> |
| | | <div v-if="task.billCode" class="ite" style="width: 60%"> |
| | | <span>è¿è¾å
¬å¸ï¼</span> |
| | | <span>{{ task.carrierName }}</span> |
| | | </div> |
| | |
| | | margin-bottom: 6px; |
| | | |
| | | .ite { |
| | | width: 33.3%; |
| | | width: 50%; |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | .siji { |
| | | width: 29%; |
| | | .jiashi { |
| | | width: 60%; |
| | | } |
| | | |
| | | .phone { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear"> |
| | | </QueryForm> |
| | | <div class="pt16 mb10"> |
| | | <el-button type="primary" @click="batchStatus(0)" v-permissions="['business:platformjob:update']">æ¹éå¯ç¨</el-button> |
| | | <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">æ¹éç¦ç¨</el-button> |
| | | </div> |
| | | <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column align="center" type="selection" width="55"> |
| | | </el-table-column> |
| | | <el-table-column prop="titile" label="æ¶æ¯æ é¢" min-width="160" show-overflow-tooltip /> |
| | | <el-table-column prop="objCode" label="æ¶æ¯ç¼ç " min-width="150" show-overflow-tooltip /> |
| | | <el-table-column prop="tempId" label="模æ¿ID" min-width="300" show-overflow-tooltip /> |
| | | <el-table-column label="ç¶æ" width="120" align="center" fixed="right"> |
| | | <template v-slot="scope"> |
| | | <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status" |
| | | @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import { getH5List, H5StatusUpdate, H5StatussUpdate } from '@/api/system/sms' |
| | | |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { Message } from 'element-ui' |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | components: { |
| | | Pagination, |
| | | QueryForm, |
| | | GlobalWindow, |
| | | }, |
| | | data() { |
| | | return { |
| | | ids: [], |
| | | isShowDetail: false, |
| | | exLoading: false, |
| | | loading: false, |
| | | pagination: { |
| | | pageSize: 10, |
| | | page: 1, |
| | | total: 0 |
| | | }, |
| | | filters: {}, |
| | | list: [], |
| | | queryFormConfig: { |
| | | formItems: [ |
| | | { |
| | | filed: 'titile', |
| | | type: 'input', |
| | | label: 'æ¶æ¯æ é¢' |
| | | }, |
| | | { |
| | | filed: 'status', |
| | | type: 'select', |
| | | label: 'å¯ç¨ç¶æ', |
| | | options: [ |
| | | { value: 0, label: 'å¯ç¨' }, |
| | | { value: 1, label: 'ç¦ç¨' }, |
| | | ] |
| | | }, |
| | | { |
| | | filed: 'objCode', |
| | | type: 'input', |
| | | label: 'æ¶æ¯ç¼ç ' |
| | | } |
| | | ], |
| | | online: true |
| | | }, |
| | | } |
| | | }, |
| | | created() { |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | handleSelectionChange(val) { |
| | | this.ids = val.map(i => i.id) |
| | | console.log('ids', this.ids) |
| | | }, |
| | | batchStatus(status) { |
| | | const { ids } = this |
| | | if (ids.length == 0) return Message.error('请å
éæ©è¦æ´æ¹ççä¿¡éç¥') |
| | | this.$confirm(`ç¡®å®${status == 0 ? 'å¯ç¨' : 'ç¦ç¨'}éä¸çææçä¿¡éç¥å?`, 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | H5StatussUpdate({ |
| | | ids: ids.join(','), |
| | | status |
| | | }).then(res => { |
| | | Message.success('æ¹éæ´æ°æå') |
| | | this.getList() |
| | | }, () => { |
| | | this.getList() |
| | | }) |
| | | }) |
| | | |
| | | }, |
| | | changeStatus(row) { |
| | | console.log('row', row) |
| | | H5StatusUpdate({ |
| | | ...row |
| | | }).then(res => { |
| | | Message.success('ç¶ææ´æ°æå') |
| | | }, () => { |
| | | this.getList() |
| | | }) |
| | | }, |
| | | getList(page) { |
| | | const { pagination, filters } = this |
| | | this.loading = true |
| | | getH5List({ |
| | | model: { |
| | | ...filters, |
| | | }, |
| | | capacity: pagination.pageSize, |
| | | page: page || pagination.page, |
| | | }).then(res => { |
| | | this.loading = false |
| | | this.list = res.records || [] |
| | | this.list.forEach(item => { |
| | | item.inTypeTemp = item.inType == 0 ? 'æ´æç' : 'ä»¶ç' |
| | | item.taskOrigin = 'WMSè·å' |
| | | }) |
| | | this.pagination.total = res.total || 0 |
| | | }, () => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | |
| | | |
| | | clear() { |
| | | this.pagination.page = 1 |
| | | this.filters = {} |
| | | this.getList() |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .param_title { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #000000; |
| | | margin-bottom: 15px; |
| | | } |
| | | </style> |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/variables.scss"; |
| | | .upload_wrap { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | |
| | | font-size: 13px; |
| | | color: #888888; |
| | | .status { |
| | | color: #00ba67; |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | .m_content { |
| | |
| | | <div class="modal_wrap"> |
| | | <div class="modal_content"> |
| | | <div class="header"> |
| | | <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt=""> |
| | | <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt=""> |
| | | <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" |
| | | alt=""> |
| | | <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg" |
| | | src="@/assets/task/bg_shenhe_pass@2x.png" alt=""> |
| | | <img v-else-if="info.status == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt=""> |
| | | <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt=""> |
| | | <div class="left"> |
| | | <div class="h1">ç©æµè½¦é¢çº¦</div> |
| | | <div class="time">æäº¤æ¶é´ï¼{{ info.createDate }}</div> |
| | | </div> |
| | | <div class="right" :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{ statusMap[info.status] }}</div> |
| | | <div class="right" |
| | | :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{ |
| | | statusMap[info.status] }}</div> |
| | | </div> |
| | | <div class="info"> |
| | | <div class="title">ç©æµè½¦é¢çº¦ä¿¡æ¯</div> |
| | |
| | | <div class="item"> |
| | | <div class="label">åè¿è¯ç
§ç</div> |
| | | <div v-if="info.transportImg" class="value"> |
| | | <el-image style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]" :src="info.prefixUrl + info.transportImg" alt="" /> |
| | | <el-image style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]" |
| | | :src="info.prefixUrl + info.transportImg" alt="" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | } |
| | | }) |
| | | }, |
| | | close(){ |
| | | close() { |
| | | this.isShowModal = false |
| | | this.$emit('close') |
| | | }, |
| | |
| | | border-radius: 8px; |
| | | overflow: hidden; |
| | | height: 100%; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | |
| | | margin: 0 -30px; |
| | | border-radius: 8px 8px 0 0; |
| | | position: relative; |
| | | .head_bg{ |
| | | |
| | | .head_bg { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | top: 0; |
| | | z-index: 9; |
| | | } |
| | | |
| | | .h1 { |
| | | font-weight: 600; |
| | | font-size: 22px; |
| | |
| | | position: relative; |
| | | z-index: 99; |
| | | } |
| | | .scs{ |
| | | |
| | | .scs { |
| | | background-color: #00BA67; |
| | | } |
| | | .msg{ |
| | | |
| | | .msg { |
| | | background-color: #ED4545; |
| | | } |
| | | } |
| | |
| | | display: flex; |
| | | margin-bottom: 24px; |
| | | position: relative; |
| | | |
| | | .separate { |
| | | position: absolute; |
| | | border-left: 2px dashed #cccccc; |
| | |
| | | height: calc(100% - 2px); |
| | | top: 42px; |
| | | } |
| | | .info{ |
| | | |
| | | .info { |
| | | padding-top: 10px; |
| | | margin-left: 20px; |
| | | margin-right: 16px; |
| | | |
| | | .iconnew { |
| | | width: 24px; |
| | | height: 24px; |
| | | } |
| | | } |
| | | |
| | | .avatar_wrap { |
| | | width: 40px; |
| | | height: 40px; |
| | |
| | | color: #777777; |
| | | |
| | | .status { |
| | | color: $primary-color; |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | |
| | |
| | | width: 100%; |
| | | overflow-x: auto; |
| | | margin-top: 12px; |
| | | |
| | | .carbon_item { |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | }, |
| | | pagination: { |
| | | capacity: 10, |
| | | page: 1 |
| | | page: 1, |
| | | total: 0, |
| | | }, |
| | | loading: false, |
| | | dataList: [], |
| | | headData: {}, |
| | | total: 0, |
| | | |
| | | cateList: [ |
| | | { name: '访客ç³è¯·', id: 0 }, |
| | |
| | | }).then(res => { |
| | | console.log('res', res) |
| | | this.dataList = res.records || [] |
| | | this.pagination.total = res.total || 0 |
| | | this.dataList.forEach(i => { |
| | | i.param1 = JSON.parse(i.param1) |
| | | }) |
| | |
| | | <div class="modal_wrap"> |
| | | <div class="modal_content"> |
| | | <div class="header"> |
| | | <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" |
| | | <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt=""> |
| | | <img v-else-if="info.businessStatus == '2'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt=""> |
| | | <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" |
| | | alt=""> |
| | | <img v-else-if="info.businessStatus == '2'" class="head_bg" |
| | | src="@/assets/task/bg_shenhe_pass@2x.png" alt=""> |
| | | <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt=""> |
| | | <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt=""> |
| | | <div class="left"> |
| | | <div class="h1">{{ cateList[type] }}</div> |
| | | <div class="time">æäº¤æ¶é´ï¼{{ info.createDate }}</div> |
| | | </div> |
| | | <div class="right" |
| | | :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{ |
| | | statusMap[info.businessStatus] }}</div> |
| | | <div class="right" :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{ |
| | | statusMap[info.businessStatus] }}</div> |
| | | </div> |
| | | <div class="info"> |
| | | <div class="title">访客æ¥å¤ä¿¡æ¯</div> |
| | |
| | | <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''"> |
| | | ï¼<span :class="{ padding: item.statusInfo == 'å¤çä¸' || item.status == '1' }">{{ |
| | | item.statusInfo || "" |
| | | }}</span>ï¼ |
| | | }}</span>ï¼ |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | " class="remark"> |
| | | {{ item.checkInfo || "" }} |
| | | </div> |
| | | <div v-if="item.approveType == 1" class="childList"> |
| | | <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList"> |
| | | <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id"> |
| | | <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" /> |
| | | <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar" |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | close(){ |
| | | close() { |
| | | this.isShowModal = false |
| | | this.$emit('close') |
| | | }, |
| | |
| | | const { id } = this |
| | | getVisitedReDetail({ id }).then(res => { |
| | | this.info = res |
| | | if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) { |
| | | this.info.approveDateVO.approveList.forEach(item => { |
| | | if (item.approveList && item.approveList.length == 1 && item.type !== 1) { |
| | | item.title = item.approveList[0].title |
| | | item.faceImg = item.approveList[0].faceImg |
| | | item.memberName = item.approveList[0].memberName |
| | | item.statusInfo = item.approveList[0].statusInfo |
| | | item.status = item.approveList[0].status |
| | | item.approveList = [] |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | handleAppr(val) { |
| | |
| | | color: #888888; |
| | | |
| | | .status { |
| | | color: #00ba67; |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | |
| | |
| | | color: #888888; |
| | | |
| | | .status { |
| | | color: #00ba67; |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | |
| | |
| | | max-width: 800rpx; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .empty_wrap{ |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #666666; |
| | | min-height: 600rpx; |
| | | image{ |
| | | width: 300rpx; |
| | | height: 300rpx; |
| | | } |
| | | } |
| | | .doumee-container .ivu-tabs-nav { |
| | | width: 100%; |
| | | } |
| | |
| | | ] |
| | | }, |
| | | /* iosæå
é
ç½® */ |
| | | "ios" : {}, |
| | | "ios" : { |
| | | "dSYMs" : false |
| | | }, |
| | | /* SDKé
ç½® */ |
| | | "sdkConfigs" : {} |
| | | "sdkConfigs" : { |
| | | "ad" : {} |
| | | }, |
| | | "icons" : { |
| | | "android" : { |
| | | "hdpi" : "", |
| | | "xhdpi" : "", |
| | | "xxhdpi" : "", |
| | | "xxxhdpi" : "" |
| | | }, |
| | | "ios" : { |
| | | "appstore" : "", |
| | | "ipad" : { |
| | | "app" : "", |
| | | "app@2x" : "", |
| | | "notification" : "", |
| | | "notification@2x" : "", |
| | | "proapp@2x" : "", |
| | | "settings" : "", |
| | | "settings@2x" : "", |
| | | "spotlight" : "", |
| | | "spotlight@2x" : "" |
| | | }, |
| | | "iphone" : { |
| | | "app@2x" : "", |
| | | "app@3x" : "", |
| | | "notification@2x" : "", |
| | | "notification@3x" : "", |
| | | "settings@2x" : "", |
| | | "settings@3x" : "", |
| | | "spotlight@2x" : "", |
| | | "spotlight@3x" : "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | |
| | | mode="widthFix" |
| | | ></image> |
| | | </view> |
| | | <view class="title_wrap"><view class="name">ä¸å¡åç</view></view> |
| | | <view v-if="list1.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">ä¸å¡åç</view></view> |
| | | <view class="container1"> |
| | | <view class="left"> |
| | | <view class="list"> |
| | | <block v-for="item in list1" :key="item.name"> |
| | | <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)"> |
| | | <image :src="item.img" class="icon" /> |
| | | <view class="name">{{item.name}}</view> |
| | | </view> |
| | | </block> |
| | | </view> |
| | | <!-- <view class="left"> |
| | | <view class="img_wrap img1" @click="jump('/pages/staff/visitorReport')"> |
| | | <image src="@/static/staff/ic_fangkebaobei.png" class="img"></image> |
| | | <view class="h1">访客æ¥å¤</view> |
| | |
| | | <view class="h1">ä¿®æ¹å¯ç </view> |
| | | <view class="h2">CHANGE PASSWORD</view> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | <!-- --> |
| | | <view class="title_wrap"><view class="name">ä¸å¡æ¥è¯¢</view></view> |
| | | <view v-if="list2.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">ä¸å¡æ¥è¯¢</view></view> |
| | | <view class="container2"> |
| | | <view class="img_wrap" @click="jump('/pages/staff/task/index')"> |
| | | <view class="list"> |
| | | <block v-for="item in list2" :key="item.name"> |
| | | <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)"> |
| | | <image :src="item.img" class="icon" /> |
| | | <view class="name">{{item.name}}</view> |
| | | <view v-if="item.name == 'ä»»å¡ä¸å¿' && taskInfo" class="task_num">{{ taskInfo }}</view> |
| | | </view> |
| | | </block> |
| | | </view> |
| | | |
| | | <!-- <view class="img_wrap" @click="jump('/pages/staff/task/index')"> |
| | | <image class="img" src="@/static/staff/ic_renwuzhongxin.png"></image> |
| | | <view class="h1">ä»»å¡ä¸å¿</view> |
| | | <view class="h2">TASK CENTER</view> |
| | |
| | | <image class="img" src="@/static/staff/ic_huiyishiguanli.png"></image> |
| | | <view class="h1">ä¼è®®å®¤ç®¡ç</view> |
| | | <view class="h2">MANAGE MEETING ROOMS</view> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | <view class="copyright"> |
| | | <image src="@/static/logo_s@2x.png" mode="widthFix" /> |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | userInfo: uni.getStorageSync('userInfo'), |
| | | taskInfo: 0 |
| | | userInfo: uni.getStorageSync('userInfo') || {permissions: []}, |
| | | taskInfo: 0, |
| | | list1: [ |
| | | { name: '访客æ¥å¤', url: '/pages/staff/visitorReport', img: require('@/static/home/ic_fangkebaobei@3x.png'),auth: 'weixin:menu:visitcar' }, |
| | | { name: '鿣鿿', url: '/pages/staff/snapshot', img: require('@/static/home/ic_yinhuansuishoupai@3x.png'),auth: 'weixin:menu:hiddendanger' }, |
| | | { name: 'ç¨è½¦ç³è¯·', url: '/pages/staff/vehicle/index', img: require('@/static/home/ic_yongcheshenqing@3x.png'),auth: 'weixin:menu:usecar' }, |
| | | { name: 'é¢çº¦ä¼è®®å®¤', url: '/pages/staff/meetingSub', img: require('@/static/home/ic_yuyuehuiyishi@3x.png'),auth: 'weixin:menu:meeting' }, |
| | | { name: 'ä¿®æ¹å¯ç ', url: '/pages/changePassword/changePassword', img: require('@/static/home/ic_xiugaimima@3x.png'),auth: 'weixin:menu:password' }, |
| | | { name: 'åå·¥èå¤', url: '', img: require('@/static/home/ic_kaoqin@3x.png'),auth: 'weixin:menu:attendance' }, |
| | | ], |
| | | list2: [ |
| | | { name: 'ä»»å¡ä¸å¿', url: '/pages/staff/task/index', img: require('@/static/home/ic_renwuzhongxin@3x.png'),auth: 'weixin:menu:taskcenter' }, |
| | | { name: 'æçä¼è®®æ¥å', url: '/pages/staff/meetingCalendar', img: require('@/static/home/ic_wodehuiyi@3x.png'),auth: 'weixin:menu:meetingcalendar' }, |
| | | { name: '派车记å½', url: '/pages/staff/vehicle/sendACar', img: require('@/static/home/ic_paichejilu@3x.png'),auth: 'weixin:menu:usecarrecord' }, |
| | | { name: 'ä¼è®®å®¤ç®¡ç', url: '/pages/staff/meetingManager', img: require('@/static/home/ic_huiyishiguanli@3x.png'),auth: 'weixin:menu:meetingmanage' } |
| | | ], |
| | | |
| | | } |
| | | }, |
| | | onLoad() { |
| | |
| | | console.log('----'); |
| | | this.getTaskInfo() |
| | | }) |
| | | console.log('aaa', this.userInfo.permissions.indexOf('system:user:create')); |
| | | }, |
| | | methods: { |
| | | jump(path) { |
| | |
| | | url: path |
| | | }) |
| | | }, |
| | | checkAuth(str) { |
| | | const permissions = this.userInfo.permissions |
| | | return permissions.indexOf(str) > -1 |
| | | }, |
| | | loginOut() { |
| | | this.$store.commit('empty') |
| | | logoutPost() |
| | |
| | | isDetail: '1' |
| | | }).then(res => { |
| | | this.taskInfo = res.data.noticeWaitNum + res.data.noticeCopyNum |
| | | if(this.taskInfo && this.taskInfo > 99){ |
| | | this.taskInfo = 99 |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | |
| | | .main_app { |
| | | padding-top: 12rpx; |
| | | } |
| | | .list{ |
| | | display: flex; |
| | | width: 100%; |
| | | flex-wrap: wrap; |
| | | .item{ |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | width: 25%; |
| | | margin-bottom: 40rpx; |
| | | font-size: 26rpx; |
| | | position: relative; |
| | | image{ |
| | | width: 88rpx; |
| | | height: 88rpx; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | .task_num{ |
| | | position: absolute; |
| | | top: -10rpx; |
| | | right: 28rpx; |
| | | font-size: 24rpx; |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | background-color: red; |
| | | color: #fff; |
| | | border-radius: 50%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | } |
| | | } |
| | | .banner_wrap { |
| | | padding: 54rpx 44rpx; |
| | | color: #fff; |
| | |
| | | .container1 { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | view { |
| | | width: 336rpx; |
| | | } |
| | | .left { |
| | | margin-right: 18rpx; |
| | | } |
| | | .img_wrap { |
| | | position: relative; |
| | | padding: 24rpx 0rpx 0 28rpx; |
| | | border-radius: 8rpx; |
| | | overflow: hidden; |
| | | .h1 { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | line-height: 48rpx; |
| | | margin-bottom: 4rpx; |
| | | } |
| | | .h2 { |
| | | font-size: 22rpx; |
| | | color: #7b9da1; |
| | | line-height: 34rpx; |
| | | } |
| | | .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | .img1 { |
| | | width: 336rpx; |
| | | height: 296rpx; |
| | | margin-bottom: 16rpx; |
| | | } |
| | | .img2 { |
| | | width: 336rpx; |
| | | height: 140rpx; |
| | | margin-bottom: 16rpx; |
| | | } |
| | | padding: 10rpx 0 10rpx; |
| | | } |
| | | .container2 { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | .img_wrap { |
| | | width: 336rpx; |
| | | height: 140rpx; |
| | | margin-bottom: 16rpx; |
| | | position: relative; |
| | | border-radius: 8rpx; |
| | | overflow: hidden; |
| | | padding: 24rpx 0rpx 0 28rpx; |
| | | &:nth-of-type(2n) { |
| | | margin-left: 18rpx; |
| | | } |
| | | .task_num { |
| | | position: absolute; |
| | | left: 168rpx; |
| | | top: 26rpx; |
| | | width: 52rpx; |
| | | height: 52rpx; |
| | | border-radius: 50%; |
| | | /* border: 1px solid; */ |
| | | background-color: #fff; |
| | | color: #db534c; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 24rpx; |
| | | } |
| | | .h1 { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | line-height: 48rpx; |
| | | margin-bottom: 4rpx; |
| | | } |
| | | .h2 { |
| | | font-size: 22rpx; |
| | | color: #7b9da1; |
| | | line-height: 34rpx; |
| | | } |
| | | .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | } |
| | | .copyright { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-top: 44rpx; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | position: fixed; |
| | | width: 100%; |
| | | left: 0; |
| | | bottom: 88rpx; |
| | | image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | |
| | | mode="widthFix" class="checked"></image>
|
| | | <text></text>
|
| | | </view>
|
| | | <view class="empty"></view>
|
| | | <view v-if="memberList.length == 0" class="empty"> |
| | | <image src="@/static/empty.png" mode=""></image> |
| | | <text>ææ æ°æ®</text> |
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="sub_wrap">
|
| | |
| | | /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="item" v-if="info.projectList && info.projectList.length > 0"> |
| | | <view class="name">éæ©æå¡é¡¹</view> |
| | | <view class="line"> |
| | | <view class="label"> |
| | |
| | | <text></text> |
| | | </view> |
| | | </checkbox-group> |
| | | <view class="empty"></view> |
| | | <view v-if="memberList.length == 0" class="empty_wrap"> |
| | | <image src="../../static/empty.png"></image> |
| | | <text>ææ æ°æ®</text> |
| | | </view> |
| | | </view> |
| | | <!-- --> |
| | | <!-- <view class="sub_wrap"> |
| | |
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> |
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" |
| | | src="@/static/staff/ic_shenpiren@2x.png" /> |
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> |
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> |
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" /> |
| | |
| | | }, |
| | | headData: {}, |
| | | dataList: [], |
| | | total: 0, |
| | | cateList: [ |
| | | { name: '访客ç³è¯·', id: 0 }, |
| | | { name: '访客æ¥å¤', id: 1 }, |
| | |
| | | // this.getList() |
| | | // }, |
| | | onReachBottom() { |
| | | // this.pagination.page = 0 |
| | | // this.dataList = [] |
| | | this.getList() |
| | | const { total, dataList} = this |
| | | if(dataList.length < total){ |
| | | this.getList() |
| | | } else { |
| | | this.showToast('ææ æ´å¤æ°æ®') |
| | | } |
| | | }, |
| | | onBackPress(options) { |
| | | setTimeout(()=>{ |
| | |
| | | } |
| | | }).then(res => { |
| | | this.dataList = [...this.dataList, ...res.data.records] |
| | | this.total = res.data.total |
| | | this.dataList.forEach(i => { |
| | | if (i.param1) { |
| | | i.param1 = JSON.parse(i.param1) |
| | |
| | | <view class="avatar">
|
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
|
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
|
| | | src="@/static/staff/ic_shenpiren@2x.png" />
|
| | | src="@/static/staff/ic_shenpiren@2x.png" /> |
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
|
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
|
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
|
| | | mode="widthFix" />
|
| | |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">访客åä½</view> |
| | | <view class="value">{{ info.companyName }}人</view> |
| | | <view class="value">{{ info.companyName }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">æ¥è®¿äºç±</view> |
| | |
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> |
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" |
| | | src="@/static/staff/ic_shenpiren@2x.png" /> |
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> |
| | | <span v-else class="img_name">{{ item.memberName && item.memberName.slice(0, 1) }}</span> |
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" /> |
| | |
| | | /> |
| | | </view> |
| | | <view class="member_list"> |
| | | <view v-for="(item, index) in memberList" :key="item.id" class="line"> |
| | | <view @click="changeMem(item, index)" v-for="(item, index) in memberList" :key="item.id" class="line"> |
| | | <image |
| | | v-if="item.faceImgFull" |
| | | :src="item.faceImgFull" |
| | |
| | | <view class="depart">{{ item.companyName }}</view> |
| | | </view> |
| | | <image |
| | | @click="changeMem(item, index)" |
| | | v-if="item.checked" |
| | | src="@/static/checkbox_sel@2x.png" |
| | | mode="widthFix" |
| | | class="checked" |
| | | ></image> |
| | | <image |
| | | @click="changeMem(item, index)" |
| | | v-if="!item.checked" |
| | | src="@/static/meeting/icon/ic_choose@2x.png" |
| | | mode="widthFix" |
| | |
| | | minDate: '', |
| | | pagination: { |
| | | page: 0, |
| | | capacity: 10 |
| | | capacity: 6 |
| | | }, |
| | | total: 0, |
| | | dataList: [], |
| | |
| | | this.initData() |
| | | }, |
| | | onReachBottom() { |
| | | if (this.total > 10) { |
| | | console.log('onReachBottom'); |
| | | if (this.total > this.dataList.length) { |
| | | this.getList() |
| | | } |
| | | }else { |
| | | this.showToast('ææ æ´å¤æ°æ®') |
| | | } |
| | | }, |
| | | methods: { |
| | | getList() { |
| | |
| | | ...pagination, |
| | | model: { ...param } |
| | | }).then(res => { |
| | | if (pagination.page === 1) { |
| | | this.dataList = res.data.records |
| | | } else { |
| | | this.dataList = [...list, ...res.data.records] |
| | | } |
| | | this.dataList = [...this.dataList, ...res.data.records] |
| | | this.total = res.data.total |
| | | }) |
| | | }, |
| | |
| | | }, |
| | | initData() { |
| | | getCarsList({ |
| | | type: 1 |
| | | type: 0 |
| | | }).then(res => { |
| | | this.carsList = [res.data] |
| | | }) |
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">{{ info.memberName }}çç¨è½¦ç³è¯·</view> |
| | | <view class="placeholder9">{{ info.companyName }}</view> |
| | | <view |
| | | class="desc" |
| | | :class="{ |
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', |
| | | }" |
| | | >{{ infoStatus }}</view |
| | | > |
| | | <view class="status"> |
| | | <text class="loading" :class="{ |
| | | grr: info.status == 1 || info.status == 2 || info.status == 4, |
| | | error: info.status == 3 |
| | | }" v-if="info.status == '0'">{{statusMap[info.status]}}</text> |
| | | </view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="emyty"></view> |
| | | <view class="module_list"> |
| | | <view class="item"> |
| | | <view class="label">é¢è®¡ç¨è½¦æ¶æ®µ</view> |
| | | <view class="value" v-if="info.startTime" |
| | | >{{ info.startTime.slice(0, 16) }}è³{{ |
| | | info.endTime.slice(0, 16) |
| | | }}</view |
| | | > |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">é¢è®¡åºåæ¶é´</view> |
| | | <view class="value">{{ info.planUseDate }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ä¹è½¦äººå</view> |
| | | <view class="value">{{ info.memberNames }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ç®çå°</view> |
| | | <view class="value" |
| | | >{{ info.type == "1" ? "å¸å¤" : "室å
" }}ï¼{{ info.addr }}</view |
| | | > |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ç¨è½¦äºç±</view> |
| | | <view class="value">{{ info.content }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">车è¾ä¿¡æ¯</view> |
| | | <view class="value">{{ info.carCode }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">叿ºä¿¡æ¯</view> |
| | | <view class="value">{{ info.driverName }} {{ info.driverPhone }}</view> |
| | | </view> |
| | | </view> |
| | | <!-- æµç¨ --> |
| | | <view class="flow_wrap"> |
| | | <view class="flow_title">æµç¨</view> |
| | | <view |
| | | class="list" |
| | | v-if=" |
| | | info.approveDateVO != null && info.approveDateVO.approveList != null |
| | | " |
| | | > |
| | | <view |
| | | class="item" |
| | | v-for="(item, index) in info.approveDateVO.approveList" |
| | | :key="item.id" |
| | | > |
| | | <view class="separate"></view> |
| | | <view class="avatar"> |
| | | <image |
| | | v-if="item.type == 1" |
| | | class="img" |
| | | src="@/static/staff/ic_chaosong@2x.png" |
| | | /> |
| | | <image |
| | | v-else-if="item.approveType == 1 || item.approveType == 0" |
| | | class="img" |
| | | src="@/static/staff/ic_shenpiren@2x.png" |
| | | /> |
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> |
| | | <image |
| | | v-if="item.status == 2" |
| | | class="status" |
| | | src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" |
| | | /> |
| | | <image |
| | | v-if="item.status == 3" |
| | | class="status" |
| | | src="@/static/staff/liucheng_fail@2x.png" |
| | | mode="widthFix" |
| | | /> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">{{ item.title }}</view> |
| | | <view class="time">{{ item.checkDate }}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text |
| | | >{{ item.memberName |
| | | }}<text class="status" v-if="item.statusInfo" |
| | | >({{ item.statusInfo }})</text |
| | | ></text |
| | | > |
| | | </view> |
| | | <view v-if="item.checkInfo" class="remark">{{ |
| | | item.checkInfo |
| | | }}</view> |
| | | <!-- æé人 --> |
| | | <view v-if="item.approveType == 1" class="children"> |
| | | <view |
| | | class="child" |
| | | v-for="child in item.approveList" |
| | | :key="child.id" |
| | | > |
| | | <image |
| | | class="child_img" |
| | | :src=" |
| | | child.faceImg |
| | | ? child.faceImg |
| | | : require('@/static/meeting/common/default_user@2x.png') |
| | | " |
| | | /> |
| | | <view>{{ child.memberName }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view |
| | | class="main_footer" |
| | | v-if=" |
| | | info.approveDateVO != null && |
| | | info.approveDateVO.canBeApproved != null && |
| | | info.approveDateVO.canBeApproved == 1 |
| | | " |
| | | > |
| | | <template v-if="appr == '1'"> |
| | | <view class="btn" @click="handleSub(3)">æç»</view> |
| | | <view class="btn agree" @click="handleSub(2)">åæ</view> |
| | | </template> |
| | | <view v-else class="btn agree" @click="isShowBack = true">æ¤éç¨è½¦</view> |
| | | </view> |
| | | |
| | | <!-- æ¤é --> |
| | | <u-popup |
| | | :show="isShowBack" |
| | | :round="10" |
| | | :safeAreaInsetBottom="true" |
| | | mode="bottom" |
| | | @close="isShowBack = false" |
| | | > |
| | | <view class="appr_modal"> |
| | | <view class="title">æ¤éç¨è½¦</view> |
| | | <view class="line"> æ¤é说æ </view> |
| | | <textarea |
| | | v-model="backParam.info" |
| | | placeholder="éå¿
å¡«" |
| | | placeholder-class="placeholder9" |
| | | /> |
| | | <view class="main_footer"> |
| | | <view class="btn agree" @click="onSubBack">æäº¤</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- --> |
| | | <u-popup |
| | | :show="showApprModal" |
| | | :round="10" |
| | | :safeAreaInsetBottom="true" |
| | | mode="bottom" |
| | | @close="showApprModal = false" |
| | | > |
| | | <view class="appr_modal"> |
| | | <view class="title">{{ param.status == 2 ? "åæ" : "æç»" }}</view> |
| | | <view v-if="param.status == 2" class="line" @click="isShowDrive = true"> |
| | | <text v-if="param.driverName">{{ param.driverName }}</text> |
| | | <text v-else class="placeholder9">æ´¾è½¦å¸æº</text> |
| | | <u-icon class="ml12" name="arrow-right" color="#999999" /> |
| | | </view> |
| | | <textarea |
| | | v-model="param.checkInfo" |
| | | :placeholder=" |
| | | param.status == 2 ? 'åæè¯´æï¼éå¿
å¡«' : 'æç»è¯´æï¼å¿
å¡«' |
| | | " |
| | | placeholder-class="placeholder9" |
| | | /> |
| | | <view class="main_footer"> |
| | | <view class="btn" @click="showApprModal = false">åæ¶</view> |
| | | <view class="btn agree" @click="onSubmit">æäº¤</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- 叿º --> |
| | | <u-picker |
| | | keyName="name" |
| | | :show="isShowDrive" |
| | | @close="isShowDrive = false" |
| | | :closeOnClickOverlay="true" |
| | | :columns="driveList" |
| | | @confirm="seletedDrive" |
| | | @cancel="isShowDrive = false" |
| | | ></u-picker> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { carUseBookDetail, carUseBookAppr, driveListPost, carUseBookBack } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | | showApprModal: false, |
| | | isShowBack: false, |
| | | backParam: {}, |
| | | isShowDrive: false, |
| | | id: '', |
| | | appr: '', |
| | | infoStatus: '', |
| | | info: {}, |
| | | param: { |
| | | status: '' |
| | | }, |
| | | statusMap: { |
| | | 0: 'å¾
审æ¹', |
| | | 1: '审æ¹ä¸', |
| | | 2: 'å·²éè¿', |
| | | 3: 'æ¤åç³è¯·', |
| | | 4: '已忶', |
| | | }, |
| | | driveList: [] |
| | | |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | this.id = option.id |
| | | this.appr = option.appr || '' |
| | | this.infoStatus = option.info |
| | | this.getDetail() |
| | | }, |
| | | methods: { |
| | | getDetail() { |
| | | const { id } = this |
| | | carUseBookDetail(id).then(res => { |
| | | this.info = { ...res.data } |
| | | }) |
| | | }, |
| | | onSubBack() { |
| | | carUseBookBack({ |
| | | id: this.id, |
| | | info: this.backParam.info |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | uni.showToast({ |
| | | title: 'æ¤éæå', |
| | | icon: 'success', |
| | | duration: 2000 |
| | | }) |
| | | this.isShowBack = false |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1000) |
| | | } |
| | | }) |
| | | }, |
| | | onSubmit() { |
| | | const { param, info } = this |
| | | carUseBookAppr({ |
| | | status: param.status, |
| | | objType: info.type == 1 ? 4 : 3, |
| | | objId: this.id, |
| | | driverId: param.driverId, |
| | | checkInfo: param.checkInfo |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.showApprModal = false |
| | | setTimeout(() => { |
| | | uni.showToast({ |
| | | title: 'æä½æå', |
| | | icon: 'success' |
| | | }) |
| | | }) |
| | | uni.navigateBack() |
| | | } |
| | | }) |
| | | }, |
| | | handleSub(status) { |
| | | // this.param.flag = |
| | | this.param = { |
| | | status |
| | | } |
| | | this.showApprModal = true |
| | | if (status === 2) { // åæ |
| | | this.getDriveList() |
| | | } else { |
| | | |
| | | } |
| | | this.showApprModal = true |
| | | }, |
| | | getDriveList() { |
| | | driveListPost({}).then(res => { |
| | | this.driveList = [res.data] |
| | | }) |
| | | }, |
| | | seletedDrive(e) { |
| | | console.log(e.value[0]) |
| | | this.$set(this.param, 'driverId', e.value[0].id) |
| | | this.$set(this.param, 'driverName', e.value[0].name) |
| | | this.isShowDrive = false |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | <style> |
| | | page { |
| | | background-color: #f7f7f7; |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | | .main_app { |
| | | background-color: #fff; |
| | | padding-bottom: 0; |
| | | |
| | | .flow_wrap { |
| | | padding: 30rpx 0; |
| | | |
| | | .flow_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 24rpx; |
| | | } |
| | | |
| | | .list { |
| | | .item { |
| | | display: flex; |
| | | margin-bottom: 48rpx; |
| | | position: relative; |
| | | .separate { |
| | | position: absolute; |
| | | width: 4rpx; |
| | | height: 100%; |
| | | background-color: #eeeeee; |
| | | left: 40rpx; |
| | | transform: translate(-50%, 0); |
| | | top: 80rpx; |
| | | } |
| | | .avatar { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | position: relative; |
| | | margin-right: 20rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | .img { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | border-radius: 50%; |
| | | } |
| | | .img_name{ |
| | | font-size: 32rpx; |
| | | color: #FFFFFF; |
| | | } |
| | | .status { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: 0; |
| | | bottom: 0; |
| | | } |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 4rpx; |
| | | |
| | | .event { |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | } |
| | | |
| | | .name_wrap { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | |
| | | .status { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | .children { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 12rpx; |
| | | .child { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-right: 12rpx; |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | .child_img { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | border-radius: 50%; |
| | | margin-bottom: 2rpx; |
| | | } |
| | | .child_name{ |
| | | margin-bottom: 2rpx; |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | text-align: center; |
| | | justify-content: center; |
| | | padding-top: 4rpx; |
| | | font-size: 28rpx; |
| | | border-radius: 50%; |
| | | color: #FFFFFF; |
| | | background-color: $uni-color-primary; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .remark { |
| | | margin-top: 12rpx; |
| | | background-color: #f7f7f7; |
| | | padding: 14rpx 20rpx; |
| | | border-radius: 8rpx; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | .carbon { |
| | | display: flex; |
| | | width: 590rpx; |
| | | overflow-x: auto; |
| | | margin-top: 12rpx; |
| | | .carbon_item { |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | | width: 100rpx; |
| | | image { |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | margin: 0 auto; |
| | | } |
| | | view { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | } |
| | | } |
| | | } |
| | | &:nth-last-child(1) { |
| | | .separate { |
| | | height: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .module_list { |
| | | .item { |
| | | padding: 30rpx 0; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | |
| | | .label { |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .value { |
| | | font-size: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .avatar { |
| | | margin-right: 20rpx; |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 8rpx; |
| | | border: 2rpx solid #e5e5e5; |
| | | } |
| | | |
| | | .info { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | |
| | | .name { |
| | | font-size: 30rpx; |
| | | color: #333333; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .status_wrap { |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="status_wrap"> |
| | | <view class="name">{{ info.createMemberName }}æäº¤çç¨è½¦ç³è¯·</view> |
| | | <view |
| | | class="desc" |
| | | :class="{ |
| | | gray: info.status == '2' || info.status == '3' || info.status == '4', |
| | | }" |
| | | >{{ infoStatus }}</view |
| | | > |
| | | <view v-if="info.status == '0' || info.status == '1'" class="status">{{ |
| | | statusMap[info.status] |
| | | }}</view> |
| | | <image v-if="info.status == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img"></image> |
| | | <image v-if="info.status == '3' || info.status == '6'" src="@/static/ic_refused@2x.png" mode="widthFix" |
| | | class="status_img"></image> |
| | | </view>
|
| | | <!-- -->
|
| | | <view class="emyty"></view>
|
| | | <view class="module_list">
|
| | | <view class="item">
|
| | | <view class="label">é¢è®¡ç¨è½¦æ¶æ®µ</view>
|
| | | <view class="value" v-if="info.startTime">{{ info.startTime.slice(0, 16) }}è³{{
|
| | | info.endTime.slice(0, 16)
|
| | | }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">é¢è®¡åºåæ¶é´</view>
|
| | | <view class="value">{{ info.planUseDate }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">ä¹è½¦äººå</view>
|
| | | <view class="value">{{ info.memberNames }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">ç®çå°</view>
|
| | | <view class="value">{{ info.type == "1" ? "å¸å¤" : "å¸å
" }}ï¼{{ info.addr }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">ç¨è½¦äºç±</view>
|
| | | <view class="value">{{ info.content }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">车è¾ä¿¡æ¯</view>
|
| | | <view class="value">{{ info.carCode }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">叿ºä¿¡æ¯</view>
|
| | | <view class="value">{{ info.driverName }} {{ info.driverPhone }}</view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- æµç¨ -->
|
| | | <view class="flow_wrap">
|
| | | <view class="flow_title">æµç¨</view>
|
| | | <view class="list" v-if=" |
| | | info.approveDateVO != null && info.approveDateVO.approveList != null |
| | | "> |
| | | <view class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id"> |
| | | <view class="separate"></view> |
| | | <view class="avatar"> |
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> |
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" |
| | | src="@/static/staff/ic_shenpiren@2x.png" /> |
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> |
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> |
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" /> |
| | | <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@2x.png" mode="widthFix" /> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">{{ item.title }}</view> |
| | | <view class="time">{{ item.checkDate }}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>{{ item.memberName |
| | | }}<text :class="{ status: item.statusInfo == 'å¤çä¸' || item.status == '1' }" |
| | | v-if="item.statusInfo">({{ item.statusInfo }})</text></text> |
| | | </view> |
| | | <view v-if="item.checkInfo" class="remark">{{ |
| | | item.checkInfo |
| | | }}</view> |
| | | <!-- æé人 --> |
| | | <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children"> |
| | | <view class="child" v-for="child in item.approveList" :key="child.id"> |
| | | <image v-if="child.faceImg" class="child_img" :src="child.faceImg" /> |
| | | <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view> |
| | | <view>{{ child.memberName }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view>
|
| | | </view>
|
| | | <view class="emyty"></view>
|
| | | <view class="main_footer" v-if="
|
| | | info.approveDateVO != null &&
|
| | | info.approveDateVO.canBeApproved != null &&
|
| | | info.approveDateVO.canBeApproved == 1
|
| | | ">
|
| | | <template v-if="appr == '1'">
|
| | | <view class="btn" @click="handleSub(3)">æç»</view>
|
| | | <view class="btn agree" @click="handleSub(2)">åæ</view>
|
| | | </template>
|
| | | <view v-else class="btn agree" @click="isShowBack = true">æ¤éç¨è½¦</view>
|
| | | </view>
|
| | |
|
| | | <!-- æ¤é -->
|
| | | <u-popup :show="isShowBack" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="isShowBack = false">
|
| | | <view class="appr_modal">
|
| | | <view class="title">æ¤éç¨è½¦</view>
|
| | | <view class="line"> æ¤é说æ </view>
|
| | | <textarea v-model="backParam.info" placeholder="éå¿
å¡«" placeholder-class="placeholder9" />
|
| | | <view class="main_footer">
|
| | | <view class="btn agree" @click="onSubBack">æäº¤</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- -->
|
| | | <u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
|
| | | <view class="appr_modal">
|
| | | <view class="title">{{ param.status == 2 ? "åæ" : "æç»" }}</view>
|
| | | <view v-if="param.status == 2" class="line" @click="isShowDrive = true">
|
| | | <text v-if="param.driverName">{{ param.driverName }}</text>
|
| | | <text v-else class="placeholder9">æ´¾è½¦å¸æº</text>
|
| | | <u-icon class="ml12" name="arrow-right" color="#999999" />
|
| | | </view>
|
| | | <textarea v-model="param.checkInfo" :placeholder="
|
| | | param.status == 2 ? 'åæè¯´æï¼éå¿
å¡«' : 'æç»è¯´æï¼å¿
å¡«'
|
| | | " placeholder-class="placeholder9" />
|
| | | <view class="main_footer">
|
| | | <view class="btn" @click="showApprModal = false">åæ¶</view>
|
| | | <view class="btn agree" @click="onSubmit">æäº¤</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- 叿º -->
|
| | | <u-picker keyName="name" :show="isShowDrive" @close="isShowDrive = false" :closeOnClickOverlay="true"
|
| | | :columns="driveList" @confirm="seletedDrive" @cancel="isShowDrive = false"></u-picker>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | carUseBookDetail,
|
| | | carUseBookAppr,
|
| | | driveListPost,
|
| | | carUseBookBack
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | showApprModal: false,
|
| | | isShowBack: false,
|
| | | backParam: {},
|
| | | isShowDrive: false,
|
| | | id: '',
|
| | | appr: '',
|
| | | infoStatus: '',
|
| | | info: {},
|
| | | param: {
|
| | | status: ''
|
| | | },
|
| | | statusMap: {
|
| | | 0: 'å¾
审æ¹',
|
| | | 1: '审æ¹ä¸',
|
| | | 2: 'å·²éè¿',
|
| | | 3: 'æ¤åç³è¯·',
|
| | | 4: '已忶',
|
| | | },
|
| | | driveList: []
|
| | |
|
| | | }
|
| | | },
|
| | | onLoad(option) {
|
| | | this.id = option.id
|
| | | this.appr = option.appr || ''
|
| | | this.infoStatus = option.info
|
| | | this.getDetail()
|
| | | },
|
| | | methods: {
|
| | | getDetail() {
|
| | | const {
|
| | | id
|
| | | } = this
|
| | | carUseBookDetail(id).then(res => {
|
| | | this.info = {
|
| | | ...res.data
|
| | | }
|
| | | if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
|
| | | this.info.approveDateVO.approveList.forEach(item => {
|
| | | if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
|
| | | item.title = item.approveList[0].title
|
| | | item.faceImg = item.approveList[0].faceImg
|
| | | item.memberName = item.approveList[0].memberName
|
| | | item.statusInfo = item.approveList[0].statusInfo
|
| | | item.status = item.approveList[0].status
|
| | | item.approveList = []
|
| | | }
|
| | | })
|
| | | }
|
| | | })
|
| | | },
|
| | | onSubBack() {
|
| | | carUseBookBack({
|
| | | id: this.id,
|
| | | info: this.backParam.info
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | uni.showToast({
|
| | | title: 'æ¤éæå',
|
| | | icon: 'success',
|
| | | duration: 2000
|
| | | })
|
| | | this.isShowBack = false
|
| | | setTimeout(() => {
|
| | | uni.navigateBack()
|
| | | }, 1000)
|
| | | }
|
| | | })
|
| | | },
|
| | | onSubmit() {
|
| | | const {
|
| | | param,
|
| | | info
|
| | | } = this
|
| | | carUseBookAppr({
|
| | | status: param.status,
|
| | | objType: info.type == 1 ? 4 : 3,
|
| | | objId: this.id,
|
| | | driverId: param.driverId,
|
| | | checkInfo: param.checkInfo
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.showApprModal = false
|
| | | setTimeout(() => {
|
| | | uni.showToast({
|
| | | title: 'æä½æå',
|
| | | icon: 'success'
|
| | | })
|
| | | })
|
| | | uni.navigateBack()
|
| | | }
|
| | | })
|
| | | },
|
| | | handleSub(status) {
|
| | | // this.param.flag = |
| | | this.param = {
|
| | | status
|
| | | }
|
| | | this.showApprModal = true
|
| | | if (status === 2) { // åæ
|
| | | this.getDriveList()
|
| | | } else {
|
| | |
|
| | | }
|
| | | this.showApprModal = true
|
| | | },
|
| | | getDriveList() {
|
| | | driveListPost({}).then(res => {
|
| | | this.driveList = [res.data]
|
| | | })
|
| | | },
|
| | | seletedDrive(e) {
|
| | | console.log(e.value[0])
|
| | | this.$set(this.param, 'driverId', e.value[0].id)
|
| | | this.$set(this.param, 'driverName', e.value[0].name)
|
| | | this.isShowDrive = false
|
| | | },
|
| | | },
|
| | | }
|
| | | </script>
|
| | | <style>
|
| | | page {
|
| | | background-color: #f7f7f7;
|
| | | }
|
| | | </style>
|
| | | <style lang="scss">
|
| | | .main_app {
|
| | | background-color: #fff;
|
| | | padding-bottom: 0;
|
| | |
|
| | | .flow_wrap {
|
| | | padding: 30rpx 0;
|
| | |
|
| | | .flow_title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 24rpx;
|
| | | }
|
| | |
|
| | | .list {
|
| | | .item {
|
| | | display: flex;
|
| | | margin-bottom: 48rpx;
|
| | | position: relative;
|
| | |
|
| | | .separate {
|
| | | position: absolute;
|
| | | width: 4rpx;
|
| | | height: 100%;
|
| | | background-color: #eeeeee;
|
| | | left: 40rpx;
|
| | | transform: translate(-50%, 0);
|
| | | top: 80rpx;
|
| | | }
|
| | |
|
| | | .avatar {
|
| | | width: 80rpx;
|
| | | height: 80rpx;
|
| | | position: relative;
|
| | | margin-right: 20rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | |
|
| | | .img {
|
| | | width: 80rpx;
|
| | | height: 80rpx;
|
| | | border-radius: 50%;
|
| | | }
|
| | |
|
| | | .img_name {
|
| | | font-size: 32rpx;
|
| | | color: #FFFFFF;
|
| | | }
|
| | |
|
| | | .status {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | border-radius: 50%;
|
| | | position: absolute;
|
| | | right: 0;
|
| | | bottom: 0;
|
| | | }
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1;
|
| | |
|
| | | .head {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | margin-bottom: 4rpx;
|
| | |
|
| | | .event {
|
| | | font-size: 30rpx;
|
| | | }
|
| | |
|
| | | .time {
|
| | | font-size: 26rpx;
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | |
|
| | | .name_wrap {
|
| | | font-size: 26rpx;
|
| | | color: #777777;
|
| | |
|
| | | .status {
|
| | | color: $uni-color-primary;
|
| | | }
|
| | | }
|
| | |
|
| | | .children {
|
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | | margin-top: 12rpx;
|
| | |
|
| | | .child {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | margin-right: 12rpx;
|
| | | font-size: 26rpx;
|
| | | color: #777777;
|
| | |
|
| | | .child_img {
|
| | | width: 48rpx;
|
| | | height: 48rpx;
|
| | | border-radius: 50%;
|
| | | margin-bottom: 2rpx;
|
| | | }
|
| | |
|
| | | .child_name {
|
| | | margin-bottom: 2rpx;
|
| | | width: 48rpx;
|
| | | height: 48rpx;
|
| | | text-align: center;
|
| | | justify-content: center;
|
| | | padding-top: 4rpx;
|
| | | font-size: 28rpx;
|
| | | border-radius: 50%;
|
| | | color: #FFFFFF;
|
| | | background-color: $uni-color-primary;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .remark {
|
| | | margin-top: 12rpx;
|
| | | background-color: #f7f7f7;
|
| | | padding: 14rpx 20rpx;
|
| | | border-radius: 8rpx;
|
| | | font-size: 26rpx;
|
| | | color: #666666;
|
| | | line-height: 36rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .carbon {
|
| | | display: flex;
|
| | | width: 590rpx;
|
| | | overflow-x: auto;
|
| | | margin-top: 12rpx;
|
| | |
|
| | | .carbon_item {
|
| | | text-align: center;
|
| | | flex-shrink: 0;
|
| | | width: 100rpx;
|
| | |
|
| | | image {
|
| | | width: 60rpx;
|
| | | height: 60rpx;
|
| | | margin: 0 auto;
|
| | | }
|
| | |
|
| | | view {
|
| | | font-size: 26rpx;
|
| | | color: #777777;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | &:nth-last-child(1) {
|
| | | .separate {
|
| | | height: 0;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .module_list {
|
| | | .item {
|
| | | padding: 30rpx 0;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | |
|
| | | .label {
|
| | | font-size: 26rpx;
|
| | | color: #666666;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | |
|
| | | .value {
|
| | | font-size: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | .avatar {
|
| | | margin-right: 20rpx;
|
| | | width: 120rpx;
|
| | | height: 120rpx;
|
| | | border-radius: 8rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | }
|
| | |
|
| | | .info {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: space-between;
|
| | | font-size: 26rpx;
|
| | | color: #666666;
|
| | |
|
| | | .name {
|
| | | font-size: 30rpx;
|
| | | color: #333333;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .status_wrap { |
| | | position: relative; |
| | | padding: 30rpx 0; |
| | | |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | margin-bottom: 16rpx; |
| | | margin-bottom: 20rpx; |
| | | color: #222222; |
| | | } |
| | | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #ed4545; |
| | | margin-top: 16rpx; |
| | | } |
| | | |
| | | .gray { |
| | | color: #999999; |
| | | } |
| | |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .main_footer { |
| | | padding-bottom: 64rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .btn { |
| | | flex: 1; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: #ffffff; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #999999; |
| | | font-size: 32rpx; |
| | | text-align: center; |
| | | margin: 16rpx; |
| | | .status_img { |
| | | position: absolute; |
| | | right: 0rpx; |
| | | top: 20rpx; |
| | | width: 120rpx; |
| | | } |
| | | |
| | | .agree { |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | .line { |
| | | height: 90rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1rpx solid #e4e4e4; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 40rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | textarea { |
| | | box-sizing: border-box; |
| | | width: 690rpx; |
| | | background-color: #f7f7f7; |
| | | font-size: 28rpx; |
| | | color: #333333; |
| | | padding: 24rpx; |
| | | border-radius: 8rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | } |
| | | |
| | | .emyty { |
| | | width: 750rpx; |
| | | height: 20rpx; |
| | | background-color: #f7f7f7; |
| | | margin: 0 -30rpx; |
| | | } |
| | | } |
| | | </style> |
| | | }
|
| | | .main_footer {
|
| | | padding-bottom: 64rpx;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | |
|
| | | .btn {
|
| | | flex: 1;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | background: #ffffff;
|
| | | border-radius: 44rpx;
|
| | | border: 1rpx solid #999999;
|
| | | font-size: 32rpx;
|
| | | text-align: center;
|
| | | margin: 16rpx;
|
| | | }
|
| | |
|
| | | .agree {
|
| | | background: $uni-color-primary;
|
| | | color: #fff;
|
| | | border: 1rpx solid $uni-color-primary;
|
| | | }
|
| | | }
|
| | |
|
| | | .appr_modal {
|
| | | padding: 36rpx 30rpx 0;
|
| | |
|
| | | .line {
|
| | | height: 90rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | border-bottom: 1rpx solid #e4e4e4;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | |
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 40rpx;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | textarea {
|
| | | box-sizing: border-box;
|
| | | width: 690rpx;
|
| | | background-color: #f7f7f7;
|
| | | font-size: 28rpx;
|
| | | color: #333333;
|
| | | padding: 24rpx;
|
| | | border-radius: 8rpx;
|
| | | margin-bottom: 30rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .emyty {
|
| | | width: 750rpx;
|
| | | height: 20rpx;
|
| | | background-color: #f7f7f7;
|
| | | margin: 0 -30rpx;
|
| | | }
|
| | | }
|
| | | </style> |
| | |
| | | }, |
| | | initData() { |
| | | getCarsList({ |
| | | type: 1 |
| | | type: 0 |
| | | }).then(res => { |
| | | this.carsList = [res.data] |
| | | }) |
| | |
| | | @confirm="seletedCar" |
| | | @cancel="isShowCar = false" |
| | | ></u-picker> |
| | | <u-datetime-picker |
| | | <!-- <u-datetime-picker |
| | | mode="datetime" |
| | | :show="isShowDate" |
| | | :filter="timeFilter" |
| | |
| | | :closeOnClickOverlay="true" |
| | | @confirm="seletedDate" |
| | | @cancel="isShowDate = false" |
| | | /> |
| | | /> --> |
| | | <u-datetime-picker |
| | | mode="datetime" |
| | | :show="isShowDate" |
| | | title="å¼å§æ¶é´" |
| | | :minDate="minDate" |
| | | @close="isShowDate = false" |
| | | :closeOnClickOverlay="true" |
| | | @confirm="seletedDate" |
| | | @cancel="isShowDate = false" |
| | | /> |
| | | <u-datetime-picker |
| | | mode="datetime" |
| | | :show="isShowEndDate" |
| | | :filter="timeFilter" |
| | | title="ç»ææ¶é´" |
| | | :minDate="new Date(param.startTime || null).getTime()" |
| | | @close="endtimeClose" |
| | |
| | | }, |
| | | initData() { |
| | | getCarsList({ |
| | | type: 1 |
| | | type: 0 |
| | | }).then(res => { |
| | | this.carsList = [res.data] |
| | | }) |
| | |
| | | method: 'get', |
| | | data |
| | | }) |
| | | } |
| | | // é¢çº¦ 详æ
|
| | | export const driverApplyDetail = (data) => { |
| | | return http({ |
| | | url: 'visitsAdmin/cloudService/web/driverPlatform/getDetail', |
| | | method: 'get', |
| | | data |
| | | }) |
| | | } |
| | |
| | | {
|
| | | "name": "pda",
|
| | | "appid": "__UNI__8789FB4",
|
| | | "description": "",
|
| | | "versionName": "1.0.0",
|
| | | "versionCode": "100",
|
| | | "transformPx": false,
|
| | | "h5": {
|
| | | "router": {
|
| | | "mode": "hash",
|
| | | "base": "./"
|
| | | },
|
| | | // "base" : "/h5/"
|
| | | "devServer": {
|
| | | "port": 8090,
|
| | | "historyApiFallback": true,
|
| | | "disableHostCheck": true,
|
| | | "proxy": {
|
| | | "/gateway_interface": {
|
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å
|
| | | "target" : "http://10.50.250.253:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å
|
| | | // "target": "http://192.168.0.100:10010", // 代çæå¡å¨ååæIPå°å
|
| | | "changeOrigin": true, // å
许跨å |
| | | "pathRewrite": {
|
| | | "^/gateway_interface": "" // éåå°åï¼å¦æå®é
æ¥å£ä¸æ¯ä¸å¸¦/dev-apiï¼éè¦å°è¿ä¸ªåç¼ç½®ç©ºï¼å 为è¿ä¸ªåç¼åªæ¯ä¸ºäºè¯å«ç¨ï¼è¯å«å®ä¹å就没ç¨äº
|
| | | }
|
| | | }
|
| | | },
|
| | | "https": false
|
| | | }
|
| | | },
|
| | | /* 5+Appç¹æç¸å
³ */
|
| | | "app-plus": {
|
| | | "usingComponents": true,
|
| | | "nvueStyleCompiler": "uni-app",
|
| | | "compilerVersion": 3,
|
| | | "splashscreen": {
|
| | | "alwaysShowBeforeRender": true,
|
| | | "waiting": true,
|
| | | "autoclose": true,
|
| | | "delay": 0
|
| | | },
|
| | | /* 模åé
ç½® */
|
| | | "modules": {},
|
| | | /* åºç¨åå¸ä¿¡æ¯ */
|
| | | "distribute": {
|
| | | /* androidæå
é
ç½® */
|
| | | "android": {
|
| | | "permissions": [
|
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
| | | "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
| | | "<uses-feature android:name=\"android.hardware.camera\"/>",
|
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
| | | ]
|
| | | },
|
| | | /* iosæå
é
ç½® */
|
| | | "ios": {},
|
| | | /* SDKé
ç½® */
|
| | | "sdkConfigs": {}
|
| | | }
|
| | | },
|
| | | /* å¿«åºç¨ç¹æç¸å
³ */
|
| | | "quickapp": {},
|
| | | /* å°ç¨åºç¹æç¸å
³ */
|
| | | "mp-weixin": {
|
| | | "appid": "",
|
| | | "setting": {
|
| | | "urlCheck": false
|
| | | },
|
| | | "usingComponents": true
|
| | | },
|
| | | "mp-alipay": {
|
| | | "usingComponents": true
|
| | | },
|
| | | "mp-baidu": {
|
| | | "usingComponents": true
|
| | | },
|
| | | "mp-toutiao": {
|
| | | "usingComponents": true
|
| | | },
|
| | | "uniStatistics": {
|
| | | "enable": false
|
| | | },
|
| | | "vueVersion": "2"
|
| | | } |
| | | { |
| | | "name" : "æå°è°åº¦", |
| | | "appid" : "__UNI__8789FB4", |
| | | "description" : "", |
| | | "versionName" : "1.0.0", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | "h5" : { |
| | | "router" : { |
| | | "mode" : "hash", |
| | | "base" : "./" |
| | | }, |
| | | // "base" : "/h5/" |
| | | "devServer" : { |
| | | "port" : 8090, |
| | | "historyApiFallback" : true, |
| | | "disableHostCheck" : true, |
| | | "proxy" : { |
| | | "/gateway_interface" : { |
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å |
| | | "target" : "http://10.50.250.253:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å |
| | | |
| | | // "target": "http://192.168.0.100:10010", // 代çæå¡å¨ååæIPå°å |
| | | "changeOrigin" : true, // å
许跨å |
| | | "pathRewrite" : { |
| | | "^/gateway_interface" : "" // éåå°åï¼å¦æå®é
æ¥å£ä¸æ¯ä¸å¸¦/dev-apiï¼éè¦å°è¿ä¸ªåç¼ç½®ç©ºï¼å 为è¿ä¸ªåç¼åªæ¯ä¸ºäºè¯å«ç¨ï¼è¯å«å®ä¹å就没ç¨äº |
| | | } |
| | | } |
| | | }, |
| | | "https" : false |
| | | } |
| | | }, |
| | | /* 5+Appç¹æç¸å
³ */ |
| | | "app-plus" : { |
| | | "usingComponents" : true, |
| | | "nvueStyleCompiler" : "uni-app", |
| | | "compilerVersion" : 3, |
| | | "splashscreen" : { |
| | | "alwaysShowBeforeRender" : true, |
| | | "waiting" : true, |
| | | "autoclose" : true, |
| | | "delay" : 0 |
| | | }, |
| | | /* 模åé
ç½® */ |
| | | "modules" : {}, |
| | | /* åºç¨åå¸ä¿¡æ¯ */ |
| | | "distribute" : { |
| | | /* androidæå
é
ç½® */ |
| | | "android" : { |
| | | "permissions" : [ |
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>", |
| | | "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
| | | ] |
| | | }, |
| | | /* iosæå
é
ç½® */ |
| | | "ios" : { |
| | | "dSYMs" : false |
| | | }, |
| | | /* SDKé
ç½® */ |
| | | "sdkConfigs" : { |
| | | "ad" : {} |
| | | } |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | | "quickapp" : {}, |
| | | /* å°ç¨åºç¹æç¸å
³ */ |
| | | "mp-weixin" : { |
| | | "appid" : "", |
| | | "setting" : { |
| | | "urlCheck" : false |
| | | }, |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-alipay" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-baidu" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-toutiao" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "uniStatistics" : { |
| | | "enable" : false |
| | | }, |
| | | "vueVersion" : "2" |
| | | } |
| | |
| | | "navigationBarTitleText": "é
ç½®æ¾ç¤ºæå°",
|
| | | "enablePullDownRefresh": false
|
| | | }
|
| | | }, |
| | | { |
| | | "path": "pages/index/SubDetail", |
| | | "style": { |
| | | "navigationBarTitleText": "é¢çº¦è¯¦æ
", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }
|
| | | ],
|
| | | "globalStyle": {
|
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">{{info.driverName}}çå
¥åé¢çº¦</view> |
| | | <view class="gray">{{info.carCodeFront}}</view> |
| | | <!-- <view class="desc" :class="{ |
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', |
| | | }">{{ infoStatus }}</view> --> |
| | | <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view> |
| | | <image v-if="info.status == 2" class="icon" src="@/static/ic_passed@2x.png" mode=""></image> |
| | | <image v-if="info.status == 3" class="icon" src="@/static/ic_refused@2x.png" mode=""></image> |
| | | </view> |
| | | <!-- --> |
| | | <view class="emyty"></view> |
| | | <view class="module_list"> |
| | | <view class="item"> |
| | | <view class="label">å
¥ååå </view> |
| | | <view class="value">{{info.inReason}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ååç¼å·</view> |
| | | <view class="value">{{info.contractNum}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">å°åºæ¶é´</view> |
| | | <view v-if="info.arriveDate" class="value">{{info.arriveDate.slice(0,16)}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">åè¿è¯ç
§ç</view> |
| | | <view class="value"> |
| | | <image |
| | | v-if="info.transportImg" |
| | | class="avatar_wrap" |
| | | :src="info.prefixUrl + info.transportImg" |
| | | ></image> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">å
¥åºç±»å</view> |
| | | <view class="value">{{info.inType == 0 ? 'æ´æç' : 'ä»¶ç'}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">æ»è¿æ°é</view> |
| | | <view class="value">{{info.totalNum}}䏿¯</view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="item"> |
| | | <view class="label">叿ºå§å</view> |
| | | <view class="value">{{info.driverName}} |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ææºå·</view> |
| | | <view class="value">{{info.driverPhone}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">车çç
§</view> |
| | | <view class="value">å {{info.carCodeFront}}ï¼å {{info.carCodeBack}}</view> |
| | | </view> |
| | | </view> |
| | | <!-- æµç¨ --> |
| | | <view class="flow_wrap"> |
| | | <view class="flow_title">æµç¨</view> |
| | | <view class="list" v-if=" |
| | | info.approveDateVO != null && info.approveDateVO.approveList != null |
| | | "> |
| | | <view class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id"> |
| | | <view class="separate"></view> |
| | | <view class="avatar"> |
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> |
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" |
| | | src="@/static/staff/ic_shenpiren@2x.png" /> |
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> |
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> |
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" /> |
| | | <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@2x.png" mode="widthFix" /> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">{{ item.title }}</view> |
| | | <view class="time">{{ item.checkDate }}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>{{ item.memberName |
| | | }}<text :class="{ status: item.statusInfo == 'å¤çä¸' || item.status == '1' }" |
| | | v-if="item.statusInfo">({{ item.statusInfo }})</text></text> |
| | | </view> |
| | | <view v-if="item.checkInfo" class="remark">{{ |
| | | item.checkInfo |
| | | }}</view> |
| | | <!-- æé人 --> |
| | | <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children"> |
| | | <view class="child" v-for="child in item.approveList" :key="child.id"> |
| | | <image v-if="child.faceImg" class="child_img" :src="child.faceImg" /> |
| | | <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view> |
| | | <view>{{ child.memberName }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { driverApplyDetail } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | | showApprModal: false, |
| | | checkInfo: '', |
| | | infoStatus: '', |
| | | flag: '1', |
| | | info: {}, |
| | | type: 0, |
| | | statusMap: { |
| | | 0: 'å¾
审æ¹', |
| | | 1: '审æ¹ä¸', |
| | | 2: 'å·²éè¿', |
| | | 3: 'å·²æç»', |
| | | 4: '已忶', |
| | | }, |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | // this.type = option.objType |
| | | // this.infoStatus = option.info |
| | | this.getDetail(option.id) |
| | | }, |
| | | methods: { |
| | | getDetail(id) { |
| | | driverApplyDetail({id}).then(res => { |
| | | this.info = res.data |
| | | if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){ |
| | | this.info.approveDateVO.approveList.forEach(item => { |
| | | if(item.approveList && item.approveList.length == 1 && item.type !== 1){ |
| | | item.title = item.approveList[0].title |
| | | item.faceImg = item.approveList[0].faceImg |
| | | item.memberName = item.approveList[0].memberName |
| | | item.statusInfo = item.approveList[0].statusInfo |
| | | item.approveList = [] |
| | | } |
| | | }) |
| | | } |
| | | console.log('this.info.approveDateVO', this.info.approveDateVO.approveList); |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | <style> |
| | | page { |
| | | background-color: #f7f7f7; |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | | .main_app { |
| | | background-color: #fff; |
| | | padding-bottom: 0; |
| | | |
| | | .flow_wrap { |
| | | padding: 30rpx 0; |
| | | |
| | | .flow_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 24rpx; |
| | | } |
| | | |
| | | .list { |
| | | .item { |
| | | display: flex; |
| | | margin-bottom: 48rpx; |
| | | position: relative; |
| | | |
| | | .separate { |
| | | position: absolute; |
| | | width: 4rpx; |
| | | height: 100%; |
| | | background-color: #eeeeee; |
| | | left: 40rpx; |
| | | transform: translate(-50%, 0); |
| | | top: 80rpx; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | position: relative; |
| | | margin-right: 20rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | .img { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | .img_name { |
| | | font-size: 32rpx; |
| | | color: #FFFFFF; |
| | | } |
| | | |
| | | .status { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: 0; |
| | | bottom: 0; |
| | | } |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 4rpx; |
| | | |
| | | .event { |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | } |
| | | |
| | | .name_wrap { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | |
| | | .status { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .children { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 12rpx; |
| | | |
| | | .child { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-right: 12rpx; |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | |
| | | .child_img { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | border-radius: 50%; |
| | | margin-bottom: 2rpx; |
| | | } |
| | | |
| | | .child_name { |
| | | margin-bottom: 2rpx; |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | text-align: center; |
| | | justify-content: center; |
| | | padding-top: 4rpx; |
| | | font-size: 28rpx; |
| | | border-radius: 50%; |
| | | color: #FFFFFF; |
| | | background-color: $uni-color-primary; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .remark { |
| | | margin-top: 12rpx; |
| | | background-color: #f7f7f7; |
| | | padding: 14rpx 20rpx; |
| | | border-radius: 8rpx; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | |
| | | .carbon { |
| | | display: flex; |
| | | width: 590rpx; |
| | | overflow-x: auto; |
| | | margin-top: 12rpx; |
| | | |
| | | .carbon_item { |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | | width: 100rpx; |
| | | |
| | | image { |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | view { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | } |
| | | } |
| | | } |
| | | |
| | | &:nth-last-child(1) { |
| | | .separate { |
| | | height: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .module_list { |
| | | .item { |
| | | padding: 30rpx 0; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | |
| | | .label { |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .value { |
| | | font-size: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .avatar_wrap { |
| | | margin-right: 20rpx; |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 8rpx; |
| | | border: 2rpx solid #e5e5e5; |
| | | } |
| | | |
| | | .info { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | |
| | | .name { |
| | | font-size: 30rpx; |
| | | color: #333333; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .status_wrap { |
| | | position: relative; |
| | | padding: 30rpx 0; |
| | | |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | margin-bottom: 20rpx; |
| | | color: #222222; |
| | | } |
| | | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #ed4545; |
| | | margin-bottom: 12rpx; |
| | | } |
| | | .gray { |
| | | color: #999999; |
| | | margin-bottom: 12rpx; |
| | | } |
| | | |
| | | .status { |
| | | position: absolute; |
| | | right: -30rpx; |
| | | top: 0; |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | padding: 0 32rpx; |
| | | border-radius: 0rpx 0rpx 0rpx 30rpx; |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | } |
| | | .icon{ |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: 0rpx; |
| | | top: 20rpx; |
| | | |
| | | } |
| | | } |
| | | |
| | | .main_footer { |
| | | padding-bottom: 64rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .btn { |
| | | width: 336rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: #ffffff; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #999999; |
| | | font-size: 32rpx; |
| | | text-align: center; |
| | | margin: 16rpx 0; |
| | | } |
| | | |
| | | .agree { |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 40rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | textarea { |
| | | box-sizing: border-box; |
| | | width: 690rpx; |
| | | background-color: #f7f7f7; |
| | | font-size: 28rpx; |
| | | color: #333333; |
| | | padding: 24rpx; |
| | | border-radius: 8rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | } |
| | | |
| | | .emyty { |
| | | width: 750rpx; |
| | | height: 20rpx; |
| | | background-color: #f7f7f7; |
| | | margin: 0 -30rpx; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </view>
|
| | | <view class="line" v-else>
|
| | | <text class="label">åååå·</text>
|
| | | <text class="value">{{ item.contractNum }}</text>
|
| | | <text class="value">{{ item.contractNum }}</text> |
| | | <text class="primaryColor" @click="subDetail(item)">é¢çº¦è¯¦æ
</text>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">驾驶å</text>
|
| | |
| | | </view>
|
| | | <view class="line" v-else>
|
| | | <text class="label">åååå·</text>
|
| | | <text class="value">{{ item.contractNum }}</text>
|
| | | <text class="value">{{ item.contractNum }}</text> |
| | | <text class="primaryColor" @click="subDetail(item)">é¢çº¦è¯¦æ
</text>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">驾驶å</text>
|
| | |
| | | this.wmsInfo = res.data
|
| | | this.showDetail = true
|
| | | })
|
| | | }, |
| | | subDetail(item) { |
| | | uni.navigateTo({ |
| | | url: `/pages/index/SubDetail?id=${item.bookId}` |
| | | }) |
| | | },
|
| | | handleFinish(item) {
|
| | | finishWork({
|
| | |
| | | data() { |
| | | return { |
| | | form: { |
| | | username: '13996529050', |
| | | password: '123456', |
| | | username: '', |
| | | password: '', |
| | | }, |
| | | err: '', |
| | | isShowProtocol: false, |
| | |
| | | <view class="line" v-else> |
| | | <text class="label">åååå·</text> |
| | | <text class="value">{{ item.contractNum }}</text> |
| | | <text class="primaryColor" @click="subDetail(item)">é¢çº¦è¯¦æ
</text> |
| | | </view> |
| | | <view class="line"> |
| | | <text class="label">驾驶å</text> |
| | |
| | | this.showDetail = true |
| | | }) |
| | | }, |
| | | subDetail(item) { |
| | | uni.navigateTo({ |
| | | url: `/pages/index/SubDetail?id=${item.bookId}` |
| | | }) |
| | | }, |
| | | getPlatformGroup() { |
| | | getPlatformGroupList({ |
| | | queryData: 1, |