添加书签 处理标签

This commit is contained in:
WangHao 2020-09-06 19:43:29 +08:00
parent 29e4c15276
commit d3b5496aba
3 changed files with 210 additions and 33 deletions

View File

@ -120,6 +120,9 @@
<el-input v-model="form.description" type="textarea" placeholder="请输入书签描述" run dev <el-input v-model="form.description" type="textarea" placeholder="请输入书签描述" run dev
:autosize="{minRows: 3, maxRows:4}" :style="{width: '100%'}"></el-input> :autosize="{minRows: 3, maxRows:4}" :style="{width: '100%'}"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属目录" prop="menuId">
<el-input v-model="form.menuId" placeholder="请选择上级目录" />
</el-form-item>
<el-form-item label="书签标签:" prop="label"> <el-form-item label="书签标签:" prop="label">
@ -132,8 +135,6 @@
:disable-transitions="false" :disable-transitions="false"
@close="taghandleClose(tag.tagId)" @close="taghandleClose(tag.tagId)"
v-if="tag.name!='TAGDELETE'" v-if="tag.name!='TAGDELETE'"
> >
{{tag.name}} {{tag.name}}
</el-tag> </el-tag>
@ -147,17 +148,32 @@
@blur="handleInputConfirm" @blur="handleInputConfirm"
> >
</el-input> </el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput">+ New Tag</el-button> <el-button v-else class="button-new-tag" size="small" @click="showInput">+ 新增标签</el-button>
</el-form-item> </el-form-item>
<el-form-item label="所属目录" prop="menuId"> <!-- 0公开显示 1隐藏显示 2好友显示-->
<el-input v-model="form.menuId" placeholder="请选择上级目录" />
</el-form-item>
<!-- 0公开显示1隐藏显示2好友显示3稍后再看-->
<el-form-item label="选择状态" prop="start"> <el-form-item label="选择状态" prop="start">
<el-input v-model="form.start" placeholder="" /> <el-radio-group v-model="form.start" size="medium">
<el-radio v-for="(item, index) in bookmarkstatus" :key="index" :label="item.value"
:disabled="item.disabled">{{item.name}}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<!-- 1.未读稍后再看 2 已读 2.續看-->
<el-form-item label="选择类型" prop="type">
<el-radio-group v-model="form.type" size="medium">
<el-radio v-for="(item, index) in bookmarktype" :key="index" :label="item.value"
:disabled="item.disabled">{{item.name}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -212,9 +228,9 @@
start: undefined, start: undefined,
sqTags:[] sqTags:[]
}, },
dynamicTags: ['标签一', '标签二', '标签三'],
inputVisible: false, // inputVisible: false, //
inputValue: '', // inputValue: '', //
tagcount:0, //ID
bookmarkList:[], bookmarkList:[],
urltext:'?from=yunshuqian.com',//广 urltext:'?from=yunshuqian.com',//广
// //
@ -222,7 +238,24 @@
// //
rules: { rules: {
}, },
tagcount:0, bookmarkstatus: [{
"name": "公开",
"value": 1
}, {
"name": "私密",
"value": 2
}],
bookmarktype: [{
"name": "已阅读",
"value": 1
}, {
"name": "稍后读",
"value": 2
}, {
"name": "待续读",
"value": 3
}],
} }
}, },
filters: { filters: {

View File

@ -169,25 +169,61 @@
:autosize="{minRows: 3, maxRows:4}" :style="{width: '100%'}"></el-input> :autosize="{minRows: 3, maxRows:4}" :style="{width: '100%'}"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="书签标签" prop="label">
<el-input v-model="form.label" placeholder="请输入标签" />
</el-form-item>
<!-- <el-form-item label="所属目录" prop="menuId">-->
<!-- <el-input v-model="form.menuId" placeholder="请选择上级目录" />-->
<!-- </el-form-item>-->
<el-form-item prop="menuId"> <el-form-item prop="menuId">
<div class="labelname">所属目录</div> <div class="labelname">所属目录</div>
<treeselect class="menutreeselect" v-model="form.menuId" :options="menuOptions" :normalizer="normalizer" /> <treeselect class="menutreeselect" v-model="form.menuId" :options="menuOptions" :normalizer="normalizer" />
</el-form-item> </el-form-item>
<el-form-item label="书签标签" prop="label">
<el-tag
class="bookmarktag"
v-for="tag in sqTags"
:key="tag.tagId"
closable
type="success"
:disable-transitions="false"
@close="taghandleClose(tag.tagId)"
v-if="tag.name!='TAGDELETE'"
>
{{tag.name}}
</el-tag>
<el-input
class="input-new-tag"
v-if="inputVisible"
v-model="inputValue"
ref="saveTagInput"
size="small"
@keyup.enter.native="handleInputConfirm"
@blur="handleInputConfirm"
>
</el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput">+ 新增标签</el-button>
<!-- 0公开显示1隐藏显示2好友显示3稍后再看-->
<el-form-item label="选择状态" prop="start">
<el-input v-model="form.start" placeholder="" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="所属目录" prop="menuId">-->
<!-- <el-input v-model="form.menuId" placeholder="请选择上级目录" />-->
<!-- </el-form-item>-->
<!-- 0公开显示 1隐藏显示 2好友显示-->
<el-form-item label="选择状态" prop="start">
<el-radio-group v-model="form.start" size="medium">
<el-radio v-for="(item, index) in bookmarkstatus" :key="index" :label="item.value"
:disabled="item.disabled">{{item.name}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- 1.未读稍后再看 2 已读 2.續看-->
<el-form-item label="选择类型" prop="type">
<el-radio-group v-model="form.type" size="medium">
<el-radio v-for="(item, index) in bookmarktype" :key="index" :label="item.value"
:disabled="item.disabled">{{item.name}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="addbookmark"> </el-button> <el-button type="primary" @click="addbookmark"> </el-button>
@ -249,6 +285,7 @@
zcount: undefined, zcount: undefined,
idelete: undefined, idelete: undefined,
start: undefined, start: undefined,
sqTags:[]
}, },
// //
menuOptions: [], menuOptions: [],
@ -305,7 +342,29 @@
} }
}, },
zNodes:[], zNodes:[],
bookmark:[] bookmark:[],
inputVisible: false, //
inputValue: '', //
tagcount:0, //ID
sqTags:[],
bookmarkstatus: [{
"name": "公开",
"value": 1
}, {
"name": "私密",
"value": 2
}],
bookmarktype: [{
"name": "已阅读",
"value": 1
}, {
"name": "稍后读",
"value": 2
}, {
"name": "待续读",
"value": 3
}],
} }
}, },
created() { created() {
@ -314,6 +373,53 @@
that.getList(); that.getList();
}, },
methods:{ methods:{
/**书签编辑设置的 标签开始**/
taghandleClose(tag) {
//1.
var tina = this.sqTags.filter((p) => {
return p.tagId == tag;
});
//2.
var index = this.sqTags.indexOf(tina[0]);
//3. index > -1
index > -1 && this.sqTags.splice(index, 1);
console.log(this.sqTags);
},
showInput() {
this.inputVisible = true;
this.$nextTick(_ => {
this.$refs.saveTagInput.$refs.input.focus();
});
},
handleInputConfirm() {
let inputValue = this.inputValue;
if (inputValue) {
this.tagcount=this.tagcount-1;
var updatetag ={name: inputValue, bookmarkId:"bookmarkId",tagId:this.tagcount};
this.sqTags.push(updatetag);
}
this.inputVisible = false;
this.inputValue = '';
console.log(this.sqTags);
},
/**书签编辑设置的 标签结束**/
/** 新增书签Url操作 */ /** 新增书签Url操作 */
addbookmarkurl:function(){ addbookmarkurl:function(){
this.reset(); this.reset();
@ -324,16 +430,13 @@
// this.open = true; // this.open = true;
// this.title = ""; // this.title = "";
// }); // });
}, },
/** 提交按钮 修改和新增 */ /** 提交按钮 修改和新增 */
addbookmark: function() { addbookmark: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
this.form.sqTags=this.sqTags;
addBookmark(this.form).then(response => { addBookmark(this.form).then(response => {
if (response.code === 200) { if (response.code === 200) {
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
@ -462,6 +565,7 @@
// }, // },
// //
reset() { reset() {
this.sqTags=[],
this.form = { this.form = {
menuId: undefined, menuId: undefined,
userId: undefined, userId: undefined,

View File

@ -104,14 +104,51 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
public int insertSqBookmark(SqBookmark sqBookmark) public int insertSqBookmark(SqBookmark sqBookmark)
{ {
int i= sqBookmarkMapper.insertUseGeneratedKeys(sqBookmark);
sqBookmark.setCreateTime(DateUtils.getNowDate()); sqBookmark.setCreateTime(DateUtils.getNowDate());
return sqBookmarkMapper.insertSqBookmark(sqBookmark); //传入的标签
List<Map<String, Object>> listmap = sqBookmark.getSqTags();
if (listmap==null||listmap.isEmpty()||listmap.size()==0){
return sqBookmarkMapper.insertSqBookmark(sqBookmark);
}
String addtag="";
//给文章添加标签
HashMap<Long,Long> bookmarkTag=new HashMap<Long,Long>();
//文章添加书签
SqBookmarkTag bookamrktag = new SqBookmarkTag();
for (Map<String, Object> map : listmap) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
//新增书签
if (Integer.parseInt(String.valueOf(map.get("tagId"))) < 0) {
Map<String, Object> tagmap = iSqTagService.addtag(String.valueOf(map.get("name")), sqBookmark.getUserid());
for (Map.Entry<String, Object> tag : tagmap.entrySet()) {
addtag += tagmap.get("tagId").toString();
map.put("tagId", tagmap.get("tagId"));
}
}
bookmarkTag.put(Long.valueOf(map.get("tagId").toString()),sqBookmark.getBookmarkId());
}
}
//给文章添加书签
for (Map.Entry<Long,Long> tag:bookmarkTag.entrySet()){
bookamrktag.setBookmarkId(tag.getValue());
bookamrktag.setTagId(tag.getKey());
sqBookmarkTagMapper.insertSqBookmarkTag(bookamrktag);
}
//个人标签引用数量 批量+1
if (!addtag.equals("") && addtag.length()>0) {
addtag=addtag.substring(0,addtag.length()-1);
String[] add = addtag.split(",");
Long[] num = (Long[]) ConvertUtils.convert(add,Long.class);
sqUserTagMapper.updateCountReduce(num, sqBookmark.getUserid());
}
return i;
} }
/** /**
@ -128,6 +165,9 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
String addtag = ""; String addtag = "";
//传入的标签 //传入的标签
List<Map<String, Object>> listmap = sqBookmark.getSqTags(); List<Map<String, Object>> listmap = sqBookmark.getSqTags();
if (listmap==null||listmap.isEmpty()||listmap.size()==0){
return sqBookmarkMapper.updateSqBookmark(sqBookmark);
}
//给文章添加标签 //给文章添加标签
HashMap<Long,Long> bookmarkTag=new HashMap<Long,Long>(); HashMap<Long,Long> bookmarkTag=new HashMap<Long,Long>();
//文章添加书签 //文章添加书签