|
@@ -3,7 +3,9 @@
|
|
|
<h2>关键词编辑</h2>
|
|
|
<el-form ref="form" :model="form" label-width="80px">
|
|
|
<el-form-item label="规则名称">
|
|
|
- <el-input v-model="form.name"></el-input>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-input v-model="form.name"></el-input>
|
|
|
+ </el-col>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="有效期">
|
|
|
<el-col :span="6">
|
|
@@ -11,7 +13,7 @@
|
|
|
</el-col>
|
|
|
<el-col class="line" :span="1" style="text-align: center;">-</el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-time-picker align="center" type="datetime" placeholder="选择日期" v-model="form.end_time" style="width: 100%;"></el-time-picker>
|
|
|
+ <el-date-picker align="center" type="datetime" placeholder="选择日期" v-model="form.end_time" style="width: 100%;"></el-date-picker>
|
|
|
</el-col>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="状态">
|
|
@@ -19,7 +21,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
v-for="(domain, index) in form.keywords"
|
|
|
- :label="'关键词'"
|
|
|
+ :label="index === 0 ? '关键词': ''"
|
|
|
:key="domain.key"
|
|
|
:prop="'keywords.' + index + '.value'"
|
|
|
:rules="{
|
|
@@ -30,40 +32,59 @@
|
|
|
<el-input v-model="domain.value"></el-input>
|
|
|
</el-col>
|
|
|
<el-col :span="3">
|
|
|
- <el-button v-if="index > 0" class="action-button" size="small" circle type="danger" @click.prevent="removeKeyword(domain)" icon="el-icon-remove-outline"></el-button>
|
|
|
+ <el-button v-if="form.keywords.length > 1" class="action-button" size="small" circle type="danger" @click.prevent="removeKeyword(domain)" icon="el-icon-remove-outline"></el-button>
|
|
|
<el-button v-if="index === form.keywords.length - 1" class="action-button" size="small" circle type="success" @click.prevent="addKeyword()" icon="el-icon-circle-plus-outline"></el-button>
|
|
|
</el-col>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
v-for="(reply, index) in form.replies"
|
|
|
- :label="'回复内容'"
|
|
|
+ :label="index === 0 ? '回复内容': ''"
|
|
|
:key="reply.key"
|
|
|
:prop="'replies.' + index + '.value'"
|
|
|
>
|
|
|
<el-col :span="8">
|
|
|
- <el-tabs type="border-card">
|
|
|
- <el-tab-pane label="文本"></el-tab-pane>
|
|
|
- <el-tab-pane label="图片">配置管理</el-tab-pane>
|
|
|
- <el-tab-pane label="图文">
|
|
|
- <div slot="label">
|
|
|
- <span>图文</span>
|
|
|
- <el-button v-if="index > 0" class="action-button" size="small" circle type="danger" @click.prevent="removeReply(reply)" icon="el-icon-remove-outline"></el-button>
|
|
|
- <el-button v-if="index === form.replies.length - 1" class="action-button" size="small" circle type="success" @click.prevent="addReply()" icon="el-icon-circle-plus-outline"></el-button>
|
|
|
- </div>
|
|
|
- </el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
+ <el-tabs v-model="reply.reply_type" type="border-card">
|
|
|
+ <el-tab-pane label="文本" name="1">
|
|
|
+ <el-input v-model="reply.title" placeholder="请输入文本"></el-input>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="图片" name="2">
|
|
|
+ <el-input v-model="reply.pic_url" placeholder="请输入图片地址"></el-input>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="图文" name="3">
|
|
|
+ <el-input v-model="reply.title" placeholder="请输入文本"></el-input>
|
|
|
+ <el-input v-model="reply.pic_url" placeholder="请输入图片地址"></el-input>
|
|
|
+ <el-input v-model="reply.url" placeholder="请输入URL"></el-input>
|
|
|
+ <el-input v-model="reply.desc" placeholder="请输入描述"></el-input>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="3">
|
|
|
+ <el-button v-if="index === form.replies.length - 1" class="action-button" size="small" circle type="success" @click.prevent="addReply()" icon="el-icon-circle-plus-outline"></el-button>
|
|
|
+ <el-button v-if="form.replies.length > 1" class="action-button" size="small" circle type="danger" @click.prevent="removeReply(reply)" icon="el-icon-remove-outline"></el-button>
|
|
|
</el-col>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" @click="onSubmit">立即创建</el-button>
|
|
|
- <el-button>取消</el-button>
|
|
|
+ <el-button type="primary" @click="onSubmit">{{editId ? '保存修改' : '立即创建'}}</el-button>
|
|
|
+ <el-button @click="goBackList">取消</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import qs from 'qs'
|
|
|
+function createNewReply () {
|
|
|
+ return {
|
|
|
+ reply_type: '1',
|
|
|
+ desc: '',
|
|
|
+ title: '',
|
|
|
+ url: '',
|
|
|
+ pic_url: '',
|
|
|
+ key: Date.now()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
export default {
|
|
|
name: 'list',
|
|
|
data() {
|
|
@@ -81,13 +102,7 @@ export default {
|
|
|
value: ''
|
|
|
}
|
|
|
],
|
|
|
- replies: [
|
|
|
- {
|
|
|
- key: 1,
|
|
|
- value: ''
|
|
|
- }
|
|
|
- ],
|
|
|
- desc: ''
|
|
|
+ replies: [createNewReply()]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -117,13 +132,30 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
addReply() {
|
|
|
- this.form.replies.push({
|
|
|
- value: '',
|
|
|
- key: Date.now()
|
|
|
- });
|
|
|
+ this.form.replies.push(createNewReply());
|
|
|
+ },
|
|
|
+ goBackList () {
|
|
|
+ this.$router.replace('/huiju/autoReply')
|
|
|
},
|
|
|
onSubmit() {
|
|
|
- console.log('submit!');
|
|
|
+ const params = Object.assign({}, this.form, {
|
|
|
+ state: this.form.state ? 1: -1,
|
|
|
+ keys: this.form.keywords.map((v) => v.value).join(','),
|
|
|
+ contents: this.form.replies.map(v => {
|
|
|
+ v.reply_type = Number(v.reply_type)
|
|
|
+ return v
|
|
|
+ })
|
|
|
+ })
|
|
|
+ console.log('submit!', params);
|
|
|
+ this.$request('/reply/rule/save').data(params).success((res) => {
|
|
|
+ console.log(res)
|
|
|
+ if (res.status === 'success') {
|
|
|
+ this.$toast(res.info || '操作成功')
|
|
|
+ this.goBackList()
|
|
|
+ } else {
|
|
|
+ this.$toast(res.info || '操作失败')
|
|
|
+ }
|
|
|
+ }).post()
|
|
|
},
|
|
|
doLoad (id) {
|
|
|
if (this.loading) {
|
|
@@ -133,7 +165,22 @@ export default {
|
|
|
this.$request('/reply/rule/detail').data({ id }).success((res) => {
|
|
|
this.loading = false
|
|
|
if (res.status === 'success' && res.data) {
|
|
|
- this.topTable = res.data.list || []
|
|
|
+ const data = res.data || {}
|
|
|
+ this.form.id = id
|
|
|
+ this.form.name = data.name
|
|
|
+ this.form.start_time = data.start_time
|
|
|
+ this.form.end_time = data.end_time
|
|
|
+ this.form.state = data.state === 1
|
|
|
+ this.form.keywords = data.keys.split(',').map(v => {
|
|
|
+ return {
|
|
|
+ value: v,
|
|
|
+ key: Date.now()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.form.replies = data.contents.map(v => {
|
|
|
+ v.reply_type = String(v.reply_type)
|
|
|
+ return v
|
|
|
+ })
|
|
|
}
|
|
|
}).get()
|
|
|
},
|