|
@@ -199,6 +199,7 @@
|
|
|
<span v-if="item.msgtype === 'video'">【视频】: {{ item.video.url }}</span>
|
|
<span v-if="item.msgtype === 'video'">【视频】: {{ item.video.url }}</span>
|
|
|
<span v-if="item.msgtype === 'link'">【链接】: {{ item.link.title }}-{{item.link.desc}}</span>
|
|
<span v-if="item.msgtype === 'link'">【链接】: {{ item.link.title }}-{{item.link.desc}}</span>
|
|
|
<span v-if="item.msgtype === 'miniprogram'">【小程序】: {{ item.miniprogram.title }}</span>
|
|
<span v-if="item.msgtype === 'miniprogram'">【小程序】: {{ item.miniprogram.title }}</span>
|
|
|
|
|
+ <span v-if="item.msgtype === 'luckyBag'">【福袋】: {{ (item.luckyBag && item.luckyBag.luckyBagName) || '' }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div style=" display: flex;gap: 10px;">
|
|
<div style=" display: flex;gap: 10px;">
|
|
|
<el-button
|
|
<el-button
|
|
@@ -235,6 +236,9 @@
|
|
|
<el-dropdown-item command="miniprogram">
|
|
<el-dropdown-item command="miniprogram">
|
|
|
<i class="el-icon-link" style="margin-right: 10px;"></i>小程序
|
|
<i class="el-icon-link" style="margin-right: 10px;"></i>小程序
|
|
|
</el-dropdown-item>
|
|
</el-dropdown-item>
|
|
|
|
|
+ <el-dropdown-item command="luckyBag">
|
|
|
|
|
+ <i class="el-icon-link" style="margin-right: 10px;"></i>福袋
|
|
|
|
|
+ </el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
</el-dropdown-menu>
|
|
|
|
|
|
|
|
<span class="el-dropdown-link">
|
|
<span class="el-dropdown-link">
|
|
@@ -326,6 +330,7 @@
|
|
|
<span v-if="attachment.msgtype === 'image'">【图片】: {{ attachment.image.pic_url }}</span>
|
|
<span v-if="attachment.msgtype === 'image'">【图片】: {{ attachment.image.pic_url }}</span>
|
|
|
<span v-if="attachment.msgtype === 'link'">【链接】: {{ attachment.link.title }}-{{attachment.link.desc}}</span>
|
|
<span v-if="attachment.msgtype === 'link'">【链接】: {{ attachment.link.title }}-{{attachment.link.desc}}</span>
|
|
|
<span v-if="attachment.msgtype === 'miniprogram'">【小程序】: {{ attachment.miniprogram.title }}</span>
|
|
<span v-if="attachment.msgtype === 'miniprogram'">【小程序】: {{ attachment.miniprogram.title }}</span>
|
|
|
|
|
+ <span v-if="attachment.msgtype === 'luckyBag'">【福袋】: {{ (attachment.luckyBag && attachment.luckyBag.luckyBagName) || '' }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div style=" display: flex;gap: 10px;">
|
|
<div style=" display: flex;gap: 10px;">
|
|
|
<el-button
|
|
<el-button
|
|
@@ -362,6 +367,9 @@
|
|
|
<el-dropdown-item command="miniprogram">
|
|
<el-dropdown-item command="miniprogram">
|
|
|
<i class="el-icon-link" style="margin-right: 10px;"></i>小程序
|
|
<i class="el-icon-link" style="margin-right: 10px;"></i>小程序
|
|
|
</el-dropdown-item>
|
|
</el-dropdown-item>
|
|
|
|
|
+ <el-dropdown-item command="luckyBag">
|
|
|
|
|
+ <i class="el-icon-link" style="margin-right: 10px;"></i>福袋
|
|
|
|
|
+ </el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
</el-dropdown-menu>
|
|
|
|
|
|
|
|
<span class="el-dropdown-link">
|
|
<span class="el-dropdown-link">
|
|
@@ -409,6 +417,7 @@
|
|
|
<el-form-item label="视频:" prop="videoUrl">
|
|
<el-form-item label="视频:" prop="videoUrl">
|
|
|
|
|
|
|
|
<el-upload
|
|
<el-upload
|
|
|
|
|
+ :headers="ossUploadHeaders"
|
|
|
v-model="fileFrom.videoUrl"
|
|
v-model="fileFrom.videoUrl"
|
|
|
class="avatar-uploader"
|
|
class="avatar-uploader"
|
|
|
:action="uploadUrl"
|
|
:action="uploadUrl"
|
|
@@ -527,6 +536,27 @@
|
|
|
<!-- <el-input v-model="fileFrom.linkUrl" :rows="2" placeholder="选择了课程小节会自动设置地址" />-->
|
|
<!-- <el-input v-model="fileFrom.linkUrl" :rows="2" placeholder="选择了课程小节会自动设置地址" />-->
|
|
|
<!-- </el-form-item>-->
|
|
<!-- </el-form-item>-->
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div v-if="welcomeItem.type==='luckyBag'">
|
|
|
|
|
+ <el-card class="box-card">
|
|
|
|
|
+ <el-form-item label="福袋名称">
|
|
|
|
|
+ <el-select v-model="luckyBag.luckyBagId"
|
|
|
|
|
+ placeholder="请选择福袋" size="mini"
|
|
|
|
|
+ @change="getLuckyBagStatus(luckyBag.luckyBagId)">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in luckyBagList"
|
|
|
|
|
+ :key="dict.id"
|
|
|
|
|
+ :label="dict.name"
|
|
|
|
|
+ :value="dict.id"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="福袋状态">
|
|
|
|
|
+ <el-tag :type="luckyBag.luckyBagDataStatus == 1 ? 'success' : 'danger'">
|
|
|
|
|
+ {{ luckyBag.luckyBagDataStatus == 1 ? '启用' : '禁用' }}
|
|
|
|
|
+ </el-tag>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-card>
|
|
|
|
|
+ </div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer" style="text-align: center">
|
|
<div slot="footer" class="dialog-footer" style="text-align: center">
|
|
|
<el-button type="primary" @click="confirmUpload('fileFrom')">确定</el-button>
|
|
<el-button type="primary" @click="confirmUpload('fileFrom')">确定</el-button>
|
|
@@ -538,6 +568,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
|
+import { getToken } from '@/utils/auth';
|
|
|
import { listMyFriendWelcome,listFriendWelcome, getFriendWelcome, delFriendWelcome, addFriendWelcome, updateFriendWelcome, exportFriendWelcome } from "@/api/qw/friendWelcome";
|
|
import { listMyFriendWelcome,listFriendWelcome, getFriendWelcome, delFriendWelcome, addFriendWelcome, updateFriendWelcome, exportFriendWelcome } from "@/api/qw/friendWelcome";
|
|
|
import qwUserList from '@/views/qw/user/qwUserList.vue'
|
|
import qwUserList from '@/views/qw/user/qwUserList.vue'
|
|
|
import ImageUploadWeclome from '@/views/qw/friendWelcome/ImageUploadWeclome.vue'
|
|
import ImageUploadWeclome from '@/views/qw/friendWelcome/ImageUploadWeclome.vue'
|
|
@@ -545,15 +576,30 @@ import ImageUpload from '@/views/qw/material/ImageUpload.vue'
|
|
|
import { getQwAllUserList } from '@/api/company/companyUser'
|
|
import { getQwAllUserList } from '@/api/company/companyUser'
|
|
|
import { getMyQwUserList,getMyQwCompanyList } from "@/api/qw/user";
|
|
import { getMyQwUserList,getMyQwCompanyList } from "@/api/qw/user";
|
|
|
import {courseList, videoList} from "@/api/qw/sop";
|
|
import {courseList, videoList} from "@/api/qw/sop";
|
|
|
|
|
+import { listReward } from '@/api/qw/luckyBag'
|
|
|
export default {
|
|
export default {
|
|
|
name: "myWelcome",
|
|
name: "myWelcome",
|
|
|
components: { ImageUpload, qwUserList,ImageUploadWeclome},
|
|
components: { ImageUpload, qwUserList,ImageUploadWeclome},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ ossUploadHeaders: { Authorization: "Bearer " + getToken() },
|
|
|
|
|
|
|
|
uploadUrl: process.env.VUE_APP_BASE_API + "/common/uploadOSS2",
|
|
uploadUrl: process.env.VUE_APP_BASE_API + "/common/uploadOSS2",
|
|
|
// 遮罩层
|
|
// 遮罩层
|
|
|
loading: true,
|
|
loading: true,
|
|
|
|
|
+ luckyBag:{
|
|
|
|
|
+ luckyBagId: null,
|
|
|
|
|
+ luckyBagName: null,
|
|
|
|
|
+ luckyBagDataStatus: null,
|
|
|
|
|
+ },
|
|
|
|
|
+ luckyBagList: [],
|
|
|
|
|
+ queryParams1: {
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ pageSize: 100,
|
|
|
|
|
+ dataStatus: '1',
|
|
|
|
|
+ name: null,
|
|
|
|
|
+ type: null
|
|
|
|
|
+ },
|
|
|
// 导出遮罩层
|
|
// 导出遮罩层
|
|
|
exportLoading: false,
|
|
exportLoading: false,
|
|
|
// 选中数组
|
|
// 选中数组
|
|
@@ -712,6 +758,9 @@ export default {
|
|
|
courseList().then(response => {
|
|
courseList().then(response => {
|
|
|
this.courseList = response.list;
|
|
this.courseList = response.list;
|
|
|
});
|
|
});
|
|
|
|
|
+ listReward(this.queryParams1).then(response => {
|
|
|
|
|
+ this.luckyBagList = response.rows;
|
|
|
|
|
+ });
|
|
|
getMyQwCompanyList().then(response => {
|
|
getMyQwCompanyList().then(response => {
|
|
|
|
|
|
|
|
this.myQwCompanyList = response.data;
|
|
this.myQwCompanyList = response.data;
|
|
@@ -730,6 +779,16 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ getLuckyBagStatus(luckyBagId) {
|
|
|
|
|
+ const selectedLuckyBag = this.luckyBagList.find(item => item.id === luckyBagId);
|
|
|
|
|
+ if (selectedLuckyBag) {
|
|
|
|
|
+ this.luckyBag.luckyBagDataStatus = selectedLuckyBag.dataStatus;
|
|
|
|
|
+ this.luckyBag.luckyBagName = selectedLuckyBag.name;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.luckyBag.luckyBagDataStatus = null;
|
|
|
|
|
+ this.luckyBag.luckyBagName = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
updateCorpId(){
|
|
updateCorpId(){
|
|
|
this.getList();
|
|
this.getList();
|
|
|
getQwAllUserList(this.queryParams.corpId).then(response => {
|
|
getQwAllUserList(this.queryParams.corpId).then(response => {
|
|
@@ -850,6 +909,8 @@ export default {
|
|
|
return '添加链接';
|
|
return '添加链接';
|
|
|
case 'miniprogram':
|
|
case 'miniprogram':
|
|
|
return '添加小程序';
|
|
return '添加小程序';
|
|
|
|
|
+ case 'luckyBag':
|
|
|
|
|
+ return '添加福袋';
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
|
|
@@ -976,6 +1037,15 @@ export default {
|
|
|
this.videoList = response.list;
|
|
this.videoList = response.list;
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ } else if (item.msgtype === 'luckyBag') {
|
|
|
|
|
+ this.welcomeItem.type = 'luckyBag';
|
|
|
|
|
+ const lb = item.luckyBag || {};
|
|
|
|
|
+ this.luckyBag.luckyBagId = lb.luckyBagId;
|
|
|
|
|
+ this.luckyBag.luckyBagName = lb.luckyBagName;
|
|
|
|
|
+ this.luckyBag.luckyBagDataStatus = lb.luckyBagDataStatus;
|
|
|
|
|
+ if (lb.luckyBagId) {
|
|
|
|
|
+ this.getLuckyBagStatus(lb.luckyBagId);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -991,6 +1061,8 @@ export default {
|
|
|
return '编辑链接';
|
|
return '编辑链接';
|
|
|
case 'miniprogram':
|
|
case 'miniprogram':
|
|
|
return '编辑小程序';
|
|
return '编辑小程序';
|
|
|
|
|
+ case 'luckyBag':
|
|
|
|
|
+ return '编辑福袋';
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
|
|
@@ -1061,6 +1133,19 @@ export default {
|
|
|
expiresDays:this.fileFrom.expiresDays,
|
|
expiresDays:this.fileFrom.expiresDays,
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
+ } else if (type === 'luckyBag') {
|
|
|
|
|
+ if (!this.luckyBag.luckyBagId) {
|
|
|
|
|
+ return this.$message.error("福袋不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ attachment = {
|
|
|
|
|
+ msgtype: 'luckyBag',
|
|
|
|
|
+ isLuckyBag: 1,
|
|
|
|
|
+ luckyBag: {
|
|
|
|
|
+ luckyBagId: this.luckyBag.luckyBagId,
|
|
|
|
|
+ luckyBagName: this.luckyBag.luckyBagName,
|
|
|
|
|
+ luckyBagDataStatus: this.luckyBag.luckyBagDataStatus
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (itemIndex === -1) {
|
|
if (itemIndex === -1) {
|
|
@@ -1121,6 +1206,11 @@ export default {
|
|
|
miniprogramPicUrl:null,
|
|
miniprogramPicUrl:null,
|
|
|
miniprogramAppid:null,
|
|
miniprogramAppid:null,
|
|
|
};
|
|
};
|
|
|
|
|
+ this.luckyBag = {
|
|
|
|
|
+ luckyBagId: null,
|
|
|
|
|
+ luckyBagName: null,
|
|
|
|
|
+ luckyBagDataStatus: null,
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
this.welcomeItem={
|
|
this.welcomeItem={
|
|
|
open: false,
|
|
open: false,
|
|
@@ -1208,6 +1298,21 @@ export default {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 处理福袋附件数据格式(兼容旧数据 / 残缺数据)
|
|
|
|
|
+ if (Array.isArray(data.attachments)) {
|
|
|
|
|
+ data.attachments = data.attachments.map(attachment => this.normalizeLuckyBagAttachment(attachment));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 同样处理分时段欢迎语中的附件
|
|
|
|
|
+ if (Array.isArray(data.daypartingItemlist)) {
|
|
|
|
|
+ data.daypartingItemlist = data.daypartingItemlist.map(item => {
|
|
|
|
|
+ if (item.attachments && Array.isArray(item.attachments)) {
|
|
|
|
|
+ item.attachments = item.attachments.map(attachment => this.normalizeLuckyBagAttachment(attachment));
|
|
|
|
|
+ }
|
|
|
|
|
+ return item;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 赋值给表单
|
|
// 赋值给表单
|
|
|
this.form = data;
|
|
this.form = data;
|
|
|
this.userSelectList=this.form.userSelectList
|
|
this.userSelectList=this.form.userSelectList
|
|
@@ -1216,6 +1321,36 @@ export default {
|
|
|
this.title = "修改好友欢迎语";
|
|
this.title = "修改好友欢迎语";
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
|
|
+ /** 兼容旧格式 / 残缺福袋附件 */
|
|
|
|
|
+ normalizeLuckyBagAttachment(attachment) {
|
|
|
|
|
+ if (!attachment) return attachment;
|
|
|
|
|
+ const mp = attachment.miniprogram || {};
|
|
|
|
|
+ const isOldLucky = attachment.msgtype === 'miniprogram'
|
|
|
|
|
+ && (attachment.isLuckyBag == 1 || mp.isLuckyBag == 1);
|
|
|
|
|
+ if (isOldLucky) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ msgtype: 'luckyBag',
|
|
|
|
|
+ isLuckyBag: 1,
|
|
|
|
|
+ luckyBag: {
|
|
|
|
|
+ luckyBagId: mp.luckyBagId || attachment.luckyBagId,
|
|
|
|
|
+ luckyBagName: mp.luckyBagName || mp.title || '',
|
|
|
|
|
+ luckyBagDataStatus: mp.luckyBagDataStatus
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ if (attachment.msgtype === 'luckyBag' && !attachment.luckyBag) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ ...attachment,
|
|
|
|
|
+ isLuckyBag: 1,
|
|
|
|
|
+ luckyBag: {
|
|
|
|
|
+ luckyBagId: mp.luckyBagId || attachment.luckyBagId,
|
|
|
|
|
+ luckyBagName: mp.luckyBagName || mp.title || attachment.luckyBagName || '',
|
|
|
|
|
+ luckyBagDataStatus: mp.luckyBagDataStatus || attachment.luckyBagDataStatus
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ return attachment;
|
|
|
|
|
+ },
|
|
|
/** 提交按钮 验证 from表单*/
|
|
/** 提交按钮 验证 from表单*/
|
|
|
submitForm() {
|
|
submitForm() {
|
|
|
|
|
|