Forráskód Böngészése

update:更改商户管理

RuHu.Xu 1 éve
szülő
commit
862f84ef6d

+ 3 - 0
src/components/ZxMobileDialog/index.ts

@@ -0,0 +1,3 @@
+import ZxMobileDialog from './src/ZxMobileDialog.vue'
+
+export { ZxMobileDialog }

+ 139 - 0
src/components/ZxMobileDialog/src/ZxMobileDialog.vue

@@ -0,0 +1,139 @@
+<template>
+  <ContentWrap v-loading="formLoading" style="overflow-y: auto;">
+    <div class="top" style="position: relative;overflow: hidden;">
+      <!-- {{ props }} -->
+      <van-tabs v-model:active="activeTabName" @tab-click="handleTabClick">
+  				<van-tab :title="tab.label" v-for="tab in tabs" :key="tab.name" :label="tab.label" :name="tab.component"/>
+      </van-tabs>
+    </div>
+    <div class="bottom">
+      <component :is="CurrentComponent" :id="id" :isDetail="true" :propFormData="initialData" />
+    </div>
+    <div style="clear: both;"></div>
+
+  	</ContentWrap>
+</template>
+
+<script setup lang="ts">
+import { ref, watch, defineAsyncComponent, defineEmits, computed } from 'vue';
+import { ElDialog, ElTabs, ElTabPane } from 'element-plus';
+import { Close } from '@element-plus/icons-vue'
+import { useRoute } from 'vue-router';
+const route = useRoute();
+console.log(route.query)
+const tabs = computed(() => {
+  const tabsParam = route.query.tabs;
+  return tabsParam ? JSON.parse(tabsParam) : [];
+});
+const activeTabName = ref(route.query.initialComponent);
+const initialData = computed(() => {
+  const initialDataParam = route.query.initialData;
+  return initialDataParam ? JSON.parse(initialDataParam) : [];
+});
+const id = ref(route.query.id);
+
+defineOptions({ name: 'ZxMobileDialog' })
+
+
+
+// console.log("子组件",props)
+// let OperationsId = ref(props.id);
+// const dialogVisible = ref(false);
+
+const CurrentComponent = ref(null);
+const modules = import.meta.glob('@/views/**/components/*.vue');
+watch(activeTabName, (newVal) => {
+  const comp = modules[`/src/${newVal}.vue`]
+  if (newVal) {
+    comp().then((myModule) => {
+      CurrentComponent.value = myModule.default
+    })
+  }
+}, { immediate: true });
+// 检测id
+watch(() => id.value, (newId) => {
+  id.value = newId;
+});
+function handleTabClick(tab) {
+  activeTabName.value = tab.name;
+}
+
+// defineExpose({ dialogVisible });  
+</script>
+
+
+
+<style lang="scss">
+// 基本信息显示
+section {
+  padding: 0 !important;
+  width: 100% !important;
+}
+
+.el-card__body {
+  padding: unset;
+}
+
+.el-card {
+  border: none
+}
+
+.el-col-12 {
+  max-width: 100%;
+  width: 100%;
+  flex: none;
+}
+
+.el-row {
+  border: none !important;
+  padding: 0 1rem;
+}
+
+.el-form-item {
+  border-bottom: 1px solid #ebeef5;
+  align-items: center;
+}
+
+.el-col,
+.el-form-item__label {
+  border: unset !important;
+  justify-content: flex-start
+}
+
+// 日志显示
+.el-timeline {
+  margin: unset !important;
+}
+
+.el-timeline-item {
+  padding-bottom: 0;
+}
+
+.el-timeline-item__tail {
+  position: absolute;
+  left: 21px !important;
+  top: -19px !important;
+  height: 150% !important;
+}
+
+.dot-node-style {
+  left: 12px !important;
+  top: -39px !important;
+  position: absolute !important;
+}
+
+.el-timeline-item__timestamp {
+  left: 35px !important;
+  top: -22px !important;
+}
+
+.el-timeline-item__content {
+  margin-top: 42px;
+  margin-left: 6px;
+  padding-right: 15px;
+}
+
+.el-timeline .el-timeline-right-content::before {
+  top: 0px !important;
+  left: 18px !important;
+}</style>

+ 8 - 2
src/router/modules/remaining.ts

@@ -101,7 +101,14 @@ const remainingRouter: AppRouteRecordRaw[] = [
           icon: 'ep:message',
           title: '我的站内信'
         }
-      }
+      },
+      {
+        path: 'mobileDetail/',
+        component: () => import('@/components/ZxMobileDialog/src/ZxMobileDialog.vue'),
+        // props: true, 
+        name: 'MobileDetail',
+        meta: { title: '移动端详情', icon: 'ep:view' },
+      },
     ]
   },
 
@@ -422,7 +429,6 @@ const remainingRouter: AppRouteRecordRaw[] = [
         props: true, 
         name: 'TradeOrderMobileDetail',
         meta: { title: '移动端订单详情', icon: 'ep:view' },
-        
       },
       {
         path: 'after-sale/detail/:id(\\d+)',

+ 0 - 3
src/views/mall/product/spu/form/index.vue

@@ -2,7 +2,6 @@
 
 	<el-dialog v-model="dialogVisible" :title="dialogTitle" :fullscreen="isFullScreen" :show-close="false" width="70%"
 		draggable class="dialog">
-
 		<template #header="{ close }">
 			<div class="my-header">
 				<div class="my-header-left">{{dialogTitle}}</div>
@@ -20,7 +19,6 @@
 			</div>
 		</template>
 		<ContentWrap v-loading="formLoading">
-
 			<div class="left">
 				<SPuUploadImg v-model="formData.picUrl" :disabled="isDetail" />
 				<el-tabs v-model="activeName" tab-position="left" class="child-tabs">
@@ -196,7 +194,6 @@
 	// }
 	/** 打开弹窗 */
 	const open = async (type : string, row : any, newStatus : number, tabType : number) => {
-
 		parentTabType.value = tabType
 		parentRow.value = row
 		parentNewStatus.value = newStatus

+ 147 - 86
src/views/system/sale/merchant/components/MerchantBaseInfo.vue

@@ -1,59 +1,94 @@
 <template>
-  <el-form ref="formRef" :model="formData" :rules="formRules" label-width="120px" class="overflow-auto" :class="{'is-detail':!isDetail}" v-loading="formLoading" :disabled="isDetail">
-    <el-form-item label="商户名称" prop="name">
-      <el-input v-model="formData.name" placeholder="请输入商户名称" />
-    </el-form-item>
-    <el-form-item label="商户状态" prop="status">
-      <el-radio-group v-model="formData.status">
-        <el-radio label="1">请选择字典生成</el-radio>
-      </el-radio-group>
-    </el-form-item>
-
-    <el-form-item label="负责人" prop="contact">
-      <el-input v-model="formData.contact" placeholder="请输入负责人" />
-    </el-form-item>
-    <el-form-item label="所在地" prop="address">
-      <el-input v-model="formData.address" placeholder="请输入所在地" />
-    </el-form-item>
-    <el-form-item label="负责人电话" prop="contactNumber">
-      <el-input v-model="formData.contactNumber" placeholder="请输入负责人电话" />
-    </el-form-item>
-    <el-form-item label="官网" prop="website">
-      <el-input v-model="formData.website" placeholder="请输入官网" />
-    </el-form-item>
-    <el-form-item label="维权电话" prop="complaintsHotline">
-      <el-input v-model="formData.complaintsHotline" placeholder="请输入维权电话" />
-    </el-form-item>
-    <el-form-item label="客服电话" prop="customerServiceHotline">
-      <el-input v-model="formData.customerServiceHotline" placeholder="请输入客服电话" />
-    </el-form-item>
-    <el-form-item label="邮箱" prop="email">
-      <el-input v-model="formData.email" placeholder="请输入邮箱" />
-    </el-form-item>
-
-    <el-form-item label="服务到期时间" prop="expireTime">
-      <el-date-picker v-model="formData.expireTime" type="date" value-format="x" placeholder="选择服务到期时间" />
-    </el-form-item>
-    <el-form-item label="营业执照" prop="businessLicensePicture">
-      <UploadImg v-model="formData.businessLicensePicture" :limit="1" />
-    </el-form-item>
-    <el-form-item label="简介" prop="description">
-      <Editor v-model="formData.description" height="150px" />
-    </el-form-item>
+  <el-form ref="formRef" :model="formData" :rules="formRules" label-width="120px" class="overflow-auto"
+    v-loading="formLoading" :disabled="isDetail">
+    <el-row>
+      <el-col :span="12">
+        <el-form-item label="商户名称" prop="name">
+          <el-input v-model="formData.name" placeholder="请输入商户名称" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="商户状态" prop="status">
+          <el-radio-group v-model="formData.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="12">
+        <el-form-item label="负责人" prop="contact">
+          <el-input v-model="formData.contact" placeholder="请输入负责人" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="所在地" prop="address">
+          <el-input v-model="formData.address" placeholder="请输入所在地" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="12">
+        <el-form-item label="负责人电话" prop="contactNumber">
+          <el-input v-model="formData.contactNumber" placeholder="请输入负责人电话" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="官网" prop="website">
+          <el-input v-model="formData.website" placeholder="请输入官网" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="12">
+        <el-form-item label="维权电话" prop="complaintsHotline">
+          <el-input v-model="formData.complaintsHotline" placeholder="请输入维权电话" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="客服电话" prop="customerServiceHotline">
+          <el-input v-model="formData.customerServiceHotline" placeholder="请输入客服电话" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="12">
+        <el-form-item label="邮箱" prop="email">
+          <el-input v-model="formData.email" placeholder="请输入邮箱" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="服务到期时间" prop="expireTime">
+          <el-date-picker v-model="formData.expireTime" type="date" value-format="x" placeholder="选择服务到期时间" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="24">
+        <el-form-item label="营业执照" prop="businessLicensePicture">
+          <UploadImg v-model="formData.businessLicensePicture" :limit="1"  :disabled="isDetail" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="description">
+          <Editor v-model="formData.description" height="150px" :disabled="isDetail" />
+        </el-form-item>
+      </el-col>
+    </el-row>
   </el-form>
-  <div class="position-absolute  right-16px  bottom-16px" v-if="!isDetail">
-    <el-button type="primary" @click="submitForm">保存</el-button>
-  </div>
-  
 </template>
 
 <script setup lang="ts">
 import { MerchantApi, MerchantVO } from '@/api/system/sale/merchant'
+import { copyValueToTarget } from '@/utils'
+
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 // const formType = ref('') // 表单的类型:create - 新增;update - 修改
-const formData = ref({
+const formData = reactive({
   id: undefined,
   name: undefined,
   status: undefined,
@@ -87,53 +122,79 @@ const props = defineProps({
     type: Number,
     default: 0
   },
-  "isDetail":{
-    type:Boolean,
-    default:false
+  "isDetail": {
+    type: Boolean,
+    default: false
+  },
+  "openType": {
+    type: String,
+    default: "create"
   },
-  "openType":{
-    type:String,
-    default:"create"
+  propFormData: {
+    type: Object,
+    default: () => { }
   }
 });
 
-const submitForm = async () => {
-  // 校验表单
-  await formRef.value.validate()
-  // 提交请求
-  formLoading.value = true
-  try {
-    const data = formData.value as unknown as MerchantApi.MerchantVO
-    if (props.openType === '新增') {
-      await MerchantApi.createMerchant(data)
-      message.success(t('common.createSuccess'))
-    } else {
-      await MerchantApi.updateMerchant(data)
-      message.success(t('common.updateSuccess'))
+/** 将传进来的值赋值给 formData */
+watch(
+  () => props.propFormData,
+  (data) => {
+    if (!data) {
+      return
     }
-    dialogVisible.value = false
-    // 发送操作成功的事件
-    emit('success')
-  } finally {
-    formLoading.value = false
+    copyValueToTarget(formData, data)
+  },
+  {
+    immediate: true
+  }
+)
+
+const emit = defineEmits(['update:activeName'])
+
+const validate = async () => {
+  if (!formRef) return
+  try {
+    await unref(formRef)?.validate()
+    // 校验通过更新数据
+    Object.assign(props.propFormData, formData)
+  } catch (e) {
+    message.error('基本信息不完善,请填写相关信息')
+    emit('update:activeName', 'info')
+    throw e // 目的截断之后的校验
   }
 }
+defineExpose({ validate })
 
-console.log(props)
-let id = ref(props.id)
-onMounted( async() => {
-  if (id.value) {
-    formLoading.value = true
-    try {
-      formData.value = await MerchantApi.getMerchant(id.value)
-    } finally {
-      formLoading.value = false
-    }
+const updateParentData = inject('updateParentData');
+const updateData = () => {
+  updateParentData(formData);
+};
+
+watch(formData, (data) => {
+  try { updateData() }catch{
+    console.log("chakan ")
   }
-})
-</script>
-<style>
-  .is-detail{
-    max-height:530px;overflow:auto
+
+  
+},
+  {
+    immediate: true
   }
-</style>
+)
+
+
+// console.log(props)
+// let id = ref(props.id)
+// onMounted(async() => {
+//   if (id.value) {
+//     formLoading.value = true
+//     try {
+//       // formData.value = await MerchantApi.getMerchant(id.value)
+//     } finally {
+//       formLoading.value = false
+//     }
+//   }
+// })
+</script>
+<style src="./MerchantComponents.css"  lang="scss" scoped></style>

+ 44 - 0
src/views/system/sale/merchant/components/MerchantComponents.css

@@ -0,0 +1,44 @@
+.el-row {
+  border: 1px solid #ebeef5
+}
+
+.el-col {
+  border-right: 1px solid #ebeef5;
+}
+
+.el-form-item {
+  margin-bottom: 0;
+  height: 100%;
+}
+
+::v-deep(.el-form-item--default .el-form-item__label) {
+  height: auto;
+  min-height: 47px;
+  display: flex;
+  align-items: center;
+  border-right: 1px solid #ebeef5;
+}
+
+::v-deep(.el-form-item--default .el-form-item__content) {
+  line-height: 47px;
+  padding: 10px;
+  word-break: break-word;
+}
+
+.mobile-elform{
+  border: 1px solid #ebeef5;
+  margin: 1rem;
+  padding-top: .5rem;
+}
+
+::v-deep .el-input.is-disabled .el-input__wrapper{
+  background-color:unset;
+  box-shadow:none;
+}
+
+::v-deep .el-form-item__error{
+  top: auto;
+  bottom: 0;
+  left: 11px;
+  font-size: 10px;
+}

+ 7 - 0
src/views/system/sale/merchant/components/MerchantIndex.vue

@@ -6,6 +6,11 @@
     <div class="dialog-content">
       <component :is="CurrentComponent" :parent-id="parentId" />
     </div>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button v-if="mode !== 'view'" @click="button.action">{{ button.name }}</el-button>
+      </div>
+    </template> 
   </el-dialog>
 </template>
 
@@ -16,6 +21,8 @@ import { ElDialog, ElTabs, ElTabPane } from 'element-plus';
 const props = defineProps({
   tabs: Array,
   initialComponent: String,
+  buttonActions: Array,
+  initialData: Object,
   parentId: String
 });
 console.log(props)

+ 160 - 93
src/views/system/sale/merchant/index.vue

@@ -1,13 +1,13 @@
 <template>
   <!-- 列表 -->
-  <ContentWrap style="min-height: 400px;border: unset;">
-    <div style="position: relative;">
+  <ContentWrap class="Content" style="min-height: 400px;border: unset;">
+    <div style="position: relative;" class="search">
       <div style="text-align: right;">
         <el-button :icon="Operation" @click="showSearchMore" />
-				<el-button v-hasPermi="['sale:merchant:create']" @click="showDialog('新增')">
-					<Icon class="mr-5px" icon="ep:plus" />
-					新增
-				</el-button>
+        <el-button v-hasPermi="['sale:merchant:create']" @click="showDialog('新增')" v-if="!mobile">
+          <Icon class="mr-5px" icon="ep:plus" />
+          新增
+        </el-button>
       </div>
       <div class="searchMore" v-show="searchMoreShow">
         <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
@@ -43,38 +43,42 @@
             <el-input v-model="queryParams.email" placeholder="请输入邮箱" clearable @keyup.enter="handleQuery" />
           </el-form-item>
           <el-form-item label="服务到期时间" prop="expireTime">
-            <el-date-picker v-model="queryParams.expireTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
-              start-placeholder="开始日期" end-placeholder="结束日期"
+            <el-date-picker v-model="queryParams.expireTime" style="width: auto;" value-format="YYYY-MM-DD HH:mm:ss"
+              type="daterange" start-placeholder="开始日期" end-placeholder="结束日期"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
           </el-form-item>
           <el-form-item label="创建时间" prop="createTime">
-            <el-date-picker v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
-              start-placeholder="开始日期" end-placeholder="结束日期"
+            <el-date-picker v-model="queryParams.createTime" style="width: auto;" value-format="YYYY-MM-DD HH:mm:ss"
+              type="daterange" start-placeholder="开始日期" end-placeholder="结束日期"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
           </el-form-item>
-          <el-form-item>
-            <el-button @click="hideSearchMore">
-							收起
-						</el-button>
-            <el-button @click="resetQuery">
-                重置
-            </el-button>
-            <el-button @click="handleQuery">
-              <Icon icon="ep:search" class="mr-5px" /> 搜索
-            </el-button>
-          </el-form-item>
+          <el-row>
+            <el-col>
+              <el-form-item>
+                <el-button @click="hideSearchMore">
+                  收起
+                </el-button>
+                <el-button @click="resetQuery">
+                  重置
+                </el-button>
+                <el-button @click="handleQuery">
+                  <Icon icon="ep:search" class="mr-5px" /> 搜索
+                </el-button>
+              </el-form-item>
+            </el-col>
+          </el-row>
         </el-form>
       </div>
     </div>
     <el-row>
-      <el-col v-for="(o, index) in list" class="product-card" :key="index" :span="7" @mouseover="handleMouseOver(index)"
-        @mouseout="handleMouseOut(index)">
-        <el-card @click="showDialog('查看',o)">
+      <el-col v-for="(o, index) in list" class="card" :key="index" :span="7" :xl="7" :lg="7" :md="7" :sm="24" :xs="24"
+        @mouseover="handleMouseOver(index)" @mouseout="handleMouseOut(index)">
+        <el-card @click="showDialog('查看', o)">
           <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 5px;">
             <p style="width: 100%;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;font-size: 16px;color:#000"
               :title="o.name">{{ o.name }}
             </p>
-            <div @click.stop="showDialog('编辑',o)" v-show="o.showSetting" class="setting"
+            <div @click.stop="showDialog('编辑', o)" v-show="o.showSetting && !mobile" class="setting"
               v-hasPermi="['sale:merchant:update']">
               <el-icon size="20" color="rgb(220 223 231)">
                 <Setting />
@@ -106,14 +110,15 @@
   <!-- 表单弹窗:添加/修改 -->
   <!-- <MerchantForm ref="formRef" @success="getList" /> -->
 
-  <ZxDialog :tabs="tabs" :buttons="buttons"  @onButtonClick="handleButtonClick" :isDetail="isDetail" :initialComponent="initialComponent" :dialogTitle="dialogTitle" :id="parentId" v-model="dialogVisible" :openType="openType" />
-
+  <ZxDialog :tabs="tabs" :initialData="initialData" :buttonActions="buttonActions" :isDetail="isDetail"
+    :initialComponent="initialComponent" :dialogTitle="dialogTitle" :id="parentId" v-model="dialogVisible"
+    :openType="openType" />
 </template>
 
 <script setup lang="ts">
-import download from '@/utils/download'
 import { MerchantApi, MerchantVO } from '@/api/system/sale/merchant'
-import { Setting,Operation } from '@element-plus/icons-vue'
+import { Setting, Operation } from '@element-plus/icons-vue'
+const { currentRoute, push } = useRouter() // 路由跳转
 
 // 从路由中引入store中的app仓库
 import { useAppStore } from '@/store/modules/app'
@@ -136,40 +141,117 @@ const tabs = ref([
   { name: 'Finance', label: '财务', component: 'views/system/sale/merchant/components/MerchantFinance' },
   { name: 'Employee', label: '人员', component: 'views/system/sale/merchant/components/MerchantEmployee' },
 ]);
-
-const buttons = ref([
-  { label: '保存', action: 'confirm',type: 'primary' },
-  
+const initialData = ref({
+  logo: undefined,
+  id: undefined,
+  name: undefined,
+  status: undefined,
+  description: undefined,
+  contact: undefined,
+  address: undefined,
+  contactNumber: undefined,
+  website: undefined,
+  complaintsHotline: undefined,
+  customerServiceHotline: undefined,
+  email: undefined,
+  businessLicensePicture: undefined,
+  expireTime: undefined
+});
+const addData = JSON.parse(JSON.stringify(initialData.value));
+const updateParentData = (newData) => {
+  initialData.value = newData;
+};
+provide('updateParentData', updateParentData);
+
+// 定义按钮和对应的方法
+const buttonActions = ref([
+  {
+    name: '删除',
+    action: deleteData,
+    type: 'danger',
+    // 如果是增加时不显示
+    isAdd: false
+  },
+  {
+    name: '保存',
+    action: saveData,
+    type: 'primary',
+    isAdd: true
+  },
+
+  // 可以根据需要添加更多按钮和方法
 ]);
-// 操作分发
-const handleButtonClick = (action) => {
-  console.log(`Button ${action} clicked`);
-  // 根据 action 执行相应操作
-  if(action  === 'confirm'){
-    console.log("父保存")
+
+// 定义保存数据的方法
+async function saveData() {
+  console.log('保存数据', initialData.value);
+  // 实现数据保存的逻辑
+  // 提交请求
+  try {
+    const data = initialData.value as unknown as MerchantApi.MerchantVO
+    if (initialData.value.id == undefined) {
+      await MerchantApi.createMerchant(data)
+      message.success(t('common.createSuccess'))
+    } else {
+      await MerchantApi.updateMerchant(data)
+      message.success(t('common.updateSuccess'))
+    }
+    dialogVisible.value = false
+    // 发送操作成功的事件
+  } finally {
+    getList()
   }
-};
+}
+// 定义删除数据的方法
+function deleteData() {
+  // 调用删除
+  handleDelete(initialData.value.id)
+  // 关闭弹窗
+
+}
 const initialComponent = 'views/system/sale/merchant/components/MerchantBaseInfo';
 const parentId = ref(0);
 const dialogVisible = ref(false);
 const dialogTitle = ref("")
 const isDetail = ref(false);
 const openType = ref("")
-function showDialog(opentype: string, row:object) {
+async function showDialog(opentype: string, row: object) {
+
+  
   // 如果有row的话就是view或者edit
   openType.value = opentype;
-  if (row != null){
-    if (opentype == "查看"){
+  if (row != null) {
+    // 如果row不为null则证明是有数据,即是说是编辑或者查看状态
+    // 获取通过id查到数据再传给子组件
+    initialData.value = await MerchantApi.getMerchant(row.id);
+
+    // 如果是移动端,则进入移动端的页面
+    console.log("ismobile?", mobile.value)
+    if (mobile.value) {
+      push({
+        name: 'MobileDetail', query: {
+          tabs: JSON.stringify(tabs.value),
+          initialComponent: initialComponent.value,
+          id: row.id,
+          initialData: JSON.stringify(initialData.value)
+        }
+      })
+      return
+    }
+    if (opentype == "查看") {
+      console.log("查看")
+
       isDetail.value = true
-    }else{
+    } else {
       isDetail.value = false
     }
-    dialogTitle.value = opentype+"-"+row.name
+    dialogTitle.value = opentype + "-" + row.name
     parentId.value = row.id;
-  }else{
+  } else {
     isDetail.value = false
     dialogTitle.value = opentype
     parentId.value = 0;
+    initialData.value = addData.value
   }
 
   dialogVisible.value = true;
@@ -228,7 +310,6 @@ const getList = async () => {
     data.list.forEach(obj => {
       obj.showSetting = false;
     });
-
     list.value = data.list
     total.value = data.total
   } finally {
@@ -265,23 +346,10 @@ const handleDelete = async (id: number) => {
     message.success(t('common.delSuccess'))
     // 刷新列表
     await getList()
+    dialogVisible.value = false
   } catch { }
 }
 
-/** 导出按钮操作 */
-const handleExport = async () => {
-  try {
-    // 导出的二次确认
-    await message.exportConfirm()
-    // 发起导出
-    exportLoading.value = true
-    const data = await MerchantApi.exportMerchant(queryParams)
-    download.excel(data, '商户.xls')
-  } catch {
-  } finally {
-    exportLoading.value = false
-  }
-}
 
 /** 初始化 **/
 onMounted(() => {
@@ -289,33 +357,42 @@ onMounted(() => {
 })
 </script>
 
-<style lang="scss" scoped>
-::v-deep .el-form-item__label {
-  width: auto !important;
-}
-</style>
 
 <style lang="scss" scoped>
-.spu-div {
-  position: relative;
-  min-height: 400px;
-}
-::v-deep .el-card__body {
-	padding: 0;
-}
+@media screen and (max-width: 768px) {
+
+
+  .card {
+    margin: 10px 0 !important;
+  }
+
+  ::v-deep(.el-pagination__sizes),
+  ::v-deep(.el-pagination__jump) {
+    display: none;
+  }
+
+
+  .Content {
+    min-height: 100vh !important;
+  }
 
-::v-deep .parent-tabs .el-tabs__nav-wrap::after {
-  position: static !important;
+  ::v-deep(.el-tabs__item) {
+    padding: 0 4px;
+  }
+}
 
+::v-deep .el-form-item__label {
+  width: auto !important;
 }
 
-::v-deep .parent-tabs .el-tabs__active-bar {
 
-  background-color: unset;
+
+::v-deep .el-card__body {
+  padding: 0;
 }
 
 .searchMore {
-  text-align: right;
+  text-align: left;
   background: #f3f5f8;
   padding: 10px;
   position: absolute;
@@ -323,7 +400,9 @@ onMounted(() => {
   z-index: 111;
   box-shadow: 0px 9px 6px rgba(0, 0, 0, 0.2);
 
-
+  .el-row {
+    text-align: right;
+  }
 }
 
 .el-tabs {
@@ -333,8 +412,7 @@ onMounted(() => {
   left: 40px;
 }
 
-.product-card {
-
+.card {
   font-size: 14px;
   margin: 10px;
 
@@ -370,15 +448,4 @@ onMounted(() => {
     margin: unset;
     padding: unset;
   }
-}
-
-.spu-table-expand {
-  padding-left: 42px;
-
-  :deep(.el-form-item__label) {
-    width: 82px;
-    font-weight: bold;
-    color: #99a9bf;
-  }
-}
-</style>
+}</style>