|
@@ -275,57 +275,38 @@ const edit = new Vue({
|
|
|
$('.navLayout').find('.navList').eq(3).addClass("on").find('.con').show().find('a').eq(0).addClass("on");
|
|
|
this.initAutoInput('.seo-auto-input', 'seoKeyword')
|
|
|
},
|
|
|
- watch: {
|
|
|
- referenceDialog(val) {
|
|
|
- if (val) {
|
|
|
- setTimeout(() => {
|
|
|
- this.onFocused()
|
|
|
- }, 500)
|
|
|
- }
|
|
|
- },
|
|
|
- },
|
|
|
methods: {
|
|
|
- onFocused(val = 300) {
|
|
|
- setTimeout(() => {
|
|
|
- this.validTime = null
|
|
|
- console.log(111)
|
|
|
- clearTimeout(this.validTime)
|
|
|
- }, val)
|
|
|
+ onFocused() {
|
|
|
+ this.validTime = null
|
|
|
+ console.log(111)
|
|
|
+ clearTimeout(this.validTime)
|
|
|
},
|
|
|
- onBlured(val = 200) {
|
|
|
- setTimeout(() => {
|
|
|
- this.isFocus = true
|
|
|
- this.validFormRule()
|
|
|
- console.log(222)
|
|
|
- }, val)
|
|
|
+ onBlured() {
|
|
|
+ this.isFocus = true
|
|
|
+ this.validFormRule()
|
|
|
+ console.log(222)
|
|
|
},
|
|
|
// 自动保存校验
|
|
|
validFormRule() {
|
|
|
- this.$refs.ruleForm.validate(valid => {
|
|
|
- if (valid) {
|
|
|
- this.validTime = null
|
|
|
- clearTimeout(this.validTime)
|
|
|
- this.validTime = setTimeout(() => {
|
|
|
- if (this.validTime) {
|
|
|
- this.handleConfirm_new()
|
|
|
- }
|
|
|
- clearTimeout(this.validTime)
|
|
|
- this.validTime = null
|
|
|
- }, 2000)
|
|
|
+ let allow = true
|
|
|
+ const ruleData = Object.keys(this.rules)
|
|
|
+ for(let i of ruleData){
|
|
|
+ if (!this.formData[i]) {
|
|
|
+ allow = false
|
|
|
+ console.log('数据未填写完成')
|
|
|
+ break
|
|
|
}
|
|
|
- })
|
|
|
- },
|
|
|
- handlerDiscrip() {
|
|
|
- this.onFocused()
|
|
|
- },
|
|
|
- handlerTypeId() {
|
|
|
- this.onBlured()
|
|
|
- },
|
|
|
- changeVisible($event) {
|
|
|
- if ($event) {
|
|
|
- this.onFocused()
|
|
|
- } else {
|
|
|
- this.onBlured()
|
|
|
+ }
|
|
|
+ if (allow) {
|
|
|
+ this.validTime = null
|
|
|
+ clearTimeout(this.validTime)
|
|
|
+ this.validTime = setTimeout(() => {
|
|
|
+ if (this.validTime) {
|
|
|
+ this.handleConfirm()
|
|
|
+ }
|
|
|
+ clearTimeout(this.validTime)
|
|
|
+ this.validTime = null
|
|
|
+ }, 5000)
|
|
|
}
|
|
|
},
|
|
|
// 获取表单数据
|
|
@@ -412,40 +393,6 @@ const edit = new Vue({
|
|
|
this.socrllToErrorWord()
|
|
|
}
|
|
|
},
|
|
|
- // 提交表单
|
|
|
- async handleConfirm_new() {
|
|
|
- try {
|
|
|
- if(this.showAgreement){
|
|
|
- CAIMEI.dialog('请先阅读编辑须知协议', false);
|
|
|
- return
|
|
|
- }
|
|
|
- this.formData.shopId = GLOBAL_SHOP_ID
|
|
|
- this.formData.imageList = this.filterImageList(this.fileList)
|
|
|
- this.formData.videoList = this.filterVideoList(this.fileList)
|
|
|
- await this.$refs.ruleForm.validate()
|
|
|
- const params = {
|
|
|
- shopId: this.formData.shopId,
|
|
|
- id: this.formData.id, // 词条id
|
|
|
- name: this.formData.name, // 词条名称
|
|
|
- alias: this.formData.alias, // 义项名
|
|
|
- discription: this.formData.discription, // 词条概述
|
|
|
- image: this.formData.image, // 头图地址
|
|
|
- typeId: this.formData.typeId, // 分类id
|
|
|
- seoKeyword: this.formData.seoKeyword, // seo关键字
|
|
|
- status: this.formData.status, // 状态0保存草稿箱 1已发布
|
|
|
- infoListStr: JSON.stringify(this.formData.infoList), // 信息栏集合
|
|
|
- referenceListStr:JSON.stringify(this.formData.referenceList), // 参考资料集合
|
|
|
- textInfoListStr: JSON.stringify(this.formData.textInfoList),
|
|
|
- imageListStr: JSON.stringify(this.formData.imageList), // 概述图册集合
|
|
|
- videoListStr:JSON.stringify(this.formData.videoList), // 视频集合
|
|
|
- labelIds: this.formData.labelIds ? this.formData.labelIds.join(',') : '' // 关联标签库列表
|
|
|
- };
|
|
|
- this.sensitiveWordsValidate_new(params)
|
|
|
- } catch (e) {
|
|
|
- console.log(e)
|
|
|
- this.socrllToErrorWord()
|
|
|
- }
|
|
|
- },
|
|
|
/// 确定提交
|
|
|
onReallySave(params) {
|
|
|
const self = this
|
|
@@ -539,7 +486,6 @@ const edit = new Vue({
|
|
|
this.referenceData = initReferenceData()
|
|
|
this.$refs.referenceForm.clearValidate()
|
|
|
this.referenceDialog = false
|
|
|
- this.onBlured()
|
|
|
} catch (e) {
|
|
|
console.log(e)
|
|
|
}
|
|
@@ -572,7 +518,6 @@ const edit = new Vue({
|
|
|
if(this.referenceData.imageUrl){
|
|
|
this.referenceImageList = [{ url: this.referenceData.imageUrl, type: 'image' }]
|
|
|
}
|
|
|
- console.log(1111)
|
|
|
},
|
|
|
// 参考资料删除
|
|
|
handleReferenceDelete(item) {
|
|
@@ -595,13 +540,10 @@ const edit = new Vue({
|
|
|
// 新增信息栏
|
|
|
handleInfoAdd() {
|
|
|
this.formData.infoList.push(this.genereateInfo())
|
|
|
- this.onFocused()
|
|
|
},
|
|
|
// 删除信息栏
|
|
|
handleInfoRemove(index) {
|
|
|
this.formData.infoList.splice(index, 1)
|
|
|
- this.onFocused(0)
|
|
|
- this.onBlured(0)
|
|
|
},
|
|
|
// 正文目录数据
|
|
|
genereateTextInfo(type, index) {
|
|
@@ -622,37 +564,28 @@ const edit = new Vue({
|
|
|
// 添加正文目录
|
|
|
handleAddTextInfo(index, type) {
|
|
|
this.formData.textInfoList.splice(index + 1, 0, this.genereateTextInfo(type, index + 1))
|
|
|
- this.onFocused()
|
|
|
},
|
|
|
// 删除正文目录
|
|
|
handleRemoveTextInfo(index, type) {
|
|
|
this.formData.textInfoList.splice(index, 1)
|
|
|
- this.onFocused(0)
|
|
|
- this.onBlured(0)
|
|
|
},
|
|
|
// 文件上传成功
|
|
|
handleUploadSuccess(fileList) {
|
|
|
this.fileList = [...this.fileList, ...fileList]
|
|
|
- this.onBlured()
|
|
|
},
|
|
|
// 文件移除
|
|
|
handleFileRemove(file) {
|
|
|
this.fileList = this.fileList.filter(item => item.uuid !== file.uuid);
|
|
|
- this.onFocused()
|
|
|
- this.onBlured()
|
|
|
},
|
|
|
// 封面上传成功
|
|
|
handleCoverUploadSuccess(fileList) {
|
|
|
this.coverList = fileList
|
|
|
this.formData.image = fileList[0].url
|
|
|
- this.onBlured()
|
|
|
},
|
|
|
// 封面删除
|
|
|
handleCoverRemove(file) {
|
|
|
this.formData.image = ''
|
|
|
this.coverList = this.coverList.filter(item => item.uuid !== file.uuid);
|
|
|
- this.onFocused()
|
|
|
- this.onBlured()
|
|
|
},
|
|
|
// 资料图片上传
|
|
|
handleReferenceImageUploadSuccess(fileList){
|
|
@@ -697,41 +630,7 @@ const edit = new Vue({
|
|
|
})
|
|
|
})
|
|
|
},
|
|
|
- // 敏感词校验
|
|
|
- sensitiveWordsValidate_new(params) {
|
|
|
- const whiteList = [];
|
|
|
- const self = this;
|
|
|
- SupplierApi.ShopBaikeProductWordsValidate({checkPoint: 2}, function (res) {
|
|
|
- let flag = true
|
|
|
- for (const key in params) {
|
|
|
- if (!whiteList.includes(key)) {
|
|
|
- const target = JSON.stringify(params[key])
|
|
|
- const bool = new RegExp(res.data, 'g').test(target)
|
|
|
- if (bool) {
|
|
|
- const value = self.matchWords(target, res.data)
|
|
|
- self.$set(self.formValidate, key, value)
|
|
|
- flag = false
|
|
|
- } else {
|
|
|
- self.$set(self.formValidate, key, '')
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (flag) return self.onReallySave_new(params)
|
|
|
- console.log(self.formValidate)
|
|
|
- const tip = '当前发布内容存在敏感词,已为您标记在输入框下方,请修改后,再进行保存发布,强行保存发布将会导致审核不通过!'
|
|
|
- self.$confirm(tip, '提示', {confirmButtonText: '保存', cancelButtonText: '取消'}).then(function () {
|
|
|
- self.onReallySave_new(params)
|
|
|
- }).catch(function () {
|
|
|
- self.socrllToErrorWord() // 滚动到提示处
|
|
|
- })
|
|
|
- })
|
|
|
- },
|
|
|
- onReallySave_new(params) {
|
|
|
- shopBikeApi.SaveEntrySumbit(params, (res) => {
|
|
|
- CAIMEI.dialog('自动保存成功', false);
|
|
|
- this.onFocused()
|
|
|
- })
|
|
|
- },
|
|
|
+
|
|
|
// 匹配敏感词
|
|
|
matchWords(word, validate) {
|
|
|
const list = []
|