From b0a7148f1830eb544af588e49a36163ee5820c7c Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 16 七月 2025 10:10:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/OperaOrderDetailWindow.vue |  336 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 336 insertions(+), 0 deletions(-)

diff --git a/admin/src/components/business/OperaOrderDetailWindow.vue b/admin/src/components/business/OperaOrderDetailWindow.vue
new file mode 100644
index 0000000..36eb0f9
--- /dev/null
+++ b/admin/src/components/business/OperaOrderDetailWindow.vue
@@ -0,0 +1,336 @@
+<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 == 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>
+        <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="item">
+                <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>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import { getById,cancel } from '@/api/business/orders'
+export default {
+  components: {
+    GlobalWindow
+  },
+  extends: BaseOpera,
+  data () {
+    return {
+      id: '',
+      info: {},
+      loading: false
+    }
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      this.visible = true
+      this.tableData2 = []
+      this.id = row.id
+      this.getData()
+    },
+    getData () {
+      getById(this.id)
+        .then(res => {
+          this.info = res
+          this.visible = true
+          console.log(this.info)
+        })
+    },
+    close () {
+
+    },
+    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;
+}
+.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>

--
Gitblit v1.9.3