wansfa 2 years ago
parent
commit
e2d0fccea8

+ 4 - 1
src/main.js

@@ -21,7 +21,7 @@ import './permission' // permission control
 import { getDicts } from "@/api/system/dict/data";
 import { getConfigKey } from "@/api/company/companyConfig";
 import { callMobile } from "@/api/company/companyVoiceApi"
-import { getAge,formatDate,parsePost,parseArr,formatMoney,parseTime,dateFormat, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree } from "@/utils/common";
+import { getAge,formatDate,parsePost,parseArr,formatMoney,parseTime,dateFormat, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree,formatTime } from "@/utils/common";
 import { callNumber,callOff } from "@/utils/call";
 
 
@@ -64,6 +64,9 @@ Vue.prototype.parseArr = parseArr
 Vue.prototype.parsePost = parsePost
 Vue.prototype.formatDate = formatDate
 Vue.prototype.getAge=getAge
+Vue.prototype.formatTime=formatTime
+
+
 import moment from "moment"
 Vue.prototype.$moment = moment;
 

+ 21 - 2
src/utils/common.js

@@ -240,12 +240,10 @@ export function formatMoney(s,dot) {
 
 export function parsePost(posts) {
 	var postNames="";
-
 	if (posts!=null&&posts.length>0 ) {
 		posts.forEach(item => {
 			postNames+=item.postName+",";
 		})
-		
 		return postNames.substring(0,postNames.length-1)
 	}
 	return postNames;
@@ -266,6 +264,27 @@ export function formatDate(datetime) {
 }
 
 
+
+export function formatTime(timer) {
+	// let timeStarts = startTime.getTime(); //开始时间,转换成时间戳
+	// let timeEnds = endTime.getTime(); //结束时间,转换成时间戳
+	
+	//let timer = endTime - startTime  //将时间戳进行相减
+
+	let hour = parseInt((timer  / 60 / 60 % 24)); 
+	let minute = parseInt((timer  / 60 % 60));  
+	let second = parseInt((timer  % 60)); 
+
+	if(hour>0){
+		return (hour>10?hour:'0'+hour) + ':' + (minute>10?minute:'0'+minute) + ':' + (second>10?second:'0'+second);
+	}else if(minute>0){
+		return (minute>=10?minute:'0'+minute) + ':' + (second>=10?second:'0'+second);
+	}else if(second>0){
+		return  '00:'+(second>=10?second:'0'+second);
+	}
+}
+
+
 // export function callNumber(mobile){
 // 	var that=this;
 //     this.callMobile(mobile).then(response => {

+ 44 - 2
src/views/company/companyMoneyLogs/index.vue

@@ -5,7 +5,7 @@
          <el-date-picker v-model="dateRange" size="small" style="width: 205.4px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
       </el-form-item>
       <el-form-item label="类型" prop="logsType">
-        <el-select v-model="queryParams.logsType" placeholder="请选择类型" clearable size="small">
+        <el-select v-model="queryParams.logsType" placeholder="请选择类型"  @change="changeLogsType" clearable size="small">
               <el-option
                 v-for="dict in typeOptions"
                 :key="dict.dictValue"
@@ -14,6 +14,39 @@
               />
         </el-select>
       </el-form-item>
+
+       <el-form-item label="商城订单号" label-width="100px" prop="orderCode" v-if="queryParams.logsType==4 || queryParams.logsType==5">
+          <el-input
+            v-model="queryParams.orderCode"
+            placeholder="请输入商城订单号"
+            clearable
+            size="small"
+            @keyup.enter.native="handleQuery"
+          />
+      </el-form-item>
+
+      <el-form-item label="收件人手机号" label-width="120px" prop="userPhone" v-if="queryParams.logsType==4 || queryParams.logsType==5">  
+          <el-input
+            v-model="queryParams.userPhone"
+            placeholder="请输入收件人手机号"
+            clearable
+            size="small"
+            @keyup.enter.native="handleQuery"
+          />
+      </el-form-item>
+      
+      <el-form-item label="交易单号" prop="tradeCode" v-if="queryParams.logsType==4 || queryParams.logsType==5 || queryParams.logsType==8 || queryParams.logsType==9">
+          <el-input
+            v-model="queryParams.tradeCode"
+            placeholder="请输入交易单号"
+            clearable
+            size="small"
+            @keyup.enter.native="handleQuery"
+          />
+      </el-form-item>
+
+
+
       <el-form-item>
         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -47,7 +80,7 @@
           v-hasPermi="['company:companyMoneyLogs:export2']"
         >导出收款订单明细</el-button>
       </el-col>
-      </el-col>
+      
 	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -56,6 +89,12 @@
       <el-table-column label="ID" align="center" prop="logsId" />
       <el-table-column label="金额" align="center" prop="money" />
       <el-table-column label="当前余额" align="center" prop="balance" />
+
+      <el-table-column label="商城订单号" align="center" prop="orderCode"  v-if="queryParams.logsType==4 || queryParams.logsType==5"  />
+      <el-table-column label="交易单号" align="center" prop="bankTransactionId"  v-if="queryParams.logsType==4 || queryParams.logsType==5 || queryParams.logsType==8 || queryParams.logsType==9 " />
+      <el-table-column label="支付类型" align="center" prop="payTypeCode"  v-if="queryParams.logsType==4 || queryParams.logsType==5 || queryParams.logsType==8 || queryParams.logsType==9 " />
+    
+
       <el-table-column label="说明" align="center" prop="remark" />
       <el-table-column label="类型" align="center" prop="logsType" >
         <template slot-scope="scope">
@@ -292,6 +331,9 @@ export default {
         }).then(response => {
           this.download(response.msg);
         }).catch(function() {});
+    },
+    changeLogsType(){
+      this.getList();
     }
   }
 };

+ 69 - 18
src/views/company/companyUser/card/index.vue

@@ -11,7 +11,7 @@
         />
       </el-form-item>
 
-      <el-form-item   label="客户类型" prop="customerType">
+      <el-form-item  label="名片类型" prop="type">
             <el-select filterable v-model="queryParams.type" placeholder="请选择类型" clearable size="small">
             <el-option
                     v-for="item in typeOptions"
@@ -96,9 +96,21 @@
       <el-table-column label="名片标题" align="center" prop="title" />
       <el-table-column label="用户ID" align="center" prop="userId" />
 
-      <el-table-column label="名片图片地址" width="270" align="center" prop="imageUrl" />
+
+      <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="微信名片短链接" align="center" prop="shortUrl" />
+      <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
 
      <el-table-column  label="名片类型"  align="center" prop="type">
         <template slot-scope="scope">
@@ -107,7 +119,7 @@
       </el-table-column>
 
       <!-- <el-table-column label="是否访问" align="center" prop="isVisit" /> -->
-      <el-table-column label="名片访问次数" align="center" prop="lookNum" />
+      <el-table-column label="访问次数"  width="110"  align="center" prop="lookNum" />
       <!-- <el-table-column label="名片访问人数" align="center" prop="personNum" />
       <el-table-column label="名片访问ip数" align="center" prop="ipNum" /> -->
       <el-table-column label="操作" width="200" align="center" class-name="small-padding fixed-width">
@@ -145,30 +157,45 @@
     />
 
     <!-- 添加或修改card对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-form-item label="名片标题" prop="title">
           <el-input v-model="form.title" placeholder="请输入名片标题" />
         </el-form-item>
-    
-        <el-form-item label="名片图片地址" prop="imageUrl">
-          <el-input v-model="form.imageUrl" placeholder="请输入名片图片地址" />
+
+         <el-form-item label="名片类型" prop="type">
+            <el-select style="width: 200px" v-model="form.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-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>
-          </template>
-        </el-table-column>
+       <el-form-item label="名片图片" prop="imageUrl">
+            <el-upload
+              v-model="form.icon"
+              class="avatar-uploader"
+              :action="uploadUrl"
+              :show-file-list="false"
+              :on-success="handleAvatarSuccess"
+              :before-upload="beforeAvatarUpload">
+              <img v-if="form.imageUrl" :src="form.imageUrl" class="avatar">
+              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+        </el-form-item>
 
+       
         <!-- <el-form-item label="微信名片短链接" prop="shortUrl">
           <el-input v-model="form.shortUrl" placeholder="请输入微信名片短链接" />
         </el-form-item>
         <el-form-item label="是否访问" prop="isVisit">
           <el-input v-model="form.isVisit" placeholder="请输入微信名片短链接" />
         </el-form-item> -->
-        <el-form-item label="名片访问次数" prop="lookNum">
-          <el-input v-model="form.lookNum" placeholder="请输入名片访问次数" />
+        <el-form-item label="名片访问次数"  prop="lookNum">
+          <el-input v-model="form.lookNum" style="width:200px" placeholder="请输入名片访问次数" />
         </el-form-item>
         <!-- <el-form-item label="名片访问人数" prop="personNum">
           <el-input v-model="form.personNum" placeholder="请输入名片访问人数" />
@@ -200,9 +227,16 @@ import addSms from './addSms.vue';
 import customerSelect from './customerSelect.vue';
 export default {
   name: "companyUserCard",
-  components:{ addSms,customerSelect },
+  components:{ addSms,customerSelect},
+  watch: {
+    imageArr: function(val) {
+      this.form.imageUrl = val.join(',')
+    },
+  },
   data() {
     return {
+      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
+      baseUrl: process.env.VUE_APP_BASE_API,
       // 遮罩层
       loading: true,
       // 选中数组
@@ -221,6 +255,7 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      imageArr:[],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -320,7 +355,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加card";
+      this.title = "添加名片";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -399,6 +434,22 @@ export default {
      handleAddCustomer(){
          this.customer.open=true; 
      },
+    handleAvatarSuccess(res, file) {
+        if(res.code==200){
+          this.form.imageUrl=res.url;
+        }
+        else{
+          this.msgError(res.msg);
+        }
+    },
+    beforeAvatarUpload(file) {
+      const isLt1M = file.size / 1024 / 1024 < 1;
+      if (!isLt1M) {
+        this.$message.error('上传图片大小不能超过 1MB!');
+      }
+      return  isLt1M;
+    },
+
   }
 };
 </script>

+ 1 - 0
src/views/company/companyUser/index.vue

@@ -195,6 +195,7 @@
         <el-button @click="upload.open = false">取 消</el-button>
       </div>
     </el-dialog>
+    
   </div>
 </template>
 

+ 2 - 2
src/views/company/companyVoiceLogs/index.vue

@@ -104,9 +104,9 @@
       </el-table-column>
       <el-table-column label="主叫" align="center" prop="callerPhone" />
       <el-table-column label="被叫" align="center" prop="calleePhone" />
-      <el-table-column label="时长(秒)" align="center" prop="times" width="180">
+      <el-table-column label="时长" align="center" prop="times" width="180">
         <template slot-scope="scope">
-          <span v-if="scope.row.voiceUrl!=null">{{ scope.row.times}} </span>
+          <span v-if="scope.row.voiceUrl!=null">{{  formatTime(scope.row.times) }} </span>
         </template>
       </el-table-column>
       <el-table-column label="计费时长(分)" align="center" prop="billingTime" width="180">

+ 1 - 1
src/views/company/components/userSelect.vue

@@ -186,7 +186,7 @@ export default {
       this.selectUser.forEach(element => {
         var flag= that.users.some(item => item.userId === element.userId)
         if(!flag){
-          this.users.push(element);
+           this.users.push(element);
         }
       });
       //this.users=this.users.concat(this.selectUser);

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

@@ -98,18 +98,18 @@
                 var number=parseInt(this.customerIds.length/data.length);
                 data.forEach(element => {
                     var user={
-                    userId:element.userId,
-                    userName:element.userName,
-                    nickName:element.nickName,
-                    deptName:element.dept.deptName,
-                    nowDayCustomerCount:element.nowDayCustomerCount,
-                    phonenumber:element.phonenumber,
-                    count:number,
+                        userId:element.userId,
+                        userName:element.userName,
+                        nickName:element.nickName,
+                        deptName:element.dept.deptName,
+                        nowDayCustomerCount:element.nowDayCustomerCount,
+                        phonenumber:element.phonenumber,
+                        count:number,
                     }
                     users.push(user)
                 });
                 this.users=users;
-                console.log(this.users)
+                console.log("qxj selectUser",JSON.stringify(users));
                 this.userSelect.open=false;
                 this.computeCount()
             },
@@ -152,7 +152,6 @@
                                 idIndex=idIndex+element.count;
                                 var data={companyUserId:element.userId,count:element.count};
                                 users.push(data)
-                                
                             }
                         });
                         if(users.length==0){
@@ -166,6 +165,7 @@
                             background: 'rgba(0, 0, 0, 0.7)'
                         });
                         var data={customerIds:customerIds,users:users,assignType:this.type}
+                        console.log("qxj data:",JSON.stringify(data));
                         assignToUser(data).then(response => {
                             this.myloading.close()
                             if (response.code === 200) {

+ 14 - 17
src/views/crm/customer/line.vue

@@ -211,7 +211,6 @@
         @pagination="getList"/>
 
     
-
     <el-dialog :title="assign.title" :visible.sync="assign.open" width="800px" append-to-body>
       <assign-user  ref="assignUser" @close="closeAssign"   />
     </el-dialog>
@@ -221,21 +220,21 @@
         <customer-details  ref="customerDetails" />
     </el-drawer>
     <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
-      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">
-          将文件拖到此处,或
-          <em>点击上传</em>
-        </div>
-        <div class="el-upload__tip" slot="tip">
-          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">
+            将文件拖到此处,或
+            <em>点击上传</em>
+          </div>
+          <div class="el-upload__tip" slot="tip">
+            <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+          </div>
+          <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+        </el-upload>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
         </div>
-        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
-      </el-upload>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitFileForm">确 定</el-button>
-        <el-button @click="upload.open = false">取 消</el-button>
-      </div>
     </el-dialog>
    
     <el-dialog :title="source.title" :visible.sync="source.open" width="1000px" append-to-body>
@@ -468,8 +467,6 @@ export default {
         this.getList();
     },
      
-   
-    
     /** 查询部门下拉树结构 */
     getTreeselect() {
       treeselect().then((response) => {