mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2025-12-12 18:02:47 +00:00
admin update
This commit is contained in:
parent
bae50619aa
commit
0e42f93707
@ -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 |
@ -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 |
@ -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=" ">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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" />
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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合法域名",
|
||||
|
||||
@ -41,6 +41,9 @@
|
||||
"imageAdsTips": "建议上传尺寸相同的图片,推荐尺寸750*350",
|
||||
"addImageAd": "添加图片",
|
||||
"imageUrlTip": "请上传图片",
|
||||
"imageHeight": "图片高度",
|
||||
"imageHeightPlaceholder": "请输入图片高度",
|
||||
"imageHeightRegNum": "图片高度格式错误,请输入数字",
|
||||
"articleData": "文章数据",
|
||||
"articleStyle": "文章样式",
|
||||
"articleBgColor": "文章背景",
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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')">
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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" />
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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" />
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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: '',
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>()
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}
|
||||
)
|
||||
|
||||
@ -487,7 +487,6 @@ const promoteEvent = (data: any) => {
|
||||
})
|
||||
|
||||
promoteDialogVisible.value = true;
|
||||
console.log('promoteEvent', data)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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' })
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>()
|
||||
|
||||
// 表单验证规则
|
||||
|
||||
@ -108,8 +108,6 @@ const rules = reactive<FormRules>({
|
||||
]
|
||||
})
|
||||
|
||||
|
||||
|
||||
const onSave = async (formEl: FormInstance | undefined) => {
|
||||
if (loading.value || !formEl) return
|
||||
await formEl.validate((valid) => {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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" />
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user