xiebaomin 2 年之前
父節點
當前提交
a3e8a3f410

+ 41 - 5
src/main/resources/static/js/supplier-center/article/article-edit.js

@@ -35,7 +35,7 @@ var articleEdit = new Vue({
             // 来源
             source: '',
             // 状态
-            status: 1,
+            status: 0,
             // 文章分类
             typeId: ''
         },
@@ -89,7 +89,10 @@ var articleEdit = new Vue({
         formValidate: {},
         variable: '',
         remoteLoading: false,
-        labelList: []
+        labelList: [],
+        validTime: null,
+        isValidSave: 0, // 是否开启自动保存
+        isFocus: false, // 是否聚焦
     },
     watch: {
         chooseLabels: function chooseLabels(newVal) {
@@ -101,7 +104,7 @@ var articleEdit = new Vue({
             }
             if (newVal === oldVal) return;
             this.chooseLabels = newVal.split(',');
-        }
+        },
     },
     created: function created() {
         this.init();
@@ -115,6 +118,16 @@ var articleEdit = new Vue({
         localStorage.removeItem('articleId');
     },
     methods: {
+        onFocused() {
+            this.validTime = null
+            console.log(111)
+            clearTimeout(this.validTime)
+        },
+        onBlured() {
+            this.isFocus = true
+            this.validFormRule()
+            console.log(222)
+        },
         // 页面初始化
         init: function init() {
             var articleId = localStorage.getItem('articleId') || 0;
@@ -141,6 +154,28 @@ var articleEdit = new Vue({
                 }
             });
         },
+        // 自动保存校验
+        validFormRule() {
+            let allow = true
+            const ruleData = Object.keys(this.rules)
+            for(let i of ruleData){
+                if (!this.formData[i]) {
+                    allow = false
+                    break
+                }
+            }
+            if (allow) {
+                this.validTime = null
+                clearTimeout(this.validTime)
+                this.validTime = setTimeout(() => {
+                    if (this.validTime) {
+                        this.handleSave()
+                    }
+                    clearTimeout(this.validTime)
+                    this.validTime = null
+                }, 5000)
+            }
+        },
         // 设置表单初始数据
         setFormData: function setFormData(shopArticle) {
             for (var key in this.formData) {
@@ -193,6 +228,7 @@ var articleEdit = new Vue({
         handleUploadSuccess: function handleUploadSuccess(response, file, fileList) {
             this.formData.guidanceImage = response.data;
             this.articleImageList = fileList;
+            console.log(fileList)
         },
         // 图片移除
         handleImageRemove: function handleImageRemove(response, file, fileList) {
@@ -205,7 +241,7 @@ var articleEdit = new Vue({
             this.$refs.ruleForm.validate(valide=>{
                 if(!valide) return;
                 // _this.save();
-                const params = {..._this.formData, labelIds: _this.formData.labelIds.join(',')}
+                const params = {..._this.formData, labelIds: (_this.formData.labelIds && _this.formData.labelIds.length > 0) ? _this.formData.labelIds.join(',') : ''}
                 _this.sensitiveWordsValidate(params)
             });
         },
@@ -220,7 +256,7 @@ var articleEdit = new Vue({
                 if(!valide) return;
                 // _this.save();
                 const date = new Date()
-                const params = {..._this.formData, labelIds: _this.formData.labelIds.join(','), publishDate: date.getFullYear() + '-'+(date.getMonth() +1)+'-'+date.getDay() +' ' + date.getHours() + ':' +date.getMinutes() + ':' +date.getSeconds()}
+                const params = {..._this.formData, labelIds: (_this.formData.labelIds && _this.formData.labelIds.length > 0) ? _this.formData.labelIds.join(',') : '', publishDate: date.getFullYear() + '-'+(date.getMonth() +1)+'-'+date.getDay() +' ' + date.getHours() + ':' +date.getMinutes() + ':' +date.getSeconds()}
                 window.localStorage.setItem('articelData', JSON.stringify(params))
                 window.open('/supplier/article/preview.html');
             });

+ 35 - 1
src/main/resources/static/js/supplier-center/encyclopedia/edit.js

@@ -255,7 +255,8 @@ const edit = new Vue({
         formValidate: {},
         referenceImageList: [],
         labelList: [],
-        remoteLoading: false
+        remoteLoading: false,
+        validTime: null,
     },
     created() {
         this.formData.id = CAIMEI.getUrlParam('id') || ''
@@ -275,6 +276,39 @@ const edit = new Vue({
         this.initAutoInput('.seo-auto-input', 'seoKeyword')
     },
     methods: {
+        onFocused() {
+            this.validTime = null
+            console.log(111)
+            clearTimeout(this.validTime)
+        },
+        onBlured() {
+            this.isFocus = true
+            this.validFormRule()
+            console.log(222)
+        },
+        // 自动保存校验
+        validFormRule() {
+            let allow = true
+            const ruleData = Object.keys(this.rules)
+            for(let i of ruleData){
+                if (!this.formData[i]) {
+                    allow = false
+                    console.log('数据未填写完成')
+                    break
+                }
+            }
+            if (allow) {
+                this.validTime = null
+                clearTimeout(this.validTime)
+                this.validTime = setTimeout(() => {
+                    if (this.validTime) {
+                        this.handleConfirm()
+                    }
+                    clearTimeout(this.validTime)
+                    this.validTime = null
+                }, 5000)
+            }
+        },
         // 获取表单数据
         fetchEntryData(){
             const self = this

+ 9 - 9
src/main/resources/templates/supplier-center/article/article-edit.html

@@ -38,12 +38,12 @@
                         <el-form :model="formData" :rules="rules" ref="ruleForm" label-position="top">
                             <!-- 标题 -->
                             <el-form-item label="标题" prop="title" class="mint-filter">
-                                <el-input v-model="formData.title" placeholder="请输入文章标题"></el-input>
+                                <el-input v-model="formData.title" placeholder="请输入文章标题" @focus="onFocused" @blur="onBlured"></el-input>
                                 <div class="mint-message" v-if="formValidate.title">{{formValidate.title}}</div>
                             </el-form-item>
                             <!-- 文章标签 -->
                             <el-form-item label="文章标签" prop="label" class="mint-filter">
-                                <el-input v-model="formData.label" placeholder="请输入文章标签"></el-input>
+                                <el-input v-model="formData.label" placeholder="请输入文章标签" @focus="onFocused" @blur="onBlured"></el-input>
                                 <div class="mint-message" v-if="formValidate.label">{{formValidate.label}}</div>
                             </el-form-item>
                             <el-form-item  label="">
@@ -58,13 +58,13 @@
                                 </div>
                                 <!-- 新增标签 -->
                                 <div class="label-add">
-                                    <el-input v-model="addLabelName" placeholder="请输入标签名"></el-input>
+                                    <el-input v-model="addLabelName" placeholder="请输入标签名" @focus="onFocused" @blur="onBlured"></el-input>
                                     <button class="add-tag" type="button" @click.stop="addLabel">添加</button>
                                 </div>
                             </el-form-item>
                             <!-- SEO关键词 -->
                             <el-form-item label="SEO关键词" prop="keyword" class="mint-filter">
-                                <el-input v-model="formData.keyword" placeholder="请输入SEO关键词" class="seo-auto-input"></el-input>
+                                <el-input v-model="formData.keyword" placeholder="请输入SEO关键词" class="seo-auto-input" @focus="onFocused" @blur="onBlured"></el-input>
                                 <div class="mint-message" v-if="formValidate.keyword">{{formValidate.keyword}}</div>
                             </el-form-item>
                             <!-- 关联标签库 -->
@@ -88,21 +88,21 @@
                             </el-form-item>
                             <!-- 发布人 -->
                             <el-form-item label="发布人" prop="publisher" class="mint-filter">
-                                <el-input v-model="formData.publisher" placeholder="请填写发布人姓名"></el-input>
+                                <el-input v-model="formData.publisher" placeholder="请填写发布人姓名" @focus="onFocused" @blur="onBlured"></el-input>
                                 <div class="mint-message" v-if="formValidate.publisher">{{formValidate.publisher}}</div>
                             </el-form-item>
                             <!-- 来源 -->
                             <el-form-item label="来源" prop="source">
-                                <el-input v-model="formData.source" placeholder="请填写文章来源"></el-input>
+                                <el-input v-model="formData.source" placeholder="请填写文章来源" @focus="onFocused" @blur="onBlured"></el-input>
                             </el-form-item>
                             <!-- 推荐语(描述) -->
                             <el-form-item label="推荐语(描述)" prop="recommendContent" class="mint-filter">
-                                <el-input type="textarea" :rows="3" v-model="formData.recommendContent" placeholder="请填写推荐语(描述)"></el-input>
+                                <el-input type="textarea" :rows="3" v-model="formData.recommendContent" placeholder="请填写推荐语(描述)" @focus="onFocused" @blur="onBlured"></el-input>
                                 <div class="mint-message" v-if="formValidate.recommendContent">{{formValidate.recommendContent}}</div>
                             </el-form-item>
                             <!-- 文章内容 -->
                             <el-form-item label="文章内容" prop="articleContent" class="mint-filter">
-                                <el-input v-model="formData.articleContent" v-show="false"></el-input>
+                                <el-input v-model="formData.articleContent" v-show="false" @focus="onFocused" @blur="onBlured"></el-input>
                                 <editor v-model="formData.articleContent" placeholder="请输入文章内容"></editor>
                                 <div class="mint-message" v-if="formValidate.articleContent">{{formValidate.articleContent}}</div>
                             </el-form-item>
@@ -135,7 +135,7 @@
                                 <span class="cm-label"><em>*</em>状态:</span>
                                 <el-radio-group v-model="formData.status">
                                     <el-radio :label="1">发布</el-radio>
-                                    <el-radio :label="0">暂不发布</el-radio>
+                                    <el-radio :label="0">存草稿</el-radio>
                                 </el-radio-group>
                             </el-form-item>
                         </el-form>

+ 2 - 2
src/main/resources/templates/supplier-center/article/article-list.html

@@ -146,11 +146,11 @@
                                 </td>
                                 <td>
                                     <span class="state primary" v-if="articleInfo.status === 1">已发布</span>
-                                    <span class="state danger" v-else>暂不发布</span>
+                                    <span class="state danger" v-else>存草稿</span>
                                 </td>
                                 <td class="option">
                                     <div class="option">
-                                        <button class="form-button stop" @click="clickOption(articleInfo, 2)">{{ articleInfo.status === 1 ? '暂不发布':'发布' }}</button>
+                                        <button class="form-button stop" @click="clickOption(articleInfo, 2)">{{ articleInfo.status === 1 ? '存草稿':'发布' }}</button>
                                         <button class="form-button edit" @click="clickOption(articleInfo, 1)">编辑</button><br>
                                         <button class="form-button search" @click="clickOption(articleInfo, 3)">查看</button>
                                         <button class="form-button delete" @click="clickOption(articleInfo, 4)">删除</button>

+ 3 - 1
src/main/resources/templates/supplier-center/encyclopedia/edit.html

@@ -35,7 +35,7 @@
                 <div class="valide-form">
                     <el-form :rules="rules" :model="formData" ref="ruleForm" label-position="top">
                         <el-form-item label="词条名称:" prop="name">
-                            <el-input v-model="formData.name" placeholder="请输入词条名称"></el-input>
+                            <el-input v-model="formData.name" placeholder="请输入词条名称" @focus="onFocused" @blur="onBlured"></el-input>
                             <div class="el-form-item__error" v-if="formValidate.name">敏感词:{{formValidate.name}}</div>
                         </el-form-item>
                         <el-form-item label="义项名:" prop="alias">
@@ -44,6 +44,7 @@
                                     @reference-edit="handleReferenceEdit"
                                     @toolbar="handleToolbarClick"
                                     v-model="formData.alias"
+                                    @focus="onFocused" @blur="onBlured"
                             ></content-edit>
                             <el-input v-model="formData.alias" placeholder="请输入义项名,简要说明该事物区别于同名事物的显著特征"
                                       v-show="false"></el-input>
@@ -55,6 +56,7 @@
                                     @reference-edit="handleReferenceEdit"
                                     @toolbar="handleToolbarClick"
                                     v-model="formData.discription"
+                                    @focus="onFocused" @blur="onBlured"
                             ></content-edit>
                             <el-input v-model="formData.discription" placeholder="请输入词条概述" v-show="false"></el-input>
                             <div class="el-form-item__error" v-if="formValidate.discription">敏感词:{{formValidate.discription}}</div>