wansfa 2 years ago
parent
commit
6864707a18

+ 2 - 2
public/wx.html

@@ -107,8 +107,8 @@
             //dataType: "jsonp",
             //jsonp: "callback",//传递给请求处理程序或页面的,标识jsonp回调函数名(一般为:callback)
             //jsonpCallback: "GetData",//callback的function名称
-            url: "http://127.0.0.1:7015/app/user/getAppletScheme", 
-            //url: "http://139.186.77.83:7015/app/user/getAppletScheme",
+            //url: "http://127.0.0.1:7015/app/user/getAppletScheme", 
+            url: "http://139.186.77.83:7015/app/user/getAppletScheme",
             data: {
               "cardId":cid,
               // "domain": "eturl.cn",

+ 13 - 11
src/views/company/companyUser/card/index.vue

@@ -7,8 +7,7 @@
           placeholder="请输入名片标题"
           clearable
           size="small"
-          @keyup.enter.native="handleQuery"
-        />
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
 
       <el-form-item  label="名片类型" prop="type">
@@ -92,18 +91,16 @@
     <el-table v-loading="loading" :data="cardList" @selection-change="handleSelectionChange">
 
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="Id" align="center" prop="id" />
+      <el-table-column width="55" label="Id" align="center" prop="id" />
+      <el-table-column width="60" label="用户ID" align="center" prop="userId" />
       <el-table-column label="名片标题" align="center" prop="title" />
-      <el-table-column label="用户ID" align="center" prop="userId" />
-
 
       <el-table-column label="名片图片" align="center" width="120">
         <template slot-scope="scope">
           <el-popover
             placement="right"
             title=""
-            trigger="hover"
-          >
+            trigger="hover">
             <img slot="reference" :src="scope.row.imageUrl" width="100">
             <img :src="scope.row.imageUrl" style="max-width: 150px;">
           </el-popover>
@@ -112,9 +109,12 @@
      
       <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
 
+      <el-table-column label="创建时间" width="100" align="center" prop="createTime" />
+
+      
      <el-table-column  label="名片类型"  align="center" prop="type">
         <template slot-scope="scope">
-          <el-tag prop="status" v-for="(item, index) in typeOptions"    v-if="scope.row.type==item.dictValue">{{item.dictLabel}}</el-tag>
+          <el-tag prop="type" v-for="(item, index) in typeOptions"    v-if="scope.row.type==item.dictValue">{{item.dictLabel}}</el-tag>
         </template>
       </el-table-column>
 
@@ -162,7 +162,6 @@
         <el-form-item label="名片标题" prop="title">
           <el-input v-model="form.title" placeholder="请输入名片标题" />
         </el-form-item>
-
          <el-form-item label="名片类型" prop="type">
             <el-select style="width: 200px" v-model="form.type" placeholder="请选择类型" clearable size="small" >
               <el-option
@@ -322,7 +321,7 @@ export default {
         urlScheme: null,
         companyId: null,
         imageUrl: null,
-        type: null,
+        type: "0",
         shortUrl: null,
         isVisit: null,
         lookNum: null,
@@ -362,7 +361,10 @@ export default {
       this.reset();
       const id = row.id || this.ids
       getCard(id).then(response => {
-        this.form = response.data;
+         this.form = response.data;
+         if(this.form.type!=null){
+              this.form.type = this.form.type.toString();
+         }
         this.open = true;
         this.title = "修改个人名片";
       });

+ 252 - 0
src/views/company/components/cardSelect.vue

@@ -0,0 +1,252 @@
+<template>
+  <div  >
+    <el-row>
+      <el-col>
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+                <el-form-item label="名片标题" prop="title">
+                    <el-input
+                    v-model="queryParams.title"
+                    placeholder="请输入名片标题"
+                    clearable
+                    size="small"
+                    @keyup.enter.native="handleQuery"
+                    />
+                </el-form-item>
+
+                <el-form-item  label="名片类型" prop="type">
+                        <el-select filterable v-model="queryParams.type" placeholder="请选择类型" clearable size="small">
+                        <el-option
+                                v-for="item in typeOptions"
+                                :key="item.dictValue"
+                                :label="item.dictLabel"
+                                :value="item.dictValue"
+                            />
+                        </el-select>
+                </el-form-item>
+
+                <!-- <el-form-item label="名片访问次数" prop="lookNum">
+                    <el-input
+                    v-model="queryParams.lookNum"
+                    placeholder="请输入名片访问次数"
+                    clearable
+                    size="small"
+                    @keyup.enter.native="handleQuery"
+                    />
+                </el-form-item>
+                <el-form-item label="名片访问人数" prop="personNum">
+                    <el-input
+                    v-model="queryParams.personNum"
+                    placeholder="请输入名片访问人数"
+                    clearable
+                    size="small"
+                    @keyup.enter.native="handleQuery"
+                    />
+                </el-form-item> -->
+
+                 <el-form-item>
+                     <el-button  icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+                     <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+                     <el-button icon="el-icon-add" size="mini" @click="addCard">添加名片</el-button>
+                 </el-form-item>
+
+
+        </el-form>
+
+        <!-- <div  class="tags">
+          <el-tag closable @close="delCard(index)" style="margin-bottom:5px;" v-for="(item,index) in cards"  >{{item.title}}</el-tag>
+        </div> -->
+
+        <el-table  ref="multipleTable"  v-loading="loading" :data="cardList">
+                 <!-- <el-table-column type="selection" width="50" align="center" /> -->
+                <el-table-column width="55" label="Id" align="center" prop="id" />
+                <el-table-column width="60" label="用户ID" align="center" prop="userId" />
+                <el-table-column label="名片标题" align="center" prop="title" />
+                <el-table-column label="名片图片" align="center" width="120">
+                    <template slot-scope="scope">
+                    <el-popover
+                        placement="right"
+                        title=""
+                        trigger="hover">
+                        <img slot="reference" :src="scope.row.imageUrl" width="100">
+                        <img :src="scope.row.imageUrl" style="max-width: 150px;">
+                    </el-popover>
+                    </template>
+                </el-table-column>
+                
+                <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
+
+                <el-table-column label="创建时间" width="100" align="center" prop="createTime" />
+
+                <el-table-column  label="名片类型"  align="center" prop="type">
+                    <template slot-scope="scope">
+                    <el-tag prop="type" v-for="(item, index) in typeOptions"    v-if="scope.row.type==item.dictValue">{{item.dictLabel}}</el-tag>
+                    </template>
+                </el-table-column>
+
+                <el-table-column label="操作"   align="center" fixed="right" width="120px" class-name="small-padding fixed-width">
+                        <template slot-scope="scope">
+                            <el-button
+                            size="mini"
+                            type="text"
+                            @click="handleSelect(scope.row)"
+                            >选择</el-button>
+                        </template>
+                    </el-table-column>
+        </el-table>
+
+        <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+        
+        <div class="btns">
+          <el-button type="primary" @click="submit"  >确 定</el-button>
+        </div>
+        </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+
+import { listCard, getCard, delCard } from "@/api/company/companyUserCard";
+export default {
+  name: "User",
+  
+  data() {
+    return {
+      selectCard:[],
+      cards:[],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      cardList: [],
+      // 部门树选项
+      deptOptions: undefined,
+      // 部门名称
+      deptName: undefined,
+      // 日期范围
+      dateRange: [],
+      typeOptions:[],
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      hasClickClose:false,
+      // 用户导入参数
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        title: null,
+        userId: null,
+        urlScheme: null,
+        companyId: null,
+        imageUrl: null,
+        type: null,
+        shortUrl: null,
+        isVisit: null,
+        lookNum: null,
+        personNum: null,
+        ipNum: null,
+      },
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  created() {
+     this.getDicts("company_user_card_type").then((response) => {
+        this.typeOptions = response.data;
+    });
+    this.getList();
+  },
+  methods: {
+    submit(){
+      //this.addCard();
+      this.$emit('selectCard',this.cards);
+    },
+    itemChcek(){
+        let that=this;
+        setTimeout(() => {
+              var userIds=[];
+              for (let index = 0; index < this.users.length; index++) {
+                 const user = this.users[index];
+                 userIds.push(user.userId);
+              }
+              that.userList.forEach(row => {
+                  if(userIds.indexOf(row.userId)!=-1){
+                      that.$refs.multipleTable.toggleRowSelection(row, true);
+                  }
+              });
+
+        }, 0);
+    },
+    /** 查询用户列表 */
+      getList() {
+        this.loading = true;
+        listCard(this.queryParams).then(response => {
+            this.cardList = response.rows;
+            this.total = response.total;
+            this.loading = false;
+        });
+    },
+   
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.page = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectCard=selection;
+      this.ids = selection.map((item) => item.userId);
+    },
+   handleSelect(row) {
+       var ids=[];
+       ids.push(row.cardId);
+       this.ids=ids;
+
+       var cards=[];
+       this.selectCard=row;
+       cards.push(row);
+       this.cards=cards;
+       this.$emit('selectCard',this.cards);
+    },
+    addCard(){
+      var that=this;
+      this.selectCard.forEach(element => {
+        var flag= that.cards.some(item => item.cardId === element.cardId)
+        if(!flag){
+           this.cards.push(element);
+        }
+      });
+      //this.users=this.users.concat(this.selectCard);
+    },
+    delCard(index){
+      this.cards.splice(index,1)
+    }
+  },
+};
+</script>
+<style >
+ 
+.btns{
+  padding-top: 15px;
+  display: flex;
+  align-content: center;
+  justify-content: flex-end;
+}
+</style>

+ 97 - 10
src/views/crm/components/addBatchSms.vue

@@ -10,10 +10,52 @@
                                 v-for="item in smsTemps"
                                 :key="item.tempId"
                                 :label="item.title"
-                                :value="item.tempId"
-                            />
+                                :value="item.tempId"/>
                     </el-select>
                 </el-form-item>
+
+              <el-form-item label="个人名片" v-if="showPickCard"  prop="cards">
+                <el-row :gutter="10" class="mb8">
+                    <el-col :span="1.5">
+                        <el-button @click="handleCardSelect">添加名片</el-button>
+                    </el-col>
+                </el-row>
+                <el-table border  :data="cards" >
+                    <!-- <el-table-column type="selection" width="55" align="center" /> -->
+                    <el-table-column width="55" label="Id" align="center" prop="id" />
+                    <el-table-column width="70" label="用户ID" align="center" prop="userId" />
+                    <el-table-column label="名片标题" align="center" prop="title" />
+                         <el-table-column label="名片图片" align="center" width="120">
+                            <template slot-scope="scope">
+                            <el-popover
+                                placement="right"
+                                title=""
+                                trigger="hover">
+                                <img slot="reference" :src="scope.row.imageUrl" width="100">
+                                <img :src="scope.row.imageUrl" style="max-width: 150px;">
+                            </el-popover>
+                            </template>
+                        </el-table-column>
+                    
+                    <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
+                    <el-table-column label="创建时间" width="100" align="center" prop="createTime" />
+                    <el-table-column  label="名片类型"  align="center" prop="type">
+                        <template slot-scope="scope">
+                        <el-tag prop="type" v-for="(item, index) in typeOptions"    v-if="scope.row.type==item.dictValue">{{item.dictLabel}}</el-tag>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作"   align="center" fixed="right" width="120px" class-name="small-padding fixed-width">
+                        <template slot-scope="scope">
+                            <el-button
+                            size="mini"
+                            type="text"
+                            @click="handleRemoveCard(scope.row.$index)"
+                            >删除</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+              </el-form-item>
+
                 <el-form-item label="短信数量" >
                     {{smsCount}}
                 </el-form-item>
@@ -24,15 +66,20 @@
             <div  class="footer">
                 <el-button type="primary" @click="submitForm">发送</el-button>
             </div>
+
+             <el-dialog :title="cardSelect.title" :visible.sync="cardSelect.open" width="900px" append-to-body>
+                 <card-select  ref="cardSelects" @selectCard="selectCard"  />
+             </el-dialog>
     </div>
 </template>
   
 <script>
     import { getSmsTempList } from "@/api/company/companySmsTemp";
     import { sendCustomerBatchMsg,getCompanySmsCount } from "@/api/company/companySms";
-    
+    import cardSelect from '../../company/components/cardSelect.vue';
     export default {
         name: "visit",
+        components: { cardSelect },
         data() {
             return {
                 smsTemps:[],
@@ -41,20 +88,30 @@
                     tempId:null,
                     customerIds:[],
                     content:null,
-                 
+                    cardUrl:"",
                 },
                 // 表单校验
                 rules: {
                     content: [
                         { required: true, message: "内容不能为空", trigger: "change" }
                     ],
-                }
+                },
+                typeOptions:[],
+                cards:[],
+                cardSelect:{
+                    title:"选择名片",
+                    open:false,
+                },
+                showPickCard:false,
             };
         },
         created() {
-            getSmsTempList().then(response => {
+             getSmsTempList().then(response => {
                 this.smsTemps = response.data;
-            });
+             });
+             this.getDicts("company_user_card_type").then((response) => {
+                  this.typeOptions = response.data;
+             });
             this.getCompanySmsCount()
             
         },
@@ -69,17 +126,31 @@
             smsChange(e){
                 var v=this.smsTemps.find(value=>value.tempId==e);
                 console.log(v)
-                this.form.content=v.content
-                this.form.tempCode=v.tempCode
+                this.form.content=v.content;
+                this.form.tempCode=v.tempCode;
+                if(v.content.indexOf('sms.cardUrl')!=-1){
+					this.showPickCard=true;
+				}else{
+                    this.showPickCard=false;
+                }
             },
             reset(customerIds) {
                 this.form.customerIds=customerIds;
                 this.getCompanySmsCount()
-                
             },
             submitForm() {
                 this.$refs["form"].validate(valid => {
                     if (valid) {
+                        this.form.cardUrl="";
+                        if(this.showPickCard){
+                            if(this.cards.length==0){
+                                this.msgError("请选择名片");
+                                return;
+                            }else{
+                                 var card=this.cards[0];
+                                 this.form.cardUrl=card.shortUrl;
+                            }
+                        }
                         this.myloading = this.$loading({
                             lock: true,
                             text: '处理中...',
@@ -99,6 +170,22 @@
                     }
                 });
             },
+            handleCardSelect(){
+                var that=this;
+                this.cardSelect.open=true;
+                setTimeout(() => {
+                    that.$refs.cardSelects.getList();
+                }, 500);
+            },
+           selectCard(data){
+                this.cards=data;
+                console.log(JSON.stringify(data));
+                this.cardSelect.open=false;
+            },
+            handleRemoveCard(index){
+                this.cards.splice(index,1);
+                this.$refs.cardSelects.delCard(index);
+            },
         }
     };
 </script>

+ 95 - 6
src/views/crm/components/addSms.vue

@@ -11,6 +11,50 @@
                             />
                     </el-select>
                 </el-form-item>
+
+                 <el-form-item label="个人名片" v-if="showPickCard"  prop="cards">
+                        <el-row :gutter="10" class="mb8">
+                            <el-col :span="1.5">
+                                <el-button @click="handleCardSelect">添加名片</el-button>
+                            </el-col>
+                        </el-row>
+                        <el-table border  :data="cards" >
+                            <!-- <el-table-column type="selection" width="55" align="center" /> -->
+                            <el-table-column width="55" label="Id" align="center" prop="id" />
+                            <el-table-column width="70" label="用户ID" align="center" prop="userId" />
+                            <el-table-column label="名片标题" align="center" prop="title" />
+                                <el-table-column label="名片图片" align="center" width="120">
+                                    <template slot-scope="scope">
+                                    <el-popover
+                                        placement="right"
+                                        title=""
+                                        trigger="hover">
+                                        <img slot="reference" :src="scope.row.imageUrl" width="100">
+                                        <img :src="scope.row.imageUrl" style="max-width: 150px;">
+                                    </el-popover>
+                                    </template>
+                                </el-table-column>
+                            
+                            <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
+                            <el-table-column label="创建时间" width="100" align="center" prop="createTime" />
+                            <el-table-column  label="名片类型"  align="center" prop="type">
+                                <template slot-scope="scope">
+                                <el-tag prop="type" v-for="(item, index) in typeOptions"    v-if="scope.row.type==item.dictValue">{{item.dictLabel}}</el-tag>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="操作"   align="center" fixed="right" width="120px" class-name="small-padding fixed-width">
+                                <template slot-scope="scope">
+                                    <el-button
+                                    size="mini"
+                                    type="text"
+                                    @click="handleRemoveCard(scope.row.$index)"
+                                    >删除</el-button>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                </el-form-item>
+
+
                 <el-form-item label="短信数量" >
                     {{smsCount}}
                 </el-form-item>
@@ -24,15 +68,20 @@
             <div  class="footer">
                 <el-button type="primary" @click="submitForm">发送</el-button>
             </div>
+
+              <el-dialog :title="cardSelect.title" :visible.sync="cardSelect.open" width="900px" append-to-body>
+                 <card-select  ref="cardSelects" @selectCard="selectCard"  />
+             </el-dialog>
     </div>
 </template>
   
 <script>
     import { getSmsTempList } from "@/api/company/companySmsTemp";
     import { sendCustomerMsg,getCompanySmsCount } from "@/api/company/companySms";
-    
+    import cardSelect from '../../company/components/cardSelect.vue';
     export default {
         name: "visit",
+        components: { cardSelect },
         data() {
             return {
                 smsTemps:[],
@@ -42,22 +91,31 @@
                     customerId:null,
                     content:null,
                     mobile:null,
-                 
+                    cardUrl:"",
                 },
                 // 表单校验
                 rules: {
                     content: [
                         { required: true, message: "内容不能为空", trigger: "change" }
                     ],
-                }
+                },
+                typeOptions:[],
+                cards:[],
+                cardSelect:{
+                    title:"选择名片",
+                    open:false,
+                },
+                showPickCard:false,
             };
         },
         created() {
+             this.getDicts("company_user_card_type").then((response) => {
+                  this.typeOptions = response.data;
+             });
             getSmsTempList().then(response => {
                 this.smsTemps = response.data;
             });
             this.getCompanySmsCount()
-            
         },
         methods: {
             getCompanySmsCount(){
@@ -70,8 +128,13 @@
             smsChange(e){
                 var v=this.smsTemps.find(value=>value.tempId==e);
                 console.log(v)
-                this.form.content=v.content
-                this.form.tempCode=v.tempCode
+                this.form.content=v.content;
+                this.form.tempCode=v.tempCode;
+                 if(v.content.indexOf('sms.cardUrl')!=-1){
+					this.showPickCard=true;
+				}else{
+                    this.showPickCard=false;
+                }
             },
             reset(customerId,mobile) {
                 this.form.customerId=customerId;
@@ -82,6 +145,16 @@
             submitForm() {
                 this.$refs["form"].validate(valid => {
                     if (valid) {
+                        this.form.cardUrl="";
+                        if(this.showPickCard){
+                            if(this.cards.length==0){
+                                this.msgError("请选择名片");
+                                return;
+                            }else{
+                                 var card=this.cards[0];
+                                 this.form.cardUrl=card.shortUrl;
+                            }
+                        }
                         this.myloading = this.$loading({
                             lock: true,
                             text: '处理中...',
@@ -103,6 +176,22 @@
                     }
                 });
             },
+            handleCardSelect(){
+                var that=this;
+                this.cardSelect.open=true;
+                setTimeout(() => {
+                    that.$refs.cardSelects.getList();
+                }, 500);
+            },
+            selectCard(data){
+                this.cards=data;
+                console.log(JSON.stringify(data));
+                this.cardSelect.open=false;
+            },
+            handleRemoveCard(index){
+                this.cards.splice(index,1);
+                this.$refs.cardSelects.delCard(index);
+            },
         }
     };
 </script>

+ 7 - 7
src/views/crm/components/assignUser.vue

@@ -29,13 +29,13 @@
                     </template>
                     </el-table-column>
                     <el-table-column label="操作"   align="center" fixed="right" width="120px" class-name="small-padding fixed-width">
-                    <template slot-scope="scope">
-                        <el-button
-                        size="mini"
-                        type="text"
-                        @click="handleRemoveUser(scope.row.$index)"
-                        >删除</el-button>
-                    </template>
+                        <template slot-scope="scope">
+                            <el-button
+                            size="mini"
+                            type="text"
+                            @click="handleRemoveUser(scope.row.$index)"
+                            >删除</el-button>
+                        </template>
                     </el-table-column>
                 </el-table>
             </el-form-item>

+ 1 - 1
src/views/crm/components/customerDetails.vue

@@ -183,7 +183,7 @@
         <el-dialog :title="addRemark.title" :visible.sync="addRemark.open" width="600px" append-to-body>
             <add-remark ref="remark" @close="closeRemark()"></add-remark>
         </el-dialog>
-        <el-dialog :title="addSms.title" :visible.sync="addSms.open" width="600px" append-to-body>
+        <el-dialog :title="addSms.title" :visible.sync="addSms.open" width="800px" append-to-body>
             <add-sms ref="sms" @close="closeSms()"></add-sms>
         </el-dialog>