MrShi
7 小时以前 ea2fb93a0dfcde8f5b66825b20f9d9b835a28acc
admin/src/components/business/OperaShopInfoWindow.vue
@@ -38,6 +38,66 @@
    </div>
    <el-tabs v-model="activeTab" class="store-tabs">
      <el-tab-pane label="门店信息" name="shopInfo">
        <div class="shop-info-content" v-if="storeInfo">
          <!-- 第一部分:三个字段一行 -->
          <div class="info-grid" style="margin-bottom: 0;">
            <div class="info-item">
              <span class="label">所在省市区:</span>
              <span class="value">{{ storeInfo.provinceName || '' }} {{ storeInfo.cityName || '' }} {{ storeInfo.areaName || '' }}</span>
            </div>
            <div class="info-item">
              <span class="label">门店地址:</span>
              <span class="value">{{ storeInfo.address || '' }}</span>
            </div>
            <div class="info-item">
              <span class="label">入驻押金:</span>
              <span class="value amount">¥{{ storeInfo.depositAmount ? (storeInfo.depositAmount / 100).toFixed(2) : '0.00' }}</span>
            </div>
            <div class="info-item">
              <span class="label">营业时间:</span>
              <span class="value" v-if="storeInfo.businessType === 1">全天营业</span>
              <span class="value" v-if="storeInfo.businessType === 0">限时营业</span>
            </div>
            <div class="info-item">
              <span class="label">配送范围:</span>
              <span class="value" v-if="storeInfo.deliveryArea">{{ storeInfo.deliveryArea }}公里</span>
              <span class="value" v-else>暂无</span>
            </div>
            <div class="info-item">
              <span class="label">位置标签:</span>
              <span class="value">{{ storeInfo.locationTagNames || '' }}</span>
            </div>
            <div class="info-item">
              <span class="label">门店状态:</span>
              <span class="value" :class="getStatusClass(storeInfo.status)">
                {{ storeInfo.status === 0 ? '启用' : '禁用' }}
              </span>
            </div>
          </div>
          <!-- 第二部分:一个字段一行 -->
          <div class="info-full">
            <div class="info-item-full">
              <span class="label">门店介绍:</span>
              <span class="value">{{ storeInfo.content || '' }}</span>
            </div>
            <div class="info-item-full">
              <span class="label">营业时间:</span>
              <span class="value">{{ storeInfo.shopHours || '' }}</span>
            </div>
            <div class="info-item-full">
              <span class="label">寄存类型:</span>
              <span class="value">{{ storeInfo.depositTypes || '' }}</span>
            </div>
            <div class="info-item-full">
              <span class="label">收费标准:</span>
              <span class="value">{{ storeInfo.feeStandard || '' }}</span>
            </div>
          </div>
        </div>
      </el-tab-pane>
      <el-tab-pane label="门店业绩" name="performance">
        <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
          <el-form-item label="订单编号" prop="code">
@@ -91,10 +151,13 @@
            </template>
          </el-table-column>
          <el-table-column prop="goodsInfo" label="物品信息" min-width="180px" show-overflow-tooltip></el-table-column>
          <el-table-column prop="isUrgent" label="类型" min-width="80px">
            <template slot-scope="{row}"><span>{{ row.type === 1?'同城寄送':'就地存取' }}</span></template>
          </el-table-column>
          <el-table-column prop="isUrgent" label="订单级别" min-width="80px">
            <template slot-scope="{row}"><span v-if="row.type ===1">{{ row.isUrgent === 1?'极速达':'标速达' }}</span></template>
          </el-table-column>
          <el-table-column label="物品保费(元)" min-width="120px">
          <!-- <el-table-column label="物品保费(元)" min-width="120px">
            <template slot-scope="{row}">¥{{ (row.declaredFee / 100).toFixed(2) }}</template>
          </el-table-column>
          <el-table-column label="物品保费(元)" min-width="120px">
@@ -102,6 +165,12 @@
          </el-table-column>
          <el-table-column label="基础服务费(元)" min-width="120px">
            <template slot-scope="{row}">¥{{ (row.price / 100).toFixed(2) }}</template>
          </el-table-column> -->
          <el-table-column label="结算金额(元)" min-width="120px">
            <template slot-scope="{row}">
              ¥{{ storeInfo.id == row.depositShopId ? (row.depositShopFee / 100).toFixed(2) : storeInfo.id == row.takeShopId ? (row.takeShopFee / 100).toFixed(2) : '' }}
            </template>
          </el-table-column>
          <el-table-column label="订单总价(元)" min-width="120px">
            <template slot-scope="{row}">¥{{ (row.totalAmount / 100).toFixed(2) }}</template>
@@ -109,18 +178,22 @@
          <el-table-column label="实付现金(元)" min-width="120px">
            <template slot-scope="{row}">¥{{ (row.payAmount / 100).toFixed(2) }}</template>
          </el-table-column>
          <el-table-column label="加急费(元)" min-width="120px">
            <template slot-scope="{row}"><span v-if="row.type ===1 ">¥{{ (row.urgentAmount / 100).toFixed(2) }}</span></template>
          </el-table-column>
          <el-table-column label="退款金额(元)" min-width="120px">
            <template slot-scope="{row}">¥{{ (row.refundAmount / 100).toFixed(2) }}</template>
          </el-table-column>
          <el-table-column label="超时金额(元)" min-width="100px">
            <template slot-scope="{row}">¥{{ (row.overdueAmount / 100).toFixed(2) }}</template>
          </el-table-column>
          <el-table-column prop="createTime" label="创建时间" min-width="150px"> </el-table-column>
          <!-- <el-table-column label="加急费(元)" min-width="120px">
            <template slot-scope="{row}"><span v-if="row.type ===1 ">¥{{ (row.urgentAmount / 100).toFixed(2) }}</span></template>
          </el-table-column>
          <el-table-column label="超时金额" min-width="100px">
            <template slot-scope="{row}">¥{{ (row.overdueAmount / 100).toFixed(2) }}</template>
          </el-table-column>
          <el-table-column label="异常金额" min-width="100px">
            <template slot-scope="{row}">¥{{ (row.exceptionAmount / 100).toFixed(2) }}</template>
          </el-table-column>
          </el-table-column> -->
          <el-table-column  prop="statusDesc"  label="订单状态" min-width="100px">
            <template slot-scope="{row}">
            <span :style="{ color: row.status <7 ? '#e6a23c' :  (row.status ===7 ? '#67c23a' : 'grey' )}">
@@ -136,7 +209,6 @@
            </template>
          </el-table-column>
          <el-table-column prop="payTime" label="支付时间" min-width="150px"> </el-table-column>
          <el-table-column prop="createTime" label="创建时间" min-width="150px"> </el-table-column>
        </el-table>
        <pagination
            @size-change="handleSizeChange"
@@ -147,7 +219,7 @@
      <el-tab-pane label="门店资质" name="qualification">
        <div class="qualification-content" v-if="storeInfo">
          <div class="qualification-section">
          <!-- <div class="qualification-section">
            <h4 class="section-title">基本信息</h4>
            <div class="info-grid">
              <div class="info-row">
@@ -164,14 +236,14 @@
              </div>
              <div class="info-row">
                <span class="label">审批状态:</span>
                <span class="value">{{ storeInfo.auditStatus === 0 ? '待审批' : storeInfo.auditStatus === 1 ? '审批通过' : '审批未通过' }}</span>
                <span class="value">{{ storeInfo.auditStatus === 0 ? '待审批' : storeInfo.auditStatus === 1 ? '审批通过' : storeInfo.auditStatus === 2 ? '审批未通过' : '已支付押金' }}</span>
              </div>
              <div class="info-row">
                <span class="label">配送范围:</span>
                <span class="value">{{ storeInfo.deliveryRange || '暂无' }}</span>
              </div>
            </div>
          </div>
          </div> -->
          <div class="qualification-section">
            <h4 class="section-title">主体资质</h4>
@@ -243,7 +315,7 @@
            </template>
          </div>
          <div class="qualification-section" v-if="storeInfo.companyType === 1">
          <div class="qualification-section">
            <h4 class="section-title">门店照片及其他材料</h4>
            <div class="image-item-row">
              <span class="label">门店门头照:</span>
@@ -290,13 +362,17 @@
  components: { GlobalWindow, Pagination,OperaOrderDetail },
  data () {
    return {
      activeTab: 'performance',
      title: '门店详情',
      activeTab: 'shopInfo',
      storeInfo: {},
      visible:false,
      visible: false,
      searchForm: {
        code: '',
        orderNo: '',
        goodsInfo: '',
        createTime1: '',
        createStartTime: '',
        createEndTime: '',
        startTime: '',
        endTime: '',
        orderStatus: '',
@@ -318,20 +394,34 @@
      this.searchForm.createEndTime = val ? val[1] : ''
      this.search()
    },
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.createStartTime = ''
      this.searchForm.createEndTime = ''
      this.search()
    },
    open (title, row) {
      this.searchForm.memberId = row.id
      detail(row.id)
          .then(res => {
            this.storeInfo = res
            this.activeTab = 'performance'
            this.title = title
            this.visible = true
            this.searchForm.shopId = row.id
            this.search()
          })
          .catch(e => {
            this.$tip.apiFailed(e)
          })
    this.searchForm.memberId = row.id
    this.getStoreInfo(row.id).then(() => {
      this.activeTab = 'shopInfo'
      this.title = title
      this.visible = true
      this.searchForm.shopId = row.id
      this.search()
    })
  },
    // 获取门店详情
    async getStoreInfo(id) {
      try {
        const res = await detail(id)
        this.storeInfo = res
      } catch (e) {
        this.$tip.apiFailed(e)
      }
    },
    // 获取门店状态样式
    getStatusClass(status) {
      return status === 0 ? 'status-enabled' : 'status-disabled'
    }
  }
}
@@ -349,10 +439,65 @@
  margin-right: 20px;
}
.store-avatar {
  width: 80px;
  height: 80px;
  border-radius: 50%;
}
    width: 100px;
    height: 100px;
    border-radius: 50%;
  }
  .info-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 30px;
    padding: 20px;
    /* background: #f5f7fa; */
    border-radius: 4px;
  }
  .info-full {
    padding: 20px;
    /* background: #f5f7fa; */
    border-radius: 4px;
  }
  .info-item {
    font-size: 14px;
  }
  .info-item-full {
    font-size: 14px;
    margin-bottom: 15px;
  }
  .info-item-full:last-child {
    margin-bottom: 0;
  }
  .label {
    color: #909399;
    min-width: 100px;
    display: inline-block;
    margin-right: 10px;
  }
  .value {
    color: #606266;
  }
  .value.amount {
    color: #f56c6c;
    font-weight: bold;
  }
  .status-enabled {
    color: #67c23a;
    font-weight: bold;
  }
  .status-disabled {
    color: #f56c6c;
    font-weight: bold;
  }
.store-header-right {
  flex: 1;
}