Jelajahi Sumber

'2148000900-001'

zory 5 hari lalu
induk
melakukan
6dc191041d

+ 19 - 0
src/api/model/merQuick.js

@@ -0,0 +1,19 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/service/quick/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/service/quick/save`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+}

+ 49 - 4
src/components/imFloat/imFloat.vue

@@ -113,7 +113,33 @@
                                                         <div class="name">快捷回复</div>
                                                     </div>
                                                 </template>
-
+                                                <div class="quick-table">
+                                                    <div class="quick-search">
+                                                        <div class="search-input">
+                                                            <el-input placeholder="搜索一下..." style="width: 100%;" />
+                                                            <el-button>搜索</el-button>
+                                                        </div>
+                                                        <div class="search-btn-txt"><el-button type="primary" @click="addQuick">添加</el-button></div>
+                                                    </div>
+                                                    <div class="quick-table-body">
+                                                        <el-table :data="quickData.list" style="width: 100%" max-height="250" border>
+                                                            <el-table-column prop="content" label="内容"></el-table-column>
+                                                            <el-table-column prop="content" label="操作" width="80">
+                                                                <template #default="scope">
+                                                                    <el-button size="small" @click="table_view(scope.row)">发送</el-button>
+                                                                </template>
+                                                            </el-table-column>
+                                                        </el-table>
+                                                    </div>
+                                                    <div class="quick-page">
+                                                        <el-pagination
+                                                            small
+                                                            background
+                                                            layout="prev, pager, next"
+                                                            :total="quickData.total"
+                                                        />
+                                                    </div>
+                                                </div>
                                             </el-popover>
                                         </div>
                                         <!-- <div class="emoji-item">
@@ -186,6 +212,7 @@
         </el-container>
     </el-drawer>
     <orderDetail ref="orderDetail" @success="orderSuccess"></orderDetail>
+    <quickTxt ref="quickTxt" @success="orderSuccess"></quickTxt>
 </template>
 
 <script>
@@ -203,12 +230,14 @@ import {
 	to as tofn
 } from '@/util/index.js';
 import orderDetail from '@/components/imFloat/order';
+import quickTxt from '@/components/imFloat/quickTxt';
 let imageList = [];
 export default {
     name: 'GlobalIM',
     components:{
         item,
-        orderDetail
+        orderDetail,
+        quickTxt
     },
     props: {
         user: { type: Object, default: () => {} }
@@ -261,7 +290,14 @@ export default {
 			sendId:null,
 			myid: this.user.userId,
             userId:null,
-            isSaveing:false
+            isSaveing:false,
+            quickData:{
+                page:1,
+                size:10,
+                list:[],
+                popState:false,
+                total:0
+            }
         }
     },
     watch: {
@@ -306,6 +342,11 @@ export default {
         this.$refs.messageListRef.removeEventListener('scroll', this.handleScroll)
     },
     methods: {
+        addQuick(){
+            this.$nextTick(() => {
+                this.$refs.quickTxt.open("add")
+            })
+        },
         handleClick(event){
             this.activeName = event;
             // this.getConfig();
@@ -319,7 +360,7 @@ export default {
             }
         },
         async submitPrice(){
-            var { priceForm,message } = this;
+            var { priceForm,$message } = this;
             var validate = await this.$refs.priceForm.validate().catch(()=>{});
             if(!validate){ return false }
             this.isSaveing = true;
@@ -738,6 +779,10 @@ export default {
 
 <style scoped lang="scss">
 @import '@/style/index.scss';
+.quick-search{display: flex;align-items: center;justify-content: space-between;gap: 10px;}
+.quick-search .search-input{flex: 1;display: flex;align-items: center;gap: 5px;}
+.quick-search .search-btn-txt{font-size: 14px;color: #409eff;cursor: pointer;}
+.quick-table .quick-table-body{margin: 10px 0;}
 .border-none{border: 0;}
 .msg-title{font-size: 18px;font-weight: bold;}
 .loading-text{background-color: #f8f8f8;text-align: center;font-size: 12px;}

+ 64 - 2
src/components/imFloat/quickTxt.vue

@@ -1,7 +1,69 @@
 <template>
-
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="回复内容" prop="content">
+                <el-input type="textarea" rows="10" v-model="formData.content" clearable placeholder="请输入"></el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+        </el-form>
+		<template #footer>
+            <el-button @click="visible=false" size="large">取 消</el-button>
+            <el-button v-if="mode!='show'" size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
+		</template>
+    </el-dialog>
+    
 </template>
 
 <script>
+export default {
+    data(){
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"新增个人快捷回复",
+                edit:"编辑个人快捷回复"
+            },
+            visible:false,
+            formData:{},
+            rules:{
+                content: [
+                    {required: true, message: '请输入'}
+                ]
+            }
+        }
+    },
+    methods:{
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = JSON.parse(JSON.stringify(data));
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            this.isSaveing = true;
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            var resp = await this.$API.merQuick.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.formData = {};
+            this.submitState = false;
+            this.$emit("success");
+        }
+    }
+}
+</script>
 
-</script>
+<style>
+.text-center{text-align: center;}
+</style>