提交 3bf37802 编写于 作者: vino's avatar vino

Merge remote-tracking branch 'origin/dev-circle-nine-20201231' into dev-circle-nine-20201231

......@@ -65,8 +65,8 @@
size="small"
type="datetime"
placeholder="请选择开始时间"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;"
:picker-options="pickerOptions0"
></el-date-picker>
</el-form-item>
</el-col>
......@@ -78,35 +78,65 @@
size="small"
type="datetime"
placeholder="请选择结束时间"
value-format="yyyy-MM-dd HH:mm:ss"
default-time="23:59:59"
style="width: 100%;"
:picker-options="pickerOptions1"
></el-date-picker>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="活动链接模块" v-if="formData.appModuleDto.linkType == 4" class="required-label">
<el-col :span="18">
<el-select filterable v-model="formData.appModuleDto.name" @change="moduleChange" placeholder="请选择模块" style="width:88%">
<el-option
v-for="item2 in moduleArray.nameList"
:key="item2.id"
:label="item2.name"
:value="item2.name">
</el-option>
</el-select>
</el-col>
</el-form-item>
<div v-for="(i,j) in formData.appModuleDto.paramList2" :key="j" class="required-label" v-if="formData.appModuleDto.linkType == 4">
<el-form-item label="选择参数" v-if="formData.appModuleDto.paramFlag == 1">
<el-col :span="18">
<el-select v-model="formData.appModuleDto.paramList[j].value" filterable placeholder="请选择参数" style="width:88%">
<el-option
v-for="(item3,index3) in i"
:key="index3"
:label="item3.name"
:value="item3.id + '&'+ item3.name">
</el-option>
</el-select>
</el-col>
</el-form-item>
</div>
<el-form-item label="报名需审核" class="required-label">
<el-radio-group v-model="formData.auditFlag" @change="" size="small" class="required-label">
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
</el-form-item>
<div class="basic-item-icon">
<el-form-item label="圈子头像" class="required-label">
<el-form-item label="活动列表页图片" class="required-label">
<el-upload
v-model="formData.headUrl"
v-model="formData.listImage"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadPic1"
>
<img
v-if="formData.headUrl"
:src="formData.headUrl"
v-if="formData.listImage"
:src="formData.listImage"
@mouseover.stop="imgMouseOver1=true"
class="bg-img"
/>
<img v-if="!formData.headUrl" class="bg-img" src="../../assets/image/small.png" />
<img v-if="!formData.listImage" class="bg-img" src="../../assets/image/small.png" />
<div
class="img-delete"
v-show="imgMouseOver1"
......@@ -122,61 +152,42 @@
</div>
</el-upload>
</el-form-item>
<p class="upload-message" v-if="uploadImgMessage1">请选择圈子头像</p>
<p class="upload-message" v-if="uploadImgMessage1">活动列表页图片</p>
</div>
<div class="basic-item-icon">
<el-form-item label="报名页介绍图片" class="required-label">
<el-upload
v-model="formData.introImage"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadPic2"
>
<img
v-if="formData.introImage"
:src="formData.introImage"
@mouseover.stop="imgMouseOver2=true"
class="bg-img"
/>
<img v-if="!formData.introImage" class="bg-img" src="../../assets/image/small.png" />
<div
class="img-delete"
v-show="imgMouseOver2"
@click.stop="deleteImg(2)"
@mouseout.stop="imgMouseOver2=false"
>
<i class="el-icon-delete"></i>
</div>
<div class="limit-text">
<p>限制大小: 500kb</p>
<p>最小尺寸:160*160</p>
<p>支持jpeg, png格式</p>
</div>
</el-upload>
</el-form-item>
<p class="upload-message" v-if="uploadImgMessage2">报名介绍页图片</p>
</div>
<el-form-item label="圈子介绍" prop="introduce">
<el-col :span="13">
<el-input
type="textarea"
rows="2"
maxlength="40"
size="small"
v-model="formData.introduce"
placeholder="请输入圈子介绍"
@change="returnTypeData('introduce')"
style="width:70%;"
></el-input>
<span class="word-num">{{(formData.introduce).replace(/\s+/g,"").length}}/40</span>
</el-col>
</el-form-item>
<el-form-item label="话题发布权限" prop="dynamicFlag">
<el-select
v-model="formData.dynamicFlag"
@change="returnTypeData('dynamicFlag')"
placeholder="请选择发布权限"
size="small"
clearable>
<el-option
v-for="(item,index) in contentList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-tooltip class="item" effect="dark" content="若选择管理员可发布,则只有管理员才能在小圈内发布话题" placement="top">
<!--<span class="el-icon-info"></span>-->
<i class="el-icon-info" style="color: #449284;"></i>
</el-tooltip>
</el-form-item>
<el-form-item label="圈子类型" prop="type">
<!--<el-radio-group v-model="formData.type" size="small" @change="changeType">-->
<el-radio-group v-model="formData.type" size="small">
<el-radio :label="0" class="label-type">封闭 - 只对圈子成员可见,成员只能由管理员添加、删除</el-radio>
<el-radio :label="1" class="label-type">半开放 - 对任何人可见,用户请求加入后需管理员同意,成员可自行退出</el-radio>
<el-radio :label="2" class="label-type">开放 - 对任何人可见,用户请求加入后无需管理员同意,成员可自行退出</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="允许分享圈子" prop="allowShare" v-if="formData.type == 1 || formData.type == 2 " class="required-label">
<el-radio-group v-model="formData.allowShare" size="small">
<el-radio :label="0" class="label-type">不允许</el-radio>
<el-radio :label="1" class="label-type">允许</el-radio>
</el-radio-group>
</el-form-item>
......@@ -210,6 +221,7 @@
import { openLoading, closeLoading } from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { getOnlineCircleList } from "../../utils/activitymanagement/activitymanagementApi";
import {getLinkType,getModuleData,getParamData} from "../../utils/yqrange/yqrangeApi";
import Cropper from '@/components/common/cropper.vue'
export default {
name: "baseinfo",
......@@ -218,7 +230,6 @@
},
props: {
formData: {
type: Object,
default: () => {
return {}
}
......@@ -226,16 +237,8 @@
},
created() {
vm = this;
this.getCircleList();
// const mobilePhone = localStorage.getItem("mobilePhone");
//
// if(mobilePhone == "13341740525" || mobilePhone == "18251938586"){
// this.deptFlag = true;
// }
// else {
// this.deptFlag = false;
// }
vm.getCircleList();//可以放在自组件优化
vm.getModuleData();
},
data() {
let checkProjectStr = (rule, value, callback) => {
......@@ -312,21 +315,8 @@
trigger: "change"
}
],
introduce: [
{ required: true, message: "请输入圈子介绍", trigger: "blur" },
{
min: 2,
max: 40,
message: "输入长度为2-40的内容,可包含中英文、数字及特殊符号",
trigger: "blur"
},
{ validator: checkProjectStr, trigger: "blur" }
],
headUrl: [
{ required: true, message: "请选择圈子头像", trigger: "blur" }
],
dynamicFlag: [
{ required: true, message: "请选择内容发布权限", trigger: "blur" },
listImage: [
{ required: true, message: "请选择活动列表页图片", trigger: "blur" }
],
type: [
{ required: true, message: "请选择圈子类型", trigger: "blur" },
......@@ -336,23 +326,152 @@
]
},
imgMouseOver1: false,
imgMouseOver2:false,
uploadImgMessage2: false,
uploadImgMessage1: false,//未上传图片,校验提示语
contentList: [
{
value: 1,
label: '所有人可发布'
}, {
value: 2,
label: '管理员可发布'
},
],
circleList: [
],
pickerOptions0: {
disabledDate: time => {
if (
this.formData.endTime != "" &&
this.formData.endTime != null
) {
return (
time.getTime() > new Date(this.formData.endTime).getTime()
);
}
}
},
pickerOptions1: {
disabledDate: time => {
return (
time.getTime() < new Date(this.formData.beginTime).getTime()
); //减去一天的时间代表可以选择同一天;
}
},
moduleArray: [],
shareFlag: false
}
},
methods: {
// 获取模块下拉数据
getModuleData() {
getModuleData().then(function (res) {
if(res.code == "000000") {
vm.moduleArray = JSON.parse(JSON.stringify(res.data));
for(let j = 0;j < vm.moduleArray.nameList.length; j++) {
if(vm.formData.appModuleDto.name == vm.moduleArray.nameList[j].name){// 通过name找到对应的id
vm.getParamData(vm.moduleArray.nameList[j].id,vm.formData.appModuleDto.paramFlag,j,1)
}
}
}
}).catch(function (error) {
vm.$message.error(error);
});
},
// 获取参数下拉数据
getParamData(id,flag,index,a) {
if(flag != 1) return; // 判断是否有参数选择
let req = {
id: id
}
getParamData(req).then(function (res) {
if(res.code == "000000") {
vm.paramArray = res.data.paramList;
vm.paramConfig = res.data.config;
// for(let i=0;i<vm.tabContent.length;i++) {
// if(i == index) {
vm.formData.appModuleDto.paramFlag = 1
vm.formData.appModuleDto.paramList2 = vm.paramArray
if(a == 2) { // 判断是初始化还是改变module调的获取参数接口
vm.formData.appModuleDto.paramList = [];
for(let j = 0 ;j < vm.paramArray.length; j++) {
vm.formData.appModuleDto.paramList.push({
id: vm.paramConfig[j].id,
seqNo: vm.paramConfig[j].seqNo, // 选择参数的索引值
value: '',
key: vm.paramConfig[j].paramKey,
type: vm.paramConfig[j].type // 通过选择参数中获取
// status: 2
})
}
}else{
//for(let k = 0;k < vm.paramConfig.length; k++) {
// vm.formData.paramList[k].seqNo = vm.paramConfig[k].seqNo
// vm.formData.paramList[k].key = vm.paramConfig[k].paramKey
// vm.formData.paramList[k].type = vm.paramConfig[k].type
// vm.formData.paramList.push({
// seqNo: vm.paramConfig[k].seqNo,
// key: vm.paramConfig[k].paramKey,
// type: vm.paramConfig[k].type
// })
let arr = vm.formData.appModuleDto.paramList;
vm.formData.appModuleDto.paramList = [];
if(arr.length < vm.paramConfig.length) {
for(let k = 0;k < arr.length; k++) {
vm.formData.appModuleDto.paramList.push({
id: vm.paramConfig[k].id,
seqNo: vm.paramConfig[k].seqNo,
key: vm.paramConfig[k].paramKey,
type: vm.paramConfig[k].type,
value: arr[k].value
})
}
for(let j = arr.length;j < vm.paramConfig.length;j++) {
vm.formData.appModuleDto.paramList.push({
id: vm.paramConfig[j].id,
seqNo: vm.paramConfig[j].seqNo,
key: vm.paramConfig[j].paramKey,
type: vm.paramConfig[j].type,
value: ''
})
}
}else {
for(let k = 0;k < vm.paramConfig.length; k++) {
console.log("id: " + vm.paramConfig[k].id);
console.log("value: " + arr[k].value);
vm.formData.appModuleDto.paramList.push({
id: vm.paramConfig[k].id,
seqNo: vm.paramConfig[k].seqNo,
key: vm.paramConfig[k].paramKey,
type: vm.paramConfig[k].type,
value: arr[k].value
})
}
}
// }
}
// break
// }
// }
}
}).catch(function (error) {
vm.$message.error(error);
})
},
// change模块选择数据
moduleChange(value) {
for(let i = 0; i < vm.moduleArray.nameList.length; i++) {
if(value == vm.moduleArray.nameList[i].name) {
vm.getCodeAndType(vm.moduleArray.nameList[i].code,vm.moduleArray.nameList[i].type,vm.moduleArray.nameList[i].paramFlag)
vm.getParamData(vm.moduleArray.nameList[i].id,vm.moduleArray.nameList[i].paramFlag,vm.moduleIndexValue,2)
}
}
},
getCodeAndType(code,type,paramFlag) {
// for(let i = 0; i < vm.tabContent.length; i++) {
// if(vm.moduleIndexValue == i) {
vm.formData.appModuleDto.code = code
vm.formData.appModuleDto.type = type
vm.formData.appModuleDto.paramFlag = paramFlag
// }
// }
},
returnTypeData(name) {
this.$emit('returnTypeData', {
name: name,
......@@ -364,12 +483,15 @@
submitForm() {
let formName = "formData";
let flag = null;
if (!this.formData.headUrl){
if (!this.formData.listImage){
this.uploadImgMessage1 = true;
}
if (!this.formData.introImage){
this.uploadImgMessage2 = true;
}
this.$refs[formName].validate(valid => {
if (valid && vm.formData.headUrl!="") {
if (valid && vm.formData.listImage!=""&& vm.formData.introImage!="") {
flag = true;
} else {
console.log("error submit!!");
......@@ -377,14 +499,10 @@
}
});
if(flag){
if(this.formData.deptId == ""){
this.formData.deptId = 0;
}
}
this.$emit('returnIsNext', flag);
},
//上传圈子头像
//上传活动列表页图片
beforeUploadPic1(file) {
this.currentOption.aspectRatio = 1/1;
this.currentOption.cropBoxResizable = true;
......@@ -395,11 +513,28 @@
height: 160,
size: 0.5,
sizeText: "500K",
key: "headUrl",
key: "listImage",
more: "imgUrl1More",
show: "uploadImgMessage1"
};
this.beforeUpload(file, fileLimit);
},
//上传报名页介绍图片
beforeUploadPic2(file) {
this.currentOption.aspectRatio = 1/1;
this.currentOption.cropBoxResizable = true;
this.currentOption.minCropBoxWidth = 160;
this.currentOption.minCropBoxHeight = 160;
let fileLimit = {
width: 160,
height: 160,
size: 0.5,
sizeText: "500K",
key: "introImage",
more: "imgUrl1More",
show: "uploadImgMessage2"
};
this.beforeUpload(file, fileLimit);
},
//上传图片
beforeUpload(file, fileLimit) {
......@@ -428,12 +563,12 @@
vm.$message.error("图片必须是jpegpng格式,同时长宽尺寸和图片大小需符合要求");
return;
}
else if(_this.width > fileLimit.width || _this.height > fileLimit.height){
vm.showCropper = true;
vm.currentOption.cvWidth = _this.width;
vm.currentOption.cvHeight = _this.height;
return;
}
// else if(_this.width > fileLimit.width || _this.height > fileLimit.height){
// vm.showCropper = true;
// vm.currentOption.cvWidth = _this.width;
// vm.currentOption.cvHeight = _this.height;
// return;
// }
else {
openLoading(vm);
doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
......@@ -460,8 +595,11 @@
//删除图片
deleteImg(type) {
if (type == 1) {
vm.formData.headUrl = "";
vm.formData.listImage = "";
vm.imgMouseOver1 = false;
}else if (type ==2) {
vm.formData.introImage= ""
vm.imgMouseOver2 = false;
}
},
// 获取裁剪的图片数据
......@@ -477,7 +615,7 @@
doUpload(this,file, getFilePath(file,null), 'preview4', 'uploadProgress1', '').then(function (path) {
vm.formData.headUrl = path.fullPath;
vm.formData.listImage = path.fullPath;
vm.$message.success('上传成功');
});
......
......@@ -406,6 +406,7 @@
},
save(){
debugger
this.submitForm();
},
cancle(){
......
......@@ -15,6 +15,25 @@ export const getOnlineCircleList = () => {
})
};
export const getActivityInfoReq = (activityId) => {
return fetch({
headers,
url: getBaseUrl(`circle/sso/activity/info/${activityId}`),
method: 'get',
description: '后台管理--专区活动信息(查看)',
})
};
export const getActivityList = (params) => {
return fetch({
headers,
url: getBaseUrl(`circle/sso/activity/list`),
method: 'get',
params: params,
description: '专区活动列表与搜索',
})
};
export const getActivityDocList = (params) => {
return fetch({
......@@ -46,3 +65,4 @@ export const importDoc = (params) => {
description: '后台管理--专区活动成员导入',
})
};
......@@ -8,17 +8,17 @@
<el-row :gutter="1" type="flex" style="margin-top: 10px">
<el-col :span="5">
<el-form-item label="活动ID">
<el-input v-model="searchForm.name" size="small" placeholder="请输入活动ID"></el-input>
<el-input v-model="searchForm.activityId" size="small" placeholder="请输入活动ID"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="后台标题">
<el-input v-model="searchForm.name" size="small" placeholder="请输入后台标题"></el-input>
<el-input v-model="searchForm.titleManager" size="small" placeholder="请输入后台标题"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="前台主标题">
<el-input v-model="searchForm.name" size="small" placeholder="请输入前台主标题"></el-input>
<el-input v-model="searchForm.titleViewMain" size="small" placeholder="请输入前台主标题"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
......@@ -162,7 +162,8 @@
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import { getRangeList,updateRangeStatus, getCircleSettingList, saveCircleSetting} from "../../utils/yqrange/yqrangeApi";
import { updateRangeStatus, getCircleSettingList, saveCircleSetting} from "../../utils/yqrange/yqrangeApi";
import { getActivityList} from '@/utils/activitymanagement/activitymanagementApi';
import ElTabPane from "element-ui/packages/tabs/src/tab-pane";
import RangeApply from "./range-apply";
export default {
......@@ -179,7 +180,10 @@ export default {
showNewFlag: false,
showApplyFlag: false,
searchForm: {
name: '',
activityId:"",//活动id
titleManager: '',//后台标题方便管理
titleViewMain: '',//前端主标题
titleViewSub: '',//前端副标题
createdTime: '',
// endTime: '',
userType: "", // 用户标识 1:内部用户 2:外部用户,
......@@ -195,21 +199,13 @@ export default {
settingData: []
},
statusList: [
{
value: -1,
label: "全部状态"
},
{
value: 0,
label: "已拒绝"
},
{
value: 1,
label: "待审核"
label: "已发布"
},
{
value: 2,
label: "已通过"
label: "未发布"
},
],
idType: ""
......@@ -290,8 +286,8 @@ export default {
openLoading(this);
let params = this.searchForm;
console.log('查询圈子')
getRangeList(params).then((res) => {
console.log('查询活动列表')
getActivityList(params).then((res) => {
closeLoading(this);
if(res.code == "000000") {
this.tableData = res.data.circleList;
......
......@@ -5,25 +5,12 @@
<el-row class="step-content">
<el-col :span="14">
<p class="p-title">{{curmbSecond}}</p>
<!--<el-steps :active="active" simple class>-->
<!--<span class="step-num" v-bind:class="{ 'on-step': stepData[0] }">1</span>-->
<!--<el-step title="基础信息"></el-step>-->
<!--<span class="step-num" v-bind:class="{ 'on-step': stepData[1] }">2</span>-->
<!--<el-step title="选择成员">2</el-step>-->
<!--</el-steps>-->
</el-col>
<!--<el-col :span="5" :offset="5">-->
<!--<el-button v-if="active<1" size="small" type="primary" @click="nextStep">下一步</el-button>-->
<!--<el-button v-if="active>=1" size="small" type="primary" @click="complete">完成</el-button>-->
<!--</el-col>-->
</el-col>
</el-row>
<div class="first-step" v-if="active === 0">
<base-info :formData="formData" @returnTypeData="returnTypeData" @returnIsNext="returnIsNext" ref="child">
</base-info>
</div>
<!--<div class="second-step" v-else-if="active === 1">-->
<!--<organzation :formData="formData" ref="org"></organzation>-->
<!--</div>-->
</div>
</div>
</template>
......@@ -32,14 +19,13 @@
import BreadCrumb from "@/components/breadcrumb.vue";
import { openLoading, closeLoading } from "../../utils/utils";
import BaseInfo from '@/components/activitymanagement/baseinfo.vue';
import Organzation from '@/components/yqrange/organzation.vue';
import { getCircleInfoReq, getMemberSelectOrgSaveReq } from '@/utils/yqrange/rangeApi';
import { getActivityInfoReq} from '@/utils/activitymanagement/activitymanagementApi';
import {getMemberSelectOrgSaveReq} from "../../utils/yqrange/yqrangeApi";
export default {
name: "create-range",
components: {
BreadCrumb,
BaseInfo,
Organzation
BaseInfo
},
data() {
return {
......@@ -51,26 +37,35 @@
//页面展示位置
stepData: [true, false],
formData: {
id: null,
activityId: 0,//活动ID,新增时为空
titleManager: '',//后台标题方便管理
titleViewMain: '',//前端主标题
titleViewSub: '',//前端副标题
circleId: "",//圈子ID
beginTime:'',//开始时间
endTime:'',//结束时间
headUrl: '',
appModuleDto: {
linkType: 4, // 跳转类型:1 链接,4 模块, 8 无跳转
name: "", // 模块名称
paramFlag: 0, // 是否有参数标志1为有2为没有参数
paramList: [
{
id: "",
seqNo: '', // 选择参数的索引值
value: '',
key: '', // 参数名称,默认param
type:'' // 模块参数类型:1 int类型字符串 4String类型 8时间戳类型字符串
}
],
paramList2: [],
type: 0 // 类型:1 列表页,4 详情页
},
auditFlag:0,
listImage: '',//活动列表页图片
introImage:'',//介绍页图片url
imgUrl1More: {},
imgUrl2More: {},
introduce: '',
dynamicFlag: '',
idType: localStorage.getItem("storageIdType"),
roleType: null,
type: 0,
allowShare: 1
}
},
}
},
created() {
......@@ -109,7 +104,7 @@
//edit
if (this.enterType == 2 && this.id != null) {
this.getCircleInfo();
this.getActivityInfo();
}
},
......@@ -151,21 +146,19 @@
// 修改编辑基础信息
returnIsNext(flag) {
if (flag == true) {
vm.commitQuanziInfo();
vm.commitActivityInfo();
}
},
returnTypeData(item) {
vm.formData[item.name] = item.val
},
//获取圈子详情
getCircleInfo() {
getCircleInfoReq(this.id).then(res => {
//获取活动详情
getActivityInfo() {
getActivityInfoReq(this.id).then(res => {
// closeLoading(this);
if (res.code == "000000") {
this.formData = { ...this.formData, ...res.data };
if(vm.formData.deptId == 0){
vm.formData.deptId = "";
}
} else {
vm.$message(res.message);
}
......@@ -173,11 +166,14 @@
vm.$message.error('请求失败');
});
},
commitQuanziInfo() {
//更新活动信息
commitActivityInfo() {
let req = vm.formData;
console.log("commitQuanziInfo() : name = " + req.name + ", headUrl = " + req.headUrl
+ ", coverUrl = " + req.coverUrl + ", introduce = " + req.introduce + ", dynamicFlag = " + req.dynamicFlag)
vm.POST("circle/circle/save", req).then(res => {
console.log("commitActivityInfo() : name = " + req.titleManager + ", headUrl = " + req.listImage
+ ", coverUrl = " + req.introImage)
vm.POST("circle/sso/activity/save", req).then(res => {
if (res.code == "000000") {
// console.log(res);
// console.log(this.$refs);
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册