|
@@ -5,12 +5,13 @@
|
|
|
* @Author: Cheney
|
|
|
*/
|
|
|
|
|
|
-import { Picture as IconPicture, RefreshLeft, Timer, Monitor } from '@element-plus/icons-vue';
|
|
|
+import { Edit, Monitor, Picture as IconPicture, RefreshLeft, Timer } from '@element-plus/icons-vue';
|
|
|
import { useResponse } from '/@/utils/useResponse';
|
|
|
import * as api from '/@/views/shop-information/api';
|
|
|
import { computerColumns, historyColumns, shopCurrentColumns } from '/@/views/shop-information/useColumns';
|
|
|
import { useTableData } from '/@/utils/useTableData';
|
|
|
import { usePagination } from '/@/utils/usePagination';
|
|
|
+import EditDrawer from './EditDrawer.vue';
|
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
@@ -28,7 +29,8 @@ const gridOptions: any = reactive({
|
|
|
toolbarConfig: {
|
|
|
custom: true,
|
|
|
slots: {
|
|
|
- buttons: 'toolbar_buttons'
|
|
|
+ buttons: 'toolbar_buttons',
|
|
|
+ tools: 'toolbar_tools'
|
|
|
}
|
|
|
},
|
|
|
rowConfig: {
|
|
@@ -47,15 +49,27 @@ const gridOptions: any = reactive({
|
|
|
icon: 'vxe-icon-indicator roll',
|
|
|
text: '正在拼命加载中...'
|
|
|
},
|
|
|
- columns: shopCurrentColumns,
|
|
|
- data: tableOptions.value.data
|
|
|
+ columns: '',
|
|
|
+ data: ''
|
|
|
+});
|
|
|
+
|
|
|
+const isOpen = ref(false);
|
|
|
+const formSelect = ref<{ country: string[], line: string[] }>({
|
|
|
+ country: [],
|
|
|
+ line: []
|
|
|
});
|
|
|
|
|
|
onBeforeMount(() => {
|
|
|
fetchShopDetailOverview();
|
|
|
handleTabChange(selectedTab.value);
|
|
|
+ fetchSelect();
|
|
|
});
|
|
|
|
|
|
+async function fetchSelect() {
|
|
|
+ const res = await useResponse({}, api.getShopSelect);
|
|
|
+ formSelect.value = res.data;
|
|
|
+}
|
|
|
+
|
|
|
async function fetchShopDetailOverview() {
|
|
|
const res = await useResponse({ platformNumber }, api.getShopDetailOverview, overviewLoading);
|
|
|
shopOverview.value = res.data;
|
|
@@ -72,21 +86,38 @@ async function handleTabChange(tabValue: any) {
|
|
|
switch (tabValue) {
|
|
|
case '1':
|
|
|
gridOptions.columns = shopCurrentColumns;
|
|
|
- await useTableData(api.getCurrentInfo, query, gridOptions); break
|
|
|
+ await useTableData(api.getCurrentInfo, query, gridOptions);
|
|
|
+ break;
|
|
|
case '2':
|
|
|
gridOptions.columns = historyColumns;
|
|
|
- await useTableData(api.getHistoryInfo, query, gridOptions); break
|
|
|
- case '3':
|
|
|
+ await useTableData(api.getHistoryInfo, query, gridOptions);
|
|
|
+ break;
|
|
|
+ case '3':
|
|
|
gridOptions.columns = computerColumns;
|
|
|
- await useTableData(api.getComputerInfo, query, gridOptions); break
|
|
|
+ await useTableData(api.getComputerInfo, query, gridOptions);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+function drawerOpen() {
|
|
|
+ isOpen.value = true;
|
|
|
+}
|
|
|
+
|
|
|
+function handleRefresh() {
|
|
|
+ handleTabChange(selectedTab.value);
|
|
|
+}
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
<div class="p-2.5">
|
|
|
<el-card v-loading="overviewLoading" body-class="flex items-center" shadow="hover" style="border: none">
|
|
|
- <el-image class="mr-7 rounded-2xl" src="" style="height: 120px; width: 120px; object-fit: contain">
|
|
|
+ <div v-if="platformNumber" class="artistic-text-container mr-7 ">
|
|
|
+ <div class="artistic-text">
|
|
|
+ {{ platformNumber }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-image v-else class="mr-7 rounded-2xl" src="" style="height: 120px; width: 120px; object-fit: contain">
|
|
|
<template #error>
|
|
|
<div class="mr-3.5 flex items-center justify-center text-5xl"
|
|
|
style="height: 120px; width: 120px; background-color: #f5f5f5">
|
|
@@ -185,6 +216,11 @@ async function handleTabChange(tabValue: any) {
|
|
|
</el-radio-button>
|
|
|
</el-radio-group>
|
|
|
</template>
|
|
|
+ <template #toolbar_tools>
|
|
|
+ <div class="mr-2.5">
|
|
|
+ <el-button :icon="Edit" plain type="warning" @click="drawerOpen">编辑</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
<template #pager>
|
|
|
<vxe-pager
|
|
|
v-model:currentPage="gridOptions.pagerConfig.page"
|
|
@@ -196,9 +232,159 @@ async function handleTabChange(tabValue: any) {
|
|
|
</template>
|
|
|
</vxe-grid>
|
|
|
</el-card>
|
|
|
+ <EditDrawer
|
|
|
+ v-if="isOpen"
|
|
|
+ v-model="isOpen"
|
|
|
+ :formSelect
|
|
|
+ :gridOptions="gridOptions"
|
|
|
+ :platformNumber
|
|
|
+ @refresh="handleRefresh"
|
|
|
+ />
|
|
|
+ <!--<el-drawer v-model="drawer" :title="`店铺编辑 - ${route.query.platformNumber}`" size="30%">
|
|
|
+ <el-form
|
|
|
+ ref="ruleFormRef"
|
|
|
+ :model="ruleForm"
|
|
|
+ :rules="rules"
|
|
|
+ class="mx-2.5 mt-2.5"
|
|
|
+ label-width="auto"
|
|
|
+ status-icon>
|
|
|
+ <el-form-item label="运营" prop="operatorName">
|
|
|
+ <el-input v-model="ruleForm.operatorName"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="平台编号" prop="platformNumber">
|
|
|
+ <el-input v-model="ruleForm.platformNumber"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="平台名称" prop="platformName">
|
|
|
+ <el-input v-model="ruleForm.platformName"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="国家" prop="country">
|
|
|
+ <el-select v-model="ruleForm.country" placeholder="请选择线路">
|
|
|
+ <el-option
|
|
|
+ v-for="item in formSelect.country"
|
|
|
+ :key="item"
|
|
|
+ :label="item"
|
|
|
+ :value="item">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="品牌名称" prop="brandName">
|
|
|
+ <el-input v-model="ruleForm.brandName"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="货币代码" prop="currencyCode">
|
|
|
+ <el-input v-model="ruleForm.currencyCode"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="状态" prop="status">
|
|
|
+ <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="平台" prop="platform">
|
|
|
+ <el-input v-model="ruleForm.platform"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="线路" prop="line">
|
|
|
+ <el-select v-model="ruleForm.line" placeholder="请选择线路">
|
|
|
+ <el-option
|
|
|
+ v-for="item in formSelect.line"
|
|
|
+ :key="item"
|
|
|
+ :label="item"
|
|
|
+ :value="item">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="IP 地址" prop="ipaddress">
|
|
|
+ <el-input v-model="ruleForm.ipaddress"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="公司" prop="company">
|
|
|
+ <el-input v-model="ruleForm.company"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="公司英文名称" prop="companyEnglishName">
|
|
|
+ <el-input v-model="ruleForm.companyEnglishName"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="地址" prop="address">
|
|
|
+ <el-input v-model="ruleForm.address"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="法人代表" prop="juridicalPerson">
|
|
|
+ <el-input v-model="ruleForm.juridicalPerson"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="法人信用卡" prop="juridicalPersonCreditCard">
|
|
|
+ <el-input v-model="ruleForm.juridicalPersonCreditCard"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="法人信用卡地址" prop="juridicalPersonCreditCardAddress">
|
|
|
+ <el-input v-model="ruleForm.juridicalPersonCreditCardAddress"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="应收账款账户" prop="receivablesAccount">
|
|
|
+ <el-input v-model="ruleForm.receivablesAccount"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="应收账款公司" prop="receivablesAccountCompany">
|
|
|
+ <el-input v-model="ruleForm.receivablesAccountCompany"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="VAT税号" prop="vatNumber">
|
|
|
+ <el-input v-model="ruleForm.vatNumber"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="VAT公司" prop="vatCompany">
|
|
|
+ <el-input v-model="ruleForm.vatCompany"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="主账户电话" prop="shopPhoneAndName">
|
|
|
+ <el-input :disabled="true" v-model="gridOptions.data[0].shopPhoneAndNameStr"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="主账户邮箱" prop="shopEmail">
|
|
|
+ <el-input v-model="ruleForm.shopEmail"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="子账户电话" prop="subShopPhoneAndName">
|
|
|
+ <el-input :disabled="true" v-model="gridOptions.data[0].subShopPhoneAndNameStr"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="子账户邮箱" prop="subShopEmail">
|
|
|
+ <el-input v-model="ruleForm.subShopEmail"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <div class="flex flex-1 justify-center">
|
|
|
+ <el-button type="primary" @click="submitForm(ruleFormRef)">确 定</el-button>
|
|
|
+ <el-button @click="resetForm(ruleFormRef)">重 置</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-drawer>-->
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<style scoped>
|
|
|
+.artistic-text-container {
|
|
|
+ height: 120px; /* 高度与要求一致 */
|
|
|
+ width: 120px; /* 宽度与要求一致 */
|
|
|
+ display: flex;
|
|
|
+ align-items: center; /* 垂直居中 */
|
|
|
+ justify-content: center; /* 水平居中 */
|
|
|
+ background-color: #f5f5f5; /* 背景色 */
|
|
|
+ border-radius: 12px; /* 圆角 */
|
|
|
+ overflow: hidden; /* 隐藏溢出部分 */
|
|
|
+ position: relative; /* 为绝对定位提供参考 */
|
|
|
+}
|
|
|
|
|
|
+.artistic-text {
|
|
|
+ font-size: 1rem; /* 初始字体大小 */
|
|
|
+ font-weight: bold; /* 加粗字体 */
|
|
|
+ text-align: center; /* 居中对齐 */
|
|
|
+ background: linear-gradient(90deg, #c86fc9, #3023ae);
|
|
|
+ -webkit-background-clip: text; /* 背景裁剪 */
|
|
|
+ -webkit-text-fill-color: transparent; /* 字体颜色透明 */
|
|
|
+ white-space: nowrap; /* 防止换行 */
|
|
|
+ overflow: hidden; /* 隐藏溢出部分 */
|
|
|
+ text-overflow: ellipsis; /* 溢出部分用省略号表示 */
|
|
|
+ transform: scale(1); /* 默认缩放为 1 */
|
|
|
+ transition: transform 0.2s ease; /* 动画过渡效果 */
|
|
|
+ max-width: 100%; /* 最大宽度为 100% */
|
|
|
+}
|
|
|
+
|
|
|
+/* 当文本溢出时,缩小文本以适应容器 */
|
|
|
+.artistic-text-container:has(.artistic-text) {
|
|
|
+ /* 计算并缩放文本 */
|
|
|
+ animation: scale-text 0.2s forwards;
|
|
|
+}
|
|
|
+
|
|
|
+/* @keyframes scale-text {
|
|
|
+ 0% {
|
|
|
+ transform: scale(1);
|
|
|
+ }
|
|
|
+ 100% {
|
|
|
+ transform: scale(calc(120px / var(--text-width))); !* 根据文本宽度缩放 *!
|
|
|
+ }
|
|
|
+} */
|
|
|
</style>
|