123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- <template>
- <view class="container">
- <cu-custom id="custom"
- bgImage="https://yostest175549.obs.cn-east-2.myhuaweicloud.com:443/202306151686796745663B52544232.png"
- :isBack="true">
- <block slot="backText">返回</block>
- <block slot="content">
- 工单详情
- </block>
- </cu-custom>
- <My_listbox ref="List" @getlist="getDetail">
- <view class="header">
- <view class="billno">
- {{ detail.billno }}
- </view>
- <view class="row">
- <view class="row-label">来源:</view>
- <view class="row-value">{{ detail.source || ' --' }}</view>
- </view>
- <view class="row">
- <view class="row-label">设备:</view>
- <view class="row-value">{{ detail.devicename || ' --' }}</view>
- </view>
- <view class="row">
- <view class="row-label">任务时间:</view>
- <view class="row-value">
- {{ detail.begdate && detail.enddate ? detail.begdate + ' 至 ' + detail.enddate : '--' }}
- </view>
- </view>
- <view class="row">
- <view class="row-label">地址:</view>
- <view class="row-value">{{ detail.address || ' --' }}</view>
- </view>
- <view class="row">
- <view class="row-label">备注说明:</view>
- <view class="row-value">{{ detail.remarks || ' --' }}</view>
- </view>
- <view class="status">{{ detail.status }}</view>
- </view>
- <block v-if="detail.team.length">
- <view class="label">巡检人员</view>
- <view class="users">
- <view class="user" :class="item.isleader ? 'leader' : ''" v-for="item in detail.team"
- :key="item.userid">
- {{ item.name }}
- </view>
- </view>
- </block>
- <block v-if="detail.nodes.length">
- <view class="label">进度</view>
- <view class="step-box">
- <view class="workorder" v-for="(item, index) in detail.nodes" :key="item.sa_workorder_nodeid">
- <view class="workorder-title">
- {{ index + 1 }}.{{ item.workpresetjson.workname }}
- </view>
- <navigator url="#" class="child" v-for="(child, childIndex) in item.child"
- :key="child.sa_workorder_nodeid">
- <view class="child-title">
- {{ index + 1 }}-{{ childIndex + 1 }}.{{ child.workpresetjson.workname }}
- </view>
- <view class="child-result">
- <view class="have-not-begun tag" v-if="child.status == 0">
- 未开始
- </view>
- <block v-else>
- <view class="time">{{ child.changedate }}</view>
- <view class="done tag" v-if="child.status == 1">
- 完成
- </view>
- <view class="underway tag" v-else>
- 进行中
- </view>
- </block>
- </view>
- </navigator>
- </view>
- </view>
- </block>
- <view style="height: 30px;" />
- </My_listbox>
- </view>
- </template>
- <script>
- export default {
- name: "Detail",
- data() {
- return {
- detail: {
- team: [],
- nodes: []
- },
- sa_workorderid: 0,
- }
- },
- onLoad(options) {
- this.sa_workorderid = options.id;
- this.getDetail(true)
- },
- methods: {
- getDetail(init = false) {
- if (!init) return;
- this.$Http.basic({
- "id": 20230208140103,
- "content": {
- "sa_workorderid": this.sa_workorderid
- }
- }).then(res => {
- console.log("工单详情", res)
- if (this.cutoff(res.msg)) return;
- let detail = res.data;
- switch (detail.sourcetable) {
- case "w_eventid":
- detail.source = "巡检," + (detail.planno || ' --')
- break;
- case "w_event_log":
- detail.source = "告警," + (detail.eventname || ' --')
- break;
- default:
- detail.source = "现场"
- break;
- }
- this.detail = res.data;
- this.$refs.List.RefreshToComplete();
- this.$refs.List.setHeight();
- })
- }
- },
- }
- </script>
- <style lang="scss" scoped>
- .header {
- position: relative;
- padding: 10px;
- width: 355px;
- margin: 10px auto;
- background: #fff;
- border-radius: 4px;
- box-sizing: border-box;
- overflow: hidden;
- .billno {
- font-size: 16px;
- font-weight: bold;
- color: #004684;
- }
- .row {
- display: flex;
- font-size: 14px;
- margin-top: 6px;
- &-label {
- flex-shrink: 0;
- color: #666;
- }
- }
- .status {
- position: absolute;
- top: 0;
- right: 0;
- padding: 4px 8px;
- background: #FFEFEF;
- color: #F65050;
- font-size: 12px;
- border-radius: 0 0 0 4px;
- }
- }
- .label {
- margin: 15px 0 10px 10px;
- font-size: 13px;
- color: #fff;
- }
- .users {
- display: flex;
- flex-wrap: wrap;
- padding: 8px 6px 2px 6px;
- width: 355px;
- margin: 0 auto;
- background: #fff;
- border-radius: 4px;
- box-sizing: border-box;
- overflow: hidden;
- .user {
- padding: 2px 4px;
- border: 1px solid #000;
- color: #000;
- font-size: 13px;
- border-radius: 4px;
- margin-right: 6px;
- margin-bottom: 6px;
- box-sizing: border-box;
- }
- .leader {
- background: #2A6AF2;
- border: 0;
- color: #fff;
- }
- }
- .step-box {
- width: 355px;
- margin: 0 auto;
- background: #fff;
- box-sizing: border-box;
- border-radius: 4px;
- padding: 10px;
- padding-top: 0;
- .workorder {
- width: 100%;
- padding-bottom: 4px;
- border-bottom: 1px dashed #ddd;
- &-title {
- font-size: 16px;
- padding-top: 10px;
- margin-bottom: 4px;
- }
- .child {
- padding: 6px;
- border-radius: 4px;
- overflow: hidden;
- &-title {
- font-size: 14px;
- }
- &-result {
- margin-top: 4px;
- display: flex;
- align-items: center;
- .have-not-begun {
- background: #E34D59;
- }
- .done {
- background: #4BA574;
- }
- .underway {
- background: #2151D1;
- }
- .tag {
- font-size: 10px;
- padding: 4px;
- border-radius: 4px;
- color: #fff;
- margin-left: 6px;
- }
- .time {
- font-size: 14px;
- color: #999;
- }
- }
- }
- }
- .workorder:last-child {
- padding-bottom: 0px;
- border: 0;
- }
- }
- </style>
|