Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/uas-office-integration into dev

RaoMeng 5 years ago
parent
commit
5a9683aa11

+ 1 - 2
uas-office-web/uas-mobile/package.json

@@ -9,8 +9,7 @@
     "antd": "^4.7.2",
     "antd-mobile": "^2.3.4",
     "babel-plugin-import": "^1.13.1",
-    "bizcharts": "^3.5.7",
-    "bizgoblin": "^0.2.0",
+    "bizcharts": "4.x",
     "compression-webpack-plugin": "^6.0.4",
     "connect-history-api-fallback": "^1.6.0",
     "cra-template": "1.0.3",

+ 74 - 54
uas-office-web/uas-mobile/src/components/common/bizgoblin/BarGraph.jsx

@@ -4,18 +4,24 @@
  */
 
 import React, { Component } from 'react'
-import { Chart, Axis, Geom, Tooltip, Legend, Coord, Global } from 'bizgoblin'
+import { Chart, Interval, Axis, Tooltip, Geom } from 'bizcharts'
+import { fetchPostObj } from '../../../utils/common/fetchRequest'
+import { API } from '../../../configs/api.config'
+import { isObjEmpty } from '../../../utils/common/common.util'
+import { message } from 'antd'
 
 export default class BarGraph extends Component {
 
   constructor () {
     super()
 
-    this.state = {}
+    this.state = {
+      detailData: [],
+    }
   }
 
   componentDidMount () {
-
+    this.getChartData()
   }
 
   componentWillUnmount () {
@@ -24,66 +30,62 @@ export default class BarGraph extends Component {
 
   render () {
     let { chartData } = this.props
-    let { data, title, valueDisp, keyDisp, unit } = chartData
-    data = this.formatData(JSON.parse(data))
-    const defs = [{
-      dataKey: 'xField',
-    }, {
-      dataKey: 'yField',
-      tickCount: 4,   //多少个刻点数
-    }]
+    let { SONTITLE_, FORMULA_VALUEDISPLAY_, FORMULA_KEYDISPLAY_, FORMULA_UNIT_ } = chartData
+    let data = []
+    let { detailData } = this.state
+    if (!isObjEmpty(detailData)) {
+      data = this.formatData(JSON.parse(detailData))
+    }
 
-    const xLabel =
-      (text, item, index) => {
-        // text: 坐标轴对应字段的数值
-        return {
-          textAlign: 'center', // 文本对齐方向,可取值为: start center end
-          fill: '#333333', // 文本的颜色
-          fontSize: '12', // 文本大小
-          textBaseline: 'top', // 文本基准线,可取 top middle bottom,默认为middle
-          rotate: -126,
-        }
-      }
-    const yLabel =
-      (text, item, index) => {
-        // text: 坐标轴对应字段的数值
-        return {
-          textAlign: 'center', // 文本对齐方向,可取值为: start center end
-          fill: '#333333', // 文本的颜色
-          fontSize: '12', // 文本大小
-          textBaseline: 'top', // 文本基准线,可取 top middle bottom,默认为middle
-        }
-      }
     return (
       <div className='bar-graph' style={{ width: '100%', backgroundColor: '#fff' }}>
-        <div className="ant-table-title">{title}</div>
-        <div className="ant-table-title-second">{keyDisp ? keyDisp : ''}{valueDisp} {'单位(' + unit + ')'}</div>
-        <Chart padding={['6%', '6%', 'auto', '10%']} data={data} defs={defs} pixelRatio={window.devicePixelRatio * 2}>
-          <Axis
-            labelOffset={10}
-            dataKey='xField'
-            grid={null}
-            label={xLabel}/>
-          <Axis
-            dataKey='yField'
-            grid={Global._defaultAxis.grid}
-            label={yLabel}
+        <div className="ant-table-title">{SONTITLE_}</div>
+        <div
+          className="ant-table-title-second">{FORMULA_KEYDISPLAY_ ? FORMULA_KEYDISPLAY_ : ''}{FORMULA_VALUEDISPLAY_} {'单位(' + FORMULA_UNIT_ + ')'}</div>
+        <Chart padding={[25, 15, 40, 50]} height={300} autoFit data={data}>
+          <Axis name='xField'
+                label={{
+                  rotate: -126,
+                  autoRotate: false,
+                  offset: 15,
+                  textStyle: {
+                    textAlign: 'start',
+                    fill: '#333333', // 文本的颜色
+                    fontSize: 12, // 文本大小
+                    textBaseline: 'top', // 文本基准线,可取 top middle bottom,默认为middle
+                  },
+                }}
           />
-          <Coord/>
-          <Tooltip onShow={this.onShowTooltip}/>
-          <Geom geom="interval" position='xField*yField'/>
+          <Interval
+            position="xField*yField"
+            label={[
+              'yField',
+              (val) => {
+                return {
+                  content: val,
+                  style: {
+                    fill: '#333333',
+                    fontSize: 12,
+                    fontWeight: 'bold',
+                  },
+                }
+              },
+            ]}
+            tooltip={[
+              'yField*xField',
+              (value, name) => {
+                return {
+                  name: `${name}`,
+                  value,
+                }
+              },
+            ]}/>
+          <Tooltip showTitle={false}/>
         </Chart>
       </div>
     )
   }
 
-  onShowTooltip = (ev) => {
-    const items = ev.items
-    items[0].name = null
-    items[0].name = items[0].title
-    items[0].value = `${items[0].value + this.props.chartData.unit}`
-  }
-
   formatData = (data) => {
     data = data.map(function (item, index, arr) {
       item.yField = Number(item.yField)
@@ -93,4 +95,22 @@ export default class BarGraph extends Component {
     return data
   }
 
+  getChartData = () => {
+    let { chartData: { INSTANCE_ID_, FORMULA_ID_ } } = this.props
+    fetchPostObj(API.COMMON_GETSUBSDATA, {
+      INSTANCE_ID_: INSTANCE_ID_,
+      FORMULA_ID_: FORMULA_ID_,
+    }).then(response => {
+      this.setState({
+        detailData: response.data.list[0].DATA_,
+      })
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('图表数据获取失败')
+      }
+    })
+  }
+
 }

+ 2 - 2
uas-office-web/uas-mobile/src/components/common/bizgoblin/CommonCharts.jsx

@@ -33,9 +33,9 @@ export default class CommonCharts extends Component {
 
   render () {
     //BarGraph柱状 LineChart折线 PieChart圆饼 TableChart表格
-    let { type } = this.props.chartData
+    let { TYPE_ } = this.props.chartData
     let chartItem = null
-    switch (type) {
+    switch (TYPE_) {
       case 'column':
         chartItem = <BarGraph chartData={this.props.chartData}/>
         break

+ 52 - 29
uas-office-web/uas-mobile/src/components/common/bizgoblin/LineChart.jsx

@@ -4,18 +4,24 @@
  */
 
 import React, { Component } from 'react'
-import { Chart, Axis, Geom, Tooltip, Legend } from 'bizgoblin'
+import { Chart, Line, Point, Tooltip, Axis, Geom } from 'bizcharts'
+import { fetchPostObj } from '../../../utils/common/fetchRequest'
+import { API } from '../../../configs/api.config'
+import { isObjEmpty } from '../../../utils/common/common.util'
+import { message } from 'antd'
 
 export default class LineChart extends Component {
 
   constructor () {
     super()
 
-    this.state = {}
+    this.state = {
+      detailData: [],
+    }
   }
 
   componentDidMount () {
-
+    this.getChartData()
   }
 
   componentWillUnmount () {
@@ -24,34 +30,33 @@ export default class LineChart extends Component {
 
   render () {
     let { chartData } = this.props
-    let { data, title, valueDisp, keyDisp, unit } = chartData
-    data = this.formatData(JSON.parse(data))
-    const label =
-      (text, item, index) => {
-        // text: 坐标轴对应字段的数值
-        return {
-          textAlign: 'center', // 文本对齐方向,可取值为: start center end
-          fill: '#333333', // 文本的颜色
-          fontSize: '12', // 文本大小
-          textBaseline: 'top', // 文本基准线,可取 top middle bottom,默认为middle
-        }
-      }
+    let { SONTITLE_, FORMULA_VALUEDISPLAY_, FORMULA_KEYDISPLAY_, FORMULA_UNIT_ } = chartData
+    let data = []
+    let { detailData } = this.state
+    if (!isObjEmpty(detailData)) {
+      data = this.formatData(JSON.parse(detailData))
+    }
     return (
       <div className='charts-line' style={{ width: '100%', backgroundColor: '#fff' }}>
-        <div className="ant-table-title">{title}</div>
-        <div className="ant-table-title-second">{keyDisp ? keyDisp : ''}{valueDisp} {'单位(' + unit + ')'}</div>
-        <Chart height={240} data={data} pixelRatio={window.devicePixelRatio * 2}>
-          <Axis dataKey='xField' label={label}/>
-          <Axis
-            dataKey='yField'
-            label={label}/>
-          {/* 点击悬浮信息 */}
-          <Tooltip showCrosshairs onShow={this.onShowTooltip}/>
-          {/* 顶部标题 */}
-          <Legend align="center"/>
-          <Geom geom="line" position='xField*yField'/>
-          <Geom geom="point" position='xField*yField'
-                style={{ lineWidth: 1, stroke: '#FFF' }}/>
+        <div className="ant-table-title">{SONTITLE_}</div>
+        <div
+          className="ant-table-title-second">{FORMULA_KEYDISPLAY_ ? FORMULA_KEYDISPLAY_ : ''}{FORMULA_VALUEDISPLAY_} {'单位(' + FORMULA_UNIT_ + ')'}</div>
+        <Chart
+          padding={[10, 20, 30, 40]}
+          autoFit
+          height={240}
+          data={data}
+          scale={{ value: { min: 0 } }}
+        >
+          <Line position="xField*yField"/>
+          <Point position="xField*yField"/>
+          <Geom type="line" tooltip={['yField*xField', (value, name) => {
+            return {
+              name: `${name}`,
+              value,
+            }
+          }]} position="xField*yField"/>
+          <Tooltip showTitle={false}/>
         </Chart>
       </div>
     )
@@ -72,4 +77,22 @@ export default class LineChart extends Component {
     return data
   }
 
+  getChartData = () => {
+    let { chartData: { INSTANCE_ID_, FORMULA_ID_ } } = this.props
+    fetchPostObj(API.COMMON_GETSUBSDATA, {
+      INSTANCE_ID_: INSTANCE_ID_,
+      FORMULA_ID_: FORMULA_ID_,
+    }).then(response => {
+      this.setState({
+        detailData: response.data.list[0].DATA_,
+      })
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('图表数据获取失败')
+      }
+    })
+  }
+
 }

+ 72 - 36
uas-office-web/uas-mobile/src/components/common/bizgoblin/PieChart.jsx

@@ -4,8 +4,17 @@
  */
 
 import React, { Component } from 'react'
-import { Chart, Geom, Coord, Legend, Tooltip } from 'bizgoblin'
-import { getFloat } from '../../../utils/common/common.util'
+import { getFloat, isEmptyObject, isObjEmpty } from '../../../utils/common/common.util'
+import {
+  Chart,
+  Interval,
+  Tooltip,
+  Axis,
+  Coordinate,
+} from 'bizcharts'
+import { fetchPostObj } from '../../../utils/common/fetchRequest'
+import { API } from '../../../configs/api.config'
+import { message } from 'antd'
 
 export default class PieChart extends Component {
 
@@ -16,7 +25,7 @@ export default class PieChart extends Component {
   }
 
   componentDidMount () {
-
+    this.getChartData()
   }
 
   componentWillUnmount () {
@@ -25,36 +34,55 @@ export default class PieChart extends Component {
 
   render () {
     let { chartData } = this.props
-    let { data, title, valueDisp, keyDisp, unit } = chartData
-    let obj = this.formatData(JSON.parse(data))
-    let map
-    const defs = [{
-      dataKey: 'yField',
-      formatter: val => `${val * 100}%`,
-    }]
-    data = obj.data
-    map = obj.map
+    let { SONTITLE_, FORMULA_VALUEDISPLAY_, FORMULA_KEYDISPLAY_, FORMULA_UNIT_ } = chartData
+    let data = []
+    let { detailData } = this.state
+    if (!isObjEmpty(detailData)) {
+      data = this.formatData(JSON.parse(detailData))
+    }
+
+    const cols = {
+      percent: {
+        formatter: val => {
+          val = getFloat(val * 100, 4) + '%'
+          return val
+        },
+      },
+    }
 
     return (
       <div className='charts-line' style={{ width: '100%', backgroundColor: '#fff' }}>
-        <div className="ant-table-title">{title}</div>
-        <div className="ant-table-title-second">{keyDisp ? keyDisp : ''}{valueDisp} {'单位(' + unit + ')'}</div>
-        <Chart padding={['0', 'auto', 'auto', '1%']} height={240} data={data} defs={defs}
-               pixelRatio={window.devicePixelRatio * 2}>
-          <Coord type="polar" transposed radius={0.8}/>
-          <Geom
-            geom="interval"
-            position="a*yField"
-            color='xField'
+        <div className="ant-table-title">{SONTITLE_}</div>
+        <div
+          className="ant-table-title-second">{FORMULA_KEYDISPLAY_ ? FORMULA_KEYDISPLAY_ : ''}{FORMULA_VALUEDISPLAY_} {'单位(' + FORMULA_UNIT_ + ')'}</div>
+        <Chart padding={[25, 25, 25, 25]} height={300} data={data} scale={cols} autoFit>
+          <Coordinate type="theta" radius={0.75}/>
+          <Tooltip showTitle={false}/>
+          <Axis visible={false}/>
+          <Interval
+            animate={false}
+            position="percent"
             adjust="stack"
+            color="xField"
             style={{
               lineWidth: 1,
               stroke: '#fff',
-              lineJoin: 'round',
-              lineCap: 'round',
             }}
+            label={['*', {
+              content: (data) => {
+                return `${data.xField}: ${getFloat(data.percent * 100, 4)}%`
+              },
+            }]}
+            tooltip={[
+              'yField*xField',
+              (value, name) => {
+                return {
+                  name: `${name}`,
+                  value,
+                }
+              },
+            ]}
           />
-          <Legend position="right" itemFormatter={value => `${value} ${map[value]}`}/>
         </Chart>
       </div>
     )
@@ -69,21 +97,29 @@ export default class PieChart extends Component {
 
     //取得百分比数
     data = data.map(function (item, index, arr) {
-      item.yField = Number(item.yField) / ageSum
+      item.percent = getFloat((Number(item.yField) / ageSum), 4)
+      item.yField = Number(item.yField)
       return item
     })
+    return data
+  }
 
-    let map = {}
-    for (var i = 0; i < data.length; i++) {
-      // let displayValue = data[i].yField * ageSum + '(' + this.props.chartData.unit + ')';
-      let displayValue = data[i].yField * ageSum
-      map[data[i].xField] = displayValue + '   ' + getFloat((data[i].yField * 100), 3) + '%'
-    }
-    let obj = {
-      data: data,
-      map: map,
-    }
-    return obj
+  getChartData = () => {
+    let { chartData: { INSTANCE_ID_, FORMULA_ID_ } } = this.props
+    fetchPostObj(API.COMMON_GETSUBSDATA, {
+      INSTANCE_ID_: INSTANCE_ID_,
+      FORMULA_ID_: FORMULA_ID_,
+    }).then(response => {
+      this.setState({
+        detailData: response.data.list[0].DATA_,
+      })
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('图表数据获取失败')
+      }
+    })
   }
 
 }

+ 37 - 8
uas-office-web/uas-mobile/src/components/common/bizgoblin/TableChart.jsx

@@ -4,18 +4,24 @@
  */
 
 import React, { Component } from 'react'
-import { Table } from 'antd'
+import { Table, message } from 'antd'
+import { fetchPostObj } from '../../../utils/common/fetchRequest'
+import { API } from '../../../configs/api.config'
+import { isObjEmpty } from '../../../utils/common/common.util'
 
 export default class TableChart extends Component {
 
   constructor () {
     super()
 
-    this.state = {}
+    this.state = {
+      detailData: [],
+      detailColumn: [],
+    }
   }
 
   componentDidMount () {
-
+    this.getChartData()
   }
 
   componentWillUnmount () {
@@ -24,17 +30,22 @@ export default class TableChart extends Component {
 
   render () {
     let { chartData } = this.props
-    let { data, formulaDets, title, valueDisp, keyDisp } = chartData
-    let obj = this.formatData(data, formulaDets)
-    let columns = obj.columns
-    data = obj.data
+    let { SONTITLE_ } = chartData
+    let data = []
+    let columns = []
+    let { detailData, detailColumn } = this.state
+    if (!isObjEmpty(detailData) || !isObjEmpty(detailColumn)) {
+      let obj = this.formatData(detailData, detailColumn)
+      columns = obj.columns
+      data = obj.data
+    }
 
     return (
       <div className='table-charts' style={{ width: '100%', overflowY: 'auto' }}>
         <Table
           scroll={{ x: '100%' }}
           style={{ height: '320px' }}
-          title={() => title}
+          title={() => SONTITLE_}
           pagination={false}
           bordered={true}
           columns={columns}
@@ -65,4 +76,22 @@ export default class TableChart extends Component {
     return obj
   }
 
+  getChartData = () => {
+    let { chartData: { INSTANCE_ID_, FORMULA_ID_ } } = this.props
+    fetchPostObj(API.COMMON_GETSUBSDATA, {
+      INSTANCE_ID_: INSTANCE_ID_,
+      FORMULA_ID_: FORMULA_ID_,
+    }).then(response => {
+      this.setState({
+        detailData: response.data.list[0].DATA_,
+        detailColumn: response.data.list[0].formulaDets,
+      })
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('图表数据获取失败')
+      }
+    })
+  }
 }

+ 4 - 4
uas-office-web/uas-mobile/src/components/private/kanban/KanBan.jsx

@@ -10,7 +10,6 @@ import { isObjEmpty } from '../../../utils/common/common.util'
 import { fetchGet } from '../../../utils/common/fetchRequest'
 import { saveChartState } from '../../../redux/actions/chartState'
 import { API } from '../../../configs/api.config'
-import { Toast } from 'antd-mobile'
 import { message } from 'antd'
 
 class KanBan extends Component {
@@ -34,7 +33,7 @@ class KanBan extends Component {
 
   render () {
     const chartItem = []
-    const { subsData } = this.props.chartState
+    const { subsData } = this.state
 
     subsData.forEach((item, index) => {
       if (!isObjEmpty(item)) {
@@ -52,9 +51,9 @@ class KanBan extends Component {
   }
 
   getChartData = () => {
-    fetchGet(API.COMMON_GETSUBSDATA)
+    fetchGet(API.COMMON_GETSUBSTYPE)
       .then(response => {
-        saveChartState({
+        this.setState({
           subsData: response.data.list,
         })
       }).catch(error => {
@@ -65,6 +64,7 @@ class KanBan extends Component {
       }
     })
   }
+
 }
 
 let mapStateToProps = (state) => ({

+ 2 - 2
uas-office-web/uas-mobile/src/components/private/tasktodo/TaskTodoItem.jsx

@@ -34,11 +34,11 @@ class TaskTodoItem extends Component {
     }
 
     return (
-      <>
+      <div style={{ background: '#f5f5f9' }}>
         {
           rowItems
         }
-      </>
+      </div>
     )
   }
 }

+ 21 - 6
uas-office-web/uas-mobile/src/components/private/tasktodo/TaskTodoRow.jsx

@@ -25,14 +25,29 @@ class TaskTodoRow extends Component {
   }
 
   render () {
-    let { rowObj } = this.props
+    let { rowObj: { RA_TASKNAME, PRJNAME, STATUS, STATDATE, RA_ID, RA_TYPE, RECORDER } } = this.props
     return (
-      <div className="tasktodo-list-item-root" onClick={this.onItemClick.bind(this, rowObj.ra_id, rowObj.ra_type)}>
-        <div className="tasktodo-list-left">
-          <div className="tasktodo-list-taskname">{rowObj.taskName}</div>
-          <div className="tasktodo-list-status">{rowObj.status}</div>
+      <div className="tasktodo-list-item-root" onClick={this.onItemClick.bind(this, RA_ID, RA_TYPE)}>
+        <div className="task-des-item">
+          <div className="task-item-caption">任务详情</div>
+          <div className="task-item-value">{RA_TASKNAME}</div>
+        </div>
+        <div className="task-des-item">
+          <div className="task-item-caption">发起人</div>
+          <div className="task-item-value">{RECORDER}</div>
+        </div>
+        <div className="task-des-item">
+          <div className="task-item-caption">项目名称</div>
+          <div className="task-item-value">{PRJNAME || 123}</div>
+        </div>
+        <div className="task-des-item">
+          <div className="task-item-caption">发起时间</div>
+          <div className="task-item-value">{STATDATE}</div>
+        </div>
+        <div className="task-des-item">
+          <div className="task-item-caption">单据状态</div>
+          <div className="task-item-value">{STATUS}</div>
         </div>
-        <div className="tasktodo-list-right">{rowObj.statDate}</div>
       </div>
     )
   }

+ 22 - 16
uas-office-web/uas-mobile/src/components/private/tasktodo/task-todo-item.less

@@ -2,29 +2,35 @@
   background: #fff;
   color: @com-text-color-normal;
   border-radius: 4px;
-  display: flex;
-  justify-content: space-between;
   align-items: center;
   margin-top: 6px;
   min-height: 45px;
 
-  .tasktodo-list-left {
-    flex: 1;
-    padding: 8px;
-    word-break: break-all;
+  .task-des-item {
+    display: flex;
+    flex-direction: row;
+    width: 100%;
+    padding: 5px 10px;
+    font-size: 14px;
+    line-height: 14px;
 
-    .tasktodo-list-taskname {
-      line-height: 22px;
+    .task-item-caption {
+      width: 100px;
+      overflow: hidden;
+      word-wrap: break-word;
+      word-break: normal;
+      color: #666666;
     }
 
-    .tasktodo-list-status {
-      font-size: 12px;
-      color: @com-caption-text-color;
+    .task-item-value {
+      flex: 1;
+      max-height: 80px;
+      padding-left: 10px;
+      overflow: auto;
+      overflow-y: hidden;
+      word-wrap: break-word;
+      word-break: normal;
+      color: #333333;
     }
   }
-
-  .tasktodo-list-right {
-    min-width: 140px;
-    padding: 8px;
-  }
 }

+ 5 - 2
uas-office-web/uas-mobile/src/configs/api.config.js

@@ -22,8 +22,11 @@ export const API = {
   COMMON_GETACCOUNTLIST: _baseURL + '/common/getAbleMasters.action',
   //切换账套
   COMMON_CHANGEACCOUNT: _baseURL + '/common/changeMaster.action',
-  //获取图表
-  COMMON_GETSUBSDATA: _baseURL + '/mobile/appcommon/showChartOnHome.action',
+  //获取图表TYPE
+  COMMON_GETSUBSTYPE: _baseURL + '/mobile/appcommon/getToDayAllType.action',
+  //获取图表Data
+  COMMON_GETSUBSDATA: _baseURL + '/mobile/appcommon/getToDayAllChart.action',
+
   //放大镜数据
   APPCOMMON_DBFIND: _baseURL + '/mobile/appcommon/dbfind.action',
 

+ 22 - 1
uas-office-web/uas-mobile/src/pages/private/taskTodo/TaskTodo.jsx

@@ -5,6 +5,7 @@
 
 import React, { Component } from 'react'
 import { connect } from 'react-redux'
+import ReactDOM from 'react-dom'
 import './task-todo.less'
 import TaskTodoItem from '../../../components/private/tasktodo/TaskTodoItem'
 import { isObjEmpty } from '../../../utils/common/common.util'
@@ -21,11 +22,26 @@ class TaskTodo extends Component {
     this.state = {
       data: [],
       refreshing: false,
+      height: document.documentElement.clientHeight,
     }
   }
 
   componentDidMount () {
+    document.title = '待办任务'
     this.getListData()
+    setTimeout(() => {
+      if (this.props.height) {
+        this.setState({
+          height: this.props.height,
+        })
+      } else {
+        const hei = this.state.height -
+          ReactDOM.findDOMNode(this.ptr).getBoundingClientRect().top
+        this.setState({
+          height: hei,
+        })
+      }
+    }, 0)
   }
 
   componentWillUnmount () {
@@ -33,7 +49,7 @@ class TaskTodo extends Component {
   }
 
   render () {
-    let { data } = this.state
+    let { data, height } = this.state
 
     return (
       <div className="task-todo-page">
@@ -44,6 +60,11 @@ class TaskTodo extends Component {
           refreshing={this.state.refreshing}
           onRefresh={this.refreshFunc}
           className='report-func-root'
+          ref={el => this.ptr = el}
+          style={{
+            height: height,
+            overflow: 'auto',
+          }}
         >
           <TaskTodoItem rowList={data}/>
         </PullToRefresh>

+ 4 - 0
uas-office-web/uas-mobile/src/pages/private/taskTodo/task-todo-work.less

@@ -5,6 +5,10 @@
   position: relative;
   overflow: hidden;
 
+  * {
+    touch-action: none;
+  }
+
   .task-des-panel {
     background: #fff;
     padding: 8px;

File diff suppressed because it is too large
+ 248 - 356
uas-office-web/uas-mobile/yarn.lock


Some files were not shown because too many files changed in this diff