Commit 149d0a36 authored by Davve's avatar Davve

跳转

parent 89443bb1
......@@ -13,7 +13,7 @@ class AccountList(APIView):
limit = int(request.GET.get('limit', 10))
filter = self.handle_filter(request.GET.get('filter', ""))
try:
data = self.rpc['venus/community/account/get'](offset=page, limit=limit, filters=filter).unwrap()
data = self.rpc['venus/sun/account/list'](offset=page, limit=limit, filters=filter).unwrap()
except Exception as e:
raise e
return data
......@@ -46,10 +46,10 @@ class AccountUpdateOrCreateView(APIView):
'email': request.POST.get('email'),
'password': request.POST.get('password'),
'phone': request.POST.get('phone'),
'nickname': request.POST.get('nickname'),
'nick_name': request.POST.get('nick_name'),
}
try:
self.rpc['venus/community/account/create'](id=id, data=data).unwrap()
self.rpc['venus/sun/account/edit'](id=id, data=data).unwrap()
except Exception as e:
raise e
return {
......
......@@ -9,9 +9,15 @@ from utils.base import APIView
class GroupListView(APIView):
def get(self, request):
star_id = request.GET.get('star_id')
user_id = request.GET.get('user_id')
offset = int(request.GET.get('page', 0))
limit = int(request.GET.get('limit', 10))
filters = self.handle_filter(request.GET.get('filter', ""))
if star_id:
filters.update({'star_id': star_id})
if user_id:
filters.update({'user_id': user_id})
try:
data = self.rpc['venus/sun/group/list'](filters=filters, offset=(offset-1)*limit, limit=limit).unwrap()
except Exception as e:
......@@ -68,12 +74,14 @@ class GroupUpdateOrCreate(APIView):
class GroupRelatedUser(APIView):
def get(self, request):
print(request.GET)
id = request.GET.get('id')
offset = int(request.GET.get('page', 0))
count = int(request.GET.get('limit', 10))
filters = {'group_id': id}
try:
data = self.rpc['venus/sun/group/user/list'](filters=filters, offset=offset, limit=count).unwrap()
print(data, '--------------')
except Exception as e:
raise e
return data
......
......@@ -12,7 +12,7 @@ class TagListView(APIView):
limit = int(request.GET.get('limit', 10))
filter = self.handle_filter(request.GET.get('filter', ""))
try:
data = self.rpc['venus/community/tag/get'](offset=offset, limit=limit, filters=filter).unwrap()
data = self.rpc['venus/sun/tag/list'](offset=offset, limit=limit, filters=filter).unwrap()
except Exception as e:
raise e
return data
......@@ -20,13 +20,13 @@ class TagListView(APIView):
def post(self, request):
ids = request.POST.get('ids', '').split()
type = request.POST.get('type', '')
filters = {}
updates = {}
if type == 'offline':
filters['is_online'] = False
updates['is_online'] = False
else:
filters['is_online'] = True
updates['is_online'] = True
try:
self.rpc['venus/community/tag/batch/update'](filters=filters, tag_ids=ids).unwrap()
self.rpc['venus/sun/tag/batch/update'](updates=updates, ids=ids).unwrap()
except Exception as e:
raise e
return {
......@@ -38,26 +38,25 @@ class TagUpdateOrCreateView(APIView):
def get(self, request):
id = request.GET.get('id')
try:
data = self.rpc['venus/community/tag/get'](id=id).unwrap()
data = self.rpc['venus/sun/tag/get'](id=id).unwrap()
except Exception as e:
raise e
if not data:
data = {}
else:
data = data['data'][0]
pass
return {'data': data}
def post(self, request):
id = request.POST.get('id')
data = {
'name': request.POST.get('name'),
'level': request.POST.get('level'),
'type': request.POST.get('type'),
'description': request.POST.get('description'),
'down_tag': list(set(request.POST.get('down_tag', '').split(','))),
'up_tag': list(set(request.POST.get('up_tag', '').split(','))),
'down_tag': list(set(request.POST.get('down_tags', '').split(','))),
'up_tag': list(set(request.POST.get('down_tags', '').split(','))),
}
try:
self.rpc['venus/community/tag/update_or_create'](data=data).unwrap()
self.rpc['venus/sun/tag/edit'](id=id, data=data).unwrap()
except Exception as e:
raise e
return {
......
......@@ -10,9 +10,15 @@ from utils.time_utils import analysis_time
class TopicListView(APIView):
def get(self, request):
user_id = request.GET.get('user_id', '')
group_id = request.GET.get('group_id', '')
offset = int(request.GET.get('page', 0))
limit = int(request.GET.get('limit', 10))
filter = self.handle_filter(request.GET.get('filter', ""))
if user_id:
filter.update({'user_id': user_id})
if group_id:
filter.update({'group_id': group_id})
try:
data = self.rpc['venus/sun/topic/list'](offset=(offset - 1) * limit, limit=limit, filters=filter).unwrap()
except Exception as e:
......
......@@ -38,7 +38,7 @@ urlpatterns = [
url(r'^group/list$', GroupListView.as_view()),
url(r'^group/list/update$', GroupListView.as_view()),
url(r'^group/get$', GroupUpdateOrCreate.as_view()),
url(r'group/create$', GroupUpdateOrCreate.as_view()),
url(r'^group/create$', GroupUpdateOrCreate.as_view()),
url(r'^group/user/list$', GroupRelatedUser.as_view()),
url(r'^group/user/get$', GroupRelatedUserGET.as_view()),
......
......@@ -10,9 +10,12 @@ from utils.time_utils import analysis_time
class UserListView(APIView):
def get(self, request):
group_id = request.GET.get('group_id', '')
page = int(request.GET.get('page', 1))
limit = int(request.GET.get('limit', 10))
filter = self.handle_filter(request.GET.get('filter', ""))
if group_id:
filter.update({'group_id': group_id})
try:
data = self.rpc['venus/sun/user/list'](offset=(page-1)*limit, limit=limit, filters=filter).unwrap()
except Exception as e:
......@@ -35,7 +38,7 @@ class UserUpdateOrCreate(APIView):
data = {
'is_recommend': request.POST.get('is_recommend'),
'avatar': request.POST.get('avatar'),
'profile_pic': request.POST.get('avatar')[:-2],
'nick_name': request.POST.get('nick_name'),
'tag_ids': request.POST.get('tag_ids'),
'is_puppet': request.POST.get('is_puppet'),
......@@ -59,11 +62,11 @@ class UserUpdateOrCreate(APIView):
class UserGroupView(APIView):
def get(self, request):
user_id = request.GET.get('id')
offset = int(request.GET.get('page', 0))
count = int(request.GET.get('limit', 10))
filters = {'user_id': user_id}
try:
data = self.rpc['venus/sun/user/group/list'](user_id=user_id).unwrap()
data = self.rpc['venus/sun/group/user/list'](filters=filters, offset=(offset - 1) * count, limit=count).unwrap()
except Exception as e:
raise e
return {
'total': 1,
'data': data
}
\ No newline at end of file
return data
\ No newline at end of file
......@@ -91,7 +91,6 @@ export default new Router({
export const asyncRouterMap = [
/** When your routing table is too long, you can split it into small modules**/
componentsRouter,
AccountRouter,
UserRouter,
GroupRouter,
......
......@@ -43,8 +43,8 @@
<el-row>
<el-col :span="24">
<el-form-item style="margin-bottom: 40px;" prop="nickname">
<MDinput v-model="postForm.nickname" :maxlength="100" name="nickname" required>
<el-form-item style="margin-bottom: 40px;" prop="nick_name">
<MDinput v-model="postForm.nick_name" :maxlength="100" name="nick_name" required>
姓名
</MDinput>
</el-form-item>
......@@ -82,7 +82,7 @@ const defaultForm = {
password: '',
email: '',
phone: '',
nickname: ''
nick_name: ''
}
export default {
......@@ -112,7 +112,7 @@ export default {
userListOptions: [],
rules: {
username: [{ validator: validateRequire}],
nickname: [{ validator: validateRequire}],
nick_name: [{ validator: validateRequire}],
email: [{ validator: validateRequire}],
password: [{ validator: validateRequire}],
phone: [{ validator: validateRequire}],
......
......@@ -11,8 +11,8 @@
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit" @click="handleOfflineOrOnline('online')">上线</el-button>
</div>
<el-table v-loading="listLoading" :data="list" border fit highlight-current-row style="width: 100%" ref="multipleTable" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<el-table-column align="center" label="账号ID" width="180">
<el-table-column type="selection" align="center"></el-table-column>
<el-table-column align="center" label="账号ID" >
<template slot-scope="scope">
<router-link :to="'/account/edit/'+scope.row.id" class="link-type">
<span>{{ scope.row.id }}</span>
......@@ -20,20 +20,20 @@
</template>
</el-table-column>
<el-table-column width="307px" align="center" label="用户名">
<el-table-column align="center" label="用户名">
<template slot-scope="scope">
<span>{{ scope.row.username }}</span>
</template>
</el-table-column>
<el-table-column width="280px" align="center" label="密码">
<el-table-column align="center" label="密码">
<template slot-scope="scope">
<span>{{ scope.row.password }}</span>
</template>
</el-table-column>
<el-table-column width="380px" align="center" label="邮箱">
<el-table-column align="center" label="邮箱">
<template slot-scope="scope">
<span>{{ scope.row.email }}</span>
</template>
......
......@@ -147,7 +147,7 @@
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit"
<pagination v-show="total>0" :total="total" :page="listQuery.page" :limit="listQuery.limit"
style="margin-left: 250px;" @pagination="getList"/>
</div>
</el-card>
......@@ -383,9 +383,8 @@
},
getList() {
this.listLoading = true
let id = this.$route.params && this.$route.params.id;
this.listQuery.id = this.$route.params && this.$route.params.id
fetchGroupRelateduser(this.list.listQuery).then(response => {
fetchGroupRelateduser(this.listQuery).then(response => {
let rep = response.data.data.data
this.tableData = response.data.data.data
this.total = response.data.data.total
......
......@@ -48,7 +48,7 @@
<el-table-column align="center" label="用户数">
<template slot-scope="scope">
<router-link :to="'/user/edit/'+scope.row.id" class="link-type">
<router-link :to="{path: '/user/list/', query: {group_id: scope.row.id}}" class="link-type">
<span>{{ scope.row.user_nums }}</span>
</router-link>
</template>
......@@ -56,7 +56,7 @@
<el-table-column align="center" label="帖子数">
<template slot-scope="scope">
<router-link :to="'/topic/list/'+scope.row.id" class="link-type">
<router-link :to="{path: '/topic/list/', query: {group_id: scope.row.id}}" class="link-type">
<span>{{ scope.row.topic_nums }}</span>
</router-link>
</template>
......@@ -151,6 +151,8 @@ export default {
methods: {
getList() {
this.listLoading = true
this.listQuery.star_id = this.$route.query.star_id || ''
this.listQuery.user_id = this.$route.query.user_id || ''
fetchList(this.listQuery).then(response => {
console.log(response.data.data.data)
this.list = response.data.data.data
......
......@@ -42,13 +42,12 @@
</template>
<script>
import { isvalidUsername } from '@/utils/validate'
export default {
name: 'Login',
data() {
const validateUsername = (rule, value, callback) => {
if (!isvalidUsername(value)) {
if (!value) {
callback(new Error('Please enter the correct user name'))
} else {
callback()
......@@ -63,8 +62,8 @@ export default {
}
return {
loginForm: {
username: 'admin',
password: 'admin'
username: '',
password: ''
},
loginRules: {
username: [{ required: true, trigger: 'blur', validator: validateUsername }],
......
......@@ -167,7 +167,6 @@ export default {
}
OffLineOrOnLine({type:val, ids:str}).then(response => {
this.multipleSelection = [];
response.data.data.message
this.$message.success(response.data.data.message);
})
},
......
......@@ -46,7 +46,7 @@
<el-table-column align="center" label="小组数量">
<template slot-scope="scope">
<router-link :to="'/group/edit/'+scope.row.id" class="link-type">
<router-link :to="{path: '/group/list/', query: {star_id: scope.row.id}}" class="link-type">
<span>{{ scope.row.group_nums }}</span>
</router-link>
</template>
......
......@@ -22,13 +22,13 @@
<div class="postInfo-container">
<el-row>
<el-col :span="12">
<el-form-item style="margin-bottom: 20px;" label-width="75px" label="标签ID:" prop="position">
<el-input :rows="1" v-model="postForm.id" type="number" class="article-textarea" style="width: 300px" readonly v-if="isEdit"/>
<el-form-item style="margin-bottom: 20px;" label-width="75px" label="标签ID:" prop="position" v-if="isEdit">
<el-input :rows="1" v-model="postForm.id" type="number" class="article-textarea" style="width: 300px" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item style="margin-bottom: 20px;" label-width="75px" label="创建时间:" prop="position">
<el-input :rows="1" v-model="postForm.create_time" type="text" class="article-textarea" style="width: 300px" readonly v-if="isEdit"/>
<el-form-item style="margin-bottom: 20px;" label-width="75px" label="创建时间:" prop="position" v-if="isEdit">
<el-input :rows="1" v-model="postForm.create_time" type="text" class="article-textarea" style="width: 300px" disabled />
</el-form-item>
</el-col>
</el-row>
......@@ -40,7 +40,7 @@
<el-form-item label-width="75px" label="上级标签:" class="postInfo-container-item">
<el-select v-model="postForm.up_tags" :remote-method="getRemoteTagList" filterable remote multiple value-key="id"
placeholder="搜索标签" style="width: 70%">
<el-option v-for="(item,index) in upTagListOptions" :key="item+index" :label="item.name" :value="item.id"/>
<el-option v-for="(item,index) in TagListOptions" :key="item+index" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
</el-col>
......@@ -59,7 +59,7 @@
:loading="loading"
value-key="id"
>
<el-option v-for="(item, index) in groupListOptions" :key="item+index" :label="item.name" :value="item.id"/>
<el-option v-for="(item, index) in TagListOptions" :key="item+index" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
</el-col>
......@@ -126,8 +126,7 @@
return {
postForm: Object.assign({}, defaultForm),
loading: false,
upTagListOptions: [],
groupListOptions: [],
TagListOptions: [],
rules: {
name: [{validator: validateRequire, trigger: 'blur'}],
},
......@@ -160,10 +159,12 @@
let rep = response.data.data.data;
let up_temp = []
let down_temp = []
console.log(rep.up_tags,'-=========', rep.up_tags.length)
for (let i=0;i<rep.up_tags.length;i++){
up_temp.push(rep.up_tags[i]['name']);
this.temparray['up_tags'].push(rep.up_tags[i])
}
console.log(rep.down_tags.length)
for (let i=0;i<rep.down_tags.length;i++){
down_temp.push(rep.down_tags[i]['name']);
this.temparray['down_tags'].push(rep.down_tags[i])
......@@ -171,7 +172,7 @@
rep.down_tags = down_temp
rep.up_tags = up_temp
this.postForm = rep
console.log(this.postForm)
}).catch(err => {
console.log(err)
})
......@@ -184,7 +185,6 @@
this.postForm.up_tags = Assembledata(this.temparray['up_tags'], this.postForm.up_tags);
this.postForm.down_tags = Assembledata(this.temparray['down_tags'], this.postForm.down_tags);
}else{
this.postForm.up_tags = this.postForm.up_tags.join(',')
this.postForm.down_tags = this.postForm.down_tags.join(',')
}
......@@ -221,7 +221,7 @@
getRemoteTagList(query) {
tagSearch(query).then(response => {
if (!response.data.data.data) return
this.upTagListOptions = response.data.data.data
this.TagListOptions = response.data.data.data
})
},
}
......
......@@ -126,7 +126,6 @@ export default {
}
OffLineOrOnLine({type:val, ids:str}).then(response => {
this.multipleSelection = [];
response.data.data.message
this.$message.success(response.data.data.message);
})
},
......
......@@ -162,6 +162,8 @@ export default {
methods: {
getList() {
this.listLoading = true
this.listQuery.user_id = this.$route.query.user_id || ''
this.listQuery.group_id = this.$route.query.group_id || ''
fetchList(this.listQuery).then(response => {
console.log(response.data.data)
this.list = response.data.data.data
......
......@@ -156,17 +156,17 @@
</el-table-column>
<el-table-column align="center" label="小组名称">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
<span>{{ scope.row.group_name }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="小组简介">
<template slot-scope="scope">
<span>{{ scope.row.description }}</span>
<span>{{ scope.row.group_desc }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="组长">
<template slot-scope="scope">
<span>{{ scope.row.creator.name }}</span>
<span>{{ scope.row.nick_name }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="帖子数">
......
<template>
<div class="app-container">
<div class="filter-container">
<el-input :placeholder="'搜素'" v-model="listQuery.filter.value" style="width: 180px;" class="filter-item" @keyup.enter.native="handleFilter"/>
<el-select v-model="listQuery.filter.key" :placeholder="'搜索字段'" clearable class="filter-item" style="width: 110px">
<el-input :placeholder="'搜素'" v-model="listQuery.filter.value" style="width: 180px;" class="filter-item"
@keyup.enter.native="handleFilter"/>
<el-select v-model="listQuery.filter.key" :placeholder="'搜索字段'" clearable class="filter-item"
style="width: 110px">
<el-option v-for="item in SearchTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select>
<el-select v-model="listQuery.filter.user_type" :placeholder="'用户身份'" clearable class="filter-item" style="width: 110px">
<el-select v-model="listQuery.filter.user_type" :placeholder="'用户身份'" clearable class="filter-item"
style="width: 110px">
<el-option v-for="item in UserTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select>
<!--<el-select v-model="listQuery.filter.group_type" :placeholder="'组内身份'" clearable class="filter-item" style="width: 110px">-->
<!--<el-option v-for="item in IdentifyTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>-->
<!--</el-select>-->
<el-select v-model="listQuery.filter.is_recommend" :placeholder="'推荐'" clearable class="filter-item" style="width: 100px">
<el-select v-model="listQuery.filter.is_recommend" :placeholder="'推荐'" clearable class="filter-item"
style="width: 100px">
<el-option v-for="item in ReBooleanTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">搜索</el-button>
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit" @click="handleCreate">创建</el-button>
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit" @click="handleOfflineOrOnline('recommend')">推荐</el-button>
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit"
@click="handleCreate">创建
</el-button>
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit"
@click="handleOfflineOrOnline('recommend')">推荐
</el-button>
</div>
<el-table v-loading="listLoading" :data="list" border fit highlight-current-row style="width: 100%" ref="multipleTable" @selection-change="handleSelectionChange">
<el-table v-loading="listLoading" :data="list" border fit highlight-current-row style="width: 100%"
ref="multipleTable" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center"></el-table-column>
<el-table-column align="center" label="用户ID " width="80">
<template slot-scope="scope">
......@@ -49,13 +58,17 @@
<el-table-column align="center" label="关注小组">
<template slot-scope="scope">
<router-link :to="{path: '/group/list/', query: {user_id: scope.row.user_id}}" class="link-type">
<span>{{ scope.row.group_nums }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column align="center" label="帖子数">
<template slot-scope="scope">
<router-link :to="{path: '/topic/list/', query: {user_id: scope.row.user_id}}" class="link-type">
<span>{{ scope.row.topic_nums }}</span>
</router-link>
</template>
</el-table-column>
......@@ -75,23 +88,25 @@
<template slot-scope="scope">
<el-tag :type="scope.row.is_recommend | isOnlineFilter">{{ scope.row.is_recommend==1 ? '是' : '否' }}</el-tag>
</template>
</el-table-column>is_recommend
</el-table-column>
is_recommend
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" style="margin-left: 150px;" @pagination="getList" />
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit"
style="margin-left: 150px;" @pagination="getList"/>
</div>
</template>
<script>
import { fetchList, OffLineOrOnLine } from '@/api/user'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
import waves from '@/directive/waves'
import {fetchList, OffLineOrOnLine} from '@/api/user'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
import waves from '@/directive/waves'
export default {
export default {
name: 'UserList',
components: { Pagination },
components: {Pagination},
filters: {
isOnlineFilter(status) {
const statusMap = {
......@@ -109,7 +124,7 @@ export default {
return statusMap[status]
},
},
directives: { waves },
directives: {waves},
data() {
return {
list: null,
......@@ -145,7 +160,7 @@ export default {
{'key': 0, 'display_name': '普通用户'},
{'key': 1, 'display_name': '马甲用户'}
],
SearchTypeOptions:[
SearchTypeOptions: [
{'key': 'id', 'display_name': '用户ID'},
{'key': 'name', 'display_name': '用户名'},
{'key': 'phone', 'display_name': '联系电话'},
......@@ -158,6 +173,7 @@ export default {
methods: {
getList() {
this.listLoading = true
this.listQuery.group_id = this.$route.query.group_id
fetchList(this.listQuery).then(response => {
this.list = response.data.data.data
this.total = response.data.data.total
......@@ -175,21 +191,21 @@ export default {
this.listQuery.page = val
this.getList()
},
handleOfflineOrOnline(val){
handleOfflineOrOnline(val) {
const length = this.multipleSelection.length;
let str = '';
this.del_list = this.del_list.concat(this.multipleSelection);
for (let i = 0; i < length; i++) {
if (val === 'offline'){
if (val === 'offline') {
this.multipleSelection[i].is_online = 0
} else if(val === 'recommend'){
} else if (val === 'recommend') {
this.multipleSelection[i].is_recommend = 0
} else{
} else {
this.multipleSelection[i].is_online = 1
}
str += this.multipleSelection[i].id + ' ';
}
OffLineOrOnLine({type:val, ids:str}).then(response => {
OffLineOrOnLine({type: val, ids: str}).then(response => {
this.multipleSelection = [];
this.$message.success(response.data.data.message);
})
......@@ -202,16 +218,17 @@ export default {
this.$router.push('/pick/create')
}
}
}
}
</script>
<style scoped>
.edit-input {
.edit-input {
padding-right: 100px;
}
.cancel-btn {
}
.cancel-btn {
position: absolute;
right: 15px;
top: 10px;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment