增加店铺自定义题库的基本操作

This commit is contained in:
zhl 2021-05-31 14:23:53 +08:00
parent ba993db028
commit dddbed3b6f
24 changed files with 813 additions and 47 deletions

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,7 @@ export interface IQuestionData {
category?: string
quality: number
withNext: boolean
shop?: string
}
export const defaultQuestionData: IQuestionData = {

40
src/api/shoppuzzle.ts Normal file
View File

@ -0,0 +1,40 @@
import request from '@/utils/request'
export const getShopQuestions = (params: any) =>
request({
url: `/api/${params.shop}/puzzles`,
method: 'post',
params
})
export const getShopQuestion = (shop: string, id: string, params: any) =>
request({
url: `/api/${shop}/puzzle/${id}`,
method: 'get',
params
})
export const nextShopQuestion = (shop: string, id: string) =>
request({
url: `/api/${shop}/nextpuzzle`,
method: 'post',
data: { id }
})
export const saveShopQuestion = (data: any) =>
request({
url: `/api/${data.shop}/puzzle/save`,
method: 'post',
data
})
export const deleteShopQuestion = (shop: string, id: string) =>
request({
url: `/api/${shop}/puzzle/${id}/delete`,
method: 'post'
})
export const getShopCategory = (shop: string) =>
request({
url: `/api/${shop}/categorys`,
method: 'get'
})

View File

@ -95,7 +95,8 @@ export default {
edit_theme: 'Edit Theme',
shop_member: 'Member Manage',
shop_statistics: 'Statistics',
game_statistics: 'Game Statistics'
game_statistics: 'Game Statistics',
shop_puzzles: 'Custom Puzzles'
},
navbar: {
logOut: 'Log Out',
@ -216,5 +217,8 @@ export default {
},
marketing: {
},
main: {
shop: 'shop'
}
}

View File

@ -95,7 +95,8 @@ export default {
edit_theme: '订制游戏主题',
shop_member: '成员管理',
shop_statistics: '统计',
game_statistics: '游戏数据'
game_statistics: '游戏数据',
shop_puzzles: '自定义题库'
},
navbar: {
logOut: '退出登录',
@ -213,5 +214,8 @@ export default {
},
article: {
add: '添加'
},
main: {
shop: '店铺'
}
}

View File

@ -52,6 +52,39 @@ const questionRoutes: RouteConfig = {
permissions: ['shop:tiku_setting'],
icon: 'excel'
}
},
{
path: 'shoppuzzles',
component: () => import('@/views/question/shop_puzzles.vue'),
name: 'ShopPuzzles',
meta: {
title: 'shop_puzzles',
permissions: ['shoppuzzle:read'],
icon: 'form'
}
},
{
path: 'newshoppuzzle/:shop',
component: () => import('@/views/question/shop_puzzle_editor.vue'),
name: 'CreatePuzzle',
meta: {
title: 'createQuestion',
permissions: ['shoppuzzle:edit'],
icon: 'edit',
hidden: true
}
},
{
path: 'shoppuzzle/:shop/:id',
component: () => import('@/views/question/shop_puzzle_editor.vue'),
name: 'PuzzleEditor',
meta: {
title: 'question_prepare',
permissions: ['shoppuzzle:edit'],
elicon: 'el-icon-arrow-right',
hidden: true
}
}
]
}

3
src/utils/event-bus.ts Normal file
View File

@ -0,0 +1,3 @@
import Vue from 'vue'
export const EventBus = new Vue()

View File

@ -10,10 +10,10 @@
>
<el-tabs v-model="activeName">
<el-tab-pane label="基本信息" name="first">
<el-form-item label="店铺" prop="key" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" prop="key" v-if="userLevel === 1">
<el-select
v-model="postForm.shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"

View File

@ -5,10 +5,10 @@
<el-form-item label="关键字" prop="key">
<el-input v-model="filterForm.key" placeholder="关键字"/>
</el-form-item>
<el-form-item label="店铺" prop="key" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" prop="key" v-if="userLevel === 1">
<el-select
v-model="filterForm.shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"
@ -54,7 +54,7 @@
</template>
</el-table-column>
<el-table-column
label="店铺"
:label="$t('main.shop')"
prop="shop"
v-if="userLevel === 1"
:formatter = "formatDept"

View File

@ -225,7 +225,7 @@
<div class="action-bar">
<el-select
v-model="shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"
@ -255,7 +255,7 @@
</template>
</el-table-column>
<el-table-column
label="店铺"
:label="$t('main.shop')"
prop="shop"
v-if="userLevel === 1"
:formatter = "formatDept"

View File

@ -10,10 +10,10 @@
>
<el-tabs v-model="activeName">
<el-tab-pane label="基本信息" name="first">
<el-form-item label="店铺" prop="key" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" prop="key" v-if="userLevel === 1">
<el-select
v-model="postForm.shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"

View File

@ -5,10 +5,10 @@
<el-form-item label="关键字" prop="key">
<el-input v-model="filterForm.key" placeholder="关键字"/>
</el-form-item>
<el-form-item label="店铺" prop="key" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" prop="key" v-if="userLevel === 1">
<el-select
v-model="filterForm.shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"
@ -54,7 +54,7 @@
</template>
</el-table-column>
<el-table-column
label="店铺"
:label="$t('main.shop')"
prop="shop"
v-if="userLevel === 1"
:formatter = "formatDept"

View File

@ -20,7 +20,7 @@
<el-row>
<el-select
v-model="shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"

View File

@ -183,6 +183,7 @@ export default class extends Vue {
query: this.otherQuery
}).catch(err => {
// console.warn(err)
this.loading = false
})
// Just to simulate the time of the request
setTimeout(() => {

View File

@ -5,7 +5,7 @@
<el-form-item label="关键字" prop="key">
<el-input v-model="filterForm.key" placeholder="关键字"/>
</el-form-item>
<el-form-item label="店铺" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" v-if="userLevel === 1">
<el-select
v-model="filterForm.department"
placeholder="所有"
@ -53,7 +53,7 @@
</template>
</el-table-column>
<el-table-column
label="店铺"
:label="$t('main.shop')"
prop="shop"
v-if="userLevel === 1"
:formatter = "formatDept"

View File

@ -7,10 +7,10 @@
label-width="121px"
class="form-container"
>
<el-form-item label="店铺" prop="shop" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" prop="shop" v-if="userLevel === 1">
<el-select
v-model="postForm.shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"

View File

@ -5,7 +5,7 @@
<el-form-item label="关键字" prop="key">
<el-input v-model="filterForm.key" placeholder="关键字"/>
</el-form-item>
<el-form-item label="店铺">
<el-form-item :label="$t('main.shop')">
<el-select
v-model="filterForm.department"
placeholder="所有"

View File

@ -3,7 +3,7 @@
<el-row style="margin-bottom: 24px">
<el-select
v-model="shop"
placeholder="选择店铺"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"

View File

@ -0,0 +1,356 @@
<template>
<div class="createPost-container">
<el-form
ref="postForm"
:model="postForm"
:rules="rules"
label-width="120px"
class="form-container"
>
<div class="createPost-main-container">
<el-row>
<el-col :span="24">
<el-form-item
style="margin-bottom: 40px;"
prop="question"
>
<material-input
v-model="postForm.question"
:maxlength="100"
name="question"
required
>
题目
</material-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item
style="margin-bottom: 40px;"
label="答案:"
prop="a1"
>
<el-input
v-model="postForm.a1"
placeholder="输入答案"
name="a1"
required
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="评分:"
class="postInfo-container-item"
>
<el-rate
v-model="postForm.quality"
:max="3"
:colors="['#99A9BF', '#F7BA2A', '#ff5900']"
:low-threshold="1"
:high-threshold="3"
style="display:inline-block"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item
style="margin-bottom: 40px;"
label="混淆答案1:"
>
<el-input
v-model="postForm.a2"
:rows="1"
placeholder="输入答案"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
style="margin-bottom: 40px;"
label="混淆答案2:"
>
<el-input
v-model="postForm.a3"
:rows="1"
placeholder="输入答案"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
style="margin-bottom: 40px;"
label="混淆答案3:"
>
<el-input
v-model="postForm.a4"
:rows="1"
placeholder="输入答案"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item
label="TAGS:"
>
<el-select
v-model="postForm.groups"
multiple
filterable
allow-create
default-first-option
style="width: 50%"
@change="tagChange"
placeholder="请选择">
<el-option
v-for="item in tagOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<el-button
type="primary"
v-loading="loading"
@click="submitForm"
v-permission="['shoppuzzle:edit']"
>
保存
</el-button>
<el-button
v-loading="loading"
style="margin-left: 10px;"
type="danger"
@click="deleteRecord"
v-permission="['shoppuzzle:delete']"
>
删除
</el-button>
<el-button @click="onCancel">
取消
</el-button>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'
import { AppModule } from '@/store/modules/app'
import { ITagView, TagsViewModule } from '@/store/modules/tags-view'
import MaterialInput from '@/components/MaterialInput/index.vue'
import Sticky from '@/components/Sticky/index.vue'
import Tinymce from '@/components/Tinymce/index.vue'
import UploadImage from '@/components/UploadImage/index.vue'
import { defaultQuestionData } from '@/api/question'
import { deleteShopQuestion, getShopQuestion, saveShopQuestion } from '@/api/shoppuzzle'
import { EventBus } from '@/utils/event-bus'
@Component({
name: 'ShopPuzzleEdit',
components: {
MaterialInput,
Sticky,
Tinymce,
UploadImage
}
})
export default class extends Vue {
private validateRequire = (rule: any, value: string, callback: Function) => {
if (value === '') {
if (rule.field === 'imageURL') {
this.$message({
message: 'Upload cover image is required',
type: 'error'
})
} else {
this.$message({
message: rule.field + ' 是必填的',
type: 'error'
})
}
callback(new Error(rule.field + ' 是必填的'))
} else {
callback()
}
}
private postForm = Object.assign({}, defaultQuestionData)
private loading = false
private rules = {
question: [{ validator: this.validateRequire }],
a1: [{ validator: this.validateRequire }]
}
private typeSelect: string[] = []
private tagSet: Set<string> = new Set()
private tagOptions: string[] = []
private tempTagView?: ITagView
get lang() {
return AppModule.language
}
$refs!: {
postForm: HTMLFormElement
}
created() {
const shop = this.$route.params && this.$route.params.shop
this.postForm.shop = shop
const id = this.$route.params && this.$route.params.id
if (id) {
this.fetchData(shop, id)
}
this.tempTagView = Object.assign({}, this.$route)
}
private async fetchData(shop: string, id: string) {
try {
const { data } = await getShopQuestion(shop, id, {})
this.postForm = data
this.typeSelect = [this.postForm.tag || '', this.postForm.sub_tag || '']
// Just for test
const title = this.lang === 'zh' ? '编辑题目' : 'Edit Question'
// Set tagsview title
this.setTagsViewTitle(title)
// Set page title
this.setPageTitle(title)
} catch (err) {
console.error(err)
}
}
private setTagsViewTitle(title: string) {
const tagView = this.tempTagView
if (tagView) {
tagView.title = `${title}-${this.postForm._id}`
TagsViewModule.updateVisitedView(tagView)
}
}
private setPageTitle(title: string) {
document.title = `${title} - ${this.postForm._id}`
}
private typeChange() {
this.postForm.tag = this.typeSelect[0]
this.postForm.sub_tag = this.typeSelect[1]
}
private async tagChange(tags: string[]) {
console.log('tagchange: ', tags)
for (const tag of tags) {
if (!this.tagSet.has(tag)) {
this.tagSet.add(tag)
this.tagOptions.push(tag)
}
}
}
private async submitForm() {
await this.saveRecord(false)
}
private async saveNext() {
await this.saveRecord(true)
}
private async saveRecord(withNext: boolean) {
try {
await this.$refs.postForm.validate()
this.loading = true
const { data } = await saveShopQuestion(this.postForm)
this.postForm = data
this.loading = false
this.$notify({
title: 'Success',
message: '题目保存成功',
type: 'success',
duration: 2000
})
EventBus.$emit('shop_puzzles_update', {})
} catch (err) {
console.error('Submit Error!')
this.loading = false
return false
}
}
private async deleteRecord() {
try {
this.loading = true
await this.$confirm('确认删除当前记录?', 'Warning', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await deleteShopQuestion(this.postForm.shop!, this.postForm._id!)
this.loading = false
EventBus.$emit('shop_puzzles_update', {})
this.$store.dispatch('delView', this.$route)
this.$router.go(-1)
} catch (e) {
this.loading = false
}
}
private async onCancel() {
try {
await this.$confirm('确认不保存当前记录?', 'Warning', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
this.$store.dispatch('delView', this.$route)
this.$router.go(-1)
} catch (e) {
}
}
}
</script>
<style lang="scss" scoped>
.createPost-container {
position: relative;
.createPost-main-container {
padding: 40px 45px 20px 50px;
.postInfo-container {
position: relative;
@include clearfix;
margin-bottom: 10px;
.postInfo-container-item {
float: left;
}
}
}
.word-counter {
width: 40px;
position: absolute;
right: 10px;
top: 0px;
}
}
</style>

View File

@ -0,0 +1,319 @@
<template>
<div class="app-container">
<!-- filter -->
<el-form ref="filterForm" :inline="true" :model="filterForm" class="filter">
<el-form-item label="关键字" prop="key">
<el-input v-model="filterForm.key" placeholder="关键字"/>
</el-form-item>
<el-form-item :label="$t('main.shop')" prop="key" v-if="userLevel === 1">
<el-select
v-model="filterForm.shop"
:placeholder="'选择'+$t('main.shop')"
name="shop"
required
class="w100"
>
<el-option
v-for="item in allDepts"
:key="item._id"
:label="item.name"
:value="item._id"
/>
</el-select>
</el-form-item>
<el-form-item label="分类" prop="key">
<el-select
v-model="filterForm.typeSelect"
placeholder="选择"
name="typeSelect"
required
class="w100"
multiple
v-loading="cateLoading"
>
<el-option
v-for="item in typeOptions"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="search">查询</el-button>
<el-button @click="resetFilterForm">重置</el-button>
</el-form-item>
</el-form>
<router-link :to="'/question/newshoppuzzle/' + filterForm.shop">
<el-button
type="primary"
icon="el-icon-edit"
v-permission="['shoppuzzle:edit']"
>
添加
</el-button>
</router-link>
<el-table
v-loading="listLoading"
:data="list"
border
fit
highlight-current-row
style="width: 100%;margin-top:30px;"
>
<el-table-column
width="180px"
align="center"
label="添加时间"
>
<template slot-scope="{row}">
<span>{{ row.createtime | parseTime }}</span>
</template>
</el-table-column>
<el-table-column
min-width="200px"
label="名称"
>
<template slot-scope="{row}">
<router-link
:to="'/question/edit/'+row._id"
class="link-type"
>
<span>{{ row.question }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column
label="答案"
>
<template slot-scope="{row}">
<span>{{ row.a1 }}</span>
</template>
</el-table-column>
<el-table-column
label="混淆答案"
>
<template slot-scope="{row}">
<span>{{ row.a2 || '' }} {{ row.a3 || '' }} {{ row.a4 || '' }}</span>
</template>
</el-table-column>
<el-table-column
label="Tags"
>
<template slot-scope="{row}">
<el-tag v-for="item in row.groups" :key="item">{{ item }}</el-tag>
</template>
</el-table-column>
<el-table-column
align="center"
width="180"
label="操作"
fixed="right"
>
<template slot-scope="scope">
<router-link :to="'/question/shoppuzzle/'+scope.row.shop+'/'+scope.row._id">
<el-button
type="primary"
size="small"
icon="el-icon-edit"
v-permission="['shoppuzzle:edit']"
>
编辑
</el-button>
</router-link>
<el-button
type="danger"
size="small"
style="margin-left: 10px"
@click="handleDelete(scope)"
v-permission="['shoppuzzle:delete']"
>
{{ $t('permission.delete') }}
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="listQuery.page"
:limit.sync="listQuery.limit"
@pagination="getList"
/>
</div>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
import Pagination from '@/components/Pagination/index.vue'
import { getShops } from '@/api/shop'
import { parseTime } from '@/utils'
import { IQuestionData } from '@/api/question'
import { UserModule } from '@/store/modules/user'
import { deleteShopQuestion, getShopCategory, getShopQuestions } from '@/api/shoppuzzle'
import { IShopData } from '@/api/types'
import { EventBus } from '@/utils/event-bus'
@Component({
name: 'ShopPuzzles',
components: {
Pagination
},
filters: {
parseTime: (timestamp: string) => {
return parseTime(timestamp)
},
parseDate: (timestamp: string) => {
if (!timestamp) {
return '-'
}
return parseTime(timestamp, '{y}-{m}-{d}')
},
formatCount: (count: string) => {
if (!count) {
return 0
}
return count
}
}
})
export default class extends Vue {
private total = 0
private list: IQuestionData[] = []
private listLoading = false
private cateLoading = false
private allDepts: IShopData[] = []
private listQuery = {
page: 1,
limit: 20,
key: '',
tag: '',
sub_tag: '',
groups: [],
shop: ''
}
private typeOptions: any[] = []
private filterForm = {
key: '',
typeSelect: [],
shop: ''
}
$refs!: {
filterForm: HTMLFormElement
}
get userLevel() {
return UserModule.level
}
async created() {
if (UserModule.level === 1) {
await this.getRemoteDeptList()
} else {
this.filterForm.shop = UserModule.department
this.listQuery.shop = UserModule.department
await this.getList()
}
// this.getList()
EventBus.$on('shop_puzzles_update', () => {
this.getList()
})
}
beforeDestory() {
EventBus.$off('shop_puzzles_update')
}
private async getList() {
this.listLoading = true
const { data } = await getShopQuestions(this.listQuery)
this.listLoading = false
this.list = data.records
this.total = data.total
}
private async handleDelete(scope: any) {
const { $index, row } = scope
await this.$confirm('确认删除该记录?', 'Warning', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await deleteShopQuestion(this.listQuery.shop, row._id)
this.list.splice($index, 1)
this.$message({
type: 'success',
message: '删除成功!'
})
}
private search() {
this.filterData()
}
private filterData() {
this.listQuery.key = this.filterForm.key
if (this.filterForm.typeSelect.length > 0) {
this.listQuery.tag = this.filterForm.typeSelect[0]
}
if (this.filterForm.typeSelect.length > 1) {
this.listQuery.sub_tag = this.filterForm.typeSelect[1]
}
this.listQuery.page = 1
this.getList()
}
private resetFilterForm() {
this.$refs.filterForm.resetFields()
}
private async getRemoteDeptList(name?: string) {
const { data } = await getShops({ key: name })
if (!data.records) return
this.allDepts = data.records
if (this.allDepts.length > 0) {
this.filterForm.shop = this.allDepts[0]._id!
}
}
@Watch('filterForm.shop')
private filterShopChange(val: string) {
console.log('filterForm.shop: ', val)
this.listQuery.shop = this.filterForm.shop
this.getRemoteCategory()
this.getList()
}
@Watch('filterForm.')
private filerTypeChange(val: string) {
this.listQuery.groups = this.filterForm.typeSelect
this.getList()
}
private async getRemoteCategory() {
this.cateLoading = true
try {
const { data } = await getShopCategory(this.listQuery.shop)
this.typeOptions = data
this.cateLoading = false
this.$forceUpdate()
} catch (err) {
this.cateLoading = false
}
}
}
</script>
<style lang="scss" scoped>
.el-tag{
margin-right: 5px;
}
</style>

View File

@ -8,7 +8,7 @@
class="form-container"
>
<el-form-item
label="店铺名"
:label="$t('main.shop')+'名'"
>
<el-select
v-model="postForm.name"
@ -17,7 +17,7 @@
default-first-option
remote
@change="areaSelectChange"
placeholder="搜索店铺"
:placeholder="'搜索'+$t('main.shop')"
allow-create
style="width: 50%"
>
@ -121,6 +121,7 @@ import UploadImage from '@/components/UploadImage/index.vue'
import RegionPicker from '@/components/RegionPicker/index.vue'
import { defaultShopData, getShop, saveShop } from '@/api/shop'
import { addressToLoc, IAreaData, queryArea } from '@/api/map'
import i18n from '@/lang'
@Component({
name: 'ShopEditor',
@ -183,7 +184,7 @@ export default class extends Vue {
console.log(data)
this.postForm = data
// Just for test
const title = this.lang === 'zh' ? '编辑店铺' : 'Edit Shop'
const title = this.lang === 'zh' ? `编辑${i18n.tc('main.shop')}` : 'Edit Shop'
// Set tagsview title
this.setTagsViewTitle(title)
// Set page title
@ -226,7 +227,7 @@ export default class extends Vue {
private async onCancel() {
try {
await this.$confirm('确认不保存当前店铺信息?', 'Warning', {
await this.$confirm(`确认不保存当前${i18n.tc('main.shop')}信息?`, 'Warning', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'

View File

@ -51,7 +51,7 @@
<el-table-column
min-width="200px"
label="店铺名"
label=""
>
<template slot-scope="{row}">
<router-link
@ -150,6 +150,7 @@ import { IShopData } from '@/api/types'
import Pagination from '@/components/Pagination/index.vue'
import { deleteShop, getShops, updateShopPublish } from '@/api/shop'
import { parseTime } from '@/utils'
import i18n from '@/lang'
@Component({
name: 'ShopList',
@ -205,22 +206,25 @@ export default class extends Vue {
private async handleDelete(scope: any) {
const { $index, row } = scope
await this.$confirm('确认删除该店铺?', 'Warning', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await deleteShop(row._id)
this.list.splice($index, 1)
this.$message({
type: 'success',
message: '删除成功!'
})
try {
await this.$confirm(`确认删除该${i18n.tc('main.shop')}?`, 'Warning', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await deleteShop(row._id)
this.list.splice($index, 1)
this.$message({
type: 'success',
message: '删除成功!'
})
} catch (err) {
}
}
private async publishShop(scope: any) {
const { row } = scope
const str = row.publish ? '确认取消该店铺的审核状态?' : '确定通过该店铺的审核?'
const str = row.publish ? `确认取消该${i18n.tc('main.shop')}的审核状态?` : `确定通过该${i18n.tc('main.shop')}的审核?`
try {
await this.$confirm(str, 'Warning', {
confirmButtonText: '确定',

View File

@ -20,7 +20,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="店铺" v-if="userLevel === 1">
<el-form-item :label="$t('main.shop')" v-if="userLevel === 1">
<el-select
v-model="filterForm.department"
placeholder="所有"
@ -67,7 +67,7 @@
<el-table-column
prop="department"
align="center"
label="店铺"
:label="$t('main.shop')"
v-if="userLevel === 1"
>
<template slot-scope="{row}">
@ -218,11 +218,11 @@
</el-form-item>
<el-form-item label="帐号类型">
<el-radio-group v-model="record.level" size="small">
<el-radio-button :label="9">店铺</el-radio-button>
<el-radio-button :label="9">{{$t('main.shop')}}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item
label="店铺"
:label="$t('main.shop')"
prop="department"
v-if="userLevel === 1"
>

View File

@ -20,7 +20,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="店铺">
<el-form-item :label="$t('main.shop')">
<el-select
v-model="filterForm.department"
placeholder="所有"
@ -68,7 +68,7 @@
<el-table-column
prop="department"
align="center"
label="店铺"
:label="$t('main.shop')"
>
<template slot-scope="{row}">
{{formatDept(row)}}
@ -223,7 +223,7 @@
</el-radio-group>
</el-form-item>
<el-form-item
label="店铺"
:label="$t('main.shop')"
prop="department"
v-if="record.level === 9"
>