admin update

This commit is contained in:
全栈小学生 2023-06-03 18:25:35 +08:00
parent bae50619aa
commit 0e42f93707
100 changed files with 470 additions and 944 deletions

View File

@ -12,7 +12,7 @@ export function getNoticeList() {
/**
*
* @param params
* @param key
* @returns
*/
export function getNoticeInfo(key: string) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -16,8 +16,7 @@
</el-input>
</slot>
</div>
<el-dialog v-model="showDialog" :title="t('selectLinkTips')" width="40%" :close-on-press-escape="false"
:destroy-on-close="true" :close-on-click-modal="false">
<el-dialog v-model="showDialog" :title="t('selectLinkTips')" width="40%" :close-on-press-escape="false" :destroy-on-close="true" :close-on-click-modal="false">
<div class="flex items-start">
<el-scrollbar class="w-[140px] border-r h-[350px]">
@ -32,14 +31,12 @@
<template v-if="parentLinkName == 'DIY_LINK'">
<div class="mb-[16px]">
<el-form-item :label="t('diyLinkName')">
<el-input v-model="selectLink.title" :placeholder="t('diyLinkNamePlaceholder')"
class="w-6/12"/>
<el-input v-model="selectLink.title" :placeholder="t('diyLinkNamePlaceholder')" class="w-6/12"/>
</el-form-item>
</div>
<div class="mb-[16px]">
<el-form-item :label="t('diyLinkUrl')">
<el-input v-model="selectLink.url" :placeholder="t('diyLinkUrlPlaceholder')"
class="w-6/12"/>
<el-input v-model="selectLink.url" :placeholder="t('diyLinkUrlPlaceholder')" class="w-6/12"/>
</el-form-item>
</div>
<el-form-item label=" ">

View File

@ -1,8 +1,7 @@
<template>
<div class="border border-color">
<toolbar class="border-b border-color" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" />
<wang-editor :style="{ height, 'overflow-y': 'hidden', width: '100%' }" :defaultConfig="editorConfig" :mode="mode"
v-model="content" @onCreated="handleCreated" />
<wang-editor :style="{ height, 'overflow-y': 'hidden', width: '100%' }" :defaultConfig="editorConfig" :mode="mode" v-model="content" @onCreated="handleCreated" />
<upload-attachment type="image" ref="imageRef" :limit="10" @confirm="imageSelect" />
<upload-attachment type="video" ref="videoRef" @confirm="videoSelect" />
</div>

View File

@ -1,7 +1,6 @@
<template>
<el-popover placement="top" trigger="click" :width="prop.width" v-model:visible="visible">
<el-input v-model="value" :placeholder="prop.placeholder" clearable class="mr-[10px]" :maxlength="prop.maxlength"
:show-word-limit="true" />
<el-input v-model="value" :placeholder="prop.placeholder" clearable class="mr-[10px]" :maxlength="prop.maxlength" :show-word-limit="true" />
<div class="text-right mt-[15px]">
<el-button @click="visible = false">{{ t('cancel') }}</el-button>
<el-button type="primary" @click="confirm">{{ t('confirm') }}</el-button>

View File

@ -1,49 +1,16 @@
<template>
<div class="area-component">
<!-- -->
<el-select
:placeholder="t('provincePlaceholder')"
v-model="state.province"
clearable
@change="changeArea('province')"
>
<el-option
v-for="item in state.provinceList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select :placeholder="t('provincePlaceholder')" v-model="state.province" clearable @change="changeArea('province')">
<el-option v-for="item in state.provinceList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
<!-- -->
<el-select
:placeholder="t('cityPlaceholder')"
style="margin: 0 10px;"
:disabled="!state.province"
v-model="state.city"
clearable
@change="changeArea('city')"
>
<el-option
v-for="item in state.citiesList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select :placeholder="t('cityPlaceholder')" style="margin: 0 10px;" :disabled="!state.province" v-model="state.city" clearable @change="changeArea('city')">
<el-option v-for="item in state.citiesList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
<!-- -->
<el-select
:placeholder="t('districtPlaceholder')"
:disabled="!state.province || !state.city"
v-model="state.area"
clearable
@change="changeArea('area')"
>
<el-option
v-for="item in state.areasList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select :placeholder="t('districtPlaceholder')" :disabled="!state.province || !state.city" v-model="state.area" clearable @change="changeArea('area')">
<el-option v-for="item in state.areasList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</div>
</template>
@ -88,7 +55,6 @@ const state = reactive({
area: ""
})
onBeforeMount(async ()=>{
state.provinceList = (await getAreaListByPid(0)).data
})
@ -120,7 +86,6 @@ watch(()=>state.city, (val)=>{
}
})
const emitsArea = () => {
const paramsData = {
province: {} as areaType,

View File

@ -7,23 +7,19 @@
<div class="head flex w-full mb-[10px]">
<span>请选择图标</span>
<div class="flex justify-end flex-auto">
<span class="ml-[10px] cursor-pointer" :class="{ active: type == 'element' }"
@click="type = 'element'">element</span>
<span class="ml-[10px] cursor-pointer" :class="{ active: type == 'iconfont' }"
@click="type = 'iconfont'">iconfont</span>
<span class="ml-[10px] cursor-pointer" :class="{ active: type == 'element' }" @click="type = 'element'">element</span>
<span class="ml-[10px] cursor-pointer" :class="{ active: type == 'iconfont' }" @click="type = 'iconfont'">iconfont</span>
</div>
</div>
<div class="icon-wrap h-[240px]">
<el-scrollbar>
<div class="flex flex-wrap" v-show="type == 'element'">
<el-button v-for="icon in element" class="w-[35px] h-[35px] icon-item"
@click="selectIcon('element-' + icon)">
<el-button v-for="icon in element" class="w-[35px] h-[35px] icon-item" @click="selectIcon('element-' + icon)">
<icon :name="'element-' + icon" />
</el-button>
</div>
<div class="flex flex-wrap" v-show="type == 'iconfont'">
<el-button v-for="icon in iconfont" class="w-[35px] h-[35px] icon-item"
@click="selectIcon('iconfont-' + icon)">
<el-button v-for="icon in iconfont" class="w-[35px] h-[35px] icon-item" @click="selectIcon('iconfont-' + icon)">
<icon :name="'iconfont-' + icon" />
</el-button>
</div>

View File

@ -7,25 +7,18 @@
prefix-icon="Search" @input="getAttachmentCategoryList()" />
<div class="group-list flex-1 my-[10px]">
<el-scrollbar>
<div class="group-item p-[10px] leading-none text-xs rounded cursor-pointer"
:class="{ active: attachmentParam.cate_id == 0 }" @click="attachmentParam.cate_id = 0">
<div class="group-item p-[10px] leading-none text-xs rounded cursor-pointer" :class="{ active: attachmentParam.cate_id == 0 }" @click="attachmentParam.cate_id = 0">
{{ t('selectPlaceholder') }}
</div>
<div class="group-item px-[10px] text-xs rounded cursor-pointer flex"
v-for="(item, index) in attachmentCategory.data" :key="index"
:class="{ active: attachmentParam.cate_id == item.id }">
<div class="flex-1 leading-none truncate py-[10px]" @click="attachmentParam.cate_id = item.id">{{
item.name }}
</div>
<div class="group-item px-[10px] text-xs rounded cursor-pointer flex" v-for="(item, index) in attachmentCategory.data" :key="index" :class="{ active: attachmentParam.cate_id == item.id }">
<div class="flex-1 leading-none truncate py-[10px]" @click="attachmentParam.cate_id = item.id">{{item.name }}</div>
<div class="leading-none operate py-[10px]" v-if="scene == 'attachment'">
<!-- 编辑分组 -->
<popover-input :placeholder="t('upload.attachmentCategoryPlaceholder')"
@confirm="updateAttachmentCategory($event, index)" :value="item.name">
<popover-input :placeholder="t('upload.attachmentCategoryPlaceholder')" @confirm="updateAttachmentCategory($event, index)" :value="item.name">
<span class="text-primary">{{ t('edit') }}</span>
</popover-input>
<!-- 删除分组 -->
<span class="text-danger ml-[5px]" @click="deleteAttachmentCategory(index)">{{ t('delete')
}}</span>
<span class="text-danger ml-[5px]" @click="deleteAttachmentCategory(index)">{{ t('delete')}}</span>
</div>
</div>
</el-scrollbar>
@ -44,52 +37,41 @@
<el-button type="primary">{{ t('upload.upload' + type) }} {{ isOpen }}</el-button>
</el-upload>
<div v-if="scene == 'attachment'">
<el-button v-if="operate === false" class="ml-[10px]" type="primary" @click="operate = true">{{
t('edit') }}</el-button>
<el-button v-else class="ml-[10px]" type="primary" @click="operate = false">{{ t('complete')
}}</el-button>
<el-button v-if="operate === false" class="ml-[10px]" type="primary" @click="operate = true">{{t('edit') }}</el-button>
<el-button v-else class="ml-[10px]" type="primary" @click="operate = false">{{ t('complete') }}</el-button>
</div>
</div>
</el-col>
<el-col :span="12" class="text-right">
<el-input v-model="attachmentParam.real_name" class="m-0 w-[200px]" clearable
:placeholder="t('upload.placeholder' + type + 'Name')" prefix-icon="Search"
@input="getAttachmentList()" />
<el-input v-model="attachmentParam.real_name" class="m-0 w-[200px]" clearable :placeholder="t('upload.placeholder' + type + 'Name')" prefix-icon="Search" @input="getAttachmentList()" />
</el-col>
</el-row>
<div class="flex-1 my-[15px] h-0" v-loading="attachment.loading">
<el-scrollbar>
<div class="flex flex-wrap" v-if="attachment.data.length && (operate === true || scene != 'attachment')">
<div class="attachment-item mr-[10px]" :class="scene == 'select' ? 'w-[100px]' : 'w-[120px]'"
v-for="(item, index) in attachment.data" :key="index">
<div class="attachment-wrap w-full rounded cursor-pointer overflow-hidden relative flex items-center justify-center"
:class="scene == 'select' ? 'h-[100px]' : 'h-[120px]'" @click="selectFile(item)">
<div class="attachment-item mr-[10px]" :class="scene == 'select' ? 'w-[100px]' : 'w-[120px]'" v-for="(item, index) in attachment.data" :key="index">
<div class="attachment-wrap w-full rounded cursor-pointer overflow-hidden relative flex items-center justify-center" :class="scene == 'select' ? 'h-[100px]' : 'h-[120px]'" @click="selectFile(item)">
<el-image :src="img(item.url)" fit="contain" v-if="type == 'image'"></el-image>
<video :src="img(item.url)" v-else></video>
<div class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60"
v-show="selectedFile[item.att_id]">
<div class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60" v-show="selectedFile[item.att_id]">
<icon name="element-Select" color="#fff" size="25px" />
</div>
</div>
<div class="flex items-center">
<el-tooltip placement="top">
<template #content>{{ item.real_name }}</template>
<div class="truncate my-[10px] cursor-pointer text-base flex-1 ">
{{ item.real_name }}
</div>
<div class="truncate my-[10px] cursor-pointer text-base flex-1 ">{{ item.real_name }}</div>
</el-tooltip>
<!-- 图片操作 -->
<el-dropdown :hide-on-click="false" v-if="scene == 'attachment'">
<icon name="element-MoreFilled" class="cursor-pointer ml-[10px]" size="14px" />
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item class="text-center" @click="previewImage(index)"
v-if="item.att_type == 'image'">
<el-dropdown-item class="text-center" @click="previewImage(index)" v-if="item.att_type == 'image'">
<div class="text-center w-full">{{ t('lookOver') }}</div>
</el-dropdown-item>
<el-dropdown-item class="text-center" @click="previewVideo(index)"
v-if="item.att_type == 'video'">
<el-dropdown-item class="text-center" @click="previewVideo(index)" v-if="item.att_type == 'video'">
<div class="text-center w-full">{{ t('lookOver') }}</div>
</el-dropdown-item>
<el-dropdown-item class="text-center" @click="moveAttachmentEvent(index)">
@ -105,20 +87,15 @@
</div>
</div>
<div class="flex flex-wrap" v-else-if="attachment.data.length && operate === false">
<div class="attachment-item mr-[10px] w-[120px]" v-for="(item, index) in attachment.data"
:key="index">
<div
class="attachment-wrap w-full rounded cursor-pointer overflow-hidden relative flex items-center justify-center h-[120px]">
<el-image :src="img(item.url)" fit="contain" v-if="type == 'image'"
:preview-src-list="item.image_list"></el-image>
<div class="attachment-item mr-[10px] w-[120px]" v-for="(item, index) in attachment.data" :key="index">
<div class="attachment-wrap w-full rounded cursor-pointer overflow-hidden relative flex items-center justify-center h-[120px]">
<el-image :src="img(item.url)" fit="contain" v-if="type == 'image'" :preview-src-list="item.image_list"></el-image>
<video :src="img(item.url)" v-else></video>
</div>
<div class="flex items-center">
<el-tooltip placement="top">
<template #content>{{ item.real_name }}</template>
<div class="truncate my-[10px] cursor-pointer text-base flex-1 ">
{{ item.real_name }}
</div>
<div class="truncate my-[10px] cursor-pointer text-base flex-1 ">{{ item.real_name }}</div>
</el-tooltip>
</div>
</div>
@ -132,18 +109,13 @@
<el-col :span="8" v-if="scene == 'attachment' && operate === true">
<div class="flex items-center">
<el-checkbox v-model="selectAll" :label="t('selectAll')" size="large" />
<el-button class="ml-[15px]" :disabled="batchOperateDisabled" @click="deleteAttachmentEvent()">{{
t('delete') }}</el-button>
<el-button :disabled="batchOperateDisabled" @click="moveAttachmentEvent()">{{ t('upload.move')
}}</el-button>
<el-button class="ml-[15px]" :disabled="batchOperateDisabled" @click="deleteAttachmentEvent()">{{t('delete') }}</el-button>
<el-button :disabled="batchOperateDisabled" @click="moveAttachmentEvent()">{{ t('upload.move') }}</el-button>
</div>
</el-col>
<el-col :span="scene == 'attachment' ? 16 : 24">
<div class="flex h-full justify-end items-center">
<el-pagination v-model:current-page="attachment.page" :small="true"
v-model:page-size="attachment.limit" :page-sizes="[10, 20, 40, 60]"
layout="total, sizes, prev, pager, next, jumper" :total="attachment.total"
@size-change="getAttachmentList()" @current-change="getAttachmentList" />
<el-pagination v-model:current-page="attachment.page" :small="true" v-model:page-size="attachment.limit" :page-sizes="[10, 20, 40, 60]" layout="total, sizes, prev, pager, next, jumper" :total="attachment.total" @size-change="getAttachmentList()" @current-change="getAttachmentList" />
</div>
</el-col>
</el-row>
@ -155,8 +127,7 @@
<el-form label-width="60px">
<el-form-item :label="t('upload.moveTo')" style="margin-bottom: 0;">
<el-select v-model="moveAttachmentData.cateId" class="input-width">
<el-option :label="item.name" :value="item.id" v-for="(item, index) in attachmentCategory.data"
:key="index" />
<el-option :label="item.name" :value="item.id" v-for="(item, index) in attachmentCategory.data" :key="index" />
</el-select>
</el-form-item>
</el-form>
@ -164,20 +135,16 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="moveAttachmentData.visible = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="moveAttachmentData.loading"
@click="moveAttachmentData.confirm()">{{
t('confirm') }}</el-button>
<el-button type="primary" :loading="moveAttachmentData.loading" @click="moveAttachmentData.confirm()">{{t('confirm') }}</el-button>
</span>
</template>
</el-dialog>
<!-- 图片预览 -->
<el-image-viewer :url-list="previewImageList" v-if="imageViewer.show" @close="imageViewer.show = false"
:initial-index="imageViewer.index" :zoom-rate="1" />
<el-image-viewer :url-list="previewImageList" v-if="imageViewer.show" @close="imageViewer.show = false" :initial-index="imageViewer.index" :zoom-rate="1" />
<!-- 视频预览 -->
<el-dialog v-model="videoViewer.visible" width="50%" align-center :destroy-on-close="true"
custom-class="video-preview">
<el-dialog v-model="videoViewer.visible" width="50%" align-center :destroy-on-close="true" custom-class="video-preview">
<video-player :src="videoViewer.src" width="100%" />
</el-dialog>

View File

@ -2,8 +2,7 @@
<span @click="openDialog" class="cursor-pointer">
<slot></slot>
</span>
<el-dialog v-model="showDialog" :title="t('upload.select' + type)" width="60%" class="attachment-dialog"
:destroy-on-close="true">
<el-dialog v-model="showDialog" :title="t('upload.select' + type)" width="60%" class="attachment-dialog" :destroy-on-close="true">
<attachment :limit="limit" :type="type" ref="attachmentRef" />

View File

@ -1,14 +1,12 @@
<template>
<div class="flex flex-wrap">
<template v-if="limit == 1">
<div class="rounded cursor-pointer overflow-hidden relative border border-dashed border-color image-wrap mr-[10px]"
:style="style">
<div class="rounded cursor-pointer overflow-hidden relative border border-dashed border-color image-wrap mr-[10px]" :style="style">
<div class="w-full h-full relative" v-if="images.data.length">
<div class="w-full h-full flex items-center justify-center">
<el-image :src="img(images.data[0])" fit="contain"></el-image>
</div>
<div
class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<div class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<icon name="element-ZoomIn" color="#fff" size="18px" class="mr-[10px]" @click="previewImage()" />
<icon name="element-Delete" color="#fff" size="18px" @click="removeImage" />
</div>
@ -22,22 +20,18 @@
</div>
</template>
<template v-else>
<div class="rounded cursor-pointer overflow-hidden relative border border-dashed border-color image-wrap mr-[10px]"
:style="style" v-for="(item, index) in images.data" :key="index">
<div class="rounded cursor-pointer overflow-hidden relative border border-dashed border-color image-wrap mr-[10px]" :style="style" v-for="(item, index) in images.data" :key="index">
<div class="w-full h-full relative">
<div class="w-full h-full flex items-center justify-center">
<el-image :src="img(item)" fit="contain"></el-image>
</div>
<div
class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<icon name="element-ZoomIn" color="#fff" size="18px" class="mr-[10px]"
@click="previewImage(index)" />
<div class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<icon name="element-ZoomIn" color="#fff" size="18px" class="mr-[10px]" @click="previewImage(index)" />
<icon name="element-Delete" color="#fff" size="18px" @click="removeImage(index)" />
</div>
</div>
</div>
<div class="rounded cursor-pointer overflow-hidden relative border border-dashed border-color" :style="style"
v-if="images.data.length < limit">
<div class="rounded cursor-pointer overflow-hidden relative border border-dashed border-color" :style="style" v-if="images.data.length < limit">
<upload-attachment :limit="limit" @confirm="confirmSelect">
<div class="w-full h-full flex items-center justify-center flex-col">
<icon name="element-Plus" size="20px" color="var(--el-text-color-secondary)" />
@ -48,8 +42,7 @@
</template>
</div>
<el-image-viewer :url-list="previewImageList" v-if="imageViewer.show" @close="imageViewer.show = false"
:initial-index="imageViewer.index" :zoom-rate="1" />
<el-image-viewer :url-list="previewImageList" v-if="imageViewer.show" @close="imageViewer.show = false" :initial-index="imageViewer.index" :zoom-rate="1" />
</template>
<script lang="ts" setup>

View File

@ -5,13 +5,11 @@
<template v-if="videos.data.length">
<div class="w-full h-full relative flex items-center overflow-hidden rounded">
<video :src="img(videos.data[0])" class="w-full" />
<div
class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<div class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<icon name="iconfont-icon24gf-playCircle" color="#fff" size="25px" @click="previewVideo()" />
</div>
</div>
<icon name="element-CircleCloseFilled" color="#bbb" size="18px" @click="removeVideo"
class="absolute z-[2] top-[-9px] right-[-9px]" />
<icon name="element-CircleCloseFilled" color="#bbb" size="18px" @click="removeVideo" class="absolute z-[2] top-[-9px] right-[-9px]" />
</template>
<upload-attachment :limit="limit" type="video" @confirm="confirmSelect" v-else>
<div class="w-full h-full flex items-center justify-center flex-col">
@ -25,16 +23,13 @@
v-for="(item, index) in videos.data" :key="index">
<div class="w-full h-full relative flex items-center overflow-hidden rounded">
<video :src="img(item)" class="w-full" />
<div
class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<div class="absolute z-[1] flex items-center justify-center w-full h-full inset-0 bg-black bg-opacity-60 operation">
<icon name="iconfont-icon24gf-playCircle" color="#fff" size="25px" @click="previewVideo(index)" />
</div>
</div>
<icon name="element-CircleCloseFilled" color="#bbb" size="18px" @click="removeVideo(index)"
class="absolute z-[2] top-[-9px] right-[-9px]" />
<icon name="element-CircleCloseFilled" color="#bbb" size="18px" @click="removeVideo(index)" class="absolute z-[2] top-[-9px] right-[-9px]" />
</div>
<div class="rounded cursor-pointer relative bg-page video-wrap mr-[10px]" :style="style"
v-if="videos.data.length < limit">
<div class="rounded cursor-pointer relative bg-page video-wrap mr-[10px]" :style="style" v-if="videos.data.length < limit">
<upload-attachment :limit="limit" type="video" @confirm="confirmSelect">
<div class="w-full h-full flex items-center justify-center flex-col">
<icon name="iconfont-icon24gf-playCircle" size="25px" color="var(--el-text-color-secondary)" />
@ -44,8 +39,7 @@
</template>
<!-- 视频预览 -->
<el-dialog v-model="videoViewer.visible" width="50%" align-center :destroy-on-close="true"
custom-class="video-preview">
<el-dialog v-model="videoViewer.visible" width="50%" align-center :destroy-on-close="true" custom-class="video-preview">
<video-player :src="videoViewer.src" width="100%" />
</el-dialog>

View File

@ -98,7 +98,6 @@ import { computed, ref,watch,toRefs,watchEffect } from 'vue';
* @description 刷新
* */
const refresh = ()=>{
console.log(instance.value);
if (instance.value.refresh) {
instance.value.refresh()
}

View File

@ -200,7 +200,6 @@
} else { //
var x = e.touches[0].pageX;
}
console.log(barArea);
startLeft.value =Math.floor(x - barArea.value.getBoundingClientRect().left);
startMoveTime.value = +new Date(); //
if (isEnd.value == false) {

View File

@ -3,10 +3,10 @@
"weappOriginal": "小程序原始ID",
"weappQrcode": "小程序二维码",
"weappQrcodeTips": "建议尺寸上传430px*430px宽高的二维码",
"weappAppid": "开发者ID",
"weappAppidTips": "开发者ID是小程序开发识别码配合开发者密码可调用小程序的接口能力。",
"weappAppsecret": "开发者密码",
"weappAppsecretTips": "开发者密码是校验小程序开发者身份的密码,具有极高的安全性",
"weappAppid": "AppID(小程序ID)",
"weappAppidTips": "AppID是小程序开发识别码配合AppSecret可调用小程序的接口能力。",
"weappAppsecret": "AppSecret(小程序密钥)",
"weappAppsecretTips": "AppSecret是校验小程序开发者身份的密钥,具有极高的安全性",
"businessDomain": "业务域名",
"requestUrl": "request合法域名",
"socketUrl": "socket合法域名",

View File

@ -41,6 +41,9 @@
"imageAdsTips": "建议上传尺寸相同的图片推荐尺寸750*350",
"addImageAd": "添加图片",
"imageUrlTip": "请上传图片",
"imageHeight": "图片高度",
"imageHeightPlaceholder": "请输入图片高度",
"imageHeightRegNum": "图片高度格式错误,请输入数字",
"articleData": "文章数据",
"articleStyle": "文章样式",
"articleBgColor": "文章背景",

View File

@ -1,9 +1,10 @@
<template>
<el-aside :class="['h-screen layout-aside w-auto',{'bright': !dark}]">
<el-aside :class="['h-screen layout-aside w-auto', { 'bright': !dark }]">
<side class="hidden-xs-only" />
</el-aside>
<el-drawer v-model="systemStore.menuDrawer" direction="ltr" :with-header="false" custom-class="aside-drawer" size="210px">
<el-drawer v-model="systemStore.menuDrawer" direction="ltr" :with-header="false" custom-class="aside-drawer"
size="210px">
<template #default>
<side />
</template>
@ -11,13 +12,13 @@
</template>
<script lang="ts" setup>
import { watch,computed } from 'vue'
import { watch, computed } from 'vue'
import { useRoute } from 'vue-router'
import side from './side.vue'
import useSystemStore from '@/stores/modules/system'
const systemStore = useSystemStore()
const dark = computed(()=>{
const dark = computed(() => {
return systemStore.dark
})
@ -33,16 +34,19 @@ watch(route, () => {
.layout-aside {
background-color: var(--side-dark-color, var(--el-bg-color));
border-right: 1px solid var(--el-border-color-lighter);
z-index: 101;
&.bright{
&.bright {
background-color: #F5F7F9;
li{
li {
background-color: #F5F7F9;
&.is-active:not(.is-opened){
&.is-active:not(.is-opened) {
position: relative;
color: #333;
background-color: #fff;
&::after{
&::after {
content: "";
position: absolute;
top: 0;
@ -60,5 +64,4 @@ watch(route, () => {
.el-drawer__body {
padding: 0px !important;
}
}
</style>
}</style>

View File

@ -7,8 +7,7 @@
</div>
<span :class="['ml-[10px]', {'text-[15px]': routes.meta.class == 1}, {'text-[14px]': routes.meta.class != 1}]">{{ meta.title }}</span>
</template>
<menu-item v-for="(route, index) in routes.children" :routes="route" :route-path="resolvePath(route.path)"
:key="index" />
<menu-item v-for="(route, index) in routes.children" :routes="route" :route-path="resolvePath(route.path)" :key="index" />
</el-sub-menu>
<el-menu-item v-else-if="routes.meta.class == 1" :index="String(routes.name)" :route="routePath">
<div v-if="meta.icon" class="w-[16px] h-[16px] relative flex justify-center">

View File

@ -12,8 +12,7 @@
<el-main class="menu-wrap">
<el-scrollbar>
<el-menu :default-active="menuActive" :router="true" class="aside-menu h-full" unique-opened="true"
:collapse="systemStore.menuIsCollapse">
<el-menu :default-active="menuActive" :router="true" class="aside-menu h-full" unique-opened="true" :collapse="systemStore.menuIsCollapse">
<menu-item v-for="(route, index) in userStore.routers" :routes="route" :route-path="route.path" :key="index" />
</el-menu>
</el-scrollbar>
@ -30,7 +29,7 @@ import menuItem from './menu-item.vue'
import storage from '@/utils/storage'
import { img } from '@/utils/common'
const logo = ref('assets/images/logo-square.png')
const logo = ref('assets/images/login_logo.png')
const systemStore = useSystemStore()
const userStore = useUserStore()
const route = useRoute()

View File

@ -23,9 +23,7 @@
<!-- 面包屑导航 -->
<div class="flex items-center h-full pl-[10px] hidden-xs-only">
<el-breadcrumb separator="/">
<el-breadcrumb-item v-for="(route, index) in breadcrumb" :key="index">{{
route.meta.title
}}</el-breadcrumb-item>
<el-breadcrumb-item v-for="(route, index) in breadcrumb" :key="index">{{route.meta.title }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
</div>
@ -57,8 +55,7 @@
<input type="hidden" v-model="comparisonToken">
<input type="hidden" v-model="comparisonSiteId">
<el-dialog v-model="detectionLoginDialog" :title="t('layout.detectionLoginTip')" width="30%"
:close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
<el-dialog v-model="detectionLoginDialog" :title="t('layout.detectionLoginTip')" width="30%" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
<span>{{ t('layout.detectionLoginContent') }}</span>
<template #footer>
<span class="dialog-footer">

View File

@ -8,15 +8,9 @@
<span :class="{ 'text-primary': route.path == tab.path }" class="tab-name">{{ tab.title }}</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item icon="Back" :disabled="index == 0" @click="closeLeft(tab.path)">{{
t('tabs.closeLeft')
}}</el-dropdown-item>
<el-dropdown-item icon="Right" :disabled="index == (tabbarStore.tabLength - 1)"
@click="closeRight(tab.path)">{{
t('tabs.closeRight') }}</el-dropdown-item>
<el-dropdown-item icon="Close" :disabled="tabbarStore.tabLength == 1"
@click="closeOther(tab.path)">{{
t('tabs.closeOther') }}</el-dropdown-item>
<el-dropdown-item icon="Back" :disabled="index == 0" @click="closeLeft(tab.path)">{{t('tabs.closeLeft') }}</el-dropdown-item>
<el-dropdown-item icon="Right" :disabled="index == (tabbarStore.tabLength - 1)" @click="closeRight(tab.path)">{{t('tabs.closeRight') }}</el-dropdown-item>
<el-dropdown-item icon="Close" :disabled="tabbarStore.tabLength == 1" @click="closeOther(tab.path)">{{t('tabs.closeOther') }}</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>

View File

@ -13,12 +13,10 @@
</div>
<div class="relative">
<div class="absolute right-0 top-[2px] flex items-center cursor-pointer z-20 border border-inherit">
<div class="flex item-center justify-center px-[6px] py-[4px]"
:class="{ 'bg-slate-200': showType == 'small' }" @click="showType = 'small'">
<div class="flex item-center justify-center px-[6px] py-[4px]" :class="{ 'bg-slate-200': showType == 'small' }" @click="showType = 'small'">
<img src="@/assets/images/app_store/switch_icon_1.png" class=" w-[16px] h-[16px]">
</div>
<div class="flex item-center justify-center px-[6px] py-[4px]"
:class="{ 'bg-slate-200': showType == 'large' }" @click="showType = 'large'">
<div class="flex item-center justify-center px-[6px] py-[4px]" :class="{ 'bg-slate-200': showType == 'large' }" @click="showType = 'large'">
<img src="@/assets/images/app_store/switch_icon_2.png" class="w-[16px] h-[16px] ">
</div>
</div>
@ -26,34 +24,25 @@
<el-tab-pane :label="installLabel" name="installed">
<div class="flex flex-wrap px-2 plug-list pb-10">
<div v-for="(item, index) in localList.installed" :key="index + 'a'"
class="flex items-center cursor-pointer w-[295px] relative plug-item mr-4 mb-4"
@click="getAddonDetialFn(item)" v-if="showType == 'small'">
<div v-for="(item, index) in localList.installed" :key="index + 'a'" class="flex items-center cursor-pointer w-[295px] relative plug-item mr-4 mb-4" @click="getAddonDetialFn(item)" v-if="showType == 'small'">
<div class="p-3">
<img class="w-[44px] h-[44px] rounded-sm" v-if="item.icon" :src="img(item.icon)" alt="">
<img class="w-[44px] h-[44px] rounded-sm" v-else src="@/assets/images/icon-addon.png"
alt="">
<img class="w-[44px] h-[44px] rounded-sm" v-else src="@/assets/images/icon-addon.png" alt="">
</div>
<div class="flex items-center w-[220px] border-b py-3 justify-between">
<div class="flex flex-col">
<span class="text-[14px] truncate w-[160px]">{{ item.title }}</span>
<span class="text-xs text-gray-400 truncate w-[160px] mt-[4px]">{{ item.desc }}</span>
</div>
<span
class="w-max flex items-center plug-item-operate border rounded-2xl px-3.5 py-1.5 leading-none "
@click.stop="uninstallAddonFn(item.key)">{{ t('unload') }}</span>
<span class="w-max flex items-center plug-item-operate border rounded-2xl px-3.5 py-1.5 leading-none " @click.stop="uninstallAddonFn(item.key)">{{ t('unload') }}</span>
</div>
</div>
<div class="flex flex-wrap plug-list pb-10 plug-large" v-if="showType == 'large'">
<div class="app-item cursor-pointer mr-4 mt-[20px] pb-2 bg-[#f7f7f7]"
v-for="(item, index) in localList.installed" :key="index + 'a'"
@click="getAddonDetialFn(item)">
<div class="app-item cursor-pointer mr-4 mt-[20px] pb-2 bg-[#f7f7f7]" v-for="(item, index) in localList.installed" :key="index + 'a'" @click="getAddonDetialFn(item)">
<div class="flex justify-center items-center">
<img class="w-[240px] h-[120px]" v-if="item.cover" :src="img(item.cover)" />
<img v-else class="w-[240px] h-[120px]"
src="@/assets/images/app_store/app_store_default.png" />
<img v-else class="w-[240px] h-[120px]" src="@/assets/images/app_store/app_store_default.png" />
</div>
<div class="flex w-[240px] h-[46px]">
<div class="text-left mt-2 w-[190px]">
@ -61,25 +50,20 @@
<p class="app-text text-[12px] text-[#999] pl-2">{{ item.desc }}</p>
</div>
<div class="flex items-center pr-2">
<span
class="w-max flex items-center plug-item-operate border rounded-2xl px-2 py-1 leading-none mt-[10px]"
@click.stop="uninstallAddonFn(item.key)">{{ t('unload') }}</span>
<span class="w-max flex items-center plug-item-operate border rounded-2xl px-2 py-1 leading-none mt-[10px]" @click.stop="uninstallAddonFn(item.key)">{{ t('unload') }}</span>
</div>
</div>
</div>
</div>
<el-empty :description="t('noPlug')" v-if="!localList.installed.length && !loading"
class="mx-auto" />
<el-empty :description="t('noPlug')" v-if="!localList.installed.length && !loading" class="mx-auto" />
</div>
</el-tab-pane>
<el-tab-pane :label="uninstalledLabel" name="uninstalled">
<div class="flex flex-wrap px-2 plug-list pb-10">
<div v-for="(item, index) in localList.uninstalled" :key="index + 'a'"
class="flex items-center cursor-pointer w-[295px] relative plug-item mr-4 mb-4"
@click="getAddonDetialFn(item)" v-if="showType == 'small'">
<div v-for="(item, index) in localList.uninstalled" :key="index + 'a'" class="flex items-center cursor-pointer w-[295px] relative plug-item mr-4 mb-4" @click="getAddonDetialFn(item)" v-if="showType == 'small'">
<div class="p-3">
<!-- <img class="w-[44px] h-[44px] rounded-sm" v-if="item.icon" :src="img(item.icon)" alt=""> -->
<img class="w-[44px] h-[44px] rounded-sm" src="@/assets/images/icon-addon.png" alt="">
@ -89,21 +73,16 @@
<span class="text-[14px] truncate w-[160px]">{{ item.title }}</span>
<span class="text-xs text-gray-400 truncate w-[160px] mt-[4px]">{{ item.desc }}</span>
</div>
<span
class="w-max flex items-center plug-item-operate border rounded-2xl px-3.5 py-1.5 leading-none "
@click.stop="installAddonFn(item.key)">{{ t('install') }}</span>
<span class="w-max flex items-center plug-item-operate border rounded-2xl px-3.5 py-1.5 leading-none" @click.stop="installAddonFn(item.key)">{{ t('install') }}</span>
</div>
</div>
<div class="flex flex-wrap plug-list pb-10 plug-large" v-if="showType == 'large'">
<div class="app-item cursor-pointer mr-4 mt-[20px] pb-2 bg-[#f7f7f7]"
v-for="(item, index) in localList.uninstalled" :key="index + 'a'"
@click="getAddonDetialFn(item)">
<div class="app-item cursor-pointer mr-4 mt-[20px] pb-2 bg-[#f7f7f7]" v-for="(item, index) in localList.uninstalled" :key="index + 'a'" @click="getAddonDetialFn(item)">
<div class="flex justify-center items-center">
<!-- <img class="w-[240px] h-[120px]" v-if="item.cover" :src="img(item.cover)"/> -->
<img class="w-[240px] h-[120px]"
src="@/assets/images/app_store/app_store_default.png" />
<img class="w-[240px] h-[120px]" src="@/assets/images/app_store/app_store_default.png" />
</div>
<div class="flex w-[240px] h-[46px]">
@ -112,17 +91,14 @@
<p class="app-text text-[12px] text-[#999] pl-2">{{ item.desc }}</p>
</div>
<div class="flex items-center pr-2">
<span
class="w-max flex items-center plug-item-operate border rounded-2xl px-2 py-1 leading-none mt-[10px]"
@click.stop="installAddonFn(item.key)">{{ t('install') }}</span>
<span class="w-max flex items-center plug-item-operate border rounded-2xl px-2 py-1 leading-none mt-[10px]" @click.stop="installAddonFn(item.key)">{{ t('install') }}</span>
</div>
</div>
</div>
</div>
<el-empty :description="t('noPlug')" v-if="!localList.uninstalled.length && !loading"
class="mx-auto" />
<el-empty :description="t('noPlug')" v-if="!localList.uninstalled.length && !loading" class="mx-auto" />
</div>
</el-tab-pane>
</el-tabs>
@ -152,8 +128,7 @@
</el-dialog>
<!-- 安装弹窗 -->
<el-dialog v-model="installShowDialog" :title="t('addonInstall')" width="60vw" :close-on-click-modal="false"
:close-on-press-escape="false" :before-close="installShowDialogClose">
<el-dialog v-model="installShowDialog" :title="t('addonInstall')" width="60vw" :close-on-click-modal="false" :close-on-press-escape="false" :before-close="installShowDialogClose">
<el-steps :space="200" :active="installStep" finish-status="success" align-center>
<el-step :title="t('envCheck')" class="flex-1" />
<el-step :title="t('installProgress')" class="flex-1" />
@ -163,8 +138,7 @@
<el-scrollbar max-height="50vh">
<div class="min-h-[150px]">
<div class="bg-[#fff] my-3" v-if="installCheckResult.dir">
<el-alert :title="t('jobError')" type="error" :closable="false" class="mt-[20px]"
v-if="!installCheckResult.job_normal" />
<el-alert :title="t('jobError')" type="error" :closable="false" class="mt-[20px]" v-if="!installCheckResult.job_normal" />
<p class="pt-[20px] pl-[20px] ">{{ t('dirPermission') }}</p>
<div class="px-[20px] text-[14px]">
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
@ -187,9 +161,11 @@
</el-col>
<el-col :span="6">
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else><el-icon color="red">
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon></span>
</el-icon>
</span>
</el-col>
</el-row>
<el-row class="pb-[10px] items pl-[15px]" v-for="item in installCheckResult.dir.is_write">
@ -201,9 +177,11 @@
</el-col>
<el-col :span="6">
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else><el-icon color="red">
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon></span>
</el-icon>
</span>
</el-col>
</el-row>
</div>
@ -231,15 +209,16 @@
</el-col>
<el-col :span="6">
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else><el-icon color="red">
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon></span>
</el-icon>
</span>
</el-col>
</el-row>
</div>
</div>
<div class="bg-[#fff] my-3"
v-if="installCheckResult.conflict_files && installCheckResult.conflict_files.length">
<div class="bg-[#fff] my-3" v-if="installCheckResult.conflict_files && installCheckResult.conflict_files.length">
<p class="pl-[20px] ">{{ t('conflictFiles') }}</p>
<div class="px-[20px] text-[14px] pt-[10px] pl-[15px]">
<el-row class="pb-[10px] items" v-for="item in installCheckResult.conflict_files">
@ -271,11 +250,14 @@
<span>{{ t('open') }}</span>
</el-col>
<el-col :span="6">
<span v-if="installCheckResult.job_normal"><el-icon
color="green"><Select /></el-icon></span>
<span v-else><el-icon color="red">
<span v-if="installCheckResult.job_normal">
<el-icon color="green"><Select /></el-icon>
</span>
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon></span>
</el-icon>
</span>
</el-col>
</el-row>
</div>
@ -283,13 +265,11 @@
</div>
</el-scrollbar>
<div class="flex justify-end">
<el-button type="primary" :disabled="!installCheckResult.is_pass" @click="handleInstall">{{ t('install')
}}</el-button>
<el-button type="primary" :disabled="!installCheckResult.is_pass" @click="handleInstall">{{ t('install') }}</el-button>
</div>
</div>
<div v-show="installStep == 1" class="h-[50vh] mt-[20px]">
<terminal name="my-terminal" :context="currAddon" :init-log="null" :show-header="false"
:show-log-time="true" />
<terminal name="my-terminal" :context="currAddon" :init-log="null" :show-header="false" :show-log-time="true" />
</div>
<div v-show="installStep > 1" class="h-[50vh] mt-[20px] flex items-center justify-center">
<el-result icon="success" :title="t('addonInstallSuccess')"></el-result>

View File

@ -3,16 +3,13 @@
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<span class="text-[24px]">{{ pageName }}</span>
<el-button type="primary" @click="addEvent">
{{ t('addArticleCategory') }}
</el-button>
<el-button type="primary" @click="addEvent">{{ t('addArticleCategory') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="categoryTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('name')" prop="name">
<el-input v-model="categoryTableData.searchParam.name" :placeholder="t('namePlaceholder')"
class="w-[190px]" prefix-icon="Search" clearable />
<el-input v-model="categoryTableData.searchParam.name" :placeholder="t('namePlaceholder')" class="w-[190px]" prefix-icon="Search" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadCategoryList()">{{ t('search') }}</el-button>
@ -39,16 +36,13 @@
<el-table-column :label="t('operation')" fixed="right" width="130">
<template #default="{ row }">
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
<el-button type="danger" link @click="deleteEvent(row.category_id)">{{ t('delete')
}}</el-button>
<el-button type="danger" link @click="deleteEvent(row.category_id)">{{ t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="categoryTableData.page" v-model:page-size="categoryTableData.limit"
layout="total, sizes, prev, pager, next, jumper" :total="categoryTableData.total"
@size-change="loadCategoryList()" @current-change="loadCategoryList" />
<el-pagination v-model:current-page="categoryTableData.page" v-model:page-size="categoryTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="categoryTableData.total" @size-change="loadCategoryList()" @current-change="loadCategoryList" />
</div>
</div>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="popTitle" width="500px" :destroy-on-close="true">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('name')" prop="name">
<el-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" />
</el-form-item>
@ -20,9 +19,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -1,42 +1,35 @@
<template>
<div class="main-container">
<el-card class="box-card !border-none" shadow="never">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('title')" prop="title">
<el-input v-model="formData.title" clearable :placeholder="t('titlePlaceholder')" class="input-width"
maxlength="20" />
<el-input v-model="formData.title" clearable :placeholder="t('titlePlaceholder')" class="input-width" maxlength="20" />
</el-form-item>
<el-form-item :label="t('categoryName')" prop="category_id">
<el-select v-model="formData.category_id" clearable :placeholder="t('categoryIdPlaceholder')"
class="input-width">
<el-select v-model="formData.category_id" clearable :placeholder="t('categoryIdPlaceholder')" class="input-width">
<el-option :label="item['name']" :value="item['category_id']" v-for="item in categoryList" />
</el-select>
</el-form-item>
<el-form-item :label="t('intro')" prop="intro">
<el-input v-model="formData.intro" type="textarea" rows="4" clearable
:placeholder="t('introPlaceholder')" class="input-width" maxlength="50" />
<el-input v-model="formData.intro" type="textarea" rows="4" clearable :placeholder="t('introPlaceholder')" class="input-width" maxlength="50" />
</el-form-item>
<el-form-item :label="t('summary')" prop="summary">
<el-input v-model="formData.summary" type="textarea" rows="4" clearable
:placeholder="t('summaryPlaceholder')" class="input-width" maxlength="50" />
<el-input v-model="formData.summary" type="textarea" rows="4" clearable :placeholder="t('summaryPlaceholder')" class="input-width" maxlength="50" />
</el-form-item>
<el-form-item :label="t('image')">
<upload-image v-model="formData.image" />
</el-form-item>
<el-form-item :label="t('author')" prop="author">
<el-input v-model="formData.author" clearable :placeholder="t('authorPlaceholder')" class="input-width"
maxlength="20" />
<el-input v-model="formData.author" clearable :placeholder="t('authorPlaceholder')" class="input-width" maxlength="20" />
</el-form-item>
<el-form-item :label="t('content')" prop="content">
<editor v-model="formData.content" />
</el-form-item>
<el-form-item :label="t('visitVirtual')">
<el-input v-model="formData.visit_virtual" clearable :placeholder="t('visitVirtualPlaceholder')"
class="input-width" />
<el-input v-model="formData.visit_virtual" clearable :placeholder="t('visitVirtualPlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('isShow')">
<el-radio-group v-model="formData.is_show" :placeholder="t('isShowPlaceholder')">

View File

@ -4,9 +4,7 @@
<div class="flex justify-between items-center">
<span class="text-[24px]">{{ pageName }}</span>
<el-button type="primary" class="w-[100px]" @click="addEvent">
{{ t('addArticle') }}
</el-button>
<el-button type="primary" class="w-[100px]" @click="addEvent">{{ t('addArticle') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
@ -15,8 +13,7 @@
<el-input v-model="articleTableData.searchParam.title" :placeholder="t('titlePlaceholder')" />
</el-form-item>
<el-form-item :label="t('categoryName')" prop="category_id">
<el-select v-model="articleTableData.searchParam.category_id" clearable
:placeholder="t('categoryIdPlaceholder')" class="input-width">
<el-select v-model="articleTableData.searchParam.category_id" clearable :placeholder="t('categoryIdPlaceholder')" class="input-width">
<el-option :label="t('selectPlaceholder')" value="" />
<el-option :label="item['name']" :value="item['category_id']" v-for="item in categoryList" />
</el-select>
@ -47,7 +44,6 @@
<el-table-column :label="t('image')" min-width="120" align="center">
<template #default="{ row }">
<el-image class="w-12 h-12" v-if="row.image" :src="img(row.image)" fit="contain" />
</template>
</el-table-column>
@ -60,9 +56,7 @@
<el-table-column :label="t('isShow')" min-width="120" align="center">
<template #default="{ row }">
<span v-if="row.is_show == 1">{{ t('show') }}</span>
<span v-if="row.is_show == 0">{{
t('hidden')
}}</span>
<span v-if="row.is_show == 0">{{t('hidden')}}</span>
</template>
</el-table-column>
@ -83,9 +77,7 @@
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="articleTableData.page" v-model:page-size="articleTableData.limit"
layout="total, sizes, prev, pager, next, jumper" :total="articleTableData.total"
@size-change="loadArticleList()" @current-change="loadArticleList" />
<el-pagination v-model:current-page="articleTableData.page" v-model:page-size="articleTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="articleTableData.total" @size-change="loadArticleList()" @current-change="loadArticleList" />
</div>
</div>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="popTitle" width="500px" :destroy-on-close="true">
<el-form :model="formData" label-width="90px" class="page-form" ref="formRef" :rules="formRules"
v-loading="loading">
<el-form :model="formData" label-width="90px" class="page-form" ref="formRef" :rules="formRules" v-loading="loading">
<el-form-item :label="t('menuName')" prop="menu_name">
<el-input v-model="formData.menu_name" :placeholder="t('menuNamePlaceholder')" class="input-width" />
</el-form-item>
@ -85,9 +84,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -3,8 +3,7 @@
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form-item :label="t('roleName')" prop="role_name">
<el-input v-model="formData.role_name" :placeholder="t('roleNamePlaceholder')" clearable
:disabled="formData.uid" class="input-width" maxlength="10" :show-word-limit="true" />
<el-input v-model="formData.role_name" :placeholder="t('roleNamePlaceholder')" clearable :disabled="formData.uid" class="input-width" maxlength="10" :show-word-limit="true" />
</el-form-item>
<el-form-item :label="t('status')">
@ -24,9 +23,7 @@
</div>
<el-scrollbar height="35vh" class="w-full">
<el-tree :data="menus" :props="{ label: 'menu_name' }" :default-checked-keys="formData.rules"
:check-strictly="checkStrictly" show-checkbox default-expand-all @check-change="handleCheckChange"
node-key="menu_key" ref="treeRef" />
<el-tree :data="menus" :props="{ label: 'menu_name' }" :default-checked-keys="formData.rules" :check-strictly="checkStrictly" show-checkbox default-expand-all @check-change="handleCheckChange" node-key="menu_key" ref="treeRef" />
</el-scrollbar>
</el-form-item>
</el-form>
@ -34,9 +31,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>
@ -211,7 +206,6 @@ function checked(menu_key:string,data:any,newArr:any) {
} )
}
defineExpose({
showDialog,
setFormData

View File

@ -1,10 +1,8 @@
<template>
<el-dialog v-model="showDialog" :title="popTitle" width="500px" :destroy-on-close="true">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('accountNumber')" prop="username">
<el-input v-model="formData.username" :placeholder="t('accountNumberPlaceholder')" clearable
:disabled="formData.uid" class="input-width" maxlength="10" show-word-limit />
<el-input v-model="formData.username" :placeholder="t('accountNumberPlaceholder')" clearable :disabled="formData.uid" class="input-width" maxlength="10" show-word-limit />
</el-form-item>
<el-form-item :label="t('headImg')">
@ -12,25 +10,21 @@
</el-form-item>
<el-form-item :label="t('userRealName')" prop="real_name">
<el-input v-model="formData.real_name" :placeholder="t('userRealNamePlaceholder')" clearable
class="input-width" maxlength="10" show-word-limit />
<el-input v-model="formData.real_name" :placeholder="t('userRealNamePlaceholder')" clearable class="input-width" maxlength="10" show-word-limit />
</el-form-item>
<el-form-item :label="t('userRoleName')" prop="role_ids" v-if="!formData.userrole.is_admin">
<el-select v-model="formData.role_ids" :placeholder="t('userRolePlaceholder')" class="input-width" multiple
collapse-tags collapse-tags-tooltip>
<el-select v-model="formData.role_ids" :placeholder="t('userRolePlaceholder')" class="input-width" multiple collapse-tags collapse-tags-tooltip>
<el-option :label="item.role_name" :value="item.role_id" v-for="(item, index) in roles" :key="index" />
</el-select>
</el-form-item>
<el-form-item :label="t('password')" prop="password">
<el-input v-model="formData.password" :placeholder="t('passwordPlaceholder')" type="password"
:show-password="true" clearable class="input-width" />
<el-input v-model="formData.password" :placeholder="t('passwordPlaceholder')" type="password" :show-password="true" clearable class="input-width" />
</el-form-item>
<el-form-item :label="t('confirmPassword')" prop="confirm_password">
<el-input v-model="formData.confirm_password" :placeholder="t('confirmPasswordPlaceholder')" type="password"
:show-password="true" clearable class="input-width" />
<el-input v-model="formData.confirm_password" :placeholder="t('confirmPasswordPlaceholder')" type="password" :show-password="true" clearable class="input-width" />
</el-form-item>
<el-form-item :label="t('status')">
@ -44,9 +38,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -46,9 +46,7 @@
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="sysUserLogTableData.page" v-model:page-size="sysUserLogTableData.limit"
layout="total, sizes, prev, pager, next, jumper" :total="sysUserLogTableData.total"
@size-change="loadSysUserLogList()" @current-change="loadSysUserLogList" />
<el-pagination v-model:current-page="sysUserLogTableData.page" v-model:page-size="sysUserLogTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="sysUserLogTableData.total" @size-change="loadSysUserLogList()" @current-change="loadSysUserLogList" />
</div>
<user-log-detail ref="userLogDetailDialog" @complete="loadSysUserLogList()" />
</div>

View File

@ -13,8 +13,7 @@
<template #empty>
<span>{{ !menusTableData.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="menu_name" :show-overflow-tooltip="true" :label="t('menuName')"
min-width="150" />
<el-table-column prop="menu_name" :show-overflow-tooltip="true" :label="t('menuName')" min-width="150" />
<el-table-column :label="t('icon')" width="100" align="center">
<template #default="{ row }">
<icon v-if="row.icon" :name="row.icon" size="18px" />
@ -31,9 +30,7 @@
<el-table-column :label="t('status')" min-width="120" align="center">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="row.status == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{t('statusDeactivate') }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="sort" :label="t('sort')" min-width="100" />

View File

@ -3,16 +3,13 @@
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<span class="text-[24px]">{{pageName}}</span>
<el-button type="primary" class="w-[100px]" @click="addEvent">
{{ t('addRole') }}
</el-button>
<el-button type="primary" class="w-[100px]" @click="addEvent">{{ t('addRole') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="roleTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('roleName')" prop="seach">
<el-input v-model="roleTableData.searchParam.seach" class="w-[240px]"
:placeholder="t('roleNamePlaceholder')" />
<el-input v-model="roleTableData.searchParam.seach" class="w-[240px]" :placeholder="t('roleNamePlaceholder')" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadRoleList()">{{ t('search') }}</el-button>
@ -43,9 +40,7 @@
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="roleTableData.page" v-model:page-size="roleTableData.limit"
layout="total, sizes, prev, pager, next, jumper" :total="roleTableData.total"
@size-change="loadRoleList()" @current-change="loadRoleList" />
<el-pagination v-model:current-page="roleTableData.page" v-model:page-size="roleTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="roleTableData.total" @size-change="loadRoleList()" @current-change="loadRoleList" />
</div>
</div>

View File

@ -14,8 +14,7 @@
<template #empty>
<span>{{ !menusTableData.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="menu_name" :show-overflow-tooltip="true" :label="t('menuName')"
min-width="150" />
<el-table-column prop="menu_name" :show-overflow-tooltip="true" :label="t('menuName')" min-width="150" />
<el-table-column :label="t('icon')" width="100" align="center">
<template #default="{ row }">
<icon v-if="row.icon" :name="row.icon" size="18px" />
@ -32,9 +31,7 @@
<el-table-column :label="t('status')" min-width="120" align="center">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="row.status == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{t('statusDeactivate') }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="sort" :label="t('sort')" min-width="100" />

View File

@ -3,16 +3,13 @@
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<span class="text-[24px]">{{pageName}}</span>
<el-button type="primary" class="w-[100px]" @click="addEvent">
{{ t('addUser') }}
</el-button>
<el-button type="primary" class="w-[100px]" @click="addEvent">{{ t('addUser') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="userTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('accountNumber')" prop="seach">
<el-input v-model="userTableData.searchParam.seach" class="w-[240px]"
:placeholder="t('accountNumberPlaceholder')" />
<el-input v-model="userTableData.searchParam.seach" class="w-[240px]" :placeholder="t('accountNumberPlaceholder')" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadUserList()">{{ t('search') }}</el-button>
@ -45,9 +42,7 @@
<el-table-column :label="t('status')" min-width="120" align="center">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="row.status == 1">{{ t('statusUnlock') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{
t('statusLock')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{t('statusLock') }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="last_time" :label="t('lastLoginTime')" min-width="180" align="center">
@ -75,9 +70,7 @@
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="userTableData.page" v-model:page-size="userTableData.limit"
layout="total, sizes, prev, pager, next, jumper" :total="userTableData.total"
@size-change="loadUserList()" @current-change="loadUserList" />
<el-pagination v-model:current-page="userTableData.page" v-model:page-size="userTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="userTableData.total" @size-change="loadUserList()" @current-change="loadUserList" />
</div>
</div>
@ -111,7 +104,6 @@ const userTableData = reactive({
const searchFormRef = ref<FormInstance>()
const resetForm = (formEl: FormInstance | undefined)=>{
if (!formEl) return

View File

@ -1,13 +1,11 @@
<template>
<div class="main-container">
<el-form :model="formData" label-width="200px" ref="formRef" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="200px" ref="formRef" class="page-form" v-loading="loading">
<el-card class="box-card !border-none" shadow="never">
<h3 class="panel-title">{{ t('aliappSet') }}</h3>
<el-form-item :label="t('aliappName')">
<el-input v-model="formData.name" :placeholder="t('aliappNamePlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.name" :placeholder="t('aliappNamePlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('aliappQrcode')">
@ -21,13 +19,11 @@
<h3 class="panel-title">{{ t('aliappDevelopInfo') }}</h3>
<el-form-item :label="t('aliappOriginal')">
<el-input v-model="formData.private_key" :placeholder="t('aliappOriginalPlaceholder')"
class="input-width" clearable />
<el-input v-model="formData.private_key" :placeholder="t('aliappOriginalPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('aliappAppid')">
<el-input v-model="formData.app_id" :placeholder="t('appidPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.app_id" :placeholder="t('appidPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('countersignType')">
@ -70,8 +66,7 @@
</div>
<el-form-item :label="t('serveWhiteList')">
<el-input :model-value="formData.request_url" class="input-width"
:readonly="true">
<el-input :model-value="formData.request_url" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(formData.request_url)">{{ t('copy') }}
</div>

View File

@ -1,16 +1,13 @@
<template>
<div class="main-container">
<el-form :model="formData" label-width="200px" ref="formRef" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="200px" ref="formRef" class="page-form" v-loading="loading">
<el-card class="box-card !border-none mt-[16px]" shadow="never">
<div class="flex">
<h3 class="panel-title">{{ t('H5Info') }}</h3>
</div>
<el-form-item :label="t('isOpen')">
<el-switch
v-model="formData.is_open"
/>
<el-switch v-model="formData.is_open"/>
</el-form-item>
<el-form-item :label="t('h5DomainName')">
<el-input :model-value="formData.request_url" class="input-width" :readonly="true">

View File

@ -1,18 +1,15 @@
<template>
<div class="main-container">
<el-form :model="formData" label-width="200px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="200px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-card class="box-card !border-none" shadow="never">
<h3 class="panel-title">{{ t('weappInfo') }}</h3>
<el-form-item :label="t('weappName')" prop="weapp_name">
<el-input v-model="formData.weapp_name" :placeholder="t('weappNamePlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.weapp_name" :placeholder="t('weappNamePlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('weappOriginal')" prop="weapp_original">
<el-input v-model="formData.weapp_original" :placeholder="t('weappOriginalPlaceholder')"
class="input-width" clearable />
<el-input v-model="formData.weapp_original" :placeholder="t('weappOriginalPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('weappQrcode')" prop="qr_code">
@ -26,14 +23,12 @@
<h3 class="panel-title">{{ t('weappDevelopInfo') }}</h3>
<el-form-item :label="t('weappAppid')" prop="app_id">
<el-input v-model="formData.app_id" :placeholder="t('appidPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.app_id" :placeholder="t('appidPlaceholder')" class="input-width" clearable />
<div class="form-tip">{{ t('weappAppidTips') }}</div>
</el-form-item>
<el-form-item :label="t('weappAppsecret')" prop="app_secret">
<el-input v-model="formData.app_secret" :placeholder="t('appSecretPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.app_secret" :placeholder="t('appSecretPlaceholder')" class="input-width" clearable />
<div class="form-tip">{{ t('weappAppsecretTips') }}</div>
</el-form-item>
@ -43,8 +38,7 @@
<h3 class="panel-title">{{ t('theServerSetting') }}</h3>
<el-form-item label="URL">
<el-input :model-value="formData.serve_url" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="formData.serve_url" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(formData.serve_url)">{{ t('copy') }}
</div>
@ -53,22 +47,20 @@
</el-form-item>
<el-form-item label="Token" prop="token">
<el-input v-model="formData.token" :placeholder="t('tokenPlaceholder')" class="input-width"
maxlength="32" show-word-limit clearable />
<el-input v-model="formData.token" :placeholder="t('tokenPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('tokenTips') }}</div>
</el-form-item>
<el-form-item label="EncodingAESKey" prop="encoding_aes_key">
<el-input v-model="formData.encoding_aes_key" :placeholder="t('encodingAesKeyPlaceholder')"
class="input-width" maxlength="43" show-word-limit clearable />
<el-input v-model="formData.encoding_aes_key" :placeholder="t('encodingAesKeyPlaceholder')" class="input-width" maxlength="43" show-word-limit clearable />
<div class="form-tip">{{ t('encodingAESKeyTips') }}</div>
</el-form-item>
<el-form-item :label="t('encryptionType')" prop="encryption_type">
<el-radio-group v-model="formData.encryption_type">
<el-radio label="0">{{ t('cleartextMode') }}</el-radio>
<el-radio label="1">{{ t('compatibleMode') }}</el-radio>
<el-radio label="2">{{ t('safeMode') }}</el-radio>
<el-radio label="not_encrypt">{{ t('cleartextMode') }}</el-radio>
<el-radio label="compatible">{{ t('compatibleMode') }}</el-radio>
<el-radio label="safe">{{ t('safeMode') }}</el-radio>
</el-radio-group>
<div class="form-tip">{{ t('cleartextModeTips') }}</div>
<div class="form-tip">{{ t('compatibleModeTips') }}</div>
@ -82,8 +74,7 @@
</div>
<el-form-item :label="t('requestUrl')">
<el-input :model-value="formData.request_url" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="formData.request_url" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(formData.request_url)">{{ t('copy') }}
</div>
@ -91,8 +82,7 @@
</el-input>
</el-form-item>
<el-form-item :label="t('socketUrl')">
<el-input :model-value="formData.socket_url" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="formData.socket_url" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(formData.socket_url)">{{ t('copy') }}
</div>
@ -100,8 +90,7 @@
</el-input>
</el-form-item>
<el-form-item :label="t('uploadUrl')">
<el-input :model-value="formData.upload_url" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="formData.upload_url" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(formData.upload_url)">{{ t('copy') }}
</div>
@ -109,8 +98,7 @@
</el-input>
</el-form-item>
<el-form-item :label="t('downloadUrl')">
<el-input :model-value="formData.download_url" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="formData.download_url" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(formData.download_url)">{{ t('copy') }}
</div>
@ -146,7 +134,7 @@ const formData = reactive<Record<string, string>>({
qr_code: '',
token: '',
encoding_aes_key: '',
encryption_type: '0',
encryption_type: 'not_encrypt',
serve_url: '',
request_url: '',
socket_url: '',

View File

@ -28,8 +28,7 @@
<el-table-column :label="t('response')" min-width="180">
<template #default="{ row }">
<div v-for="(item, index) in row.weapp.content" :key="'a' + index" class="text-left">{{
item.join(":") }}</div>
<div v-for="(item, index) in row.weapp.content" :key="'a' + index" class="text-left">{{item.join(":") }}</div>
</template>
</el-table-column>
@ -43,8 +42,7 @@
<el-table-column :label="t('operation')" fixed="right" width="200">
<template #default="{ row }">
<el-button type="primary" link @click="infoSwitch(row)">{{ row.is_weapp == 1 ? t('close') :
t('open') }}</el-button>
<el-button type="primary" link @click="infoSwitch(row)">{{ row.is_weapp == 1 ? t('close') : t('open') }}</el-button>
<el-button type="danger" link @click="batchAcquisitionFn(row)">{{ t('regain') }}</el-button>
</template>
</el-table-column>

View File

@ -1,13 +1,11 @@
<template>
<div class="panel-title">{{ buttonData.sub_button ? t('menuNameInfo') : t('subMenuNameInfo') }}
</div>
<div class="panel-title">{{ buttonData.sub_button ? t('menuNameInfo') : t('subMenuNameInfo') }}</div>
<el-form :model="buttonData" label-width="140px" ref="formRef" :rules="formRules" class="page-form mt-[30px]">
<el-form-item :label="t('menuName')" prop="name">
<el-input v-model="buttonData.name" :placeholder="t('menuNamePlaceholder')" class="input-width" clearable />
<div class="form-tip">{{ buttonData.sub_button ? t('menuNameTips') : t('subMenuNameTips') }}
</div>
<div class="form-tip">{{ buttonData.sub_button ? t('menuNameTips') : t('subMenuNameTips') }}</div>
</el-form-item>
<template v-if="!buttonData.sub_button || !buttonData.sub_button.length">
@ -19,18 +17,15 @@
</el-form-item>
<el-form-item :label="t('webpageUrl')" prop="url">
<el-input v-model="buttonData.url" :placeholder="t('webpageUrlPlaceholder')" class="input-width"
clearable />
<el-input v-model="buttonData.url" :placeholder="t('webpageUrlPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('weappAppid')" prop="appid" v-show="buttonData.type == 'miniprogram'">
<el-input v-model="buttonData.appid" :placeholder="t('weappAppidPlaceholder')" class="input-width"
clearable />
<el-input v-model="buttonData.appid" :placeholder="t('weappAppidPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('weappPage')" prop="pagepath" v-show="buttonData.type == 'miniprogram'">
<el-input v-model="buttonData.pagepath" :placeholder="t('weappPagePlaceholder')" class="input-width"
clearable />
<el-input v-model="buttonData.pagepath" :placeholder="t('weappPagePlaceholder')" class="input-width" clearable />
</el-form-item>
</template>

View File

@ -1,18 +1,15 @@
<template>
<div class="main-container">
<el-form :model="formData" label-width="200px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="200px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-card class="box-card !border-none" shadow="never">
<h3 class="panel-title">{{ t('wechatInfo') }}</h3>
<el-form-item :label="t('wechatName')" prop="wechat_name">
<el-input v-model="formData.wechat_name" :placeholder="t('wechatNamePlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.wechat_name" :placeholder="t('wechatNamePlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('wechatOriginal')" prop="wechat_original">
<el-input v-model="formData.wechat_original" :placeholder="t('wechatOriginalPlaceholder')"
class="input-width" clearable />
<el-input v-model="formData.wechat_original" :placeholder="t('wechatOriginalPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('wechatQrcode')" prop="qr_code">
@ -26,14 +23,12 @@
<h3 class="panel-title">{{ t('wechatDevelopInfo') }}</h3>
<el-form-item :label="t('wechatAppid')" prop="app_id">
<el-input v-model="formData.app_id" :placeholder="t('appidPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.app_id" :placeholder="t('appidPlaceholder')" class="input-width" clearable />
<div class="form-tip">{{ t('wechatAppidTips') }}</div>
</el-form-item>
<el-form-item :label="t('wechatAppsecret')" prop="app_secret">
<el-input v-model="formData.app_secret" :placeholder="t('appSecretPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.app_secret" :placeholder="t('appSecretPlaceholder')" class="input-width" clearable />
<div class="form-tip">{{ t('wechatAppsecretTips') }}</div>
</el-form-item>
@ -43,8 +38,7 @@
<h3 class="panel-title">{{ t('theServerSetting') }}</h3>
<el-form-item label="URL">
<el-input :model-value="wechatStatic.serve_url" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="wechatStatic.serve_url" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(wechatStatic.serve_url)">{{ t('copy') }}
</div>
@ -53,22 +47,20 @@
</el-form-item>
<el-form-item label="Token" prop="token">
<el-input v-model="formData.token" :placeholder="t('tokenPlaceholder')" class="input-width"
maxlength="32" show-word-limit clearable />
<el-input v-model="formData.token" :placeholder="t('tokenPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('tokenTips') }}</div>
</el-form-item>
<el-form-item label="EncodingAESKey" prop="encoding_aes_key">
<el-input v-model="formData.encoding_aes_key" :placeholder="t('encodingAesKeyPlaceholder')"
class="input-width" maxlength="43" show-word-limit clearable />
<el-input v-model="formData.encoding_aes_key" :placeholder="t('encodingAesKeyPlaceholder')" class="input-width" maxlength="43" show-word-limit clearable />
<div class="form-tip">{{ t('encodingAESKeyTips') }}</div>
</el-form-item>
<el-form-item :label="t('encryptionType')" prop="encryption_type">
<el-radio-group v-model="formData.encryption_type">
<el-radio label="0">{{ t('cleartextMode') }}</el-radio>
<el-radio label="1">{{ t('compatibleMode') }}</el-radio>
<el-radio label="2">{{ t('safeMode') }}</el-radio>
<el-radio label="not_encrypt">{{ t('cleartextMode') }}</el-radio>
<el-radio label="compatible">{{ t('compatibleMode') }}</el-radio>
<el-radio label="safe">{{ t('safeMode') }}</el-radio>
</el-radio-group>
<div class="form-tip">{{ t('cleartextModeTips') }}</div>
<div class="form-tip">{{ t('compatibleModeTips') }}</div>
@ -86,8 +78,7 @@
</el-form-item>
<el-form-item :label="t('businessDomain')">
<el-input :model-value="wechatStatic.business_domain" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="wechatStatic.business_domain" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(wechatStatic.business_domain)">{{ t('copy') }}
</div>
@ -96,8 +87,7 @@
</el-form-item>
<el-form-item :label="t('jsSecureDomain')">
<el-input :model-value="wechatStatic.js_secure_domain" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="wechatStatic.js_secure_domain" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(wechatStatic.business_domain)">{{ t('copy') }}
</div>
@ -106,8 +96,7 @@
</el-form-item>
<el-form-item :label="t('webAuthDomain')">
<el-input :model-value="wechatStatic.web_auth_domain" placeholder="Please input" class="input-width"
:readonly="true">
<el-input :model-value="wechatStatic.web_auth_domain" placeholder="Please input" class="input-width" :readonly="true">
<template #append>
<div class="cursor-pointer" @click="copyEvent(wechatStatic.business_domain)">{{ t('copy') }}
</div>
@ -143,7 +132,7 @@ const formData = reactive<Record<string, string>>({
qr_code: '',
token: '',
encoding_aes_key: '',
encryption_type: '0'
encryption_type: 'not_encrypt'
})
const formRef = ref<FormInstance>()

View File

@ -14,10 +14,7 @@
<div class="menu-item py-[15px] flex items-center justify-center cursor-pointer"
:class="{ 'size-1': button.length == 1, 'size-2-3': button.length > 1, 'active': index == buttonIndex, 'curr': index == buttonIndex && subButtonIndex == -1 }"
v-for="(item, index) in button" :key="index" @click="selectButton(index)">
<div
class="menu-name px-[10px] border-r border-color w-full leading-[40px] text-base truncate text-center">
{{ item.name }}
</div>
<div class="menu-name px-[10px] border-r border-color w-full leading-[40px] text-base truncate text-center">{{ item.name }}</div>
<div class="active-shade"></div>
<!-- 子菜单 -->
@ -26,22 +23,17 @@
:class="{ 'curr': subIndex == subButtonIndex }"
v-for="(subItem, subIndex) in item.sub_button" :key="subIndex"
@click.stop="selectBubButton(index, subIndex)">
<div class="menu-name w-full text-base truncate text-center">
{{ subItem.name }}
</div>
<div class="menu-name w-full text-base truncate text-center">{{ subItem.name }}</div>
<div class="active-shade"></div>
</div>
<!-- 添加子菜单 -->
<div class="add-menu flex items-center justify-center flex-1 cursor-pointer menu-item h-[50px]"
v-show="!item.sub_button || item.sub_button.length < 5"
@click.stop="addSubButton(index)">
<div class="add-menu flex items-center justify-center flex-1 cursor-pointer menu-item h-[50px]" v-show="!item.sub_button || item.sub_button.length < 5" @click.stop="addSubButton(index)">
<icon name="element-Plus" />
</div>
</div>
</div>
<!-- 添加菜单 -->
<div class="add-menu flex items-center justify-center flex-1 cursor-pointer menu-item"
v-show="button.length < 3" @click="addButton">
<div class="add-menu flex items-center justify-center flex-1 cursor-pointer menu-item" v-show="button.length < 3" @click="addButton">
<icon name="element-Plus" />
</div>
</div>
@ -59,8 +51,7 @@
<div v-for="(subItem, subIndex) in item.sub_button" :key="subIndex">
<div v-show="index == buttonIndex && subIndex == subButtonIndex">
<menu-form :data="subItem" @delete="deleteButton" :index="index" :sub-index="subIndex"
ref="formRef" />
<menu-form :data="subItem" @delete="deleteButton" :index="index" :sub-index="subIndex" ref="formRef" />
</div>
</div>
</div>

View File

@ -40,8 +40,7 @@
<el-table-column :label="t('response')" min-width="180">
<template #default="{ row }">
<div v-for="(item, index) in row.wechat.content" :key="'a' + index" class="text-left">{{
item.join(":") }}</div>
<div v-for="(item, index) in row.wechat.content" :key="'a' + index" class="text-left">{{item.join(":") }}</div>
</template>
</el-table-column>
@ -49,8 +48,7 @@
<el-table-column :label="t('operation')" fixed="right" width="200">
<template #default="{ row }">
<el-button type="primary" link @click="infoSwitch(row)">{{ row.is_wechat == 1 ? t('close') :
t('open') }}</el-button>
<el-button type="primary" link @click="infoSwitch(row)">{{ row.is_wechat == 1 ? t('close') : t('open') }}</el-button>
<el-button type="danger" link @click="batchAcquisitionFn(row)">{{ t('regain') }}</el-button>
</template>
</el-table-column>

View File

@ -24,7 +24,7 @@
</el-radio-group>
</el-form-item>
<template v-show="diyStore.editComponent.layout == 'horizontal'">
<view v-show="diyStore.editComponent.layout == 'horizontal'">
<el-form-item :label="t('graphicNavShowStyle')">
<el-radio-group v-model="diyStore.editComponent.showStyle">
@ -48,7 +48,7 @@
<el-radio :label="2">2{{t('line')}}</el-radio>
</el-radio-group>
</el-form-item>
</template>
</view>
</el-form>
</div>

View File

@ -5,7 +5,12 @@
<h3 class="mb-[10px]">{{ t('imageSet') }}</h3>
<el-form label-width="80px" class="px-[10px]">
<p class="text-sm text-gray-400 mb-[10px]">{{ t('imageAdsTips') }}</p>
<el-form-item :label="t('imageHeight')" class="display-block">
<el-input v-model="diyStore.editComponent.imageHeight" :placeholder="t('imageHeightPlaceholder')" clearable maxlength="10">
<template #append>px</template>
</el-input>
<div class="text-sm text-gray-400 mb-[10px]">{{ t('imageAdsTips') }}</div>
</el-form-item>
<div ref="imageBoxRef">
<div v-for="(item,index) in diyStore.editComponent.list" :key="item.id" class="item-wrap p-[10px] pb-0 relative border border-dashed border-gray-300 mb-[16px]">
@ -53,6 +58,16 @@
//
diyStore.editComponent.verify = (index: number) => {
var res = {code: true, message: ''};
if(diyStore.value[index].imageHeight == 0){
res.code = false;
res.message = t('imageHeightPlaceholder');
return res;
}
if(!/^\d+.?\d{0,2}$/.test(diyStore.value[index].imageHeight)){
res.code = false;
res.message = t('imageHeightRegNum');
return res;
}
diyStore.value[index].list.forEach((item: any) => {
if (item.imageUrl === '') {
res.code = false;
@ -71,14 +86,22 @@
() => diyStore.editComponent.list,
(newValue, oldValue) => {
//
diyStore.editComponent.list.forEach((item: any) => {
diyStore.editComponent.list.forEach((item: any, index: number) => {
let image = new Image();
image.src = img(item.imageUrl);
image.onload = async () => {
item.imgWidth = image.width;
item.imgHeight = image.height;
//
if (index == 0) {
var ratio = item.imgHeight / item.imgWidth;
item.width = 375;
item.height = item.width * ratio;
diyStore.editComponent.imageHeight = item.height;
}
};
});
},
{deep: true}
)

View File

@ -487,7 +487,6 @@ const promoteEvent = (data: any) => {
})
promoteDialogVisible.value = true;
console.log('promoteEvent', data)
}

View File

@ -3,10 +3,8 @@
<el-card class="box-card !border-none" shadow="never" v-loading="loading">
<div class="flex">
<div class="w-[360px] h-[615px] relative mr-[30px] border-[1px] border-gray-300">
<div class="flex items-center justify-between absolute h-[60px] left-[0px] right-[0px] bottom-[0px] bg-white border-[1px] border-primary"
:style="{ 'backgroundColor': diyBottomData.backgroundColor }">
<div class="flex flex-1 flex-col items-center justify-center"
v-for="(item, index) in diyBottomData.list" :key="'b' + index">
<div class="flex items-center justify-between absolute h-[60px] left-[0px] right-[0px] bottom-[0px] bg-white border-[1px] border-primary" :style="{ 'backgroundColor': diyBottomData.backgroundColor }">
<div class="flex flex-1 flex-col items-center justify-center" v-for="(item, index) in diyBottomData.list" :key="'b' + index">
<el-image class="w-[22px] h-[22px] mb-[5px] leading-1" :src="img(item.iconPath)" :fit="contain">
<template #error>
<div class="image-slot flex justify-center items-center mt-1">
@ -14,8 +12,7 @@
</div>
</template>
</el-image>
<span class="text-[12px]" v-if="['1', '3'].includes(diyBottomData.type)"
:style="{ 'color': diyBottomData.textColor }">{{ item.text }}</span>
<span class="text-[12px]" v-if="['1', '3'].includes(diyBottomData.type)" :style="{ 'color': diyBottomData.textColor }">{{ item.text }}</span>
</div>
</div>
</div>
@ -42,21 +39,18 @@
</div>
</el-form-item>
<el-form-item :label="t('navTitleOne')">
<el-input class="w-[215px]" v-model="item.text" :placeholder="t('titleContent')"
maxlength="5" show-word-limit />
<el-input class="w-[215px]" v-model="item.text" :placeholder="t('titleContent')" maxlength="5" show-word-limit />
</el-form-item>
<el-form-item :label="t('navLinkOne')">
<diy-link v-model="item.link"></diy-link>
</el-form-item>
<el-icon class="close-icon cursor-pointer -top-[11px] -right-[8px]"
@click="deleteNav">
<el-icon class="close-icon cursor-pointer -top-[11px] -right-[8px]" @click="deleteNav">
<CircleCloseFilled />
</el-icon>
</div>
</div>
<el-button type="primary" class="mt-[15px]" v-show="diyBottomData.list.length < 5"
@click="addNav">{{ t('addnav') }}</el-button>
<el-button type="primary" class="mt-[15px]" v-show="diyBottomData.list.length < 5" @click="addNav">{{ t('addnav') }}</el-button>
</el-tab-pane>
<el-tab-pane :label="t('styleSet')" name="setStyle">
<el-form-item :label="t('navType')">
@ -70,24 +64,21 @@
<div class="flex align-center">
<el-color-picker v-model="diyBottomData.textColor" />
<el-input class="ml-[10px]" v-model="diyBottomData.textColor" disabled />
<el-button class="ml-[10px]" type="primary"
@click="diyBottomData.textColor = '#333333'">{{ t('reset') }}</el-button>
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.textColor = '#333333'">{{ t('reset') }}</el-button>
</div>
</el-form-item>
<el-form-item :label="t('textSelectColor')">
<div class="flex align-center">
<el-color-picker v-model="diyBottomData.textHoverColor" />
<el-input class="ml-[10px]" v-model="diyBottomData.textHoverColor" disabled />
<el-button class="ml-[10px]" type="primary"
@click="diyBottomData.textHoverColor = '#333333'">{{ t('reset') }}</el-button>
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.textHoverColor = '#333333'">{{ t('reset') }}</el-button>
</div>
</el-form-item>
<el-form-item :label="t('backgroundColor')">
<div class="flex align-center">
<el-color-picker v-model="diyBottomData.backgroundColor" />
<el-input class="ml-[10px]" v-model="diyBottomData.backgroundColor" disabled />
<el-button class="ml-[10px]" type="primary"
@click="diyBottomData.backgroundColor = '#FFFFFF'">{{ t('reset') }}</el-button>
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.backgroundColor = '#FFFFFF'">{{ t('reset') }}</el-button>
</div>
</el-form-item>
</el-tab-pane>

View File

@ -11,9 +11,7 @@
<div class="text-[#222] text-[20px] mt-[15px]">哎呀出错了您访问的页面不存在...</div>
<div class="text-[#c4c2c2] text-[12px] mt-[5px]">尝试检查URL的错误然后点击浏览器刷新按钮</div>
<div class="mt-[40px]">
<el-button class="bottom" @click="router.go(-1)">
{{ second }} 秒后返回上一页
</el-button>
<el-button class="bottom" @click="router.go(-1)">{{ second }} 秒后返回上一页</el-button>
</div>
</div>

View File

@ -184,9 +184,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="auditShowDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>
@ -197,9 +195,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="transferShowDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -1,7 +1,7 @@
<template>
<div class="main-container">
<el-form :model="formData" label-width="150px" ref="formRef" class="page-form" v-loading="loading">
<el-card class="box-card !border-none relative" shadow="never">
<el-card class="box-card !border-none relative" shadow="never" v-if="formData">
<h3 class="panel-title">{{ t('orderInfo') }}</h3>
<el-form-item :label="t('orderNo')">
@ -64,7 +64,7 @@
</template>
<script lang="ts" setup>
import { ref, reactive, watch } from 'vue'
import { ref, watch } from 'vue'
import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { getRechargeOrderInfo } from '@/api/order'
@ -85,47 +85,18 @@ watch(route, (newX, oldX) => {
appStore.pageReturn = false
})
/**
* 表单数据
*/
const initialFormData = {
order_id: 0,
site_id: '',
order_no: 0,
order_from: 0,
order_type: '',
out_trade_no: '',
order_status: '',
pay_status: '',
refund_status: '',
pay_type: '',
member_id: '',
ip: '',
member_message: '',
order_item_money: '',
order_discount_money: '',
order_money: '',
create_time: '',
pay_time: '',
close_time: '',
is_lock: '',
remark: '',
invoice_id: '',
close_reason: '',
item: '',
member: '',
order_status_info: '',
order_from_name: ''
}
const formData: Record<string, any> = reactive({ ...initialFormData })
const formData: Record<string, any> | null = ref(null)
const setFormData = async (orderId: number = 0) => {
loading.value = true
Object.assign(formData, initialFormData)
const data = await (await getRechargeOrderInfo(orderId)).data
Object.keys(formData).forEach((key: string) => {
if (data[key] != undefined) formData[key] = data[key]
})
formData.value = null
await getRechargeOrderInfo(orderId)
.then(({ data }) => {
formData.value = data
})
.catch(() => {
})
loading.value = false
}
if (orderId) setFormData(orderId)
@ -133,10 +104,6 @@ else loading.value = false
const formRef = ref<FormInstance>()
const onSave = async (formEl: FormInstance | undefined) => {
back()
}
const back = () => {
tabbarStore.removeTab(route.path)
router.push({ path: '/finance/recharge' })

View File

@ -54,13 +54,11 @@
<el-form-item :label="t('rechargeMoney')">
<div class="region-input">
<el-form-item prop="start_money">
<input type="text" :placeholder="t('startMoney')"
v-model="orderTableData.searchParam.start_money">
<input type="text" :placeholder="t('startMoney')" v-model="orderTableData.searchParam.start_money">
</el-form-item>
<span class="separator">-</span>
<el-form-item prop="end_money">
<input type="text" :placeholder="t('endMoney')"
v-model="orderTableData.searchParam.end_money">
<input type="text" :placeholder="t('endMoney')" v-model="orderTableData.searchParam.end_money">
</el-form-item>
</div>
</el-form-item>
@ -87,10 +85,8 @@
<el-table-column :show-overflow-tooltip="true" :label="t('member')" align="left" min-width="140">
<template #default="{ row }">
<div class="flex items-center cursor-pointer " @click="toMember(row.member.member_id)">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="row.headimg" :src="img(row.member.headimg)"
alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png"
alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="row.headimg" :src="img(row.member.headimg)" alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt="">
<div class="flex flex flex-col">
<span class="">{{ row.member.nickname || '' }}</span>
<span class="">{{ row.member.mobile || '' }}</span>
@ -99,8 +95,7 @@
</template>
</el-table-column>
<el-table-column prop="order_no" :show-overflow-tooltip="true" :label="t('rechargeNo')" align="center"
min-width="140" />
<el-table-column prop="order_no" :show-overflow-tooltip="true" :label="t('rechargeNo')" align="center" min-width="140" />
<el-table-column prop="order_money" :label="t('rechargeMoney')" align="center" min-width="140" />
@ -129,13 +124,10 @@
<template #default="{ row }">
<el-button type="primary" link @click="infoEvent(row)">{{ t('info') }}</el-button>
<el-button
v-if="[1, 10].includes(row.order_status_info.status) && row.is_enable_refund && row.refund_status == 0"
type="primary" link @click="refundFn(row)">{{ t('refundBtn') }}</el-button>
<el-button v-if="[1, 10].includes(row.order_status_info.status) && row.is_enable_refund && row.refund_status == 0" type="primary" link @click="refundFn(row)">{{ t('refundBtn') }}</el-button>
<template v-for="(item, index) in row.order_status_info.action">
<el-button type="danger" link @click="orderEvent(row, item.class)">{{ item.name
}}</el-button>
<el-button type="danger" link @click="orderEvent(row, item.class)">{{ item.name }}</el-button>
</template>
</template>
</el-table-column>

View File

@ -78,9 +78,9 @@ const submitForm = (formEl: FormInstance | undefined) => {
formEl.validate((valid) => {
if (valid) {
let msg = "";
if(saveInfo.password && !saveInfo.original_password) msg = t('originalPasswordHint');
if(saveInfo.password && saveInfo.original_password && !saveInfo.password_copy) msg = t('newPasswordHint');
if(saveInfo.password && saveInfo.original_password && saveInfo.password_copy && saveInfo.password != saveInfo.password_copy ) msg = t('doubleCipherHint');
if (saveInfo.password && !saveInfo.original_password) msg = t('originalPasswordHint');
if (saveInfo.password && saveInfo.original_password && !saveInfo.password_copy) msg = t('newPasswordHint');
if (saveInfo.password && saveInfo.original_password && saveInfo.password_copy && saveInfo.password != saveInfo.password_copy) msg = t('doubleCipherHint');
if (msg) {
ElNotification({
type: 'error',
@ -88,7 +88,7 @@ const submitForm = (formEl: FormInstance | undefined) => {
})
return;
}
loading.value = true;
setUserInfo(saveInfo).then((res: any) => {
@ -97,15 +97,11 @@ const submitForm = (formEl: FormInstance | undefined) => {
loading.value = false
})
} else {
console.log('error submit!')
return false
return false
}
});
});
}
</script>
<style lang="scss" scoped>

View File

@ -1,6 +1,5 @@
<template>
<el-container
:class="['w-full h-screen bg-page', { 'login-wrap': loginType == 'admin' }, { 'site-login-wrap': loginType == 'site' }]">
<el-container :class="['w-full h-screen bg-page', { 'login-wrap': loginType == 'admin' }, { 'site-login-wrap': loginType == 'site' }]">
<!-- 平台端登录 -->
<el-main class="login-main items-center justify-center" v-if="!imgLoading && loginType == 'admin'">
<div class="flex rounded-2xl overflow-hidden">
@ -14,8 +13,7 @@
<el-form :model="form" ref="formRef" :rules="formRules">
<el-form-item prop="username">
<el-input v-model="form.username" :placeholder="t('userPlaceholder')"
@keyup.enter="handleLogin(formRef)" class="h-[40px] input-with-select">
<el-input v-model="form.username" :placeholder="t('userPlaceholder')" @keyup.enter="handleLogin(formRef)" class="h-[40px] input-with-select">
<template #prepend>
<icon name="element-User" />
</template>
@ -23,9 +21,7 @@
</el-form-item>
<el-form-item prop="password">
<el-input v-model="form.password" :placeholder="t('passwordPlaceholder')" type="password"
@keyup.enter="handleLogin(formRef)" :show-password="true"
class="h-[40px] input-with-select">
<el-input v-model="form.password" :placeholder="t('passwordPlaceholder')" type="password" @keyup.enter="handleLogin(formRef)" :show-password="true" class="h-[40px] input-with-select">
<template #prepend>
<icon name="element-Lock" />
</template>
@ -33,10 +29,7 @@
</el-form-item>
<el-form-item>
<el-button type="primary" class="mt-[30px] h-[40px] w-full" @click="handleLogin(formRef)"
:loading="loading">{{
loading ? t('logging') : t('login')
}}</el-button>
<el-button type="primary" class="mt-[30px] h-[40px] w-full" @click="handleLogin(formRef)" :loading="loading">{{loading ? t('logging') : t('login') }}</el-button>
</el-form-item>
</el-form>
@ -61,8 +54,7 @@
<h3 class="text-center text-3xl mb-[30px]">{{ t('siteLogin') }}</h3>
<el-form :model="form" ref="formRef" :rules="formRules">
<el-form-item prop="username">
<el-input v-model="form.username" @keyup.enter="handleLogin(formRef)" class="w-50 m-1 h-[40px]"
:placeholder="t('userPlaceholder')">
<el-input v-model="form.username" @keyup.enter="handleLogin(formRef)" class="w-50 m-1 h-[40px]" :placeholder="t('userPlaceholder')">
<template #prefix>
<icon name="element-User" />
</template>
@ -70,8 +62,7 @@
</el-form-item>
<el-form-item prop="password">
<el-input type="password" v-model="form.password" @keyup.enter="handleLogin(formRef)"
:show-password="true" class="w-50 m-1 h-[40px]" :placeholder="t('passwordPlaceholder')">
<el-input type="password" v-model="form.password" @keyup.enter="handleLogin(formRef)" :show-password="true" class="w-50 m-1 h-[40px]" :placeholder="t('passwordPlaceholder')">
<template #prefix>
<icon name="element-Lock" />
</template>
@ -79,10 +70,7 @@
</el-form-item>
<el-form-item>
<el-button type="primary" class="mt-[30px] h-[40px] w-full" @click="handleLogin(formRef)"
:loading="loading">{{
loading ? t('logging') : t('login')
}}</el-button>
<el-button type="primary" class="mt-[30px] h-[40px] w-full" @click="handleLogin(formRef)" :loading="loading">{{loading ? t('logging') : t('login') }}</el-button>
</el-form-item>
</el-form>
</div>
@ -90,8 +78,7 @@
</el-main>
<!-- 验证组件 -->
<verify @success="success" :mode="pop" captchaType="blockPuzzle" :imgSize="{ width: '330px', height: '155px' }"
ref="verifyRef"></verify>
<verify @success="success" :mode="pop" captchaType="blockPuzzle" :imgSize="{ width: '330px', height: '155px' }" ref="verifyRef"></verify>
<el-footer></el-footer>
</el-container>

View File

@ -42,8 +42,7 @@
<el-form :inline="true" :model="memberAccountLogTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('memberInfo')" prop="keywords">
<el-input v-model="memberAccountLogTableData.searchParam.keywords" class="w-[240px]"
:placeholder="t('memberInfoPlaceholder')" />
<el-input v-model="memberAccountLogTableData.searchParam.keywords" class="w-[240px]" :placeholder="t('memberInfoPlaceholder')" />
</el-form-item>
<el-form-item :label="t('balanceType')" prop="from_type">

View File

@ -4,27 +4,22 @@
v-loading="loading">
<el-form-item :label="t('memberNo')" prop="member_no">
<el-input v-model="formData.member_no" clearable maxlength="20" :placeholder="t('memberNoPlaceholder')"
class="input-width" />
<el-input v-model="formData.member_no" clearable maxlength="20" :placeholder="t('memberNoPlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('mobile')" prop="mobile">
<el-input v-model="formData.mobile" clearable :placeholder="t('mobilePlaceholder')" type="number"
class="input-width" />
<el-input v-model="formData.mobile" clearable :placeholder="t('mobilePlaceholder')" type="number" class="input-width" />
</el-form-item>
<el-form-item :label="t('nickname')">
<el-input v-model="formData.nickname" clearable :placeholder="t('nickNamePlaceholder')"
class="input-width" />
<el-input v-model="formData.nickname" clearable :placeholder="t('nickNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('password')" prop="password">
<el-input v-model="formData.password" type="password" :placeholder="t('passwordPlaceholder')" clearable
class="input-width" />
<el-input v-model="formData.password" type="password" :placeholder="t('passwordPlaceholder')" clearable class="input-width" />
</el-form-item>
<el-form-item :label="t('passwordCopy')" prop="password_copy">
<el-input v-model="formData.password_copy" type="password" :placeholder="t('passwordPlaceholder')" clearable
class="input-width" />
<el-input v-model="formData.password_copy" type="password" :placeholder="t('passwordPlaceholder')" clearable class="input-width" />
</el-form-item>
</el-form>
@ -32,9 +27,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -2,24 +2,22 @@
<el-dialog v-model="showDialog" :title="popTitle" width="500px"
:destroy-on-close="true">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('labelName')" prop="label_name">
<el-input v-model="formData.label_name" clearable :placeholder="t('labelNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('memo')">
<el-input v-model="formData.memo" type="textarea" rows="4" clearable :placeholder="t('memoPlaceholder')" class="input-width"/>
</el-form-item>
<el-form-item :label="t('sort')" prop="sort">
<el-input v-model="formData.sort" clearable :placeholder="t('sortPlaceholder')" class="input-width" type="number" />
</el-form-item>
<el-form-item :label="t('labelName')" prop="label_name">
<el-input v-model="formData.label_name" clearable :placeholder="t('labelNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('memo')">
<el-input v-model="formData.memo" type="textarea" rows="4" clearable :placeholder="t('memoPlaceholder')" class="input-width"/>
</el-form-item>
<el-form-item :label="t('sort')" prop="sort">
<el-input v-model="formData.sort" clearable :placeholder="t('sortPlaceholder')" class="input-width" type="number" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -6,12 +6,10 @@
<upload-image v-model="saveData.headimg" />
</el-form-item>
<el-form-item :label="t('nickname')" v-if="type == 'nickname'">
<el-input v-model="saveData.nickname" clearable :placeholder="t('nickNamePlaceholder')"
class="input-width" />
<el-input v-model="saveData.nickname" clearable :placeholder="t('nickNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('birthday')" v-if="type == 'birthday'">
<el-date-picker v-model="saveData.birthday" value-format="YYYY-MM-DD" type="date"
:placeholder="t('birthdayTip')" />
<el-date-picker v-model="saveData.birthday" value-format="YYYY-MM-DD" type="date" :placeholder="t('birthdayTip')" />
</el-form-item>
<el-form-item :label="t('sex')" v-if="type == 'sex'">
<el-select v-model="saveData.sex" clearable :placeholder="t('sexPlaceholder')" class="input-width">
@ -19,8 +17,7 @@
</el-select>
</el-form-item>
<el-form-item :label="t('memberLabel')" v-if="type == 'member_label'">
<el-select v-model="saveData.member_label" multiple collapse-tags :placeholder="t('memberLabelPlaceholder')"
class="input-width">
<el-select v-model="saveData.member_label" multiple collapse-tags :placeholder="t('memberLabelPlaceholder')" class="input-width">
<el-option :label="item['label_name']" :value="item['label_id']" v-for="item in labelSelectData" />
</el-select>
</el-form-item>
@ -29,9 +26,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="t('adjustBalance')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('currBalance')" >
<div class="input-width"> {{ formData.balance }} </div>
@ -27,9 +26,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -18,7 +18,6 @@
<div class="input-width"> {{ formData.member.nickname }} </div>
</el-form-item>
<el-form-item :label="t('mobile')" >
<div class="input-width"> {{ formData.member.mobile }} </div>
</el-form-item>

View File

@ -1,11 +1,9 @@
<template>
<el-dialog v-model="showDialog" :title="t('moneyInfo')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('headimg')" >
<div class="flex items-center">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="formData.headimg" :src="img(formData.headimg)" alt="" >
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt="" >
@ -13,7 +11,6 @@
</div>
</el-form-item>
<el-form-item :label="t('nickName')" >
<div class="input-width"> {{ formData.nickname }} </div>
</el-form-item>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="t('adjustPoint')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('currPoint')" >
<div class="input-width"> {{ formData.point }} </div>
@ -27,9 +26,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -1,11 +1,9 @@
<template>
<el-dialog v-model="showDialog" :title="t('pointInfo')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('headimg')" >
<div class="flex items-center">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="formData.member.headimg" :src="img(formData.member.headimg)" alt="" >
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt="" >
@ -21,7 +19,6 @@
<div class="input-width"> {{ formData.member.nickname }} </div>
</el-form-item>
<el-form-item :label="t('mobile')" >
<div class="input-width"> {{ formData.member.mobile }} </div>
</el-form-item>

View File

@ -3,9 +3,7 @@
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<span class="text-[24px]">{{pageName}}</span>
<el-button type="primary" @click="addEvent">
{{ t('addMemberLabel') }}
</el-button>
<el-button type="primary" @click="addEvent">{{ t('addMemberLabel') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">

View File

@ -4,16 +4,13 @@
<div class="flex justify-between items-center">
<span class="text-[24px]">{{pageName}}</span>
<el-button type="primary" @click="addEvent">
{{ t('addMember') }}
</el-button>
<el-button type="primary" @click="addEvent">{{ t('addMember') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="memberTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('memberInfo')" prop="keyword">
<el-input v-model="memberTableData.searchParam.keyword" class="w-[240px]"
:placeholder="t('memberInfoPlaceholder')" />
<el-input v-model="memberTableData.searchParam.keyword" class="w-[240px]" :placeholder="t('memberInfoPlaceholder')" />
</el-form-item>
<el-form-item :label="t('registerChannel')" prop="register_channel">
@ -28,8 +25,7 @@
<el-select v-model="memberTableData.searchParam.member_label" collapse-tags clearable
:placeholder="t('memberLabelPlaceholder')" class="input-width">
<el-option :label="t('selectPlaceholder')" value=""/>
<el-option :label="item['label_name']" :value="item['label_id']"
v-for="item in labelSelectData" />
<el-option :label="item['label_name']" :value="item['label_id']" v-for="item in labelSelectData" />
</el-select>
</el-form-item>
<el-form-item :label="t('createTime')" prop="create_time">
@ -54,8 +50,7 @@
<template #default="{ row }">
<div class="flex items-center">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="row.headimg" :src="img(row.headimg)" alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png"
alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt="">
<div class="flex flex flex-col">
<span>{{ row.nickname || '' }}</span>
</div>
@ -116,7 +111,6 @@
</div>
</div>
<add-member ref="addMemberDialog" @complete="loadMemberList()" />
<edit-member ref="editMemberDialog" @complete="loadMemberList()" />
</el-card>

View File

@ -9,10 +9,8 @@
<div class="flex items-center">
<span class="text-[14px] min-w-[110px] text-right mr-[20px]">{{ t('headimg') }}</span>
<span class="flex items-end text-[14px]">
<img class="w-[50px] h-[50px] inline-block" v-if="formData.headimg" :src="img(formData.headimg)"
alt="">
<img class="w-[50px] h-[50px] inline-block" v-else src="@/assets/images/default_headimg.png"
alt="">
<img class="w-[50px] h-[50px] inline-block" v-if="formData.headimg" :src="img(formData.headimg)" alt="">
<img class="w-[50px] h-[50px] inline-block" v-else src="@/assets/images/default_headimg.png" alt="">
<el-icon @click="editMemberInfo('headimg')" class="-bottom-[2px] -right-[4px] cursor-pointer">
<EditPen color="#273CE2" />
</el-icon>
@ -36,14 +34,12 @@
{{ t('point') }}
</span>
<el-tooltip effect="dark" :content="t('adjust')" placement="top">
<el-icon @click="adjustPoint(formData)" class="ml-2 cursor-pointer"
:size="12">
<el-icon @click="adjustPoint(formData)" class="ml-2 cursor-pointer" :size="12">
<EditPen color="#273CE2" />
</el-icon>
</el-tooltip>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoPoint(formData)" class="ml-2 cursor-pointer"
:size="12">
<el-icon @click="infoPoint(formData)" class="ml-2 cursor-pointer" :size="12">
<View />
</el-icon>
</el-tooltip>
@ -69,14 +65,12 @@
{{ t('balance') }}
</span>
<el-tooltip effect="dark" :content="t('adjust')" placement="top">
<el-icon @click="adjustBalance(formData)" class="ml-2 cursor-pointer"
:size="12">
<el-icon @click="adjustBalance(formData)" class="ml-2 cursor-pointer" :size="12">
<EditPen color="#273CE2" />
</el-icon>
</el-tooltip>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer"
:size="12">
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer" :size="12">
<View />
</el-icon>
</el-tooltip>
@ -102,8 +96,7 @@
{{ t("money") }}
</span>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer"
:size="12">
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer" :size="12">
<View />
</el-icon>
</el-tooltip>
@ -129,8 +122,7 @@
{{ t("commission") }}
</span>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoCommission(formData)" class="ml-2 cursor-pointer"
:size="12">
<el-icon @click="infoCommission(formData)" class="ml-2 cursor-pointer" :size="12">
<View />
</el-icon>
</el-tooltip>

View File

@ -32,8 +32,7 @@
<el-card class="box-card !border-none mb-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="memberAccountLogTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('memberInfo')" prop="keywords">
<el-input v-model="memberAccountLogTableData.searchParam.keywords" class="w-[240px]"
:placeholder="t('memberInfoPlaceholder')" />
<el-input v-model="memberAccountLogTableData.searchParam.keywords" class="w-[240px]" :placeholder="t('memberInfoPlaceholder')" />
</el-form-item>
<el-form-item :label="t('fromType')" prop="from_type">
<el-select v-model="memberAccountLogTableData.searchParam.from_type" clearable :placeholder="t('fromTypePlaceholder')" class="input-width">
@ -166,8 +165,6 @@ setFromTypeList();
const searchFormRef = ref<FormInstance>()
const resetForm = (formEl: FormInstance | undefined)=>{
if (!formEl) return
formEl.resetFields();

View File

@ -33,16 +33,13 @@
<el-card class="box-card !border-none mb-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="refundTableData.searchParam" ref="searchFormRef">
<el-form-item :label="t('memberInfo')" prop="keywords">
<el-input v-model="refundTableData.searchParam.keywords" class="w-[240px]"
:placeholder="t('memberInfoPlaceholder')" />
<el-input v-model="refundTableData.searchParam.keywords" class="w-[240px]" :placeholder="t('memberInfoPlaceholder')" />
</el-form-item>
<el-form-item :label="t('refundNumber')" prop="refund_no">
<el-input v-model="refundTableData.searchParam.refund_no" class="w-[240px]"
:placeholder="t('refundNumberPlaceholder')" />
<el-input v-model="refundTableData.searchParam.refund_no" class="w-[240px]" :placeholder="t('refundNumberPlaceholder')" />
</el-form-item>
<el-form-item :label="t('orderNumber')" prop="order_no">
<el-input v-model="refundTableData.searchParam.order_no" class="w-[240px]"
:placeholder="t('orderNumberPlaceholder')" />
<el-input v-model="refundTableData.searchParam.order_no" class="w-[240px]" :placeholder="t('orderNumberPlaceholder')" />
</el-form-item>
<el-form-item :label="t('refundStatus')" prop="status">
@ -72,10 +69,8 @@
<el-table-column :show-overflow-tooltip="true" :label="t('memberInfo')" align="left" min-width="140">
<template #default="{ row }">
<div class="flex items-center cursor-pointer " @click="toMember(row.member.member_id)">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="row.headimg" :src="img(row.member.headimg)"
alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png"
alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="row.headimg" :src="img(row.member.headimg)" alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt="">
<div class="flex flex flex-col">
<span class="">{{ row.member.nickname || '' }}</span>
<span class="">{{ row.member.mobile || '' }}</span>

View File

@ -6,8 +6,7 @@
<el-input v-model="formData.agreement_key_name" readonly class="input-width" />
</el-form-item>
<el-form-item :label="t('title')" prop="title">
<el-input v-model="formData.title" clearable :placeholder="t('titlePlaceholder')" class="input-width"
maxlength="20" />
<el-input v-model="formData.title" clearable :placeholder="t('titlePlaceholder')" class="input-width" maxlength="20" />
</el-form-item>
<el-form-item :label="t('content')">
<editor v-model="formData.content" />
@ -37,7 +36,6 @@ const route = useRoute()
const router = useRouter()
const agreement_key: string = route.query.key || ''
const loading = ref(false)
const categoryList = ref([])
const tabbarStore = useTabbarStore()
//
@ -69,7 +67,6 @@ const setFormData = async (agreement_key: string = '') => {
if (agreement_key) setFormData(agreement_key)
const formRef = ref<FormInstance>()
//

View File

@ -108,8 +108,6 @@ const rules = reactive<FormRules>({
]
})
const onSave = async (formEl: FormInstance | undefined) => {
if (loading.value || !formEl) return
await formEl.validate((valid) => {

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="t('messageInfo')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('messageKey')">
<div class="input-width"> {{ formData.name }} </div>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="t('noticeSetting')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('status')">
<el-radio-group v-model="formData.is_sms">
<el-radio :label="1">{{ t('startUsing') }}</el-radio>
@ -18,8 +17,7 @@
</el-form-item>
<el-form-item :label="t('smsId')" prop="sms_id">
<el-input v-model="formData.sms_id" :placeholder="t('smsIdPlaceholder')" class="input-width" show-word-limit
clearable />
<el-input v-model="formData.sms_id" :placeholder="t('smsIdPlaceholder')" class="input-width" show-word-limit clearable />
</el-form-item>
<el-form-item :label="t('smsContent')">
@ -31,9 +29,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="t('noticeSetting')" width="550px" :destroy-on-close="true">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="110px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('status')">
<el-radio-group v-model="formData.is_weapp">
<el-radio :label="1">{{ t('startUsing') }}</el-radio>
@ -28,9 +27,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -18,8 +18,7 @@
</el-form-item>
<el-form-item :label="t('first')" prop="first">
<el-input v-model="formData.wechat_first" :placeholder="t('firstPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.wechat_first" :placeholder="t('firstPlaceholder')" class="input-width" show-word-limit clearable />
</el-form-item>
<el-form-item :label="t('content')">
@ -29,8 +28,7 @@
</el-form-item>
<el-form-item :label="t('remark')" prop="remark">
<el-input v-model="formData.wechat_remark" :placeholder="t('remarkPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.wechat_remark" :placeholder="t('remarkPlaceholder')" class="input-width" show-word-limit clearable />
</el-form-item>
</el-form>
@ -38,9 +36,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -4,13 +4,11 @@
v-loading="loading">
<el-form-item :label="t('appId')" prop="config.app_id">
<el-input v-model="formData.config.app_id" :placeholder="t('appIdPlaceholder')" class="input-width" maxlength="32"
show-word-limit clearable />
<el-input v-model="formData.config.app_id" :placeholder="t('appIdPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('appIdTips') }}</div>
</el-form-item>
<el-form-item :label="t('appSecretCert')" prop="config.app_secret_cert">
<el-input v-model="formData.config.app_secret_cert" :placeholder="t('appSecretCertPlaceholder')"
class="input-width" type="textarea" rows="4" clearable />
<el-input v-model="formData.config.app_secret_cert" :placeholder="t('appSecretCertPlaceholder')" class="input-width" type="textarea" rows="4" clearable />
</el-form-item>
<el-form-item :label="t('appPublicCertPath')" prop="config.app_public_cert_path">
@ -36,9 +34,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>
@ -101,10 +97,14 @@ const emit = defineEmits(['complete'])
* 确认
* @param formEl
*/
const confirm = (formEl: FormInstance | undefined) => {
const confirm = async(formEl: FormInstance | undefined) => {
if (loading.value || !formEl) return
emit('complete',formData);
showDialog.value = false;
await formEl.validate(async (valid) => {
if(valid){
emit('complete',formData);
showDialog.value = false;
}
})
}
const setFormData = async (data: any = null) => {

View File

@ -14,9 +14,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -4,14 +4,12 @@
v-loading="loading">
<el-form-item :label="t('mchId')" prop="config.mch_id">
<el-input v-model="formData.config.mch_id" :placeholder="t('mchIdPlaceholder')" class="input-width" maxlength="32"
show-word-limit clearable />
<el-input v-model="formData.config.mch_id" :placeholder="t('mchIdPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('mchIdTips') }}</div>
</el-form-item>
<el-form-item :label="t('mchSecretKey')" prop="config.mch_secret_key">
<el-input v-model="formData.config.mch_secret_key" :placeholder="t('mchSecretKeyPlaceholder')" class="input-width"
maxlength="32" show-word-limit clearable />
<el-input v-model="formData.config.mch_secret_key" :placeholder="t('mchSecretKeyPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('mchSecretKeyTips') }}</div>
</el-form-item>
@ -34,9 +32,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>
@ -96,8 +92,12 @@ const emit = defineEmits(['complete'])
*/
const confirm = async (formEl: FormInstance | undefined) => {
if (loading.value || !formEl) return
emit('complete',formData);
showDialog.value = false;
await formEl.validate(async (valid) => {
if(valid){
emit('complete',formData);
showDialog.value = false;
}
})
}
const setFormData = async (data: any = null) => {

View File

@ -10,18 +10,15 @@
</el-form-item>
<el-form-item :label="t('aliSign')" prop="sign">
<el-input v-model="formData.sign" :placeholder="t('aliSignPlaceholder')" class="input-width" show-word-limit
clearable />
<el-input v-model="formData.sign" :placeholder="t('aliSignPlaceholder')" class="input-width" show-word-limit clearable />
</el-form-item>
<el-form-item :label="t('aliAppKey')" prop="app_key">
<el-input v-model="formData.app_key" :placeholder="t('aliAppKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.app_key" :placeholder="t('aliAppKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('aliSecretKey')" prop="secret_key">
<el-input v-model="formData.secret_key" :placeholder="t('aliSecretKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.secret_key" :placeholder="t('aliSecretKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
</el-form>
@ -29,9 +26,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -10,23 +10,19 @@
</el-form-item>
<el-form-item :label="t('tencentSign')" prop="sign">
<el-input v-model="formData.sign" :placeholder="t('tencentSignPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.sign" :placeholder="t('tencentSignPlaceholder')" class="input-width" show-word-limit clearable />
</el-form-item>
<el-form-item :label="t('tencentAppId')" prop="app_id">
<el-input v-model="formData.app_id" :placeholder="t('tencentAppIdPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.app_id" :placeholder="t('tencentAppIdPlaceholder')" class="input-width" show-word-limit clearable />
</el-form-item>
<el-form-item :label="t('tencentSecretId')" prop="secret_id">
<el-input v-model="formData.secret_id" :placeholder="t('tencentSecretIdPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.secret_id" :placeholder="t('tencentSecretIdPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('tencentSecretKey')" prop="secret_key">
<el-input v-model="formData.secret_key" :placeholder="t('tencentSecretKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.secret_key" :placeholder="t('tencentSecretKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
</el-form>
@ -34,9 +30,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -10,24 +10,20 @@
</el-form-item>
<el-form-item :label="t('aliBucket')" prop="bucket">
<el-input v-model="formData.bucket" :placeholder="t('aliBucketPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.bucket" :placeholder="t('aliBucketPlaceholder')" class="input-width" show-word-limit clearable />
<div class="form-tip">{{ t('aliBucketTips') }}</div>
</el-form-item>
<el-form-item :label="t('aliAccessKey')" prop="access_key">
<el-input v-model="formData.access_key" :placeholder="t('aliAccessKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.access_key" :placeholder="t('aliAccessKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('aliSecretKey')" prop="secret_key">
<el-input v-model="formData.secret_key" :placeholder="t('aliSecretKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.secret_key" :placeholder="t('aliSecretKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('aliEndpoint')" prop="endpoint">
<el-input v-model="formData.endpoint" :placeholder="t('aliEndpointPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.endpoint" :placeholder="t('aliEndpointPlaceholder')" class="input-width" clearable />
<div class="form-tip">{{ t('aliEndpointTips') }}</div>
</el-form-item>
@ -40,9 +36,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -14,9 +14,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -1,7 +1,6 @@
<template>
<el-dialog v-model="showDialog" :title="t('qiniuStorage')" width="580px" :destroy-on-close="true">
<el-form :model="formData" label-width="140px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form :model="formData" label-width="140px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('isUse')">
<el-radio-group v-model="formData.is_use">
<el-radio label="1">{{ t('startUsing') }}</el-radio>
@ -10,19 +9,16 @@
</el-form-item>
<el-form-item :label="t('qiniuBucket')" prop="bucket">
<el-input v-model="formData.bucket" :placeholder="t('qiniuBucketPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.bucket" :placeholder="t('qiniuBucketPlaceholder')" class="input-width" show-word-limit clearable />
<div class="form-tip">{{ t('qiniuBucketTips') }}</div>
</el-form-item>
<el-form-item :label="t('qiniuAccessKey')" prop="access_key">
<el-input v-model="formData.access_key" :placeholder="t('qiniuAccessKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.access_key" :placeholder="t('qiniuAccessKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('qiniuSecretKey')" prop="secret_key">
<el-input v-model="formData.secret_key" :placeholder="t('qiniuSecretKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.secret_key" :placeholder="t('qiniuSecretKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('domain')" prop="domain">
@ -34,9 +30,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -10,19 +10,16 @@
</el-form-item>
<el-form-item :label="t('tencentBucket')" prop="bucket">
<el-input v-model="formData.bucket" :placeholder="t('tencentBucketPlaceholder')" class="input-width"
show-word-limit clearable />
<el-input v-model="formData.bucket" :placeholder="t('tencentBucketPlaceholder')" class="input-width" show-word-limit clearable />
<div class="form-tip">{{ t('tencentBucketTips') }}</div>
</el-form-item>
<el-form-item :label="t('tencentAccessKey')" prop="access_key">
<el-input v-model="formData.access_key" :placeholder="t('tencentAccessKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.access_key" :placeholder="t('tencentAccessKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('tencentSecretKey')" prop="secret_key">
<el-input v-model="formData.secret_key" :placeholder="t('tencentSecretKeyPlaceholder')" class="input-width"
clearable />
<el-input v-model="formData.secret_key" :placeholder="t('tencentSecretKeyPlaceholder')" class="input-width" clearable />
</el-form-item>
<el-form-item :label="t('region')" prop="region">
@ -38,9 +35,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -8,8 +8,7 @@
</el-form-item>
<el-form-item :label="t('companyName')" prop="company_name">
<el-input v-model="formData.company_name" :placeholder="t('companyNamePlaceholder')" class="input-width"
clearable maxlength="30"/>
<el-input v-model="formData.company_name" :placeholder="t('companyNamePlaceholder')" class="input-width" clearable maxlength="30"/>
</el-form-item>
<el-form-item :label="t('copyrightLink')" >
@ -17,8 +16,7 @@
</el-form-item>
<el-form-item :label="t('copyrightDesc')" >
<el-input v-model="formData.copyright_desc" type="textarea" rows="4" clearable
:placeholder="t('copyrightDescPlaceholder')" class="input-width" maxlength="150" />
<el-input v-model="formData.copyright_desc" type="textarea" rows="4" clearable :placeholder="t('copyrightDescPlaceholder')" class="input-width" maxlength="150" />
</el-form-item>
</el-card>
@ -27,8 +25,7 @@
<h3 class="panel-title">{{ t('putOnRecordEdit') }}</h3>
<el-form-item :label="t('icp')" prop="icp">
<el-input v-model="formData.icp" :placeholder="t('icpPlaceholder')" class="input-width"
clearable maxlength="20"/>
<el-input v-model="formData.icp" :placeholder="t('icpPlaceholder')" class="input-width" clearable maxlength="20"/>
</el-form-item>
<el-form-item :label="t('govRecord')" >
@ -40,8 +37,7 @@
</el-form-item>
<el-form-item :label="t('marketSupervisionUrl')" >
<el-input v-model="formData.market_supervision_url" rows="4" clearable
:placeholder="t('marketSupervisionUrlPlaceholder')" class="input-width" />
<el-input v-model="formData.market_supervision_url" rows="4" clearable :placeholder="t('marketSupervisionUrlPlaceholder')" class="input-width" />
</el-form-item>
</el-card>

View File

@ -5,11 +5,9 @@
<h3 class="panel-title">{{ t('commonSetting') }}</h3>
<el-form-item :label="t('logonMode')">
<el-checkbox v-model="formData.is_username" :label="t('isUsername')"
@change="switchChange($event, 'is_username')" />
<el-checkbox v-model="formData.is_username" :label="t('isUsername')" @change="switchChange($event, 'is_username')" />
<div class="form-tip">{{ t('isUsernameTip') }}</div>
<el-checkbox v-model="formData.is_mobile" :label="t('isMobile')"
@change="switchChange($event, 'is_mobile')" />
<el-checkbox v-model="formData.is_mobile" :label="t('isMobile')" @change="switchChange($event, 'is_mobile')" />
<div class="form-tip">{{ t('isMobileTip') }}</div>
</el-form-item>

View File

@ -6,14 +6,12 @@
<h3 class="panel-title">{{ t('memberNoRule') }}</h3>
<el-form-item :label="t('prefix')" prop="prefix">
<el-input v-model="formData.prefix" :placeholder="t('prefixPlaceholder')" class="input-width" clearable
maxlength="20" @change="getMemberNo(ruleFormRef)"/>
<el-input v-model="formData.prefix" :placeholder="t('prefixPlaceholder')" class="input-width" clearable maxlength="20" @change="getMemberNo(ruleFormRef)"/>
</el-form-item>
<el-form-item :label="t('length')" prop="length">
<el-input v-model="formData.length" :placeholder="t('lengthPlaceholder')" class="input-width" clearable
type="number" @change="getMemberNo(ruleFormRef)"/>
<el-input v-model="formData.length" :placeholder="t('lengthPlaceholder')" class="input-width" clearable type="number" @change="getMemberNo(ruleFormRef)"/>
<div class="form-tip">{{ t('lengthTips') }}</div>
</el-form-item>

View File

@ -16,16 +16,13 @@
:placeholder="t('groupIdPlaceholder')" class="input-width">
<el-option :label="t('selectPlaceholder')" value="" />
<el-option-group v-for="(group, gindex) in templateList" :key="gindex" :label="group.label">
<el-option :label="item.name" :value="item.value" v-for="(item, index) in group.list"
:key="index" />
<el-option :label="item.name" :value="item.value" v-for="(item, index) in group.list" :key="index" />
</el-option-group>
</el-select>
</el-form-item>
<el-form-item :label="t('createTime')" prop="create_time">
<el-date-picker v-model="recordsTableData.searchParam.create_time" type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('startDate')"
:end-placeholder="t('endDate')" />
<el-date-picker v-model="recordsTableData.searchParam.create_time" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('startDate')" :end-placeholder="t('endDate')" />
</el-form-item>
<el-form-item>

View File

@ -3,9 +3,7 @@
<!-- 设置支付配置 -->
<div class="flex justify-between items-center" v-if="!payLoading">
<span class="text-[24px]">{{pageName}}</span>
<el-button type="primary" @click="isEdit = true" ref="setConfigBtn">
{{ t('setConfig') }}
</el-button>
<el-button type="primary" @click="isEdit = true" ref="setConfigBtn">{{ t('setConfig') }}</el-button>
</div>
<el-card class="box-card box-pay-card !border-none mt-[20px]" shadow="never" v-for="(payItems, payKey) in payConfigData" :key="payKey">
<div class="flex mb-3">

View File

@ -14,9 +14,7 @@
<el-table-column :label="t('isUse')" min-width="180" align="center">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="row.is_use == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.is_use == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.is_use == 0">{{t('statusDeactivate') }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="t('operation')" fixed="right" width="100">

View File

@ -15,8 +15,7 @@
:placeholder="t('groupIdPlaceholder')" class="input-width">
<el-option :label="t('selectPlaceholder')" value="" />
<el-option-group v-for="(group, gindex) in templateList" :key="gindex" :label="group.label">
<el-option :label="item.name" :value="item.value" v-for="(item, index) in group.list"
:key="index" />
<el-option :label="item.name" :value="item.value" v-for="(item, index) in group.list" :key="index" />
</el-option-group>
</el-select>
</el-form-item>

View File

@ -15,9 +15,7 @@
<el-table-column :label="t('isUse')" min-width="180" align="center">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="row.is_use == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.is_use == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.is_use == 0">{{t('statusDeactivate') }}</el-tag>
</template>
</el-table-column>

View File

@ -6,8 +6,7 @@
<h3 class="panel-title">{{ t('websiteInfo') }}</h3>
<el-form-item :label="t('siteName')" prop="site_name">
<el-input v-model="formData.site_name" :placeholder="t('siteNamePlaceholder')" class="input-width"
clearable maxlength="20" />
<el-input v-model="formData.site_name" :placeholder="t('siteNamePlaceholder')" class="input-width" clearable maxlength="20" />
</el-form-item>
<el-form-item :label="t('logo')">
@ -19,20 +18,17 @@
</el-form-item>
<el-form-item :label="t('keywords')">
<el-input v-model="formData.keywords" :placeholder="t('keywordsPlaceholder')" class="input-width"
clearable maxlength="20" />
<el-input v-model="formData.keywords" :placeholder="t('keywordsPlaceholder')" class="input-width" clearable maxlength="20" />
</el-form-item>
<el-form-item :label="t('desc')">
<el-input v-model="formData.desc" type="textarea" rows="4" clearable :placeholder="t('descPlaceholder')"
class="input-width" maxlength="100" />
<el-input v-model="formData.desc" type="textarea" rows="4" clearable :placeholder="t('descPlaceholder')" class="input-width" maxlength="100" />
</el-form-item>
</el-card>
<el-card class="box-card !border-none" shadow="never">
<h3 class="panel-title">{{ t('frontEndInfo') }}</h3>
<el-form-item :label="t('frontEndName')">
<el-input v-model="formData.front_end_name" :placeholder="t('frontEndNamePlaceholder')"
class="input-width" clearable maxlength="20" />
<el-input v-model="formData.front_end_name" :placeholder="t('frontEndNamePlaceholder')" class="input-width" clearable maxlength="20" />
</el-form-item>
<el-form-item :label="t('frontEndLogo')">
@ -42,8 +38,7 @@
<el-card class="box-card !border-none" shadow="never" v-if="app_type == 'admin' ">
<h3 class="panel-title">{{ t('serviceInformation') }}</h3>
<el-form-item :label="t('contactsTel')">
<el-input v-model="formData.tel" :placeholder="t('contactsTelPlaceholder')"
class="input-width" clearable maxlength="20" />
<el-input v-model="formData.tel" :placeholder="t('contactsTelPlaceholder')" class="input-width" clearable maxlength="20" />
</el-form-item>
<el-form-item :label="t('wechatCode')">
<upload-image v-model="formData.wechat_code" />

View File

@ -13,14 +13,12 @@
<h3 class="panel-title">{{t('wechatpay')}}</h3>
<el-form-item :label="t('mchId')" prop="wechatpay_config.mch_id">
<el-input v-model="formData.wechatpay_config.mch_id" :placeholder="t('mchIdPlaceholder')" class="input-width" maxlength="32"
show-word-limit clearable />
<el-input v-model="formData.wechatpay_config.mch_id" :placeholder="t('mchIdPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('mchIdTips') }}</div>
</el-form-item>
<el-form-item :label="t('mchSecretKey')" prop="wechatpay_config.mch_secret_key">
<el-input v-model="formData.wechatpay_config.mch_secret_key" :placeholder="t('mchSecretKeyPlaceholder')" class="input-width"
maxlength="32" show-word-limit clearable />
<el-input v-model="formData.wechatpay_config.mch_secret_key" :placeholder="t('mchSecretKeyPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('mchSecretKeyTips') }}</div>
</el-form-item>
@ -44,13 +42,11 @@
<h3 class="panel-title">{{t('alipay')}}</h3>
<el-form-item :label="t('appId')" prop="alipay_config.app_id">
<el-input v-model="formData.alipay_config.app_id" :placeholder="t('appIdPlaceholder')" class="input-width" maxlength="32"
show-word-limit clearable />
<el-input v-model="formData.alipay_config.app_id" :placeholder="t('appIdPlaceholder')" class="input-width" maxlength="32" show-word-limit clearable />
<div class="form-tip">{{ t('appIdTips') }}</div>
</el-form-item>
<el-form-item :label="t('appSecretCert')" prop="alipay_config.app_secret_cert">
<el-input v-model="formData.alipay_config.app_secret_cert" :placeholder="t('appSecretCertPlaceholder')"
class="input-width" type="textarea" rows="4" clearable />
<el-input v-model="formData.alipay_config.app_secret_cert" :placeholder="t('appSecretCertPlaceholder')" class="input-width" type="textarea" rows="4" clearable />
</el-form-item>
<el-form-item :label="t('appPublicCertPath')" prop="alipay_config.app_public_cert_path">
@ -72,7 +68,6 @@
</el-form-item>
</el-card>
</el-form>
<div class="fixed-footer-wrap">

View File

@ -3,12 +3,10 @@
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form-item :label="t('groupName')" prop="group_name">
<el-input v-model="formData.group_name" :placeholder="t('groupNamePlaceholder')" clearable
:disabled="formData.uid" class="input-width" maxlength="20" :show-word-limit="true" />
<el-input v-model="formData.group_name" :placeholder="t('groupNamePlaceholder')" clearable :disabled="formData.uid" class="input-width" maxlength="20" :show-word-limit="true" />
</el-form-item>
<el-form-item :label="t('groupDesc')" prop="group_desc">
<el-input v-model="formData.group_desc" type="textarea" rows="4" clearable
:placeholder="t('groupDescPlaceholder')" class="input-width" maxlength="100" />
<el-input v-model="formData.group_desc" type="textarea" rows="4" clearable :placeholder="t('groupDescPlaceholder')" class="input-width" maxlength="100" />
</el-form-item>
<el-form-item :label="t('permission')" prop="group_roles">
@ -32,9 +30,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>
@ -185,8 +181,6 @@ const setFormData = async (row: any = null) => {
}
})
}
loading.value = false
}

View File

@ -3,8 +3,7 @@
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"
v-loading="loading">
<el-form-item :label="t('siteName')" prop="site_name">
<el-input v-model="formData.site_name" clearable :placeholder="t('siteNamePlaceholder')"
class="input-width" />
<el-input v-model="formData.site_name" clearable :placeholder="t('siteNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('groupId')" prop="group_id">
@ -17,24 +16,20 @@
</el-form-item> -->
<el-form-item :label="t('username')" prop="username" v-if="!formData.site_id && !loading">
<el-input v-model="formData.username" clearable :placeholder="t('usernamePlaceholder')"
class="input-width" />
<el-input v-model="formData.username" clearable :placeholder="t('usernamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('password')" prop="password" v-if="!formData.site_id && !loading">
<el-input v-model="formData.password" clearable :placeholder="t('passwordPlaceholder')" class="input-width"
:show-password="true" type="password" />
<el-input v-model="formData.password" clearable :placeholder="t('passwordPlaceholder')" class="input-width" :show-password="true" type="password" />
</el-form-item>
<el-form-item :label="t('confirmPassword')" prop="confirm_password" v-if="!formData.site_id && !loading">
<el-input v-model="formData.confirm_password" :placeholder="t('confirmPasswordPlaceholder')" type="password"
:show-password="true" clearable class="input-width" />
<el-input v-model="formData.confirm_password" :placeholder="t('confirmPasswordPlaceholder')" type="password" :show-password="true" clearable class="input-width" />
</el-form-item>
<el-form-item :label="t('expireTime')" prop="expire_time" class="input-width">
<el-date-picker class="flex-1 !flex" v-model="formData.expire_time" clearable type="datetime"
value-format="YYYY-MM-DD HH:mm:ss" :placeholder="t('expireTimePlaceholder')">
<el-date-picker class="flex-1 !flex" v-model="formData.expire_time" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" :placeholder="t('expireTimePlaceholder')">
</el-date-picker>
</el-form-item>
</el-form>
@ -42,9 +37,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{t('confirm')}}</el-button>
</span>
</template>
</el-dialog>

View File

@ -38,9 +38,7 @@
<el-form-item :label="t('status')" >
<div class="input-width">
<el-tag class="ml-2" type="success" v-if="formData.status == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="formData.status == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="formData.status == 0">{{t('statusDeactivate') }}</el-tag>
</div>
</el-form-item>
@ -52,7 +50,6 @@
<div class="input-width"> {{ formData.last_time }} </div>
</el-form-item>
<el-form-item :label="t('createTime')" v-if="parseFloat(formData.create_time)">
<div class="input-width"> {{ formData.create_time }} </div>
</el-form-item>

View File

@ -24,12 +24,8 @@
<el-form-item :label="t('status')">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="formData.status == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="formData.status == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="formData.status == 2">{{
t('statusExpire')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="formData.status == 0">{{t('statusDeactivate') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="formData.status == 2">{{t('statusExpire') }}</el-tag>
</template>
</el-form-item>
@ -41,8 +37,7 @@
<div class="input-width">{{ formData.expire_time || '' }}</div>
</el-form-item>
<el-button class="absolute right-5 top-5" type="primary" @click="editEvent(formRef)">{{ t('edit')
}}</el-button>
<el-button class="absolute right-5 top-5" type="primary" @click="editEvent(formRef)">{{ t('edit') }}</el-button>
</el-card>
</el-form>

View File

@ -16,31 +16,25 @@
</el-form-item>
<el-form-item :label="t('groupId')" prop="group_id">
<el-select v-model="siteTableData.searchParam.group_id" clearable
:placeholder="t('groupIdPlaceholder')" class="input-width">
<el-select v-model="siteTableData.searchParam.group_id" clearable :placeholder="t('groupIdPlaceholder')" class="input-width">
<el-option :label="t('selectPlaceholder')" value="" />
<el-option :label="item['group_name']" :value="item['group_id']" v-for="item in groupList" />
</el-select>
</el-form-item>
<el-form-item :label="t('status')" prop="status">
<el-select v-model="siteTableData.searchParam.status" clearable
:placeholder="t('groupIdPlaceholder')" class="input-width">
<el-select v-model="siteTableData.searchParam.status" clearable :placeholder="t('groupIdPlaceholder')" class="input-width">
<el-option :label="t('selectPlaceholder')" value="" />
<el-option :label="item" :value="index" v-for="(item, index) in statusList" />
</el-select>
</el-form-item>
<el-form-item :label="t('createTime')" prop="create_time">
<el-date-picker v-model="siteTableData.searchParam.create_time" type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('startDate')"
:end-placeholder="t('endDate')" />
<el-date-picker v-model="siteTableData.searchParam.create_time" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('startDate')" :end-placeholder="t('endDate')" />
</el-form-item>
<el-form-item :label="t('expireTime')" prop="expire_time">
<el-date-picker v-model="siteTableData.searchParam.expire_time" type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('startDate')"
:end-placeholder="t('endDate')" />
<el-date-picker v-model="siteTableData.searchParam.expire_time" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('startDate')" :end-placeholder="t('endDate')" />
</el-form-item>
<el-form-item>
@ -56,8 +50,7 @@
<el-icon class="mr-2" size="18">
<Warning />
</el-icon>
<p class="text-base">{{ t('operationTip') }} <span class="cursor-pointer" @click="toSiteLink">{{
siteLink }}</span> </p>
<p class="text-base">{{ t('operationTip') }} <span class="cursor-pointer" @click="toSiteLink">{{siteLink }}</span> </p>
</div>
</template>
</el-alert>
@ -94,8 +87,7 @@
</el-tag>
</template>
</el-table-column>
<el-table-column prop="create_time" :label="t('createTime')" min-width="140"
:show-overflow-tooltip="true" />
<el-table-column prop="create_time" :label="t('createTime')" min-width="140" :show-overflow-tooltip="true" />
<el-table-column prop="expire_time" :label="t('expireTime')" min-width="140"
:show-overflow-tooltip="true">
<template #default="{ row }">
@ -108,9 +100,7 @@
<template #default="{ row }">
<el-button type="primary" link @click="urlEvent(row)">{{ t('url') }}</el-button>
<el-button type="primary" link @click="infoEvent(row)">{{ t('info') }}</el-button>
<el-button type="primary" link @click="openClose(row.status, row.site_id)"
v-if="row.status == 1 || row.status == 3">{{ row.status == 1 ? t('closeTxt') : t('openTxt')
}}</el-button>
<el-button type="primary" link @click="openClose(row.status, row.site_id)" v-if="row.status == 1 || row.status == 3">{{ row.status == 1 ? t('closeTxt') : t('openTxt') }}</el-button>
</template>
</el-table-column>

View File

@ -44,9 +44,7 @@
<el-table-column :label="t('status')" min-width="120" align="center">
<template #default="{ row }">
<el-tag class="ml-2" type="success" v-if="row.status == 1">{{ t('statusNormal') }}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{
t('statusDeactivate')
}}</el-tag>
<el-tag class="ml-2" type="error" v-if="row.status == 0">{{t('statusDeactivate') }}</el-tag>
</template>
</el-table-column>

View File

@ -4,20 +4,16 @@
<el-card class="box-card !border-none" shadow="never">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form">
<el-form-item :label="t('tableName')" prop="table_name">
<el-input v-model="formData.table_name" clearable :placeholder="t('tableNamePlaceholder')"
class="input-width" maxlength="64" />
<el-input v-model="formData.table_name" clearable :placeholder="t('tableNamePlaceholder')" class="input-width" maxlength="64" />
</el-form-item>
<el-form-item :label="t('tableContent')" prop="table_content">
<el-input v-model="formData.table_content" clearable :placeholder="t('tableContentPlaceholder')"
class="input-width" maxlength="64" />
<el-input v-model="formData.table_content" clearable :placeholder="t('tableContentPlaceholder')" class="input-width" maxlength="64" />
</el-form-item>
<el-form-item :label="t('moduleName')">
<el-input v-model="formData.module_name" clearable :placeholder="t('moduleNamePlaceholder')"
class="input-width" />
<el-input v-model="formData.module_name" clearable :placeholder="t('moduleNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('className')">
<el-input v-model="formData.class_name" clearable :placeholder="t('classNamePlaceholder')"
class="input-width" />
<el-input v-model="formData.class_name" clearable :placeholder="t('classNamePlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('editType')">
<el-radio-group v-model="formData.edit_type" :placeholder="t('editTypePlaceholder')">
@ -33,15 +29,12 @@
<el-card class="box-card !border-none p-none" shadow="never">
<el-divider content-position="left">{{ t('commentField') }}</el-divider>
<div class="flex flex-row m-0.5 cursor-pointer flex-wrap" :ref="tabsRefs.set">
<div class="border border-dashed border-gray-200 mt-2 text-sm mr-2 pt-1 pb-1 pl-1.5 pr-1.5 dashed-border design-field"
v-for="(item, index) in fieldList.common" :key="index" :data-id="index">{{ item.column_comment }}
<div class="border border-dashed border-gray-200 mt-2 text-sm mr-2 pt-1 pb-1 pl-1.5 pr-1.5 dashed-border design-field" v-for="(item, index) in fieldList.common" :key="index" :data-id="index">{{ item.column_comment }}
</div>
</div>
<el-divider content-position="left">{{ t('baseField') }}</el-divider>
<div class="flex flex-row m-0.5 cursor-pointer flex-wrap" :ref="tabsRefs.set">
<div class="border border-dashed border-gray-200 mt-2 text-sm mr-2 pt-1 pb-1 pl-1.5 pr-1.5 dashed-border design-field"
v-for="(item, index) in fieldList.base" :key="index" :data-id="index">{{ item.column_comment }}
</div>
<div class="border border-dashed border-gray-200 mt-2 text-sm mr-2 pt-1 pb-1 pl-1.5 pr-1.5 dashed-border design-field" v-for="(item, index) in fieldList.base" :key="index" :data-id="index">{{ item.column_comment }}</div>
</div>
</el-card>
</el-col>
@ -53,25 +46,19 @@
@click="onActivateField(index)" :class="index === formData.editFiledIndex ? 'activate' : ''">
<div class="flex flex-row ">
<div class="flex flex-row design-field">
<div class="text-xs text-gray-500 w-28 items-center justify-end flex">{{
t('columnName') }}</div>
<el-input class="w-50 m-2" v-model="item.column_name" size="small"
:placeholder="t('columnNamePlaceholder')" />
<div class="text-xs text-gray-500 w-28 items-center justify-end flex">{{t('columnName') }}</div>
<el-input class="w-50 m-2" v-model="item.column_name" size="small" :placeholder="t('columnNamePlaceholder')" />
</div>
<div class="flex flex-row design-field">
<div class="text-xs text-gray-500 w-28 items-center justify-end flex">{{
t('columnComment') }}</div>
<el-input class="w-50 m-2" v-model="item.column_comment" size="small"
:placeholder="t('columnCommentPlaceholder')" />
<div class="text-xs text-gray-500 w-28 items-center justify-end flex">{{t('columnComment') }}</div>
<el-input class="w-50 m-2" v-model="item.column_comment" size="small" :placeholder="t('columnCommentPlaceholder')" />
</div>
<div class="flex flex-row design-field flex-shrink-0 w-40">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{
t('columnType') }}</div>
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{t('columnType') }}</div>
<div class="w-50 m-2">{{ item.column_type }}</div>
</div>
</div>
<div @click="onDel(index)"
class="items-center justify-center flex items-center flex-shrink-0 rounded-full bg-red-400 text-white icon-btn w-7 h-7">
<div @click="onDel(index)" class="items-center justify-center flex items-center flex-shrink-0 rounded-full bg-red-400 text-white icon-btn w-7 h-7">
<el-icon>
<Delete />
</el-icon>
@ -88,29 +75,21 @@
<el-divider content-position="left">{{ t('fieldAttribute') }}</el-divider>
<div>
<div class="flex flex-row">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('columnName') }}
</div>
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('columnName') }}</div>
<div>
<el-input class="w-50 m-2"
v-model="formData.table_column[formData.editFiledIndex]['column_name']" size="small"
:placeholder="t('columnNamePlaceholder')" />
<el-input class="w-50 m-2" v-model="formData.table_column[formData.editFiledIndex]['column_name']" size="small" :placeholder="t('columnNamePlaceholder')" />
</div>
</div>
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('columnComment') }}
</div>
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('columnComment') }}</div>
<div>
<el-input class="w-50 m-2"
v-model="formData.table_column[formData.editFiledIndex]['column_comment']" size="small"
:placeholder="t('columnCommentPlaceholder')" />
<el-input class="w-50 m-2" v-model="formData.table_column[formData.editFiledIndex]['column_comment']" size="small" :placeholder="t('columnCommentPlaceholder')" />
</div>
</div>
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isPk') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_pk']">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isPk') }}</div><div>
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_pk']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
@ -120,21 +99,17 @@
<el-divider content-position="left">{{ t('commentField') }}</el-divider>
<div>
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isRequired') }}
</div>
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isRequired') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_required']">
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_required']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
</div>
</div>
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isInsert') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_insert']">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isInsert') }}</div><div>
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_insert']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
@ -143,8 +118,7 @@
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isUpdate') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_update']">
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_update']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
@ -153,8 +127,7 @@
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isLists') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_lists']">
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_lists']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
@ -163,8 +136,7 @@
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isSearch') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_search']">
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_search']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
@ -173,8 +145,7 @@
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('isQuery') }}</div>
<div>
<el-radio-group class="ml-4"
v-model="formData.table_column[formData.editFiledIndex]['is_query']">
<el-radio-group class="ml-4" v-model="formData.table_column[formData.editFiledIndex]['is_query']">
<el-radio :label="1" size="large">{{ t('yes') }}</el-radio>
<el-radio :label="0" size="large">{{ t('no') }}</el-radio>
</el-radio-group>
@ -183,20 +154,16 @@
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('queryType') }}</div>
<div>
<el-select class="m-2" :placeholder="t('selectPlaceholder')" size="small"
v-model="formData.table_column[formData.editFiledIndex]['query_type']">
<el-option :label="item" :value="item" v-for="(item, index) in queryType"
:key="index" />
<el-select class="m-2" :placeholder="t('selectPlaceholder')" size="small" v-model="formData.table_column[formData.editFiledIndex]['query_type']">
<el-option :label="item" :value="item" v-for="(item, index) in queryType" :key="index" />
</el-select>
</div>
</div>
<div class="flex flex-row ">
<div class="text-xs text-gray-500 w-20 items-center justify-end flex">{{ t('viewType') }}</div>
<div>
<el-select class="m-2" :placeholder="t('selectPlaceholder')" size="small"
v-model="formData.table_column[formData.editFiledIndex]['view_type']">
<el-option :label="item.label" :value="item.value" v-for="(item, index) in viewType"
:key="index" />
<el-select class="m-2" :placeholder="t('selectPlaceholder')" size="small" v-model="formData.table_column[formData.editFiledIndex]['view_type']">
<el-option :label="item.label" :value="item.value" v-for="(item, index) in viewType" :key="index" />
</el-select>
</div>
</div>

View File

@ -3,9 +3,7 @@
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<span class="text-[24px]">{{pageName}}</span>
<el-button type="primary" class="w-[100px]" @click="addEvent">
{{ t('addCode') }}
</el-button>
<el-button type="primary" class="w-[100px]" @click="addEvent">{{ t('addCode') }}</el-button>
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">

View File

@ -32,9 +32,11 @@
<el-table-column :label="t('status')" align="left" min-width="140">
<template #default="{ row }">
<span v-if="row.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else><el-icon color="red">
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon></span>
</el-icon>
</span>
</template>
</el-table-column>
</el-table>
@ -50,9 +52,11 @@
<el-table-column :label="t('status')" align="left" min-width="140">
<template #default="{ row }">
<span v-if="row.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else><el-icon color="red">
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon></span>
</el-icon>
</span>
</template>
</el-table-column>
</el-table>