Browse Source

增加企业面谈思路表详情页面

dev01 1 month ago
parent
commit
872e141917

+ 1 - 0
src/app.config.js

@@ -11,6 +11,7 @@ export default {
     'pages/customerProfile/index',//企业详情/客户档案
     'pages/situation/index',//公出情况
     'pages/addEnterprise/index',//新增企业/渠道
+    'pages/interviewDetail/index', // 企业面谈
   ],
 //   subpackages: [
 //     {

+ 29 - 9
src/pages/egressDetails/index.jsx

@@ -80,6 +80,8 @@ class EgressDetails extends Component {
       // publicType 	      公出他人企业  0不含他人客户 1待审核 2已审核 3已驳回
       // status=1			      0驳回 1发起 2通过
       // type			          0业务 1技术 2行政 3协单 4协单助手
+
+      detailUrl: ''
     };
     this.examinePublicRelease = this.examinePublicRelease.bind(this);
     this.getReleasetDails = this.getReleasetDails.bind(this);
@@ -445,7 +447,15 @@ class EgressDetails extends Component {
       });
   }
 
-  onSelFiles(data) {
+  onSelFiles(data, type) {
+    let url = '';
+    if (type == 1) {
+      // 企业档案表
+      url = "/pages/customerProfile/index";
+    } else if (type == 2) {
+      // 面谈思路表
+      url = "/pages/interviewDetail/index";
+    }
     let list = []
     let userNames = data.userNames.split(",")
     let UserIds = data.uids.split(",")
@@ -455,11 +465,12 @@ class EgressDetails extends Component {
       }
       this.setState({
         filesList: list,
-        isSelFiles: true
+        isSelFiles: true,
+        detailUrl: url
       })
     } else {
       Taro.navigateTo({
-        url: "/pages/customerProfile/index?id=" + data.uids + "&notRequired=true&readonly=true",
+        url: url + "?id=" + data.uids + "&notRequired=true&readonly=true"
       });
     }
   }
@@ -673,12 +684,21 @@ class EgressDetails extends Component {
             <View className="item">
               <View className="title">
                 公出企业
-                {dtails.viewPermission == 1 &&
-                  <View className="tbuttom"
-                    onClick={e => {
+                {
+                  dtails.viewPermission == 1 &&
+                  <View className="tbuttom">
+                    { dtails.type == 0 ? (
+                      <View onClick={e => {
+                        e.stopPropagation()
+                        this.onSelFiles(dtails, 2)
+                      }}>查看面谈思路表</View>
+                    ) : null }
+                    <View onClick={e => {
                       e.stopPropagation()
-                      this.onSelFiles(dtails)
-                    }}>查看客户档案</View>}
+                      this.onSelFiles(dtails, 1)
+                    }}>查看客户档案</View> 
+                  </View>
+                }
               </View>
               <View className="value">
                 {/* {dtails.nickname} */}
@@ -1023,7 +1043,7 @@ class EgressDetails extends Component {
                   isSelFiles: false
                 })
                 Taro.navigateTo({
-                  url: "/pages/customerProfile/index?id=" + this.state.uid + "&notRequired=true",
+                  url: this.state.detailUrl + "?id=" + this.state.uid + "&notRequired=true&readonly=true",
                 });
               }}>确定</Button>
           </AtModalAction>

+ 2 - 2
src/pages/interview/index.jsx

@@ -186,8 +186,8 @@ class CustomerProfile extends Component {
     const { dtails } = this.state;
     let externalInvestList = [];
     if (dtails.externalInvestName) {
-      let externalInvestNameList = dtails.externalInvestName.split(',');
-      let externalInvestIdList = dtails.externalInvestId.split(',');
+      let externalInvestNameList = dtails.externalInvestName ? dtails.externalInvestName.split(',') : [];
+      let externalInvestIdList = dtails.externalInvestId ? dtails.externalInvestId.split(',') : [];
       externalInvestList = externalInvestNameList.map((name, idx) => {
         return { id: externalInvestIdList[idx] || 0, name }
       });

+ 39 - 0
src/pages/interviewDetail/components/InteractList.jsx

@@ -0,0 +1,39 @@
+import { View } from "@tarojs/components";
+import React, { Component } from "react";
+import { AtFloatLayout, AtTimeline } from "taro-ui";
+
+import 'taro-ui/dist/style/components/float-layout.scss';
+import 'taro-ui/dist/style/components/button.scss';
+import './index.less';
+
+
+class InteractList extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+    }
+
+    this.handleClose = this.handleClose.bind(this);
+  }
+
+  handleClose() {
+    this.props.onClose();
+  }
+
+  render() {
+    const hisItems = this.props.list.map(record => {
+        return { title: record.createTime, content: [record[this.props.type] || '空'] }
+    })
+    return (
+        <AtFloatLayout isOpened={this.props.isOpened} title={this.props.title} scrollY onClose={this.handleClose}>
+          <AtTimeline 
+              pending 
+              items={hisItems}
+          >
+          </AtTimeline>
+        </AtFloatLayout>
+    )
+  }
+}
+
+export default InteractList;

+ 13 - 0
src/pages/interviewDetail/components/index.less

@@ -0,0 +1,13 @@
+.at-timeline-item {
+  padding-bottom: 36rpx;
+}
+.at-timeline-item__content-item {
+  color: #333;
+  font-weight: 600;
+}
+.at-timeline-item__content--sub {
+  color: #999;
+  margin-top: 8rpx;
+  font-size: 25rpx;
+  font-weight: 400;
+}

+ 6 - 0
src/pages/interviewDetail/index.config.js

@@ -0,0 +1,6 @@
+export default {
+  navigationBarTitleText: '面谈思路表',
+  usingComponents: {
+    timePicker: '../../components/common/timePicker/timePicker'
+  }
+}

File diff suppressed because it is too large
+ 2111 - 0
src/pages/interviewDetail/index.jsx


+ 432 - 0
src/pages/interviewDetail/index.less

@@ -0,0 +1,432 @@
+.customerProfile {
+  min-height: calc(100vh - 30px);
+  background: #F5F5F5;
+  padding-bottom: 30px;
+
+  .titleContent {
+    position: relative;
+    // background: white;
+    // padding: 20px 20px;
+    // border-bottom: 1px #dadada solid;
+
+    .content {
+
+      .name {
+        font-size: 32px;
+        color: #1E90FF;
+        font-weight: bolder;
+        padding-bottom: 10px;
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        align-items: flex-start;
+        justify-content: space-between;
+        background: white;
+        padding: 20px;
+        margin-bottom: 20px;
+
+        .bod {
+          // border-bottom: 2px solid #1E90FF;
+          // padding-bottom: 10px;
+        }
+
+        .share {
+          margin: 0;
+          padding: 0;
+          font-size: 26px;
+          line-height: 24px;
+          color: #1E90FF;
+          padding: 10px 30px;
+          border: 1px solid #1E90FF;
+          border-radius: 30px;
+        }
+
+      }
+
+      .button {
+        display: flex;
+        flex-direction: row-reverse;
+        padding: 20px 20px 0;
+        background: white;
+
+        .but {
+          background: #1E90FF;
+          padding: 10px 15px;
+          color: #FFFFFF;
+          font-size: 26px;
+          border-radius: 8px;
+          margin-left: 20px;
+
+        }
+
+      }
+
+      .row {
+        background: white;
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        justify-content: space-between;
+        padding: 20px 20px;
+
+        .code {
+          font-size: 26px;
+          color: #767272;
+
+        }
+
+        .time {
+          font-size: 26px;
+          color: #767272;
+
+        }
+
+      }
+
+      .first {
+        background: #facd91;
+        padding: 20px 20px;
+
+      }
+
+      .two {
+        background: #81d3f8;
+        padding: 20px 20px;
+
+      }
+
+      .title {
+        font-weight: bolder;
+        margin: 20px 0 10px 0;
+      }
+
+      .tit {
+        display: flex;
+        flex-direction: row;
+        align-items: baseline;
+        justify-content: space-between;
+        font-size: 28px;
+        font-weight: bolder;
+        margin-top: 15px;
+        margin-bottom: 5px;
+
+        .up {
+          background: #70B603;
+          color: #FFFFFF;
+          padding: 10px 20px;
+          font-size: 26px;
+          border-radius: 8px;
+          font-weight: 400;
+          // font-weight: 400;
+          // color: #3864ef;
+          // font-size: 26rpx;
+
+        }
+
+        .txt {
+          color: red;
+          font-weight: 400;
+          font-size: 20px;
+        }
+
+      }
+
+      .val {
+        position: relative;
+        font-size: 26px;
+        margin-bottom: 5px;
+
+        .num {
+          font-weight: bolder;
+          color: #1E90FF;
+        }
+
+        .mask {
+          position: absolute;
+          top: 0;
+          right: 0;
+          bottom: 0;
+          left: 0;
+          width: 100%;
+          height: 100%;
+          background: #facd91;
+          z-index: 99;
+
+        }
+
+      }
+
+    }
+
+  }
+
+}
+
+.selectTitle {
+  font-weight: bolder;
+  margin-bottom: 10px;
+  font-size: 28px;
+  display: flex;
+  flex-direction: row;
+}
+
+.additem {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 22px;
+  color: #4395ff;
+  margin-bottom: 15px;
+
+  .txt {
+    width: 16%;
+    display: flex;
+    // flex: 1;
+  }
+
+  .mobile {
+    width: 30%;
+  }
+
+  .bt {
+    padding: 4px 10px;
+    background: #4395ff;
+    color: #FFFFFF;
+    border-radius: 6px;
+    margin-left: 15px;
+
+  }
+
+  .bts {
+    padding: 4px 10px;
+    color: #4395ff;
+    margin-left: 15px;
+
+  }
+
+}
+
+.selproject {
+  margin-left: 32px;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  flex-wrap: wrap;
+  margin-bottom: 20px;
+
+  .selptxt {
+    background: #f50;
+    padding: 6px 16px;
+    margin: 6px;
+    border-radius: 8px;
+    color: #fff;
+
+  }
+}
+
+.at-input,
+.at-input-number {
+  padding: 4rpx 0;
+  margin-left: 0rpx;
+}
+
+.at-input-number__btn {
+  display: none;
+}
+
+.at-input-number input {
+  background-color: #fff;
+  height: 44.8rpx;
+}
+
+.link {
+  color: #1E90FF;
+  text-decoration: underline;
+}
+
+.valueContent {
+  margin: 20px 0;
+  padding: 20rpx;
+  background: white;
+  border-radius: 20px;
+
+  .item {
+    padding-bottom: 16px;
+    &.flex {
+      display: flex;
+      align-items: center;
+    }
+    &-title {
+      display: flex;
+      flex-flow: row nowrap;
+      align-items: center;
+      justify-content: space-between;
+      color: #b7acac;
+      font-size: 27px;
+      padding-bottom: 10px;
+      position: relative;
+
+      .titleTips {
+        color: #ff0000;
+        font-size: 18px;
+        padding-left: 10px;
+      }
+
+      .edit {
+        position: absolute;
+        right: -30px;
+        padding: 30px;
+      }
+
+      .switchItem {
+        width: 40px;
+        height: 40px;
+        margin-left: 20px;
+      }
+
+      .tbuttom {
+        background: #70B603;
+        color: #FFFFFF;
+        padding: 10px 20px;
+        font-size: 26px;
+        border-radius: 8px;
+        font-weight: 400;
+        // position: absolute;
+        // right: 0;
+        // color: #3864ef;
+      }
+    }
+
+    &-value {
+      color: #000000;
+      font-size: 30px;
+    }
+
+    .cassistant {
+      font-size: 25px;
+      color: red;
+      display: flex;
+      flex-direction: row;
+      flex-wrap: wrap;
+      margin-top: 10px;
+
+      .citems {
+        margin-right: 20px;
+        margin-bottom: 20px;
+        display: flex;
+        flex-direction: row;
+        position: relative;
+        padding-right: 40px;
+
+        .cclose {
+          position: absolute;
+          right: 0;
+          top: -20px;
+
+        }
+
+      }
+
+      .addbuttom {
+        font-size: 22px;
+        padding: 0 10px;
+        margin-left: 20px;
+      }
+
+    }
+
+    .timeContent {
+      background: rgba(0, 51, 255, .09);
+      border-radius: 30px;
+      padding: 30px;
+      margin-top: 45px;
+
+      .time {
+        display: flex;
+        flex-flow: row nowrap;
+        justify-content: space-between;
+        align-items: center;
+
+        .num {
+          font-size: 30px;
+        }
+
+        .journal {
+          font-size: 28px;
+          color: #007aff;
+        }
+      }
+
+      .timeAxis {
+        display: flex;
+        flex-flow: column nowrap;
+        padding-top: 30px;
+
+        .startTime {
+          display: flex;
+          align-items: center;
+          color: #b7acac;
+          font-size: 25px;
+        }
+
+        .axis {
+          width: 1px;
+          height: 40px;
+          border-left: 1px #b7acac solid;
+          margin-left: 11px;
+        }
+
+        .endTime {
+          display: flex;
+          align-items: center;
+          color: #b7acac;
+          font-size: 25px;
+        }
+
+        .circle {
+          margin-right: 15px;
+          width: 20px;
+          height: 20px;
+          border-radius: 30px;
+          border: 1px #b7acac solid;
+        }
+      }
+    }
+  }
+
+  .shareContent {
+    display: flex;
+    flex-flow: column nowrap;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+
+    .share {
+      overflow: visible;
+      width: 100px;
+      height: 100px;
+      padding: 0;
+      border-radius: 161px;
+      background: #0000;
+
+      .shareIcon {
+        width: 100px;
+        height: 100px;
+      }
+    }
+
+    .shareTitle {
+      padding-top: 15px;
+      font-size: 19px;
+      color: #767272;
+    }
+  }
+}
+
+.at-input::after {
+  display: none;
+}
+.at-input--disabled {
+  opacity: 1;
+}