Browse Source

运营管理

master
xiaweibo1 4 years ago
parent
commit
f3b634f6c0
  1. 97
      src/api/index.js
  2. 8
      src/components/common/dialog/DataReview/IDCard.vue
  3. 8
      src/components/common/dialog/DataReview/operatorIDCard.vue
  4. 10
      src/components/page/AccountManagement/platformSelect.vue
  5. 81
      src/components/page/OperationManagement/announcementConfiguration.vue
  6. 229
      src/components/page/OperationManagement/assetsConfigure.vue
  7. 127
      src/components/page/OperationManagement/bannerConfigure.vue
  8. 128
      src/components/page/OperationManagement/customerOpinion.vue
  9. 280
      src/components/page/OperationManagement/feedConfigure.vue

97
src/api/index.js

@ -284,6 +284,94 @@ export const getNoticeList = query => {
params: query params: query
}); });
}; };
//获取单个通知公告
export const getNoticeFind = query => {
return request({
url: 'api/admin.Operation/getNoticeFind',
method: 'get',
params: query
});
};
//设置通知公告配置
export const setNotice = query => {
return request({
url: 'api/admin.Operation/setNotice',
method: 'post',
data: query
});
};
//修改通知公告配置
export const updateNotice = query => {
return request({
url: 'api/admin.Operation/updateNotice',
method: 'post',
data: query
});
};
//删除通知公告
export const deleteNotice = query => {
return request({
url: 'api/admin.Operation/deleteNotice',
method: 'post',
data: query
});
};
/* 运营管理 --banner配置*/
//获取banner配置
export const getBanner = query => {
return request({
url: 'api/admin.Operation/getBanner',
method: 'get',
params: query
});
};
//banner配置
export const setBanner = query => {
return request({
url: 'api/admin.Operation/setBanner',
method: 'post',
data: query
});
};
/* 运营管理 --feed配置*/
//获取feed配置
export const getFeed = query => {
return request({
url: 'api/admin.Operation/getFeed',
method: 'get',
params: query
});
};
//feed配置
export const setFeed = query => {
return request({
url: 'api/admin.Operation/setFeed',
method: 'post',
data: query
});
};
/* 运营管理 --资产推荐配置*/
//获取资产推荐配置
export const getRecommend = query => {
return request({
url: 'api/admin.Operation/getRecommend',
method: 'get',
params: query
});
};
/* 运营管理 --客户意见处理*/
//客户意见列表
export const opinionList = query => {
return request({
url: 'api/admin.Operation/opinionList',
method: 'get',
params: query
});
};
/* 平台管理 */ /* 平台管理 */
@ -299,14 +387,7 @@ export const getAdminlist = query => {
params: query params: query
}); });
}; };
//设置通知公告配置
export const setNotice = query => {
return request({
url: 'api/admin.Operation/setNotice',
method: 'post',
data: query
});
};
/* 平台管理 --运营账号管理--运营角色*/ /* 平台管理 --运营账号管理--运营角色*/
//部门名称列表 //部门名称列表

8
src/components/common/dialog/DataReview/IDCard.vue

@ -2,9 +2,9 @@
<div class="body1 body2"> <div class="body1 body2">
<div class="idcard"> <div class="idcard">
<p class="title">{{contentDatas.account_type==1?'法人身份证正面(照片面)' :'身份证正面(照片面)'}}</p> <p class="title">{{contentDatas.account_type==1?'法人身份证正面(照片面)' :'身份证正面(照片面)'}}</p>
<img :src="contentDatas.account_type==2 ? contentDatas.user_card_front :contentDatas.legal_card" class="file_img1"> <img :src="contentDatas.account_type==2 ? contentDatas.user_card_front :contentDatas.legal_card_front" class="file_img1">
<div class="img_span"> <div class="img_span">
<span @click="onPreview(contentDatas.account_type==2 ? [contentDatas.user_card_backfacade] :[contentDatas.legal_card])">查看原图</span> <span @click="onPreview(contentDatas.account_type==2 ? [contentDatas.user_card_backfacade] :[contentDatas.legal_card_front])">查看原图</span>
<el-upload <el-upload
class="upload-demo" class="upload-demo"
:action="action" :action="action"
@ -20,9 +20,9 @@
</div> </div>
<div class="idcard"> <div class="idcard">
<p class="title">{{contentDatas.account_type==1?'法人身份证反面(发证机构面)' :'身份证反面(发证机构面)'}}</p> <p class="title">{{contentDatas.account_type==1?'法人身份证反面(发证机构面)' :'身份证反面(发证机构面)'}}</p>
<img :src="contentDatas.account_type==2 ? contentDatas.user_card_backfacade :contentDatas.legal_card" class="file_img1"> <img :src="contentDatas.account_type==2 ? contentDatas.user_card_backfacade :contentDatas.legal_certificate" class="file_img1">
<div class="img_span"> <div class="img_span">
<span @click="onPreview(contentDatas.account_type==2 ? [contentDatas.user_card_backfacade] :[contentDatas.legal_card])">查看原图</span> <span @click="onPreview(contentDatas.account_type==2 ? [contentDatas.user_card_backfacade] :[contentDatas.legal_certificate])">查看原图</span>
<span>重新上传</span> <span>重新上传</span>
</div> </div>
</div> </div>

8
src/components/common/dialog/DataReview/operatorIDCard.vue

@ -2,9 +2,9 @@
<div class="body1 body2"> <div class="body1 body2">
<div class="idcard"> <div class="idcard">
<p class="title">经办人身份证正面(照片面)</p> <p class="title">经办人身份证正面(照片面)</p>
<img :src="contentDatas.operator_card" class="file_img1"> <img :src="contentDatas.operator_card_front" class="file_img1">
<div class="img_span"> <div class="img_span">
<span @click="onPreview([contentDatas.operator_card] )">查看原图</span> <span @click="onPreview([contentDatas.operator_card_front] )">查看原图</span>
<el-upload <el-upload
class="upload-demo" class="upload-demo"
:action="action" :action="action"
@ -20,9 +20,9 @@
</div> </div>
<div class="idcard"> <div class="idcard">
<p class="title">经办人身份证反面(发证机构面)</p> <p class="title">经办人身份证反面(发证机构面)</p>
<img :src=" contentDatas.operator_card " class="file_img1"> <img :src=" contentDatas.operator_card_backfacade " class="file_img1">
<div class="img_span"> <div class="img_span">
<span @click="onPreview([contentDatas.operator_card] )">查看原图</span> <span @click="onPreview([contentDatas.operator_card_backfacade] )">查看原图</span>
<span>重新上传</span> <span>重新上传</span>
</div> </div>
</div> </div>

10
src/components/page/AccountManagement/platformSelect.vue

@ -132,7 +132,7 @@
</span> </span>
</el-dialog> </el-dialog>
<whyDialog v-if="editVisible" :isshow="editVisible" :dialogID="dialogID" <whyDialog v-if="editVisible" :isshow="editVisible" :dialogID="dialogID"
:dialogType="dialogType" @MisShow="MisShow" :isexamine="false" account_type="buyer" :listDate="listDate"> :dialogType="dialogType" @MisShow="MisShow" :isexamine="false" :account_type="account_type" :listDate="listDate">
</whyDialog> </whyDialog>
</div> </div>
</template> </template>
@ -165,6 +165,7 @@ export default {
enter_shop_type:0, enter_shop_type:0,
third_party_type:0 third_party_type:0
}, },
account_type:'buyer',
dialogID:'', dialogID:'',
dialogType:'', dialogType:'',
tableData: [], tableData: [],
@ -295,6 +296,13 @@ export default {
this.editVisible = true; this.editVisible = true;
this.dialogID=row.id; this.dialogID=row.id;
this.dialogType=1 this.dialogType=1
if (row.buyer_data==1) {
this.account_type='buyer'
}else if (row.enter_shop_data==1) {
this.account_type='enter_shop'
}else if (row.third_party_data==1) {
this.account_type='third_party'
}
this.listDate=row this.listDate=row
}, },
// //

81
src/components/page/OperationManagement/announcementConfiguration.vue

@ -18,13 +18,13 @@
type="datetimerange" type="datetimerange"
:picker-options="pickerOptions" :picker-options="pickerOptions"
range-separator="至" range-separator="至"
value-format="yyyy-MM-dd h:m:s" value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
align="right" align="right"
> >
</el-date-picker> </el-date-picker>
<el-button type="primary" icon="el-icon-search" @click="getData">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="search">搜索</el-button>
<el-button type="primary" @click="handleEdit(0)">新增通知公告</el-button> <el-button type="primary" @click="handleEdit(0)">新增通知公告</el-button>
</div> </div>
<el-table <el-table
@ -35,18 +35,18 @@
header-cell-class-name="table-header" header-cell-class-name="table-header"
> >
<el-table-column prop="id" label="序号" width="55" align="center"></el-table-column> <el-table-column prop="id" label="序号" width="55" align="center"></el-table-column>
<el-table-column prop="name" label="发布日期" :formatter="formatDate"></el-table-column> <el-table-column prop="create_time" label="发布日期" :formatter="formatDate"></el-table-column>
<el-table-column label="公告标题" prop="name"></el-table-column> <el-table-column label="公告标题" prop="title"></el-table-column>
<el-table-column label="发布人员" prop="name"></el-table-column> <el-table-column label="发布人员" prop="username"></el-table-column>
<el-table-column label="操作" width="280" align="center"> <el-table-column label="操作" width="280" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="text" type="text"
@click="handleEdit(1, scope.row)" @click="handleEdit(1, scope.row.id)"
>公告内容</el-button> >公告内容</el-button>
<el-button <el-button
type="text" type="text"
@click="handleDelete(scope.$index, scope.row)" @click="handleDelete( scope.row.id)"
>删除公告</el-button> >删除公告</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -64,7 +64,7 @@
</div> </div>
<!-- 编辑弹出框 --> <!-- 编辑弹出框 -->
<el-dialog title="通知公告配置" :visible.sync="editVisible" width="40%"> <el-dialog title="通知公告配置" :visible.sync="editVisible" width="40%" @close="closedialog">
<el-form ref="form" :model="form" :rules="rules"> <el-form ref="form" :model="form" :rules="rules">
<el-form-item label="公告标题" prop="title" class="form_item"> <el-form-item label="公告标题" prop="title" class="form_item">
<el-input v-model="form.title" placeholder="请输入公告标题"></el-input> <el-input v-model="form.title" placeholder="请输入公告标题"></el-input>
@ -82,7 +82,8 @@
</template> </template>
<script> <script>
import { getNoticeList ,setNotice} from '../../../api/index'; import { getNoticeList ,setNotice,getNoticeFind,updateNotice,deleteNotice} from '../../../api/index';
import moment from 'moment'
export default { export default {
data() { data() {
return { return {
@ -147,6 +148,24 @@ export default {
this.getData(); this.getData();
}, },
methods: { methods: {
search(){
this.query.page=1
this.getData();
},
closedialog(){
for(var p in this.form){//jsonkey/value,pkey
this.form[p]=''
}
},
getNoticeFind(){
getNoticeFind(this.form).then(res=>{
console.info(res)
if (res.code==100) {
this.form.title=res.data.title
this.form.content=res.data.content
}
})
},
// //
setNotice(){ setNotice(){
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
@ -154,36 +173,60 @@ export default {
if (this.noticeType==0) { if (this.noticeType==0) {
setNotice(this.form).then(res=>{ setNotice(this.form).then(res=>{
console.info(res) console.info(res)
if (res.code==100) {
this.$message.success('新增成功~')
this.editVisible=false
this.getData();
}else{
this.$message.error(res.msg)
}
}) })
}else{ }else{
updateNotice(this.form).then(res=>{
console.info(res)
if (res.code==100) {
this.$message.success('修改成功~')
this.editVisible=false
this.getData();
}else{
this.$message.error(res.msg)
}
})
} }
} }
}) })
}, },
// //
formatDate(row,colnum){ formatDate(row,colnum){
return moment(row[colnum.create_time]).format('YYYY-MM-DD HH:mm:ss') return moment(row.create_time*1000).format('YYYY-MM-DD HH:mm:ss')
}, },
// easy-mock // easy-mock
getData() { getData() {
getNoticeList(this.query).then(res => { getNoticeList(this.query).then(res => {
console.log(res); console.log(res);
this.tableData = res.list; if (res.code==100) {
this.pageTotal = res.pageTotal ; this.tableData = res.data.list;
this.pageTotal = res.data.count ;
}else{
this.$message.error(res.msg)
}
}); });
}, },
// //
handleDelete(index, row) { handleDelete(id) {
// //
this.$confirm('确定要删除吗?', '提示', { this.$confirm('确定要删除吗?', '提示', {
type: 'warning' type: 'warning'
}) }).then(() => {
.then(() => { let data={id:id}
this.$message.success('删除成功'); deleteNotice(data).then(res=>{
this.tableData.splice(index, 1); console.info(res)
if (res.code==100) {
this.$message.success('删除成功~')
this.getData();
}
}) })
.catch(() => {}); }).catch(() => {});
}, },
// //
handleEdit(type,id) { handleEdit(type,id) {

229
src/components/page/OperationManagement/assetsConfigure.vue

@ -9,95 +9,80 @@
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="container banner_title"> <div class="container banner_title">
<div class="banner_title_item"> <div class="banner_title_item">
<img src="../../../assets/img/photo.png" alt="" class="photo"> <img src="../../../assets/img/photo.png" alt="" class="photo">
<p>图片库</p> <p>图片库</p>
</div> </div>
<div class="banner_title_item"> <div class="banner_title_item">
<img src="../../../assets/img/preview.png" alt="" class="preview"> <img src="../../../assets/img/preview.png" alt="" class="preview">
<p>效果预览</p> <p>效果预览</p>
</div> </div>
</div> </div>
<div class="container banner_content"> <div class="container banner_content">
<div class="banner_num">
<span class="banner_num_span">图片数量</span>
<el-select placeholder="请选择图片数量" class="handle-select mr10">
<el-option key="1" label="广东省" value="广东省"></el-option>
<el-option key="2" label="湖南省" value="湖南省"></el-option>
</el-select>
</div>
<div class="feed_item">
<div class="banner_num"> <div class="banner_num">
<span class="banner_num_span">图片1</span> <span class="banner_num_span">图片数量</span>
<el-input placeholder="请输入图片名称"></el-input> <el-select placeholder="请选择图片数量" class="handle-select mr10">
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input> <el-option key="1" label="广东省" value="广东省"></el-option>
<span class="banner_num_span1">上传图片</span> <el-option key="2" label="湖南省" value="湖南省"></el-option>
<span class="banner_num_span1">打开图片库</span> </el-select>
<span class="banner_num_span1">上移</span>
<span class="banner_num_span1">下移</span>
</div> </div>
<el-input <div class="feed_item">
type="textarea" <div class="banner_num">
:rows="4" <span class="banner_num_span">图片1</span>
placeholder="请输入文案" <el-input placeholder="请输入图片名称"></el-input>
v-model="textarea"> <el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
</el-input> <span class="banner_num_span1">上传图片</span>
</div> <span class="banner_num_span1">打开图片库</span>
<div class="feed_item"> <span class="banner_num_span1">上移</span>
<div class="banner_num"> <span class="banner_num_span1">下移</span>
<span class="banner_num_span">图片2</span> </div>
<el-input placeholder="请输入图片名称"></el-input> <el-input
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input> type="textarea"
<span class="banner_num_span1">上传图片</span> :rows="4"
<span class="banner_num_span1">打开图片库</span> placeholder="请输入文案"
<span class="banner_num_span1">上移</span> v-model="textarea">
<span class="banner_num_span1">下移</span> </el-input>
</div> </div>
<el-input <div class="feed_item">
type="textarea" <div class="banner_num">
:rows="4" <span class="banner_num_span">图片2</span>
placeholder="请输入文案" <el-input placeholder="请输入图片名称"></el-input>
v-model="textarea"> <el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
</el-input> <span class="banner_num_span1">上传图片</span>
</div> <span class="banner_num_span1">打开图片库</span>
<div class="feed_item"> <span class="banner_num_span1">上移</span>
<div class="banner_num"> <span class="banner_num_span1">下移</span>
<span class="banner_num_span">图片3</span> </div>
<el-input placeholder="请输入图片名称"></el-input> <el-input
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input> type="textarea"
<span class="banner_num_span1">上传图片</span> :rows="4"
<span class="banner_num_span1">打开图片库</span> placeholder="请输入文案"
<span class="banner_num_span1">上移</span> v-model="textarea">
<span class="banner_num_span1">下移</span> </el-input>
</div>
<div class="feed_item">
<div class="banner_num">
<span class="banner_num_span">图片3</span>
<el-input placeholder="请输入图片名称"></el-input>
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
<span class="banner_num_span1">上传图片</span>
<span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1">上移</span>
<span class="banner_num_span1">下移</span>
</div>
<el-input
type="textarea"
:rows="4"
placeholder="请输入文案"
v-model="textarea">
</el-input>
</div> </div>
<el-input
type="textarea"
:rows="4"
placeholder="请输入文案"
v-model="textarea">
</el-input>
</div>
</div> </div>
<!-- 编辑弹出框 -->
<el-dialog title="编辑" :visible.sync="editVisible" width="30%">
<el-form ref="form" :model="form" label-width="70px">
<el-form-item label="用户名">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="地址">
<el-input v-model="form.address"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editVisible = false"> </el-button>
<el-button type="primary" @click="saveEdit"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { fetchData } from '../../../api/index'; import { getRecommend } from '../../../api/index';
export default { export default {
name: 'basetable', name: 'basetable',
data() { data() {
@ -108,45 +93,7 @@ export default {
pageIndex: 1, pageIndex: 1,
pageSize: 10 pageSize: 10
}, },
tableData: [], textarea:''
multipleSelection: [],
delList: [],
editVisible: false,
pageTotal: 0,
form: {},
idx: -1,
id: -1,
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
}; };
}, },
created() { created() {
@ -155,50 +102,14 @@ export default {
methods: { methods: {
// easy-mock // easy-mock
getData() { getData() {
fetchData(this.query).then(res => { getRecommend().then(res => {
// console.log(res); console.log(res);
this.tableData = res.list; if (res.code==100) {
this.pageTotal = res.pageTotal || 50; }else{
this.$message.error(res.msg)
}
}); });
}, },
//
handleSearch() {
this.$set(this.query, 'pageIndex', 1);
this.getData();
},
//
handleDelete(index, row) {
//
this.$confirm('确定要删除吗?', '提示', {
type: 'warning'
})
.then(() => {
this.$message.success('删除成功');
this.tableData.splice(index, 1);
})
.catch(() => {});
},
//
handleSelectionChange(val) {
this.multipleSelection = val;
},
//
handleEdit(index, row) {
this.idx = index;
this.form = row;
this.editVisible = true;
},
//
saveEdit() {
this.editVisible = false;
this.$message.success(`修改第 ${this.idx + 1} 行成功`);
this.$set(this.tableData, this.idx, this.form);
},
//
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.getData();
}
} }
}; };
</script> </script>

127
src/components/page/OperationManagement/bannerConfigure.vue

@ -21,49 +21,43 @@
<div class="container banner_content"> <div class="container banner_content">
<div class="banner_num"> <div class="banner_num">
<span class="banner_num_span">图片数量</span> <span class="banner_num_span">图片数量</span>
<el-input placeholder="请输入图片数量" v-model.number="banner_num"></el-input> <el-input placeholder="请输入图片数量" v-model.number="banner_num" @input="changeNum()"></el-input>
<!-- <el-select placeholder="请选择图片数量" class="handle-select mr10"> <!-- <el-select placeholder="请选择图片数量" class="handle-select mr10">
<el-option key="1" label="广东省" value="广东省"></el-option> <el-option key="1" label="广东省" value="广东省"></el-option>
<el-option key="2" label="湖南省" value="湖南省"></el-option> <el-option key="2" label="湖南省" value="湖南省"></el-option>
</el-select> --> </el-select> -->
</div> </div>
<template v-if="banner_num !=''"> <template v-if="banner.length !=0">
<div class="banner_num" v-for="(item,index) in banner_num" :key="index"> <div class="banner_num" v-for="(item,index) in banner.slice(0,banner_num)" :key="index">
<span class="banner_num_span">图片{{index+1}}</span> <span class="banner_num_span">图片{{index+1}}</span>
<el-input placeholder="请输入图片名称"></el-input> <el-input placeholder="图片名称" v-model="item.name" readonly></el-input>
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input> <el-input placeholder="图片路径" class="banner_num_input" v-model="item.img" readonly></el-input>
<el-upload
class="upload-demo"
:action="action"
:on-change="fileChange"
:show-file-list="false"
:on-error="handleAvatarError"
list-type="picture"
:on-success="(res,file)=>{handleAvatarSuccess(res,file,index)}"
>
<span class="banner_num_span1">上传图片</span> <span class="banner_num_span1">上传图片</span>
</el-upload>
<span class="banner_num_span1">打开图片库</span> <span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1">上移</span> <span class="banner_num_span1" @click="moveUp(index)">上移</span>
<span class="banner_num_span1">下移</span> <span class="banner_num_span1" @click="moveDown(index)">下移</span>
</div> </div>
</template> </template>
<!-- <div class="banner_num"> <div v-if="banner_num!='' || banner_num!=0">
<span class="banner_num_span">图片2</span> <el-button type="primary" @click="setBanner">保存</el-button>
<el-input placeholder="请输入图片名称"></el-input>
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
<span class="banner_num_span1">上传图片</span>
<span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1">上移</span>
<span class="banner_num_span1">下移</span>
</div> </div>
<div class="banner_num">
<span class="banner_num_span">图片3</span>
<el-input placeholder="请输入图片名称"></el-input>
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
<span class="banner_num_span1">上传图片</span>
<span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1">上移</span>
<span class="banner_num_span1">下移</span>
</div> -->
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { fetchData } from '../../../api/index'; import { getBanner,setBanner } from '../../../api/index';
export default { export default {
name: 'basetable',
data() { data() {
return { return {
query: { query: {
@ -72,21 +66,92 @@ export default {
pageIndex: 1, pageIndex: 1,
pageSize: 10 pageSize: 10
}, },
host:'http://wenhua.xingtongworld.com',
action:'http://wenhua.xingtongworld.com/api/Index/uploadimg',
banner_num:'', banner_num:'',
tableData: [], banner:[]
}; };
}, },
created() { created() {
// this.getData(); this.getData();
}, },
methods: { methods: {
moveDown(index){
let length=this.banner.length
if (length!=1) {
let list= this.banner[index + 1];
this.$set(this.banner, index + 1, this.banner[index]);
this.$set(this.banner, index, list)
}
},
moveUp(index){
let length=this.banner.length
if (length!=1) {
let list= this.banner[index - 1];
this.$set(this.banner, index - 1, this.banner[index]);
this.$set(this.banner, index, list)
}
},
changeNum(){
if (this.banner_num>this.banner.length) {
let index=this.banner_num-this.banner.length
for (let i=0;i<index;i++){
this.banner.push({name:'',img:''})
}
}
},
setBanner(){
setBanner(this.banner).then(res=>{
console.info(res)
if (res.code==100) {
this.$message.success('文件上传成功!');
}else{
this.$message.error(res.msg)
}
})
},
// easy-mock // easy-mock
getData() { getData() {
fetchData(this.query).then(res => { getBanner().then(res => {
// console.log(res); console.log(res);
this.tableData = res.list; if (res.code==100) {
this.banner =res.data.list
if (this.banner.length!=0) {
this.banner_num=this.banner.length
}
}else{
this.$message.error(res.msg)
}
}); });
}, },
handleAvatarSuccess(res, file, index,key){
console.info(res)
console.info(file)
if(res.code==1){
let data={name:file.name,img:this.host+res.data.img_url}
this.$set(this.banner, index , data);
// this.banner.push()
}
},
handleAvatarError(){
this.$message.error('文件上传失败!');
},
fileChange(file){
const typeArr = ['image/png', 'image/gif', 'image/jpeg', 'image/jpg'];
const isJPG = typeArr.indexOf(file.raw.type) !== -1;
const isLt3M = file.size / 1024 / 1024 < 3;
if (!isJPG) {
this.$message.error('只能是图片!');
this.$refs.upload.clearFiles();
return;
}
if (!isLt3M) {
this.$message.error('上传图片大小不能超过 3MB!');
this.$refs.upload.clearFiles();
// this.$set(this.query, 'goods_img', '');
return;
}
},
} }
}; };
</script> </script>

128
src/components/page/OperationManagement/customerOpinion.vue

@ -10,23 +10,23 @@
</div> </div>
<div class="container"> <div class="container">
<div class="handle-box"> <div class="handle-box">
<el-input placeholder="机构名称" class="handle-input mr10"></el-input> <el-input placeholder="机构名称" class="handle-input mr10" v-model="query.firm_name"></el-input>
<el-input v-model="query.name" placeholder="法人名称" class="handle-input mr10"></el-input> <el-input v-model="query.username" placeholder="法人名称" class="handle-input mr10"></el-input>
<el-input placeholder="意见内容" class="handle-input mr10"></el-input> <el-input placeholder="意见内容" class="handle-input mr10" v-model="query.message"></el-input>
<el-select placeholder="回复人员" class="handle-select mr10"> <el-select placeholder="回复人员" class="handle-select mr10" v-model="query.message">
<el-option key="1" label="广东省" value="广东省"></el-option> <el-option key="1" label="广东省" value="广东省"></el-option>
<el-option key="2" label="湖南省" value="湖南省"></el-option> <el-option key="2" label="湖南省" value="湖南省"></el-option>
</el-select> </el-select>
<el-date-picker <el-date-picker
class="mr10" class="mr10"
v-model="query.time" v-model="query.time"
type="datetimerange" type="datetimerange"
:picker-options="pickerOptions" :picker-options="pickerOptions"
range-separator="至" range-separator="至"
value-format="yyyy-MM-dd h:m:s" value-format="yyyy-MM-dd h:m:s"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
align="right" align="right"
> >
</el-date-picker> </el-date-picker>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button>
@ -37,7 +37,6 @@
class="table" class="table"
ref="multipleTable" ref="multipleTable"
header-cell-class-name="table-header" header-cell-class-name="table-header"
@selection-change="handleSelectionChange"
> >
<el-table-column prop="id" label="序号" width="55" align="center"></el-table-column> <el-table-column prop="id" label="序号" width="55" align="center"></el-table-column>
<el-table-column prop="name" label="提交日期"></el-table-column> <el-table-column prop="name" label="提交日期"></el-table-column>
@ -66,8 +65,8 @@
<el-pagination <el-pagination
background background
layout="total, prev, pager, next" layout="total, prev, pager, next"
:current-page="query.pageIndex" :current-page="query.page"
:page-size="query.pageSize" :page-size="query.limit"
:total="pageTotal" :total="pageTotal"
@current-change="handlePageChange" @current-change="handlePageChange"
></el-pagination> ></el-pagination>
@ -93,55 +92,56 @@
</template> </template>
<script> <script>
import { fetchData } from '../../../api/index'; import { opinionList } from '../../../api/index';
export default { export default {
name: 'basetable', name: 'basetable',
data() { data() {
return { return {
query: { query: {
address: '', firm_name: '',
name: '', username: '',
pageIndex: 1, auditID: '',
pageSize: 10 time: '',
message: '',
page: 1,
limit: 10
}, },
form:{},
tableData: [], tableData: [],
multipleSelection: [], multipleSelection: [],
delList: [], delList: [],
editVisible: false, editVisible: false,
pageTotal: 0, pageTotal: 0,
form: {},
idx: -1,
id: -1,
pickerOptions: { pickerOptions: {
shortcuts: [ shortcuts: [
{ {
text: "最近一周", text: "最近一周",
onClick(picker) { onClick(picker) {
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]); picker.$emit("pick", [start, end]);
}, },
}, },
{ {
text: "最近一个月", text: "最近一个月",
onClick(picker) { onClick(picker) {
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]); picker.$emit("pick", [start, end]);
}, },
}, },
{ {
text: "最近三个月", text: "最近三个月",
onClick(picker) { onClick(picker) {
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]); picker.$emit("pick", [start, end]);
}, },
}, },
], ],
}, },
}; };
}, },
@ -151,15 +151,19 @@ export default {
methods: { methods: {
// easy-mock // easy-mock
getData() { getData() {
fetchData(this.query).then(res => { opinionList(this.query).then(res => {
// console.log(res); console.log(res);
this.tableData = res.list; if (res.code==100) {
this.pageTotal = res.pageTotal || 50; this.tableData = res.data.list;
this.pageTotal = res.data.count ;
}else{
this.$message.error(res.msg)
}
}); });
}, },
// //
handleSearch() { handleSearch() {
this.$set(this.query, 'pageIndex', 1); this.$set(this.query, 'page', 1);
this.getData(); this.getData();
}, },
// //
@ -174,14 +178,8 @@ export default {
}) })
.catch(() => {}); .catch(() => {});
}, },
//
handleSelectionChange(val) {
this.multipleSelection = val;
},
// //
handleEdit(index, row) { handleEdit(index, row) {
this.idx = index;
this.form = row;
this.editVisible = true; this.editVisible = true;
}, },
// //
@ -192,7 +190,7 @@ export default {
}, },
// //
handlePageChange(val) { handlePageChange(val) {
this.$set(this.query, 'pageIndex', val); this.$set(this.query, 'page', val);
this.getData(); this.getData();
} }
} }

280
src/components/page/OperationManagement/feedConfigure.vue

@ -9,196 +9,148 @@
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="container banner_title"> <div class="container banner_title">
<div class="banner_title_item"> <div class="banner_title_item">
<img src="../../../assets/img/photo.png" alt="" class="photo"> <img src="../../../assets/img/photo.png" alt="" class="photo">
<p>图片库</p> <p>图片库</p>
</div> </div>
<div class="banner_title_item"> <div class="banner_title_item">
<img src="../../../assets/img/preview.png" alt="" class="preview"> <img src="../../../assets/img/preview.png" alt="" class="preview">
<p>效果预览</p> <p>效果预览</p>
</div> </div>
</div> </div>
<div class="container banner_content"> <div class="container banner_content">
<div class="banner_num">
<span class="banner_num_span">图片数量</span>
<el-select placeholder="请选择图片数量" class="handle-select mr10">
<el-option key="1" label="广东省" value="广东省"></el-option>
<el-option key="2" label="湖南省" value="湖南省"></el-option>
</el-select>
</div>
<div class="feed_item">
<div class="banner_num">
<span class="banner_num_span">图片1</span>
<el-input placeholder="请输入图片名称"></el-input>
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
<span class="banner_num_span1">上传图片</span>
<span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1">上移</span>
<span class="banner_num_span1">下移</span>
</div>
<el-input
type="textarea"
:rows="4"
placeholder="请输入文案"
v-model="textarea">
</el-input>
</div>
<div class="feed_item">
<div class="banner_num"> <div class="banner_num">
<span class="banner_num_span">图片2</span> <span class="banner_num_span">图片数量</span>
<el-input placeholder="请输入图片名称"></el-input> <el-input placeholder="请输入图片数量" v-model.number="banner_num" @input="changeNum()"></el-input>
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input>
<span class="banner_num_span1">上传图片</span>
<span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1">上移</span>
<span class="banner_num_span1">下移</span>
</div> </div>
<el-input <template v-if="banner.length !=0">
type="textarea" <div class="feed_item" v-for="(item,index) in banner.slice(0,banner_num)" :key="index">
:rows="4"
placeholder="请输入文案" <div class="banner_num" >
v-model="textarea"> <span class="banner_num_span">图片{{index+1}}</span>
</el-input> <el-input placeholder="请输入图片名称" v-model="item.name" readonly></el-input>
</div> <el-input placeholder="请选择图片路径" class="banner_num_input" v-model="item.img" readonly></el-input>
<div class="feed_item"> <el-upload
<div class="banner_num"> class="upload-demo"
<span class="banner_num_span">图片3</span> :action="action"
<el-input placeholder="请输入图片名称"></el-input> :on-change="fileChange"
<el-input placeholder="请选择图片路径" class="banner_num_input"></el-input> :show-file-list="false"
<span class="banner_num_span1">上传图片</span> :on-error="handleAvatarError"
<span class="banner_num_span1">打开图片库</span> list-type="picture"
<span class="banner_num_span1">上移</span> :on-success="(res,file)=>{handleAvatarSuccess(res,file,index)}"
<span class="banner_num_span1">下移</span> >
<span class="banner_num_span1">上传图片</span>
</el-upload>
<span class="banner_num_span1">打开图片库</span>
<span class="banner_num_span1" @click="moveUp(index)">上移</span>
<span class="banner_num_span1" @click="moveDown(index)">下移</span>
</div>
<el-input
type="textarea"
:rows="4"
placeholder="请输入文案"
v-model="item.content">
</el-input>
</div>
</template>
<div v-if="banner_num!='' || banner_num!=0">
<el-button type="primary" @click="setBanner">保存</el-button>
</div> </div>
<el-input
type="textarea"
:rows="4"
placeholder="请输入文案"
v-model="textarea">
</el-input>
</div>
</div> </div>
<!-- 编辑弹出框 -->
<el-dialog title="编辑" :visible.sync="editVisible" width="30%">
<el-form ref="form" :model="form" label-width="70px">
<el-form-item label="用户名">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="地址">
<el-input v-model="form.address"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editVisible = false"> </el-button>
<el-button type="primary" @click="saveEdit"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { fetchData } from '../../../api/index'; import { getFeed,setFeed } from '../../../api/index';
export default { export default {
name: 'basetable',
data() { data() {
return { return {
query: { host:'http://wenhua.xingtongworld.com',
address: '', action:'http://wenhua.xingtongworld.com/api/Index/uploadimg',
name: '', banner_num:'',
pageIndex: 1, banner:[]
pageSize: 10
},
tableData: [],
multipleSelection: [],
delList: [],
editVisible: false,
pageTotal: 0,
form: {},
idx: -1,
id: -1,
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
}; };
}, },
created() { created() {
this.getData(); this.getData();
}, },
methods: { methods: {
// easy-mock moveDown(index){
getData() { let length=this.banner.length
fetchData(this.query).then(res => { if (length!=1) {
// console.log(res); let list= this.banner[index + 1];
this.tableData = res.list; this.$set(this.banner, index + 1, this.banner[index]);
this.pageTotal = res.pageTotal || 50; this.$set(this.banner, index, list)
}); }
}, },
// moveUp(index){
handleSearch() { let length=this.banner.length
this.$set(this.query, 'pageIndex', 1); if (length!=1) {
this.getData(); let list= this.banner[index - 1];
this.$set(this.banner, index - 1, this.banner[index]);
this.$set(this.banner, index, list)
}
}, },
// changeNum(){
handleDelete(index, row) { if (this.banner_num>this.banner.length) {
// let index=this.banner_num-this.banner.length
this.$confirm('确定要删除吗?', '提示', { for (let i=0;i<index;i++){
type: 'warning' this.banner.push({name:'',img:''})
}
}
},
setBanner(){
setFeed(this.banner).then(res=>{
console.info(res)
if (res.code==100) {
this.$message.success('文件上传成功!');
}else{
this.$message.error(res.msg)
}
}) })
.then(() => {
this.$message.success('删除成功');
this.tableData.splice(index, 1);
})
.catch(() => {});
}, },
// // easy-mock
handleSelectionChange(val) { getData() {
this.multipleSelection = val; getFeed().then(res => {
console.log(res);
if (res.code==100) {
this.banner =res.data.list
if (this.banner.length!=0) {
this.banner_num=this.banner.length
}
}else{
this.$message.error(res.msg)
}
});
},
handleAvatarSuccess(res, file, index,key){
console.info(res)
console.info(file)
if(res.code==1){
let data={name:file.name,img:this.host+res.data.img_url}
this.$set(this.banner, index , data);
// this.banner.push()
}
}, },
// handleAvatarError(){
handleEdit(index, row) { this.$message.error('文件上传失败!');
this.idx = index;
this.form = row;
this.editVisible = true;
}, },
// fileChange(file){
saveEdit() { const typeArr = ['image/png', 'image/gif', 'image/jpeg', 'image/jpg'];
this.editVisible = false; const isJPG = typeArr.indexOf(file.raw.type) !== -1;
this.$message.success(`修改第 ${this.idx + 1} 行成功`); const isLt3M = file.size / 1024 / 1024 < 3;
this.$set(this.tableData, this.idx, this.form); if (!isJPG) {
this.$message.error('只能是图片!');
this.$refs.upload.clearFiles();
return;
}
if (!isLt3M) {
this.$message.error('上传图片大小不能超过 3MB!');
this.$refs.upload.clearFiles();
// this.$set(this.query, 'goods_img', '');
return;
}
}, },
//
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.getData();
}
} }
}; };
</script> </script>

Loading…
Cancel
Save