¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :withFooter="false" |
| | | width="calc(100% - 250px)" |
| | | :confirm-working="isWorking" |
| | | @close="close" |
| | | @confirm="confirm"> |
| | | <div class="main"> |
| | | <div class="renzheng" > |
| | | <div class="info" > |
| | | <span class="m10">订åä¿¡æ¯</span> |
| | | <el-tag type="primary" class="ml10 tag2" v-if="info.status == 0||info.status == 1||info.status == 2||info.status == 3">{{ info.statusName }}</el-tag> |
| | | <el-tag type="success" class="ml10 tag2" v-if="info.status == 4">{{ info.statusName }}</el-tag> |
| | | <el-tag type="danger" class="ml10 tag2" v-if="info.status == 99">{{ info.statusName }}</el-tag> |
| | | <div style="display: inline-block;float: right;font-size: 12px"><el-button icon="el-icon-timer" type="primary" @click="showLogList" >è®¢åæµè½¬æ¥å¿</el-button></div> |
| | | </div> |
| | | <div class="detail" > |
| | | <div class="line"> |
| | | <div class="cont"><span class="label"> 订åå·ï¼</span> <span class="txt">{{info.code }}</span></div> |
| | | <div class="cont"> <span class="label"> ä¸åæ¶é´ï¼</span> <span class="txt">{{info.createTime }}</span></div> |
| | | <div class="cont"><span class="label"> æ¥åæ¶é´ï¼</span> <span class="txt">{{info.acceptTime || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">å¼å§æ¶é´ï¼</span> <span class="txt">{{info.workStartTime || '' }}</span></div> |
| | | <div class="cont" style="flex: 2"><span class="label">宿æ¶é´ï¼</span><span class="txt">{{info.finishTime || '' }}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="renzheng" > |
| | | <div class="info" > |
| | | <span class="m10">æ¯ä»ä¿¡æ¯</span> |
| | | </div> |
| | | <div class="detail" > |
| | | <div class="line"> |
| | | <div class="cont"><span class="label"> å®ä»éé¢ï¼</span> <span class="txt yellowbtn">{{((info.payAccount||0)/100).toFixed(2) }}å
</span></div> |
| | | <div class="cont"><span class="label">平尿ç»è´¹ï¼</span> <span class="txt yellowbtn">{{(((info.payAccount||0) - (info.receiveAccount||0))/100).toFixed(2) }}å
</span></div> |
| | | <div class="cont"><span class="label">æ¥åæ¹æ¶å°éé¢ï¼</span> <span class="txt yellowbtn">{{((info.receiveAccount||0)/100).toFixed(2) }}å
</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">æ¯ä»æ¶é´ï¼</span> <span class="txt">{{info.payTime || '' }}</span></div> |
| | | <div class="cont"><span class="label">æ¯ä»æ¹å¼ï¼</span><span class="txt">{{info.payMethod==0?'微信æ¯ä»':'å
¶ä»' }}</span></div> |
| | | <div class="cont"><span class="label">交æåå·ï¼</span><span class="txt">{{info.wxExternalNo || '' }}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="renzheng" > |
| | | <div class="info" > |
| | | <span class="m10">éæ±ä¿¡æ¯</span> |
| | | </div> |
| | | <div class="detail" v-if="info.type==0"> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label"> 订åç±»åï¼</span> <span class="txt">{{(info.type==0?'ç¨å·¥å':(info.type==1?'è´§è¿å':'订åå')) }}</span></div> |
| | | <div class="cont"><span class="label">å·¥ç§ï¼</span> |
| | | <span class="txt" v-if="info.type==0">{{(info.workType==0?'éæå·¥':(info.workType==1?'忣工':'å
è£
å·¥')) }}</span> |
| | | <span v-else>-</span> |
| | | </div> |
| | | <div class="cont"><span class="label">éæåç§ï¼</span> <span class="txt">{{info.categoryName || ''}}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">éæééï¼</span> <span class="txt">{{info.priceNum1 || '' }}æ¤</span></div> |
| | | <div class="cont"><span class="label">ç¨å·¥æ¶é´ï¼</span><span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}</span></div> |
| | | <div class="cont"><span class="label">ç¨å·¥å¤©æ°ï¼</span><span class="txt">{{info.totalDays || 0 }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">ç¨å·¥å°ç¹ï¼</span> <span class="txt">{{info.location || '' }}</span></div> |
| | | <div class="cont"><span class="label">è´¹ç¨æ åï¼</span><span class="txt">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</span></div> |
| | | <div class="cont"><span class="label">é¢ä¼°æ»è´¹ç¨ï¼</span><span class="txt yellowbtn">{{((info.estimatedAccount||0)/100).toFixed(2) }}å
</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">å°ç¹æè¿°ï¼</span><span class="txt">{{info.locationRemark || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont" ><span class="label">éæ±æè¿°ï¼</span><span class="txt">{{info.supplement || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"> |
| | | <span class="label">å¾çï¼</span> |
| | | <span class="txt" v-if="!info.multifileList || info.multifileList.length ==0">æ </span> |
| | | </div> |
| | | </div> |
| | | <div class="line" v-if="info.multifileList && info.multifileList.length>0"> |
| | | <div class="cont"> |
| | | <template v-if="info.multifileList && info.multifileList.length>0"> |
| | | <div v-for="item in info.multifileList" style="display: inline-block" :key="'aaa'+item.id"> |
| | | <el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull" |
| | | :preview-src-list="[info.fileurlFull]"> |
| | | </el-image> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | <div class="line" v-if="info.auditStatus == 3 || info.auditStatus == 2" :style="'background-color: '+(info.auditStatus==2?'#eff8ea':'rgb(253 226 226)')+';padding: 20px'"> |
| | | <span class="label"> å®¡æ ¸äººï¼</span> <span class="txt">{{info.editorName}} </span><span class="label">{{info.auditTime || '' }} </span> |
| | | <div style="margin-top: 20px"> <span class="label"> å®¡æ ¸ä¿¡æ¯ï¼</span> <span class="txt">{{info.auditRemark || '' }}</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="detail" v-if="info.type==1"> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label"> 订åç±»åï¼</span> <span class="txt">{{(info.type==0?'ç¨å·¥å':(info.type==1?'è´§è¿å':'订åå')) }}</span></div> |
| | | <div class="cont"><span class="label">车è¾ï¼</span> <span class="txt">{{info.categoryName || ''}}</span></div> |
| | | <div class="cont"><span class="label">ç¨è½¦æ¶é´ï¼</span> <span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont" > <span class="label"> å°åä¿¡æ¯ï¼</span> <span class="label" v-if="!wayList || wayList.length==0">-</span> </div> |
| | | </div> |
| | | <div class="line" v-if="wayList && wayList.length>0"> |
| | | <div class="cont" style="padding-left: 40px;background-color: #e4ecfe"> |
| | | <div v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="'bbb'+index"> |
| | | <span v-if="index == 0">ç¨è½¦èµ·ç¹ï¼{{item.location || ''}}</span> |
| | | <span v-if="index >0 && index < wayList.length-1">éç»å°ç¹ï¼{{item.location || ''}}</span> |
| | | <span v-if="index == wayList.length-1">ç¨è½¦ç»ç¹ï¼{{item.location || ''}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">ç¨å·¥å¤©æ°ï¼</span><span class="txt">{{info.totalDays || 0 }}</span></div> |
| | | <div class="cont"><span class="label">è¿è¾éé/æ°éï¼</span> <span class="txt">{{info.priceNum1 || '' }}æ¤</span></div> |
| | | <div class="cont"><span class="label">è´¹ç¨æ åï¼</span><span class="txt">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">é¢ä¼°æ»è´¹ç¨ï¼</span><span class="txt yellowbtn">{{((info.estimatedAccount||0)/100).toFixed(2) }}å
</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont" ><span class="label">éæ±è¡¥å
ï¼</span><span class="txt">{{info.supplement || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"> |
| | | <span class="label">å¾çï¼</span> |
| | | <span class="txt" v-if="!info.multifileList || info.multifileList.length ==0">æ </span> |
| | | </div> |
| | | </div> |
| | | <div class="line" v-if="info.multifileList && info.multifileList.length>0"> |
| | | <div class="cont"> |
| | | <template v-if="info.multifileList && info.multifileList.length>0"> |
| | | <div v-for="item in info.multifileList" style="display: inline-block" :key="item.id"> |
| | | <el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull" |
| | | :preview-src-list="[info.fileurlFull]"> |
| | | </el-image> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="detail" v-if="info.type==2"> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">订åç±»åï¼</span> <span class="txt">{{(info.type==0?'ç¨å·¥å':(info.type==1?'è´§è¿å':'订åå')) }}</span></div> |
| | | <div class="cont"><span class="label">ç¨é¤æ¶é´ï¼</span><span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}</span></div> |
| | | <div class="cont"><span class="label">ç¨é¤å¤©æ°ï¼</span><span class="txt">{{info.totalDays || 0 }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">ç¨é¤å°ç¹ï¼</span><span class="txt">{{info.location || '' }}</span></div> |
| | | <div class="cont" style="flex: 2"><span class="label" >餿 å份æ°ï¼</span><span class="txt">{{info.locationRemark || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">å°ç¹æè¿°ï¼</span><span class="txt">{{info.locationRemark || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont" ><span class="label">éæ±æè¿°ï¼</span><span class="txt">{{info.supplement || '' }}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"> |
| | | <span class="label">å¾çï¼</span> |
| | | <span class="txt" v-if="!info.multifileList || info.multifileList.length ==0">æ </span> |
| | | </div> |
| | | </div> |
| | | <div class="line" v-if="info.multifileList && info.multifileList.length>0"> |
| | | <div class="cont"> |
| | | <template v-if="info.multifileList && info.multifileList.length>0"> |
| | | <div v-for="item in info.multifileList" style="display: inline-block" :key="'aaa'+item.id"> |
| | | <el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull" |
| | | :preview-src-list="[info.fileurlFull]"> |
| | | </el-image> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="renzheng" > |
| | | <div class="info" > |
| | | <span class="m10">ååæ¹ä¿¡æ¯</span> |
| | | </div> |
| | | <div class="detail" > |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">æµç§°ï¼</span> <span class="txt">{{ info.releaseName||'' }}</span></div> |
| | | <div class="cont" ><span class="label">èç³»æ¹å¼ï¼</span> <span class="txt ">{{ info.releasePhone||'' }}</span></div> |
| | | <div class="cont" ><span class="label">å
¶ä»è系人ï¼</span> <span class="txt ">{{ info.linkName||'å¿å' }}-{{ info.linkPhone||'æªè®¾ç½®' }}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="renzheng" > |
| | | <div class="info" > |
| | | <span class="m10">æ¥åæ¹ä¿¡æ¯</span> |
| | | </div> |
| | | <div class="detail" > |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">å§å/åä½ï¼</span> <span class="txt">{{ info.acceptName||'' }}</span></div> |
| | | <div class="cont" style="flex: 2"><span class="label">èç³»æ¹å¼ï¼</span> <span class="txt ">{{ info.acceptPhone||'' }}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="renzheng" > |
| | | <div class="info" > |
| | | <span class="m10">è¯ä»·ä¿¡æ¯</span> |
| | | </div> |
| | | <div class="detail" > |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">{{info.commentType ==1 ?'ç³»ç»èªå¨è¯ä»·':'ååæ¹è¯ä»·'}}</span> <span class="txt">{{ info.commentTime}}</span></div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"> |
| | | <el-button class="label" :class="getScoreLevel(1)" style="border: none;cursor: default" icon="el-icon-star-on"></el-button> |
| | | <el-button class="label" :class="getScoreLevel(2)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button> |
| | | <el-button class="label" :class="getScoreLevel(3)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button> |
| | | <el-button class="label" :class="getScoreLevel(4)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button> |
| | | <el-button class="label" :class="getScoreLevel(5)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button> |
| | | </div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="cont"><span class="label">è¯ä»·å
容ï¼</span> <span class="txt">{{ info.commentInfo || '-'}}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <orderProgress ref ='orderProgress'></orderProgress> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import orderProgress from '@/components/business/orderProgress' |
| | | import { getById, cancel } from '@/api/business/orders' |
| | | export default { |
| | | components: { |
| | | GlobalWindow, orderProgress |
| | | }, |
| | | extends: BaseOpera, |
| | | data () { |
| | | return { |
| | | id: '', |
| | | wayList:[], |
| | | info: {}, |
| | | loading: false |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, row) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.tableData2 = [] |
| | | this.id = row.id |
| | | this.wayList=[] |
| | | this.getData() |
| | | }, |
| | | getData () { |
| | | getById(this.id) |
| | | .then(res => { |
| | | this.info = res |
| | | this.visible = true |
| | | if(this.info.wayInfo){ |
| | | this.wayList = JSON.parse(this.info.wayInfo) |
| | | } |
| | | console.log(this.wayList) |
| | | }) |
| | | }, |
| | | close () { |
| | | |
| | | }, |
| | | showLogList () { |
| | | this.$refs.orderProgress.open('è®¢åæµè½¬æ¥å¿', this.info.orderLogList||[]) |
| | | }, |
| | | getScoreLevel (num) { |
| | | if (this.info.commentLevel && this.info.commentLevel >= num) { |
| | | return 'staron' |
| | | } |
| | | return 'staroff' |
| | | }, |
| | | checkDo (status) { |
| | | console.log(this.$refs.formCheck.length) |
| | | this.$refs.formCheck.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.$dialog.actionConfirm('æ¨ç¡®è®¤ãåæ¶ã该ç³è¯·åï¼', 'æä½ç¡®è®¤') |
| | | .then(() => { |
| | | this.dealing = true |
| | | cancel({ |
| | | id: this.id, |
| | | auditStatus: status, |
| | | auditRemark: this.form.auditRemark |
| | | }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess('æä½æå') |
| | | this.getData() |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.dealing = false |
| | | }) |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | .bottom{ |
| | | text-align: center; |
| | | display: block; |
| | | height: auto; |
| | | background-color: #e4ecfe; |
| | | width: calc(100% - 32px); |
| | | z-index: 999; |
| | | padding: 16px; |
| | | } |
| | | .staroff{ |
| | | color: #8c939d !important; |
| | | } |
| | | .staron{ |
| | | color: #ff4d00 !important; |
| | | } |
| | | .renzheng{ |
| | | margin: 0px 0px 50px 20px; |
| | | width: calc(100% - 60px); |
| | | .detail{ |
| | | font-size: 14px; |
| | | .label{ |
| | | //color: #8c939d; |
| | | } |
| | | .txt{ |
| | | margin-right: 30px; |
| | | } |
| | | .line{ |
| | | font-size: 12px; |
| | | margin-top: 15px; |
| | | display: flex; |
| | | width: calc(100% - 60px); |
| | | .cont{ |
| | | flex: 1; |
| | | } |
| | | } |
| | | } |
| | | .ml10{ |
| | | margin-left: 10px; |
| | | } |
| | | .info{ |
| | | font-size: 14px; |
| | | font-weight: bold; |
| | | color: #5a72c5; |
| | | } |
| | | .tag2{ |
| | | font-size: 12px; |
| | | } |
| | | } |
| | | .home_title { |
| | | .mr10{ |
| | | margin-right: 10px; |
| | | } |
| | | .m10{ |
| | | margin: 10px; |
| | | } |
| | | .bluebtn{ |
| | | color: #2985f7; |
| | | } |
| | | .tag1{ |
| | | border-radius: 10px; |
| | | font-size: 10px; |
| | | padding: 0px 15px; |
| | | height: 24px; |
| | | } |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .left { |
| | | font-weight: 500; |
| | | font-size: 14px; |
| | | margin-right: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | .status { |
| | | padding: 0 6px; |
| | | height: 22px; |
| | | line-height: 22px; |
| | | border-radius: 2px; |
| | | border: 1px solid #00BA92; |
| | | color: #00BA92; |
| | | font-weight: 400; |
| | | font-size: 12px; |
| | | color: #00BA92; |
| | | } |
| | | } |
| | | } |
| | | .tab{ |
| | | width: 20%; |
| | | } |
| | | .remark { |
| | | //background: #E8EBF7; |
| | | border-radius: 2px; |
| | | font-size: 14px; |
| | | margin: 10px 10px 0px -10px; |
| | | button{ |
| | | border: none; |
| | | cursor: default; |
| | | margin-right: 20px; |
| | | background: #e4ecfe; |
| | | } |
| | | } |
| | | .bluebtn{ |
| | | font-weight: bold; |
| | | color: #2985f7; |
| | | } |
| | | |
| | | .redbtn{ |
| | | font-weight: bold; |
| | | color: #ff1b1b; |
| | | } |
| | | .yellowbtn{ |
| | | font-weight: bold; |
| | | color: #fc9d20; |
| | | } |
| | | |
| | | .tabs { |
| | | border-bottom: 1px solid #DFE2E8; |
| | | display: flex; |
| | | margin-bottom: 20px; |
| | | .tab { |
| | | height: 58px; |
| | | line-height: 58px; |
| | | font-size: 14px; |
| | | color: #666666; |
| | | margin-right: 30px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .active { |
| | | font-weight: 500; |
| | | color: $primary-color; |
| | | border-bottom: 2px solid $primary-color; |
| | | } |
| | | } |
| | | |
| | | .main { |
| | | padding: 12px 16px; |
| | | .title { |
| | | font-weight: 500; |
| | | font-size: 12px; |
| | | color: $primary-color; |
| | | margin-bottom: 15px; |
| | | } |
| | | /deep/ .el-form-item__label{ |
| | | font-size: 12px; |
| | | } |
| | | .list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | /*background: #F7F7F7;*/ |
| | | border-radius: 2px; |
| | | /*padding: 15px 20px;*/ |
| | | margin-bottom: 20px; |
| | | |
| | | .item { |
| | | font-size: 14px; |
| | | width: 25%; |
| | | margin-bottom: 16px; |
| | | |
| | | .la { |
| | | color: #7f7f7f; |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /deep/ .window__body { |
| | | padding: 0px !important; |
| | | } |
| | | </style> |