소스 검색

联系人跟进添加关联客户项目线索

xiaohaizhao 1 년 전
부모
커밋
a1f6e93837

+ 0 - 3
packageA/select/clue/select.js

@@ -132,9 +132,6 @@ Page({
         });
         this.getList(true);
     },
-    onReady() {
-        this.selectComponent("#ListBox").setHeight(".total", this);
-    },
     onUnload() {
         //回收数据
         getApp().globalData.handleSelect = null;

+ 36 - 67
packageA/select/clue/select.scss

@@ -1,5 +1,3 @@
-
-
 .total {
     height: 60rpx;
     line-height: 60rpx;
@@ -10,91 +8,58 @@
 }
 
 .setclient-list-item {
-    width: 100vw;
     background-color: #fff;
     box-sizing: border-box;
-    padding-left: 30rpx;
 
     .con {
         display: flex;
         align-items: center;
         width: 100%;
-        border-bottom: 1px solid #EFEFEF;
         box-sizing: border-box;
         padding: 10rpx 0;
         padding-bottom: 14rpx;
+    }
 
-        .mian {
-            flex: 1;
-            min-height: 60rpx;
-            width: 0;
-            font-family: PingFang SC-Regular, PingFang SC;
-
-            .title {
-                width: 100%;
-                position: relative;
-                display: flex;
-                height: 42rpx;
-                align-items: center;
-                box-sizing: border-box;
-
-                >text {
-                    display: inline-block;
-                    width: 80%;
-                    font-size: 30rpx;
-                    color: #333333;
-                }
+    .mian {
+        .title {
+            line-height: 40rpx;
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: bold;
+            font-size: 28rpx;
+            color: #333333;
 
-                .status {
-                    position: absolute;
-                    right: 0rpx;
-                    width: 132rpx;
-                    height: 40rpx;
-                    border-radius: 20rpx 0px 0px 20rpx;
-                    box-sizing: border-box;
-                    padding-left: 30rpx;
-                    line-height: 40rpx;
-                    font-size: 24rpx;
-                    font-family: PingFang SC-Regular, PingFang SC;
-                    color: #FFFFFF;
-                }
+            .tag {
+                display: inline-block;
+                height: 40rpx;
+                line-height: 40rpx;
+                padding: 0 8rpx;
+                font-family: PingFang SC, PingFang SC;
+                font-size: 24rpx;
+                color: #FFFFFF;
+                font-weight: 400;
+                margin-right: 8rpx;
             }
+        }
 
-            .tag-box {
-                display: flex;
-                align-items: center;
-                width: 90%;
-                overflow: hidden;
-                margin-bottom: 4rpx;
-
-                .datatag,
-                .systemtag {
-                    flex-shrink: 0;
-                    margin-top: 6rpx;
-                    background: #FAAB16;
-                    color: #ffffff;
-                    margin-right: 10rpx;
-                    display: flex;
-                    align-items: center;
-                    height: 30rpx;
-                    font-size: 18rpx;
-                    padding: 0 10rpx;
-                    border-radius: 20rpx;
-                    font-family: PingFang SC-Regular, PingFang SC;
-                }
+        .row {
+            display: flex;
+            font-size: 24rpx;
+            font-family: PingFang SC-Regular, PingFang SC;
+            color: #666666;
+            margin-top: 8rpx;
 
-                .systemtag {
-                    background: #FA8C16;
-                }
+            .left {
+                flex: 1;
             }
 
-            .exp {
-                font-size: 24rpx;
-                color: #666666;
-                margin-top: 6rpx;
+            .left,
+            .right {
+                flex-shrink: 0;
             }
         }
     }
+
+
 }
 
 .footer {
@@ -126,4 +91,8 @@
         font-weight: bold;
         color: #FFFFFF;
     }
+}
+
+.custom-class {
+    --search-background-color: #ffffff;
 }

+ 16 - 18
packageA/select/clue/select.wxml

@@ -1,26 +1,25 @@
-<van-search class="search" value="{{ params.content.where.condition }}" shape="round" placeholder="{{language['关键字']||'请输入搜索关键词'}}" bind:search='startSearch' bind:clear='onClear' />
-<view class="total">
-    <text wx:if="{{language['总共']}}">{{language['总共']}}:{{params.content.total}}</text>
-    <text wx:else>总共{{params.content.total}}个</text>
-</view>
+<van-search class="search" value="{{ params.content.where.condition }}" background='#F4F5F7' custom-class='custom-class' shape="round" placeholder="{{language['关键字']||'请输入搜索关键词'}}" bind:search='startSearch' bind:clear='onClear' />
+
 <Yl_ListBox id='ListBox' bind:getlist='getList'>
-    <navigator class="setclient-list-item" url="#" wx:for="{{list}}" wx:key="{{idname}}" data-id="{{item[idname]}}" bindtap="changeResult">
+    <navigator class="setclient-list-item global-card" url="#" wx:for="{{list}}" wx:key="{{idname}}" data-id="{{item[idname]}}" bindtap="changeResult">
         <view class="con">
             <van-checkbox wx:if="{{!radio}}" value="{{ handle.isCheck(item[idname],result) }}" shape="square" icon-size='28rpx' />
             <view class="mian">
-                <view class="title line-1">
-                    <text class="line-1">{{item.enterprisename_customer || " --"}}</text>
-                    <view class="status" style="background-color: {{sColors[item.status]}};">{{language[item.status]||item.status}}</view>
+                <view class="title ">
+                    <text class="tag" wx:if="{{item.tradefield}}" style="background: #5ABA42;">{{item.tradefield}}</text>
+                    {{item.enterprisename_customer || " --"}}
                 </view>
-                <view class="tag-box">
-                    <view class="systemtag" wx:for="{{item.tags.systemtag}}" wx:key="item">{{language[item]||item}}</view>
-                    <view class="datatag" wx:for="{{item.tags.datatag}}" wx:key="item">{{language[item]||item}}</view>
+                <view class="row" style="margin-top: 16rpx;">
+                    <view class="left">
+                        {{language['负责人']||'负责人'}}:{{item.leader[0].name||' --'}}
+                    </view>
+                    <view class="right">
+                        {{language['来源']||'来源'}}:{{language[item.cluesource]||item.cluesource||' --'}}
+                    </view>
                 </view>
-                <view class="exp line-1">{{language['省市县']||'省市县'}}:{{item.province?item.province+item.city+item.county:" --"}}</view>
-                <view class="exp line-1">{{language['联系人']||'联系人'}}:<text>{{item.name||' --'}}</text></view>
-                <view class="exp line-1">{{language['联系方式']||'联系方式'}}:<text>{{item.phonenumber || '--'}}</text></view>
-                <view class="exp line-1">{{language['领域']||'领域'}}:<text>{{item.tradefield || '--'}}</text></view>
-                <view class="exp line-1">{{language['市场活动']||'市场活动'}}:{{item.campaign_name?item.campaign_name:"--"}}</view>
+                <view class="row">{{language['联系方式']||'联系方式'}}:<text>{{item.phonenumber || '--'}}</text></view>
+                <view class="row">{{language['客户名称']||'客户名称'}}:<text>{{item.enterprisename_customer || '--'}}</text></view>
+                <view class="row">{{language['项目名称']||'项目名称'}}:<text>{{item.projectname || '--'}}</text></view>
             </view>
         </view>
     </navigator>
@@ -28,7 +27,6 @@
     <My_empty wx:if="{{!list.length}}" />
 </Yl_ListBox>
 
-<view style="height: 130rpx;" />
 <block wx:if="{{!radio}}">
     <view class="footer">
         <view class="count">

+ 12 - 6
packageA/select/project/select.js

@@ -1,4 +1,9 @@
-const _Http = getApp().globalData.http;
+const _Http = getApp().globalData.http,
+    currency = require("../../../utils/currency"),
+    CNY = value => currency(value, {
+        symbol: "¥",
+        precision: 2
+    }).format();
 
 Page({
     data: {
@@ -19,7 +24,7 @@ Page({
                 params
             });
         }
-        getApp().globalData.Language.getLanguagePackage(this,options.title || '选择项目');
+        getApp().globalData.Language.getLanguagePackage(this, options.title || '选择项目');
         this.setData({
             radio: options.radio ? true : false,
             idname: options.idname || this.data.idname,
@@ -40,13 +45,17 @@ Page({
                 title: res.msg,
                 icon: "none"
             })
+            res.data = res.data.map(v => {
+                v.signamount_due = CNY(v.signamount_due)
+                return v
+            })
             this.setData({
                 'params.content.pageNumber': res.pageNumber + 1,
                 'params.content.pageTotal': res.pageTotal,
                 'params.content.total': res.total,
                 list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data)
             })
-            this.getTags();
+            // this.getTags();
         })
     },
     /* 获取列表标签 */
@@ -131,9 +140,6 @@ Page({
         });
         this.getList(true);
     },
-    onReady() {
-        this.selectComponent("#ListBox").setHeight(".total", this);
-    },
     onUnload() {
         //回收数据
         getApp().globalData.handleSelect = null;

+ 29 - 32
packageA/select/project/select.scss

@@ -1,5 +1,3 @@
-
-
 .total {
     height: 60rpx;
     line-height: 60rpx;
@@ -10,18 +8,14 @@
 }
 
 .setclient-list-item {
-    width: 100vw;
     background-color: #fff;
     box-sizing: border-box;
-    padding-left: 30rpx;
 
     .con {
         display: flex;
         align-items: center;
         width: 100%;
-        border-bottom: 1px solid #EFEFEF;
         box-sizing: border-box;
-        padding: 10rpx 0;
         padding-bottom: 14rpx;
 
         .mian {
@@ -34,42 +28,41 @@
                 font-size: 28rpx;
                 color: #333333;
                 font-weight: 600;
-            }
+                line-height: 40rpx;
 
-            .tag-box {
-                display: flex;
-                align-items: center;
-                width: 90%;
-                overflow: hidden;
-                margin-bottom: 4rpx;
-
-                .datatag,
-                .systemtag {
-                    flex-shrink: 0;
-                    margin-top: 6rpx;
-                    background: #FAAB16;
-                    color: #ffffff;
-                    margin-right: 10rpx;
-                    display: flex;
-                    align-items: center;
-                    height: 30rpx;
-                    font-size: 18rpx;
-                    padding: 0 10rpx;
-                    border-radius: 20rpx;
-                    font-family: PingFang SC-Regular, PingFang SC;
+                .tag {
+                    display: inline-block;
+                    height: 40rpx;
+                    line-height: 40rpx;
+                    padding: 0 8rpx;
+                    font-family: PingFang SC, PingFang SC;
+                    font-size: 24rpx;
+                    color: #FFFFFF;
+                    font-weight: 400;
+                    margin-right: 8rpx;
                 }
 
-                .systemtag {
-                    background: #FA8C16;
-                }
             }
 
-            .exp {
+            .row {
+                display: flex;
                 font-size: 24rpx;
+                font-family: PingFang SC-Regular, PingFang SC;
                 color: #666666;
+                margin-top: 8rpx;
+
+                .left {
+                    flex: 1;
+                }
+
+                .left,
+                .right {
+                    flex-shrink: 0;
+                }
             }
         }
     }
+
 }
 
 .footer {
@@ -101,4 +94,8 @@
         font-weight: bold;
         color: #FFFFFF;
     }
+}
+
+.custom-class {
+    --search-background-color: #ffffff;
 }

+ 19 - 21
packageA/select/project/select.wxml

@@ -1,32 +1,31 @@
-<van-search class="search" value="{{ params.content.where.condition }}" shape="round" placeholder="{{language['关键字']||'请输入搜索关键词'}}" bind:search='startSearch' bind:clear='onClear' />
-<view class="total">
-    <text wx:if="{{language['总共']}}">{{language['总共']}}:{{params.content.total}}</text>
-    <text wx:else>总共{{params.content.total}}个</text>
+<view>
+    <van-search class="search" value="{{ params.content.where.condition }}" background='#F4F5F7' custom-class='custom-class' shape="round" placeholder="{{language['关键字']||'请输入搜索关键词'}}" bind:search='startSearch' bind:clear='onClear' />
 </view>
 <Yl_ListBox id='ListBox' bind:getlist='getList'>
-    <navigator class="setclient-list-item" url="#" wx:for="{{list}}" wx:key="{{idname}}" data-id="{{item[idname]}}" bindtap="changeResult">
+    <navigator class="setclient-list-item global-card" url="#" wx:for="{{list}}" wx:key="{{idname}}" data-id="{{item[idname]}}" bindtap="changeResult">
         <view class="con">
             <van-checkbox wx:if="{{!radio}}" value="{{ handle.isCheck(item[idname],result) }}" shape="square" icon-size='28rpx' />
             <view class="mian">
-                <view class="title line-1">
-                    {{item.projectname}}
+                <view class="title">
+                    <text wx:if="{{item.projecttype_remarks}}" class="tag" style="background: #3874F6;">{{item.projecttype_remarks}}</text>
+                    <text wx:if="{{item.tradefield}}" class="tag" style="background: #58B73E;">{{item.tradefield}}</text>
+                    <text>{{item.projectname}}</text>
                 </view>
-                <view class="tag-box">
-                    <view class="systemtag" wx:for="{{item.tags.systemtag}}" wx:key="item">{{language[item]||item}}</view>
-                    <view class="datatag" wx:for="{{item.tags.datatag}}" wx:key="item">{{language[item]||item}}</view>
+                <view class="row" style="margin-top: 16rpx;">
+                    <view class="left">
+                        {{language['负责人']||'负责人'}}:{{item.leader[0].name||' --'}}
+                    </view>
+                    <view class="right">
+                        {{language['项目阶段']||'项目阶段'}}:{{language[item.stagename]||item.stagename||' --'}}
+                    </view>
                 </view>
-                <view class="exp line-1">
-                    {{language['项目编号']||'项目编号'}}:{{item.projectnum}}
+                <view class="row line-1">
+                    {{language['预计签约金额']||'预计签约金额'}}:{{item.signamount_due}}
                 </view>
-                <view class="exp line-1">
-                    {{language['项目地址']||'项目地址'}}:{{item.province?item.province+item.city+item.county+item.address:" --"}}
-                </view>
-                <view class="exp line-1">
-                    {{language['项目类型']||'项目类型'}}:{{language[item.projecttype]||item.projecttype||' --'}}
-                </view>
-                <view class="exp line-1">
-                    {{language['项目等级']||'项目等级'}}:{{language[item.grade]||item.grade||' --'}}
+                <view class="row line-1">
+                    {{language['预计签约时间']||'预计签约时间'}}:{{item.signdate_due||'--'}}
                 </view>
+
             </view>
         </view>
     </navigator>
@@ -34,7 +33,6 @@
     <My_empty wx:if="{{!list.length}}" />
 </Yl_ListBox>
 
-<view style="height: 130rpx;" />
 <block wx:if="{{!radio}}">
     <view class="footer">
         <view class="count">

+ 88 - 2
pages/trace/insert.js

@@ -24,7 +24,6 @@ Page({
   changeState({
     detail
   }) {
-    console.log(detail)
     this.setData({
       loading: detail
     })
@@ -71,7 +70,76 @@ Page({
         }
       }
     } else if (parems.ownertable == "sys_phonebook") {
+      let list = [{
+        label: "关联线索",
+        error: false,
+        errMsg: "",
+        type: "route",
+        url: "/packageA/select/clue/select",
+        value: "",
+        params: {
+          "id": "2025042409073602",
+          "content": {
+            "nocache": true,
+            "pageNumber": 1,
+            "pageSize": 20,
+            "pageTotal": 1,
+            "sys_phonebookid": parems.ownerid
+          },
+        },
+        query: "&idname=sat_orderclueid",
+        placeholder: "关联线索",
+        valueName: "sat_orderclueids",
+        checking: "base",
+        required: false
+      }, {
+        label: "关联客户",
+        error: false,
+        errMsg: "",
+        type: "route",
+        url: "/packageA/select/setclient/select",
+        value: "",
+        params: {
+          "id": "2025042409074102",
+          "content": {
+            "nocache": true,
+            "pageNumber": 1,
+            "pageSize": 20,
+            "pageTotal": 1,
+            "sys_phonebookid": parems.ownerid
+          },
+        },
+        query: "&idname=sa_customersid",
+        placeholder: "关联客户",
+        valueName: "sa_customersids",
+        checking: "base",
+        required: false
+      }, {
+        label: "关联项目",
+        error: false,
+        errMsg: "",
+        type: "route",
+        url: "/packageA/select/project/select",
+        value: "",
+        params: {
+          "id": "2025042409074702",
+          "content": {
+            "nocache": true,
+            "pageNumber": 1,
+            "pageSize": 20,
+            "pageTotal": 1,
+            "sys_phonebookid": parems.ownerid
+          },
+        },
+        query: "&idname=sa_projectid",
+        placeholder: "选择关联项目",
+        valueName: "sa_projectids",
+        checking: "base",
+        required: false,
+        interrupt: false
+      }]
       form.pop()
+      form = list.concat(form)
       parems.dataextend = {
         contactsid: [parems.ownerid1]
       }
@@ -180,12 +248,30 @@ Page({
       loading: true
     })
     let content = Object.assign(this.data.parems, this.selectComponent("#Form").submit())
-
     if (this.data.parems.ownertable != "sys_phonebook") {
       content.dataextend = {
         contactsid: content.contactsid[1]
       }
       delete(content.contactsid)
+    } else {
+      try {
+        content.dataextend.sa_customersids = content.sa_customersids[1];
+      } catch (error) {
+        content.dataextend.sa_customersids = [];
+      }
+      try {
+        content.dataextend.sa_projectids = content.sa_projectids[1];
+      } catch (error) {
+        content.dataextend.sa_projectids = [];
+      }
+      try {
+        content.dataextend.sat_orderclueids = content.sat_orderclueids[1];
+      } catch (error) {
+        content.dataextend.sat_orderclueids = [];
+      }
+      delete content.sa_customersids
+      delete content.sa_projectids
+      delete content.sat_orderclueids
     }
     this.data.list.forEach(v => {
       content[v.key] = v.value