Browse Source

uas手机版
日常、项目任务界面对接

samhoo 5 years ago
parent
commit
f446aea9ca

+ 7 - 5
uas-office-web/uas-mobile/src/components/private/tasktodo/TaskTodoRow.jsx

@@ -27,7 +27,7 @@ class TaskTodoRow extends Component {
   render () {
     let { rowObj } = this.props
     return (
-      <div className="tasktodo-list-item-root" onClick={this.onItemClick.bind(this, rowObj.TaskId)}>
+      <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>
@@ -37,10 +37,12 @@ class TaskTodoRow extends Component {
     )
   }
 
-  onItemClick = (taskId) => {
-    //点击跳详情
-    //console.log(taskId)
-    this.props.history.push('/dailyTaskAffirm')
+  onItemClick = (ra_id, type) => {
+    if (type == 'billtask') {
+      this.props.history.push('/dailyTask/' + type + '/' + ra_id)
+    } else if (type == 'projecttask') {
+      this.props.history.push('/projectTask/' + type + '/' + ra_id)
+    }
 
   }
 

+ 13 - 3
uas-office-web/uas-mobile/src/configs/api.config.js

@@ -4,9 +4,9 @@
  */
 
 export const _host = window.location.origin
-  // && 'http://10.1.7.104:8090/ERP'//吴炳
-  // && 'http://10.1.7.44:8081/erp'//吴雨骁
-  // && 'http://usoft.f3322.net:10007/uas'
+// && 'http://10.1.7.104:8090/ERP'//吴炳
+// && 'http://10.1.7.44:8081/erp'//吴雨骁
+// && 'http://usoft.f3322.net:10007/uas'
 
 export const _baseURL = _host + (process.env.REACT_APP_ROUTER_BASE_NAME || '')
 
@@ -50,6 +50,16 @@ export const API = {
   /*******************************待办*************************************/
   //待办事项目列表
   APPCOMMON_TASKTODO: _baseURL + '/mobile/appcommon/list/taskToDo.action',
+  //待办详情任务
+  APPCOMMON_TASKDETAIL: _baseURL + '/mobile/appcommon/detail/taskToDo.action',
+  //日常任务-确认
+  APPCOMMON_DAILYTASKCOMFIRM: _baseURL + '/plm/record/confirmBillTask.action',
+  //日常任务-驳回
+  APPCOMMON_DAILYTASKNOCOMFIRM: _baseURL + '/plm/record/noConfirmBillTask.action',
+  //日常任务-回复
+  APPCOMMON_DAILYTASKREPLY: _baseURL + '/plm/record/endBillTask.action',
+  //项目任务-提交
+  APPCOMMON_PROJECTCOMMIT: _baseURL + '/mobile/appcommon/submitWorkRecord.action',
 
   /*******************************日程*************************************/
   //日程主界面

+ 8 - 8
uas-office-web/uas-mobile/src/configs/router.config.js

@@ -39,10 +39,10 @@ const SubscribeManage = PageLoadable(
 /**************************************************待办**************************************************/
 const TaskTodo = PageLoadable(
   import(/* webpackChunkName:'tasktodo' */'@/pages/private/taskTodo/TaskTodo'))
-const DailyTaskAffirm = PageLoadable(
-  import(/* webpackChunkName:'tasktodo' */'@/pages/private/taskTodo/DailyTaskAffirm'))
-const DailyTaskReply = PageLoadable(
-  import(/* webpackChunkName:'tasktodo' */'@/pages/private/taskTodo/DailyTaskReply'))
+const DailyTask = PageLoadable(
+  import(/* webpackChunkName:'tasktodo' */'@/pages/private/taskTodo/DailyTask'))
+const ProjectTask = PageLoadable(
+  import(/* webpackChunkName:'tasktodo' */'@/pages/private/taskTodo/ProjectTask'))
 
 /**************************************************报表**************************************************/
 const ReportSearch = PageLoadable(
@@ -118,10 +118,10 @@ class Routes extends React.Component {
           {/***************************************待办******************************************/}
           {/*待办列表*/}
           <Route path='/taskTodo' component={TaskTodo}/>
-          {/*日常任务-确认*/}
-          <Route path='/dailyTaskAffirm' component={DailyTaskAffirm}/>
-          {/*日常任务-回复*/}
-          <Route path='/dailyTaskReply' component={DailyTaskReply}/>
+          {/*日常任务*/}
+          <Route path='/dailyTask/:type/:id' component={DailyTask}/>
+          {/*项目任务*/}
+          <Route path='/projectTask/:type/:id' component={ProjectTask}/>
 
           {/***************************************报表******************************************/}
           {/*报表搜索*/}

+ 0 - 2
uas-office-web/uas-mobile/src/pages/private/schedulePage/SchedulePage.jsx

@@ -90,7 +90,6 @@ class SchedulePage extends Component {
         noticeMatterData: response.data.noticeMatterData,
         punchClockData: response.data.punchClockData,
       })
-      message.success('加载成功')
     }).catch(error => {
       Toast.hide()
       if (typeof error === 'string') {
@@ -111,7 +110,6 @@ class SchedulePage extends Component {
           noticeMatterData: response.data.noticeMatterData,
           punchClockData: response.data.punchClockData,
         })
-        message.success('请求成功')
       }).catch(error => {
       Toast.hide()
       if (typeof error === 'string') {

+ 286 - 0
uas-office-web/uas-mobile/src/pages/private/taskTodo/DailyTask.jsx

@@ -0,0 +1,286 @@
+/**
+ * Created by hujs on 2020/12/11
+ * Desc: 日常任务
+ */
+
+import React, { Component } from 'react'
+import { connect } from 'react-redux'
+import { isObjEmpty } from '../../../utils/common/common.util'
+import { message } from 'antd'
+import { Toast, List, TextareaItem, Button } from 'antd-mobile'
+import { fetchPostObj, fetchGet, fetchPostForm } from '../../../utils/common/fetchRequest'
+import { API } from '../../../configs/api.config'
+import './task-todo-work.less'
+
+class DailyTask extends Component {
+
+  constructor () {
+    super()
+
+    this.state = {
+      textAreaValue: '',
+      detailData: {},
+      replyData: [],
+    }
+  }
+
+  componentDidMount () {
+    let { type, id } = this.props.match.params
+    this.getDatailData(type, id)
+  }
+
+  componentWillUnmount () {
+
+  }
+
+  render () {
+    let { detailData, replyData } = this.state
+    let replyDetail = null
+    if (!isObjEmpty(replyData)) {
+      replyDetail = this.handlerReplyData(replyData)
+    }
+    let replyModule = this.handlerReplyModule(detailData)
+
+    let buttonModule = this.handlerButtonModule(detailData)
+
+    return (
+      <div className="daily-task-page">
+        <div className="task-des-panel">
+          <div className="task-des-item">
+            <div className="task-item-caption">任务名称</div>
+            <div className="task-item-value">{detailData.ra_taskname}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">提出人</div>
+            <div className="task-item-value">{detailData.recorder}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">执行人</div>
+            <div className="task-item-value">{detailData.ra_resourcename}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">开始时间</div>
+            <div className="task-item-value">{detailData.ra_startdate}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">结束时间</div>
+            <div className="task-item-value">{detailData.ra_enddate}</div>
+          </div>
+        </div>
+
+        {/* 处理明细信息 */}
+        {
+          replyDetail
+        }
+
+        {/* 回复确定信息组件 */}
+        {
+          replyModule
+        }
+
+        {/* 按钮 */}
+        {
+          buttonModule
+        }
+
+
+      </div>
+    )
+  }
+
+  getDatailData = (type, id) => {
+    Toast.loading('正在获取数据', 0)
+    fetchGet(API.APPCOMMON_TASKDETAIL, {
+      type: type,
+      ra_id: id,
+    }).then(response => {
+      Toast.hide()
+      this.setState({
+        detailData: response.data.list[0].data,
+        replyData: response.data.list[0].replyData,
+      })
+    }).catch(error => {
+      Toast.hide()
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('日常任务获取失败')
+      }
+    })
+  }
+
+  handlerReplyData = (replyData) => {
+    const replyItems = []
+    replyData.forEach((item, index) => {
+      let type = '回复'
+      if (item.WR_PROGRESS == 'reply') {
+        type = '回复'
+      } else if (item.WR_PROGRESS == 'confirm') {
+        type = '确认'
+      } else if (item.WR_PROGRESS == 'noconfirm') {
+        type = '驳回'
+      }
+      replyItems.push(
+        <div key={index} className="task-handler-detail">
+          <p className="task-detail-info">
+            <span className="task-info-left">{item.WR_RECORDER}</span>
+            <span className="task-info-right">{item.WR_RECORDDATE}</span>
+          </p>
+          <p className="task-detail-reply">{type}信息:{item.WR_REDCORD}</p>
+        </div>,
+      )
+    })
+    return (
+      <div className="task-handler-panel">
+        <div className="task-handler-title">
+          处理明细
+        </div>
+        {
+          replyItems
+        }
+      </div>
+    )
+  }
+
+  handlerReplyModule = (detailData) => {
+    let status = detailData.ra_status
+    let type = ''
+    if (status != '待确认') {
+      type = '回复信息'
+    } else if (status == '待确认') {
+      type = '确认信息'
+    }
+
+    return (
+      status == '已完成' ? null :
+        <div className="task-affirm-panel">
+          <div className="task-affirm-title">
+            {type}<span style={{ color: 'red' }}>*</span>
+          </div>
+          <List>
+            <TextareaItem
+              rows={3}
+              placeholder="请输入"
+              onChange={this.onTextChange}
+            />
+          </List>
+        </div>
+    )
+
+  }
+
+  handlerButtonModule = (detailData) => {
+    let userName = this.props.userState.userName
+    let status = detailData.ra_status
+
+    if (status == '已完成') {
+      return null
+    } else if (status != '待确认' && userName == detailData.ra_resourcename) {
+      return (
+        <div className="task-btn-panel">
+          <Button
+            className='task-btn-panel-button'
+            type="primary"
+            onClick={this.onReply}
+            inline>回复</Button>
+        </div>
+      )
+    } else if (status == '待确认' && userName == detailData.ra_resourcename) {
+      return (
+        <div className="task-btn-panel">
+          <Button
+            className='task-btn-panel-button'
+            type="primary"
+            onClick={this.onConfirm}
+            inline>确认</Button>
+          <Button
+            className='task-btn-panel-button'
+            type="primary"
+            onClick={this.onReject}
+            inline>驳回</Button>
+        </div>
+      )
+    }
+
+  }
+
+  onTextChange = value => {
+    this.setState({
+      textAreaValue: value,
+    })
+  }
+
+  onReject = () => {
+    let info = this.state.textAreaValue
+    let ra_id = this.state.detailData.ra_id
+    if (info == '') {
+      message.error('请填写信息')
+      return false
+    }
+    fetchPostForm(API.APPCOMMON_DAILYTASKNOCOMFIRM, {
+      ra_id: ra_id,
+      id: '',
+      record: info,
+    }).then(response => {
+      window.location.reload()
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('回复信息失败')
+      }
+    })
+  }
+
+  onConfirm = () => {
+    let info = this.state.textAreaValue
+    let ra_id = this.state.detailData.ra_id
+    if (info == '') {
+      message.error('请填写信息')
+      return false
+    }
+    fetchPostForm(API.APPCOMMON_DAILYTASKCOMFIRM, {
+      ra_id: ra_id,
+      id: '',
+      record: info,
+    }).then(response => {
+      window.location.reload()
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('回复信息失败')
+      }
+    })
+  }
+
+  onReply = () => {
+    let info = this.state.textAreaValue
+    let ra_id = this.state.detailData.ra_id
+    if (info == '') {
+      message.error('请填写信息')
+      return false
+    }
+    fetchPostForm(API.APPCOMMON_DAILYTASKREPLY, {
+      ra_id: ra_id,
+      id: '',
+      record: info,
+    }).then(response => {
+      window.location.reload()
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('回复信息失败')
+      }
+    })
+  }
+
+}
+
+let mapStateToProps = (state) => ({
+  userState: state.userState,
+})
+
+export default connect(mapStateToProps)(DailyTask)
+

+ 0 - 127
uas-office-web/uas-mobile/src/pages/private/taskTodo/DailyTaskAffirm.jsx

@@ -1,127 +0,0 @@
-/**
- * Created by hujs on 2020/12/11
- * Desc: 日常任务-确认
- */
-
-import React, { Component } from 'react'
-import { isObjEmpty } from '../../../utils/common/common.util'
-import { message } from 'antd'
-import { Toast, List, TextareaItem, Button } from 'antd-mobile'
-import { fetchPostObj, fetchGet } from '../../../utils/common/fetchRequest'
-import { API } from '../../../configs/api.config'
-import './daily-task.less'
-
-export default class DailyTaskAffirm extends Component {
-
-  constructor () {
-    super()
-
-    this.state = {
-      textAreaValue: '',
-    }
-  }
-
-  componentDidMount () {
-
-  }
-
-  componentWillUnmount () {
-
-  }
-
-  render () {
-
-    return (
-      <div className="daily-task-page">
-        <div className="task-des-panel">
-          <div className="task-des-item">
-            <div className="task-item-caption">任务名称</div>
-            <div className="task-item-value">客户风险预警</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">提出人</div>
-            <div className="task-item-value">李剑辉</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">执行人</div>
-            <div className="task-item-value">吴雨骁</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">开始时间</div>
-            <div className="task-item-value">2020-10-23</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">结束时间</div>
-            <div className="task-item-value">2020-10-29</div>
-          </div>
-        </div>
-        <div className="task-handler-panel">
-          <div className="task-handler-title">
-            处理明细
-          </div>
-          <div className="task-handler-detail">
-            <p className="task-detail-info">
-              <span className="task-info-left">李剑辉</span>
-              <span className="task-info-right">2020-10-24 16:54</span>
-            </p>
-            <p className="task-detail-reply">回复:已完成对应的任务</p>
-          </div>
-          <div className="task-handler-detail">
-            <p className="task-detail-info">
-              <span className="task-info-left">周袁</span>
-              <span className="task-info-right">2020-10-24 17:54</span>
-            </p>
-            <p className="task-detail-reply">驳回:不满足要求</p>
-          </div>
-          <div className="task-handler-detail">
-            <p className="task-detail-info">
-              <span className="task-info-left">周袁</span>
-              <span className="task-info-right">2020-10-25 16:54</span>
-            </p>
-            <p className="task-detail-reply">确定:已完成对应的任务</p>
-          </div>
-        </div>
-        <div className="task-affirm-panel">
-          <div className="task-affirm-title">
-            确认信息<span style={{ color: 'red' }}>*</span>
-          </div>
-          <List>
-            <TextareaItem
-              rows={3}
-              placeholder="请输入"
-              onChange={this.onTextChange}
-            />
-          </List>
-        </div>
-        <div className="task-btn-panel">
-          <Button
-            className='task-btn-panel-button'
-            type="primary"
-            onClick={this.onReject}
-            inline>驳回</Button>
-          <Button
-            className='task-btn-panel-button'
-            type="primary"
-            onClick={this.onConfirm}
-            inline>确认</Button>
-        </div>
-      </div>
-    )
-  }
-
-  onTextChange = value => {
-    this.setState({
-      textAreaValue: value,
-    })
-  }
-
-  onReject = () => {
-    //console.log('驳回')
-  }
-
-  onConfirm = () => {
-    // console.log('确认')
-  }
-
-}
-

+ 0 - 90
uas-office-web/uas-mobile/src/pages/private/taskTodo/DailyTaskReply.jsx

@@ -1,90 +0,0 @@
-/**
- * Created by hujs on 2020/12/11
- * Desc: 日常任务-回复
- */
-
-import React, { Component } from 'react'
-import { isObjEmpty } from '../../../utils/common/common.util'
-import { message } from 'antd'
-import { Toast, List, TextareaItem, Button } from 'antd-mobile'
-import { fetchPostObj, fetchGet } from '../../../utils/common/fetchRequest'
-import { API } from '../../../configs/api.config'
-import './daily-task.less'
-
-export default class DailyTaskReply extends Component {
-
-  constructor () {
-    super()
-
-    this.state = {}
-  }
-
-  componentDidMount () {
-
-  }
-
-  componentWillUnmount () {
-
-  }
-
-  render () {
-
-    return (
-      <div className="daily-task-page">
-        <div className="task-des-panel">
-          <div className="task-des-item">
-            <div className="task-item-caption">任务名称</div>
-            <div className="task-item-value">客户风险预警</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">提出人</div>
-            <div className="task-item-value">李剑辉</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">执行人</div>
-            <div className="task-item-value">吴雨骁</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">开始时间</div>
-            <div className="task-item-value">2020-10-23</div>
-          </div>
-          <div className="task-des-item">
-            <div className="task-item-caption">结束时间</div>
-            <div className="task-item-value">2020-10-29</div>
-          </div>
-        </div>
-        <div className="task-affirm-panel">
-          <div className="task-affirm-title">
-            回复信息<span style={{ color: 'red' }}>*</span>
-          </div>
-          <List>
-            <TextareaItem
-              rows={3}
-              placeholder="请输入"
-              onChange={this.onTextChange}
-            />
-          </List>
-        </div>
-        <div className="task-btn-panel">
-          <Button
-            className='task-btn-panel-button'
-            type="primary"
-            onClick={this.onReply}
-            inline>回复</Button>
-        </div>
-      </div>
-    )
-  }
-
-  onTextChange = value => {
-    this.setState({
-      textAreaValue: value,
-    })
-  }
-
-  onReply = () => {
-    console.log('回复')
-  }
-
-}
-

+ 187 - 0
uas-office-web/uas-mobile/src/pages/private/taskTodo/ProjectTask.jsx

@@ -0,0 +1,187 @@
+/**
+ * Created by hujs on 2020/12/11
+ * Desc: 项目任务
+ */
+
+import React, { Component } from 'react'
+import { isObjEmpty } from '../../../utils/common/common.util'
+import { message } from 'antd'
+import { Toast, List, TextareaItem, Button, InputItem } from 'antd-mobile'
+import { fetchPostObj, fetchGet, fetchPostForm } from '../../../utils/common/fetchRequest'
+import { API } from '../../../configs/api.config'
+import './task-todo-work.less'
+
+export default class ProjectTask extends Component {
+
+  constructor () {
+    super()
+
+    this.state = {
+      detailData: {},
+      completeValue: '',
+      workTimeValue: '',
+      textAreaValue: '',
+    }
+  }
+
+  componentDidMount () {
+    let { type, id } = this.props.match.params
+    this.getDatailData(type, id)
+  }
+
+  componentWillUnmount () {
+
+  }
+
+  render () {
+    let { detailData } = this.state
+
+    return (
+      <div className="daily-task-page">
+        <div className="task-des-panel">
+          <div className="task-des-item">
+            <div className="task-item-caption">任务名称</div>
+            <div className="task-item-value">{detailData.wr_taskname}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">任务状态</div>
+            <div className="task-item-value">{detailData.ra_status}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">项目名称</div>
+            <div className="task-item-value">{detailData.wr_prjname}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">开始时间</div>
+            <div className="task-item-value">{detailData.wr_taskstartdate}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">结束时间</div>
+            <div className="task-item-value">{detailData.wr_taskenddate}</div>
+          </div>
+          <div className="task-des-item">
+            <div className="task-item-caption">累计完成率(%)</div>
+            <div className="task-item-value">{detailData.wr_taskpercentdone}</div>
+          </div>
+        </div>
+        <div className="task-affirm-panel">
+          <div className="task-affirm-inputitem">
+            <InputItem
+              placeholder="请输入"
+              type={'digit'}
+              onChange={this.onCompleteChange}
+              value={this.state.completeValue}
+            >本次完成率<span style={{ color: 'red' }}>*</span>
+            </InputItem>
+          </div>
+          <div className="task-affirm-inputitem">
+            <InputItem
+              placeholder="请输入"
+              type={'digit'}
+              onChange={this.onWorkTimeChange}
+            >工作时数<span style={{ color: 'red' }}>*</span>
+            </InputItem>
+          </div>
+          <div className="task-affirm-title">
+            工作描述<span style={{ color: 'red' }}>*</span>
+            <TextareaItem
+              rows={3}
+              placeholder="请输入"
+              onChange={this.onTextChange}
+            />
+          </div>
+        </div>
+        <div className="task-btn-panel">
+          <Button
+            className='task-btn-panel-button'
+            type="primary"
+            onClick={this.onCommit}
+            inline>提交</Button>
+        </div>
+      </div>
+    )
+  }
+
+  getDatailData = (type, id) => {
+    Toast.loading('正在获取数据', 0)
+    fetchGet(API.APPCOMMON_TASKDETAIL, {
+      type: type,
+      ra_id: id,
+    }).then(response => {
+      Toast.hide()
+      this.setState({
+        detailData: response.data.list[0].data,
+      })
+    }).catch(error => {
+      Toast.hide()
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('项目任务获取失败')
+      }
+    })
+  }
+
+  onTextChange = value => {
+    this.setState({
+      textAreaValue: value,
+    })
+  }
+  onCompleteChange = value => {
+    if (value > 100) {
+      message.error('提交完成率不能大于100')
+      this.setState({
+        completeValue: '',
+      })
+      return false
+    }
+    this.setState({
+      completeValue: value,
+    })
+  }
+  onWorkTimeChange = value => {
+    this.setState({
+      workTimeValue: value,
+    })
+  }
+
+  onCommit = () => {
+    let { wr_raid } = this.state.detailData
+    if (this.state.completeValue == '') {
+      message.error('请填写本次完成率')
+      return false
+    }
+    if (this.state.textAreaValue == '') {
+      message.error('请填写工作描述')
+      return false
+    }
+    if (this.state.workTimeValue == '' || this.state.workTimeValue == '0') {
+      message.error('请填写正确的工作时数')
+      return false
+    }
+    if (this.state.detailData.wr_taskpercentdone + Number(this.state.completeValue) > 100) {
+      message.error('累计完成率超过100,请重新输入')
+      this.setState({
+        completeValue: '',
+      })
+      return false
+    }
+    fetchPostForm(API.APPCOMMON_PROJECTCOMMIT, {
+      ra_id: wr_raid,
+      wr_hours: this.state.workTimeValue,
+      wr_percentdone: this.state.completeValue,
+      wr_redcord: this.state.textAreaValue,
+    }).then(response => {
+      window.location.reload()
+    }).catch(error => {
+      if (typeof error === 'string') {
+        message.error(error)
+      } else {
+        message.error('提交失败')
+      }
+    })
+
+  }
+
+}
+

+ 26 - 1
uas-office-web/uas-mobile/src/pages/private/taskTodo/daily-task.less → uas-office-web/uas-mobile/src/pages/private/taskTodo/task-todo-work.less

@@ -18,7 +18,7 @@
       font-size: 14px;
 
       .task-item-caption {
-        width: 80px;
+        width: 100px;
         overflow: hidden;
         word-wrap: break-word;
         word-break: normal;
@@ -83,8 +83,33 @@
 
     .task-affirm-title {
       margin-bottom: 2px;
+      padding-top: 8px;
       color: @com-text-color-normal;
     }
+
+    .task-affirm-inputitem {
+      .am-list-item {
+        padding-left: 0px;
+        margin-bottom: 0px;
+
+        .am-list-line {
+          padding-right: 35px;
+
+          .am-input-label {
+            width: 100px;
+            font-size: 14px;
+            color: #333333;
+          }
+
+          .am-input-control {
+            .h5numInput {
+              font-size: 14px;
+              text-align: right;
+            }
+          }
+        }
+      }
+    }
   }
 
   .task-btn-panel {