230320a303 1 year ago
parent
commit
604ac3d43d

+ 21 - 0
src/api/other.js

@@ -78,4 +78,25 @@ export default {
   apiuploadvideotoken: params => { // 获取七牛云token和config
     return request('/api/upload/video/token', params, 'loading')
   },
+  apisaleworklist: params => { // 洪楼分 工作记录 列表
+    return request('/api/sale/work/list', params, 'loading')
+  },
+  apisaleworkadd: params => { // 洪楼分 工作记录 添加
+    return request('/api/sale/work/add', params, 'loading')
+  },
+  apisaleworkedit: params => { // 洪楼分 工作记录 编辑
+    return request('/api/sale/work/edit', params, 'loading')
+  },
+  apisaleworkdetail: params => { // 洪楼分 工作记录 详情
+    return request('/api/sale/work/detail', params, 'loading')
+  },
+  apisaleworkdel: params => { // 洪楼分 工作记录 删除
+    return request('/api/sale/work/del', params, 'loading')
+  },
+  apisalerulelist: params => { // 洪楼分 工作记录 规则列表接口
+    return request('/api/sale/rule/list', params, 'loading')
+  },
+  apisaleworkverify: params => { // 洪楼分 工作记录 审核
+    return request('/api/sale/work/verify', params, 'loading')
+  },
 }

+ 2 - 0
src/app.jsx

@@ -91,6 +91,8 @@ class App extends Component {
           'qa/add',
           // 'qa/dtl',
           'test/index',
+          'score/list',
+          'score/edit',
         ]
       },
       {

+ 7 - 0
src/pagesMore/center/index.jsx

@@ -201,6 +201,13 @@ class Index extends Component {
           userInfo.is_sale && userInfo.is_sale === '1'
           ?
           <View>
+            <Navigator url="/pagesMore/score/list" className="entry-op">
+              <Image src={icon6} className="entry-icon"></Image>
+              <View className="entry-text">主动新增洪楼分</View>
+              <View className="entry-right">
+                <Image src={iconSign} className="sign"></Image>
+              </View>
+            </Navigator>
             <Navigator url="/pagesRoom/follow/lineup" className="entry-op">
               <Image src={icon6} className="entry-icon"></Image>
               <View className="entry-text">门店排班轮值</View>

+ 104 - 0
src/pagesMore/score/edit.jsx

@@ -0,0 +1,104 @@
+import Taro, { Component } from '@tarojs/taro'
+import { View } from '@tarojs/components'
+import LFormGroup from '@/c/lform/formGroup'
+
+class Index extends Component {
+  constructor (props) {
+    super(props)
+    this.state = {
+      formObj: {},
+      ruleTypeList: [],
+    }
+  }
+  config = {
+    navigationBarTitleText: '洪楼分添加',
+  }
+
+  componentWillMount () {
+    Taro.$AHU(this)
+    Taro.api.other.apisalerulelist({rule_type:2}).then(res => {
+      console.log(res)
+      let list = res || []
+      list.map((item, index) => {
+        item.key = `${item.category}(+${item.reward_point})`
+        item.val = item.category
+      })
+      this.setState({
+        ruleTypeList: list
+      })
+    })
+  }
+
+
+  saveHandle () {
+    const { formObj, imgArr } = this.state
+    if (formObj.category) {
+      Taro.api.other.apisaleworkadd(formObj).then(res => {
+        Taro.$msgConfirm('添加成功', () => {
+          Taro.navigateBack({
+            delta: 1
+          })
+        }, () => {
+          Taro.navigateBack({
+            delta: 1
+          })
+        })
+        let pages = getCurrentPages()
+        let prevPage = pages[ pages.length - 2 ]
+        prevPage.$component.getDataList()
+      })
+    } else {
+      Taro.$msg('请输入添加洪楼分的类型和具体描述')
+    }
+  }
+
+  baseFormChange (key, val) {
+    let { formObj } = this.state
+    formObj[key] = val
+    console.log(formObj)
+    this.setState({
+      formObj
+    })
+  }
+
+
+  render () {
+    let { formObj, ruleTypeList } = this.state
+    const typeMoreOptions = {arr: ruleTypeList}
+    return (
+      <View className="l-box">
+        <View className="l-floor-pos2">
+          <LFormGroup
+            val={formObj.category}
+            valStr="category"
+            keyStr="类型"
+            keyStr2="请选择"
+            typeStr="select"
+            moreOptions={typeMoreOptions}
+            bc={this.baseFormChange.bind(this)}
+          />
+        </View>
+        <View className="l-floor-pos2">
+          <LFormGroup
+            val={formObj.remark}
+            valStr="remark"
+            moreRows={true}
+            defineBoxClassName='noborder'
+            defineContentClassName="border"
+            keyStr="备注(具体描述)"
+            keyStr2="请填写具体信息,如拍摄xx楼盘VR,成交xx楼盘5-1-601等"
+            typeStr="textarea"
+            bc={this.baseFormChange.bind(this)}
+          />
+        </View>
+        <View className="l-floor-footer t2">
+          <View className="lff-flex">
+            <View className="lff-btn full" onClick={this.saveHandle.bind(this)}>提交</View>
+          </View>
+        </View>
+      </View>
+    )
+  }
+}
+
+export default Index

+ 58 - 0
src/pagesMore/score/edit.scss

@@ -0,0 +1,58 @@
+@import '@css/mixin.scss';
+.scoped-box {
+  padding: 20px;
+  border-bottom: 1PX solid #f2f2f2;
+  .sb-title {
+    font-size: 28px;
+    color: #666;
+    padding-bottom: 20px;
+    font-weight: bold;
+    padding-left: 10px;
+    .s {
+      display: inline-block;
+      font-size: 24px;
+      color: #999;
+      font-weight: normal;
+    }
+    .r-i {
+      width: 300px;
+      display: inline-block;
+      vertical-align: middle;
+      padding-left: 20rpx;
+      color: #333;
+      font-size: 28px;
+      padding-bottom: 6px;
+    }
+  }
+}
+.at-textarea {
+  border: 1PX solid #f2f2f2;
+}
+.at-textarea__textarea {
+  font-size: 28px;
+  color: #333;
+}
+
+.scoped-img {
+  .si-op {
+    display: inline-block;
+    vertical-align: middle;
+    width: 200px;
+    height: 200px;
+    margin-right: 30px;
+    margin-bottom: 30px;
+    position: relative;
+    box-sizing: border-box;
+    .img {
+      width: 200px;
+      height: 200px;
+    }
+    .i {
+      position: absolute;
+      top: -20px;
+      right: -20px;
+      width: 40px;
+      height: 40px;
+    }
+  }
+}

+ 162 - 0
src/pagesMore/score/list.jsx

@@ -0,0 +1,162 @@
+import Taro, { Component } from '@tarojs/taro'
+import { View, Image, Text, Navigator } from '@tarojs/components'
+
+import ListMore from '@/c/pageDataList/listMore'
+import './list.scss'
+import { arrToObj } from '@utils'
+
+class Index extends Component {
+  constructor (props) {
+    super(props)
+    this.state = {
+      searchKey: '',
+      page_size: 10,
+      page: 1,
+      isListEnd: false,
+      isListLoading: false,
+      isListEmpty: false,
+      dataList: [],
+      curNav: 1,
+      isDShow: false,
+      curObj: {},
+    }
+  }
+
+  config = {
+    navigationBarTitleText: '洪楼分记录',
+  }
+
+  componentWillMount () {
+    Taro.$AHU(this)
+    this.getDataList()
+  }
+
+  componentDidShow () { }
+
+  componentDidHide () { }
+
+
+
+  getDataList = () => {
+    let { page_size, page, dataList, isListEmpty } = this.state
+    Taro.api.other.apisaleworklist({
+      page,
+      page_size,
+    }).then(res => {
+      const curData = res.list || []
+      let isListEnd = false
+      if (curData.length > 0) {
+        if (page === 1) {
+          dataList = curData
+        } else {
+          dataList = dataList.concat(curData)
+        }
+        if (curData.length === page_size && res.total !== curData.length) {
+          isListEnd = false
+        } else {
+          isListEnd = true
+        }
+      }
+      if (curData.length === 0 && page === 1) {
+        isListEmpty = true
+        dataList = []
+      } else {
+        isListEmpty = false
+      }
+      this.setState({
+        dataList,
+        isListEnd,
+        isListEmpty,
+        isListLoading: false
+      })
+    })
+  }
+  onScrollToLower (e) {
+    let { isListEnd, isListLoading, page } = this.state
+    if (!isListEnd && !isListLoading) {
+      page++
+      this.setState({
+        page,
+        isListLoading: true
+      }, () => {
+        this.getDataList()
+      })
+    }
+  }
+
+  renderList () {
+    const appUserInfo = Taro.getStorageSync('APP_userInfo')
+    const dictData = Taro.getStorageSync('dictData')
+    const stateObj = arrToObj(dictData.sale_work_state)
+    const { dataList, isListEnd, isListLoading, isListEmpty } = this.state
+    const itemsList = dataList.map((item, index) => {
+      const sStr = item.state == 1 ? 's s1' : 's s2'
+      return (
+        <View className="sl-item" key={index}>
+          <View className="p1">{item.category}(+{item.total_point})</View>
+          <View className="p2">{item.remark}</View>
+          <View className="p1">状态:<View className={sStr}>{stateObj[item.state]}</View></View>
+          <View className="p3">{item.sale_name}新增于{item.create_at}</View>
+          {
+            item.state == 2 && (appUserInfo.phone === '15625261123' || appUserInfo.phone === '18100792072' || appUserInfo.phone === '19179124439')
+            ?
+            <View>
+              <View className="b-r1" onClick={this.verifyHandle.bind(this, item, 1)}>通过</View>
+              <View className="b-r2" onClick={this.verifyHandle.bind(this, item, 3)}>驳回</View>
+            </View>
+            : ''
+          }
+        </View>
+      )
+    })
+    return (
+      <ScrollView
+        className='l-scroll-view'
+        scrollY
+        scrollWithAnimation
+        scrollTop="0"
+        lowerThreshold="30"
+        onScrollToLower={this.onScrollToLower.bind(this)}
+      >
+        <View className="scoped-list">
+          {itemsList}
+        </View>
+        <ListMore isListEnd={isListEnd} isListLoading={isListLoading} isListEmpty={isListEmpty} />
+      </ScrollView>
+    )
+  }
+
+  verifyHandle (item, state) {
+    const tipStr = state == 1  ? '通过' : '驳回'
+    Taro.$msgConfirm(`确定${tipStr}【${item.sale_name}】${item.category}?`, () => {
+      Taro.api.other.apisaleworkverify({
+        state,
+        id: item.id,
+      }).then(() => {
+        Taro.$msg('已处理')
+        this.getDataList()
+      })
+    }, () => {})
+  }
+
+  addHandle () {
+    Taro.navigateTo({
+      url: '/pagesMore/score/edit'
+    })
+  }
+
+  render () {
+    return (
+      <View className="l-box">
+        {this.renderList()}
+        <View className="l-floor-footer">
+          <View className="lff-flex">
+            <View className="lff-btn full" onClick={this.addHandle.bind(this)}>添加洪楼分</View>
+          </View>
+        </View>
+      </View>
+    )
+  }
+}
+
+export default Index

+ 54 - 0
src/pagesMore/score/list.scss

@@ -0,0 +1,54 @@
+@import '@css/mixin.scss';
+.scoped-list {
+  .sl-item {
+    @include itemBox(20px 20px);
+    position: relative;
+    .p1 {
+      font-size: 26px;
+      color: #313131;
+      padding-bottom: 10px;
+    }
+    .p2 {
+      font-size: 28px;
+      color: $dangerColor;
+      font-weight: bold;
+      padding-bottom: 10px;
+    }
+    .p3 {
+      font-size: 24px;
+      color: #999;
+    }
+    .s {
+      display: inline-block;
+      font-size: 26px;
+      font-weight: bold;
+      &.s2 {
+        color: $dangerColor;
+      }
+      &.s1 {
+        color: $mainColor;
+      }
+    }
+    .b-r1 {
+      position: absolute;
+      top: 60px;
+      right: 50px;
+      padding: 6px 20px;
+      border: 1PX solid $mainColor;
+      color: $mainColor;
+      font-size: 28px;
+      border-radius: 6px;
+      box-sizing: content-box;
+    }
+    .b-r2 {
+      position: absolute;
+      top: 130px;
+      right: 50px;
+      padding: 6px 20px;
+      border: 1PX solid $dangerColor;
+      color: $dangerColor;
+      font-size: 28px;
+      border-radius: 6px;
+    }
+  }
+}