zlwu 6 tháng trước cách đây
mục cha
commit
329cedfb19

+ 7 - 24
web-admin/src/components/business/order-operate-local-dialog/index.vue

@@ -1,13 +1,13 @@
 <template>
   <teleport to="body">
     <div v-show="visibleProxy" class="order-operate-local-layer" @click.self="visibleProxy = false">
-      <iframe ref="frameRef" class="order-operate-local-frame" :src="frameSrc" frameborder="0" />
+      <iframe class="order-operate-local-frame" :src="frameSrc" frameborder="0" allowtransparency="true" />
     </div>
   </teleport>
 </template>
 
 <script setup lang="ts">
-  import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
+  import { computed, onBeforeUnmount, onMounted } from 'vue'
 
   const props = defineProps<{
     modelValue: boolean
@@ -23,8 +23,10 @@
     set: (value: boolean) => emit('update:modelValue', value)
   })
 
-  const frameSrc = '#/order/order?bridge=1'
-  const frameRef = ref<HTMLIFrameElement | null>(null)
+  const frameSrc = computed(() => {
+    const id = encodeURIComponent((props.orderId || '').trim())
+    return id ? `#/order/order?bridge=1&viewOrderId=${id}` : '#/order/order?bridge=1'
+  })
 
   const handleMessage = (ev: MessageEvent) => {
     const data = ev?.data as any
@@ -34,12 +36,6 @@
     }
   }
 
-  const postOpen = (id: string) => {
-    const win = frameRef.value?.contentWindow
-    if (!win) return
-    win.postMessage({ type: 'sqxp-order-operate-open', orderId: id }, '*')
-  }
-
   onMounted(() => {
     window.addEventListener('message', handleMessage)
   })
@@ -47,18 +43,6 @@
   onBeforeUnmount(() => {
     window.removeEventListener('message', handleMessage)
   })
-
-  watch(
-    () => [visibleProxy.value, props.orderId] as const,
-    async ([vis, id]) => {
-      if (!vis) return
-      const orderId = (id || '').trim()
-      if (!orderId) return
-      await nextTick()
-      requestAnimationFrame(() => postOpen(orderId))
-    },
-    { immediate: true }
-  )
 </script>
 
 <style lang="scss" scoped>
@@ -68,7 +52,7 @@
     z-index: 4000;
     display: flex;
     flex-direction: column;
-    background: rgba(0, 0, 0, 0.28);
+    background: transparent;
     overflow: hidden;
   }
 
@@ -79,6 +63,5 @@
     display: block;
     background: transparent;
     border: 0;
-    flex: 1 1 auto;
   }
 </style>

+ 11 - 0
web-admin/src/views/system/client-settlement/index.vue

@@ -224,6 +224,11 @@
                 </el-tag>
               </template>
             </el-table-column>
+            <el-table-column label="操作" min-width="120" fixed="right" align="center" header-align="center">
+              <template #default="{ row }">
+                <el-button class="btn-op-item primary" @click="openOrderOperate(row)">查看/运营</el-button>
+              </template>
+            </el-table-column>
           </el-table>
           <div class="pagination list-pager-bar">
             <el-pagination
@@ -873,6 +878,12 @@
     productViewTargetId.value = String(pid)
     productViewDialogVisible.value = true
   }
+  const openOrderOperate = (row: any) => {
+    const oid = row?.id
+    if (!oid) return
+    orderOperateTargetId.value = String(oid)
+    orderOperateDialogVisible.value = true
+  }
   const buildFilters = () => ({
     regionId: activeRegionId.value || undefined,
     clientId: searchForm.clientId || undefined,

+ 10 - 0
web-admin/src/views/system/order/index.vue

@@ -3445,6 +3445,16 @@
     display: none !important;
   }
 
+  html.sqxp-order-bridge-mode,
+  body.sqxp-order-bridge-mode,
+  .sqxp-order-bridge-mode #app,
+  .sqxp-order-bridge-mode #app-main,
+  .sqxp-order-bridge-mode #app-content,
+  .sqxp-order-bridge-mode .app-layout,
+  .sqxp-order-bridge-mode .layout-content {
+    background: transparent !important;
+  }
+
   .sqxp-order-bridge-mode #app-main,
   .sqxp-order-bridge-mode #app-content {
     margin: 0 !important;

+ 11 - 0
web-admin/src/views/system/supplier-settlement/index.vue

@@ -221,6 +221,11 @@
                 </el-tag>
               </template>
             </el-table-column>
+            <el-table-column label="操作" min-width="120" fixed="right" align="center" header-align="center">
+              <template #default="{ row }">
+                <el-button class="btn-op-item primary" @click="openOrderOperate(row)">查看/运营</el-button>
+              </template>
+            </el-table-column>
           </el-table>
 
           <div class="pagination list-pager-bar">
@@ -862,6 +867,12 @@
     productViewTargetId.value = String(pid)
     productViewDialogVisible.value = true
   }
+  const openOrderOperate = (row: any) => {
+    const oid = row?.id
+    if (!oid) return
+    orderOperateTargetId.value = String(oid)
+    orderOperateDialogVisible.value = true
+  }
   const buildFilters = () => ({
     regionId: activeRegionId.value || undefined,
     supplierId: searchForm.supplierId || undefined,