dev01 11 months ago
parent
commit
30a2bfa2fb
40 changed files with 5865 additions and 1846 deletions
  1. 16 0
      js/admin/standard.js
  2. 16 12
      js/component/common/imgList/index.js
  3. 77 73
      js/component/common/projectOperation/index.jsx
  4. 5 6
      js/component/common/projectOperation/newAddProject.jsx
  5. 34 32
      js/component/common/projectOperation/newEditProject.jsx
  6. 1 1
      js/component/dataDic.js
  7. 12 25
      js/component/manageCenter/components/checkProject/index.jsx
  8. 4 0
      js/component/manageCenter/customer/NEW/intentionCustomer/intentionCustomer.jsx
  9. 1 3
      js/component/manageCenter/customer/NEW/query/queryCutomer.jsx
  10. 601 576
      js/component/manageCenter/customer/customerManagement/adminCustomerStatistics.jsx
  11. 33 14
      js/component/manageCenter/customer/publicSummary/index.jsx
  12. 223 221
      js/component/manageCenter/customer/statistics/departmentStatistics/customerDetails.jsx
  13. 39 13
      js/component/manageCenter/customer/statistics/departmentStatistics/index.jsx
  14. 26 9
      js/component/manageCenter/financialManage/account/accountDetaillist.jsx
  15. 1008 37
      js/component/manageCenter/financialManage/account/accountDetails.jsx
  16. 3 0
      js/component/manageCenter/financialManage/account/accountDetails.less
  17. 29 6
      js/component/manageCenter/financialManage/account/accountReview.jsx
  18. 24 1
      js/component/manageCenter/financialManage/account/accountReview.less
  19. 1210 0
      js/component/manageCenter/financialManage/account/accountTotal.jsx
  20. 19 0
      js/component/manageCenter/financialManage/account/index.less
  21. 551 0
      js/component/manageCenter/financialManage/account/publicityAccount.jsx
  22. 18 0
      js/component/manageCenter/financialManage/content.jsx
  23. 4 4
      js/component/manageCenter/financialManage/distribute/public.less
  24. 1 2
      js/component/manageCenter/order/content.jsx
  25. 2 2
      js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js
  26. 328 318
      js/component/manageCenter/project/content.jsx
  27. 0 0
      js/component/manageCenter/project/summary/projecData.jsx
  28. 231 225
      js/component/manageCenter/project/task/businessManagement/checkInfor.jsx
  29. 74 101
      js/component/manageCenter/project/task/myTask.jsx
  30. 7 0
      js/component/manageCenter/set/business/businessProject.jsx
  31. 142 142
      js/component/manageCenter/set/content.jsx
  32. 64 0
      js/component/manageCenter/standard/content.jsx
  33. 112 0
      js/component/manageCenter/standard/content.less
  34. 802 0
      js/component/manageCenter/standard/stList/index.jsx
  35. 106 0
      js/component/manageCenter/standard/stList/index.less
  36. 22 21
      js/component/manageCenter/topTab.jsx
  37. 2 1
      package.json
  38. 6 0
      webpack.config.js
  39. 7 1
      webpack/entry.config.js
  40. 5 0
      yarn.lock

+ 16 - 0
js/admin/standard.js

@@ -0,0 +1,16 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import '../../css/base.less';
+
+import TopTab from '../component/manageCenter/topTab.jsx';
+import Footer from '../component/manageCenter/bottom.jsx';
+import Content from '../component/manageCenter/standard/content.jsx';
+
+ReactDOM.render(
+    <div className="wrap clearfix">
+        <TopTab active={'standard'}/>
+        <Content />
+        <Footer />
+    </div>,
+    document.getElementById('root')
+)

+ 16 - 12
js/component/common/imgList/index.js

@@ -72,6 +72,7 @@ class ImgList extends Component {
   }
 
   beforeUpload(file) {
+    const { isSupportPDF = false } = this.props
     const isLt2M = file.size / 1024 / 1024 < 20;
     if (!isLt2M) {
       message.error('文件大小不能超过 20MB!');
@@ -87,13 +88,16 @@ class ImgList extends Component {
       return isLt2M;
     } else {
       const isJPG = file.type.split('/');
-      // if (isJPG[0] !== 'image' && isJPG[0] !== "application") {
-      //   message.error('只能上传图片或pdf文件!');
-      //   return false;
-      // }
-      if (isJPG[0] !== 'image') {
-        message.error('只能上传图片!');
-        return false;
+      if (isSupportPDF) {
+        if (isJPG[0] !== 'image' && isJPG[0] !== "application") {
+          message.error('只能上传图片或pdf文件!');
+          return false;
+        }
+      } else {
+        if (isJPG[0] !== 'image') {
+          message.error('只能上传图片!');
+          return false;
+        }
       }
       if (isJPG && isLt2M) {
         // 用于计算当次选择的图片数量
@@ -196,11 +200,11 @@ class ImgList extends Component {
                   let url = file.response.data.indexOf("/upload") == -1
                     ? globalConfig.avatarHost + "/upload" + file.response.data
                     : file.response.data
-                  this.setState({
-                    isPDF: true,
-                    file: url,
-                  })
-                  // window.open(url)
+                  // this.setState({
+                  //   isPDF: true,
+                  //   file: url,
+                  // })
+                  window.open(url)
                 } else {
                   if (Object.keys(this.props.uploadConfig).length !== 0) {
                     //TODO 上传组件,查看图片临时解决方法,无法查看下一张

+ 77 - 73
js/component/common/projectOperation/index.jsx

@@ -324,7 +324,7 @@ class ProjectOperation extends Component {
     }
     if (this.state.displayFees === 'block') {
       infor.officialCost = this.state.officialCost //是否有官费
-      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? (this.state.officialCost === 1 ? this.state.costReduction : 0) : 0//是否有费减
+      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? this.state.costReduction : 0//是否有费减
       infor.patentType = this.state.patentType //专利类型
     }
     if (this.state.isIso) {
@@ -618,81 +618,85 @@ class ProjectOperation extends Component {
                   *
                 </span>
               </FormItem>}
-              <FormItem
-                className="half-item"
-                labelCol={{ span: 3 }}
-                wrapperCol={{ span: 14 }}
-                label="官费:"
-                style={{
-                  display: this.state.displayFees,
-                  marginLeft: "63px",
-                }}
-              >
-                {readOnly
-                  ? (this.state.officialCost === 1 ? '含官费' : this.state.officialCost === 0 ? '不含官费' : '')
-                  : <Radio.Group
-                    value={this.state.officialCost}
-                    onChange={(e) => {
-                      this.setState({ officialCost: e.target.value });
-                      if (e.target.value === 0) {
-                        this.setState({
-                          costReduction: ''
-                        })
-                      }
-                    }}
-                  >
-                    <Radio value={1}>含官费</Radio>
-                    <Radio value={0}>不含官费</Radio>
-                  </Radio.Group>}
-                <span style={{ color: "red", marginLeft: "8px" }}>
-                  *
-                </span>
-              </FormItem>
-              {
-                readOnly ?
-                  <FormItem
-                    className="half-item"
-                    labelCol={{ span: 3 }}
-                    wrapperCol={{ span: 14 }}
-                    label="费减:"
-                    style={{
-                      display: this.state.displayFees,
-                      marginLeft: "63px",
-                    }}
-                  >
-                    {this.state.costReduction === 1 ? '有费减' : this.state.costReduction === 0 ? '无费减' : ''}
-                    <span style={{ color: "red", marginLeft: "8px" }}>
-                      *
-                    </span>
-                  </FormItem>
-                  :
-                  (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1 &&
-                  <FormItem
-                    className="half-item"
-                    labelCol={{ span: 3 }}
-                    wrapperCol={{ span: 14 }}
-                    label="费减:"
-                    style={{
-                      display: this.state.displayFees,
-                      marginLeft: "63px",
-                    }}
-                  >
-                    {/*不含官费或者专利类型不为复审或者申请时置灰*/}
-                    <Radio.Group
-                      disabled={this.state.officialCost === 0 || (this.state.patentType !== 0 && this.state.patentType !== 2)}
-                      value={this.state.costReduction}
+              <div className="clearfix">
+                <FormItem
+                  className="half-item"
+                  labelCol={{ span: 3 }}
+                  wrapperCol={{ span: 14 }}
+                  label="官费:"
+                  style={{
+                    display: this.state.displayFees,
+                    marginLeft: "63px",
+                  }}
+                >
+                  {readOnly
+                    ? (this.state.officialCost === 1 ? '含官费' : this.state.officialCost === 0 ? '不含官费' : '')
+                    : <Radio.Group
+                      value={this.state.officialCost}
                       onChange={(e) => {
-                        this.setState({ costReduction: e.target.value });
+                        this.setState({ officialCost: e.target.value });
+                        if (e.target.value === 0) {
+                          this.setState({
+                            costReduction: ''
+                          })
+                        }
                       }}
                     >
-                      <Radio value={1}>有费减</Radio>
-                      <Radio value={0}>无费减</Radio>
-                    </Radio.Group>
-                    <span style={{ color: "red", marginLeft: "8px" }}>
-                      *
-                    </span>
-                  </FormItem>
-              }
+                      <Radio value={1}>含官费</Radio>
+                      <Radio value={0}>不含官费</Radio>
+                    </Radio.Group>}
+                  <span style={{ color: "red", marginLeft: "8px" }}>
+                    *
+                  </span>
+                </FormItem>
+              </div>
+              <div className="clearfix">
+                {
+                  readOnly ?
+                    <FormItem
+                      className="half-item"
+                      labelCol={{ span: 3 }}
+                      wrapperCol={{ span: 14 }}
+                      label="费减:"
+                      style={{
+                        display: this.state.displayFees,
+                        marginLeft: "63px",
+                      }}
+                    >
+                      {this.state.costReduction === 1 ? '有费减' : this.state.costReduction === 0 ? '无费减' : ''}
+                      <span style={{ color: "red", marginLeft: "8px" }}>
+                        *
+                      </span>
+                    </FormItem>
+                    :
+                    (this.state.patentType === 0 || this.state.patentType === 2) &&
+                    <FormItem
+                      className="half-item"
+                      labelCol={{ span: 3 }}
+                      wrapperCol={{ span: 14 }}
+                      label="费减:"
+                      style={{
+                        display: this.state.displayFees,
+                        marginLeft: "63px",
+                      }}
+                    >
+                      {/*不含官费或者专利类型不为复审或者申请时置灰*/}
+                      <Radio.Group
+                        disabled={this.state.patentType !== 0 && this.state.patentType !== 2}
+                        value={this.state.costReduction}
+                        onChange={(e) => {
+                          this.setState({ costReduction: e.target.value });
+                        }}
+                      >
+                        <Radio value={1}>有费减</Radio>
+                        <Radio value={0}>无费减</Radio>
+                      </Radio.Group>
+                      <span style={{ color: "red", marginLeft: "8px" }}>
+                        *
+                      </span>
+                    </FormItem>
+                }
+              </div>
               <FormItem
                 className="half-item"
                 {...formItemLayout}

+ 5 - 6
js/component/common/projectOperation/newAddProject.jsx

@@ -172,7 +172,7 @@ class NewAddProject extends Component {
         message.warning("请选择官费!");
         return false;
       }
-      if (this.state.costReduction === "" && (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1) {
+      if (this.state.costReduction === "" && (this.state.patentType === 0 || this.state.patentType === 2)) {
         message.warning("请选择费减!");
         return false;
       }
@@ -264,8 +264,7 @@ class NewAddProject extends Component {
     }
     if (this.state.displayFees === 'block') {
       infor.officialCost = this.state.officialCost //是否有官费
-      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ?
-        (this.state.officialCost === 1 ? this.state.costReduction : 0) : 0//是否有费减
+      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? this.state.costReduction : 0//是否有费减
       infor.patentType = this.state.patentType //专利类型
     }
     if (this.state.isIso) {
@@ -808,7 +807,7 @@ class NewAddProject extends Component {
                 </FormItem>
               </div>
               {
-                (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1 &&
+                (this.state.patentType === 0 || this.state.patentType === 2) &&
                 <div className="clearfix">
                   <FormItem
                     className="half-item"
@@ -818,9 +817,9 @@ class NewAddProject extends Component {
                       display: this.state.displayFees,
                     }}
                   >
-                    {/*不含官费或者专利类型不为复审或者申请时置灰*/}
+                    {/*专利类型不为复审或者申请时置灰*/}
                     <Radio.Group
-                      disabled={this.state.officialCost === 0 || (this.state.patentType !== 0 && this.state.patentType !== 2)}
+                      disabled={this.state.patentType !== 0 && this.state.patentType !== 2}
                       value={this.state.costReduction}
                       onChange={(e) => {
                         this.setState({ costReduction: e.target.value });

+ 34 - 32
js/component/common/projectOperation/newEditProject.jsx

@@ -227,7 +227,7 @@ class newEditProject extends Component {
     }
     if (this.state.displayFees === 'block') {
       infor.officialCost = this.state.officialCost //是否有官费
-      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? (this.state.officialCost === 1 ? this.state.costReduction : 0) : 0//是否有费减
+      infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? this.state.costReduction : 0//是否有费减
       infor.patentType = this.state.patentType //专利类型
     }
     if (this.state.isIso) {
@@ -676,24 +676,9 @@ class newEditProject extends Component {
                   </span>
                 </FormItem>
               </div>
-              {
-                readOnly ?
-                  <FormItem
-                    className="half-item"
-                    {...formItemLayout}
-                    label="费减:"
-                    style={{
-                      display: this.state.displayFees,
-                    }}
-                  >
-                    {this.state.costReduction === 1 ? '有费减' : this.state.costReduction === 0 ? '无费减' : ''}
-                    <span style={{ color: "red", marginLeft: "8px" }}>
-                      *
-                    </span>
-                  </FormItem>
-                  :
-                  (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1 &&
-                  <div className="clearfix">
+              <div className="clearfix">
+                {
+                  readOnly ?
                     <FormItem
                       className="half-item"
                       {...formItemLayout}
@@ -702,23 +687,40 @@ class newEditProject extends Component {
                         display: this.state.displayFees,
                       }}
                     >
-                      {/*不含官费或者专利类型不为复审或者申请时置灰*/}
-                      <Radio.Group
-                        disabled={this.state.officialCost === 0 || (this.state.patentType !== 0 && this.state.patentType !== 2)}
-                        value={this.state.costReduction}
-                        onChange={(e) => {
-                          this.setState({ costReduction: e.target.value });
-                        }}
-                      >
-                        <Radio value={1}>有费减</Radio>
-                        <Radio value={0}>无费减</Radio>
-                      </Radio.Group>
+                      {this.state.costReduction === 1 ? '有费减' : this.state.costReduction === 0 ? '无费减' : ''}
                       <span style={{ color: "red", marginLeft: "8px" }}>
                         *
                       </span>
                     </FormItem>
-                  </div>
-              }
+                    :
+                    (this.state.patentType === 0 || this.state.patentType === 2) &&
+                    <div className="clearfix">
+                      <FormItem
+                        className="half-item"
+                        {...formItemLayout}
+                        label="费减:"
+                        style={{
+                          display: this.state.displayFees,
+                        }}
+                      >
+                        {/*不含官费或者专利类型不为复审或者申请时置灰*/}
+                        <Radio.Group
+                          disabled={this.state.patentType !== 0 && this.state.patentType !== 2}
+                          value={this.state.costReduction}
+                          onChange={(e) => {
+                            this.setState({ costReduction: e.target.value });
+                          }}
+                        >
+                          <Radio value={1}>有费减</Radio>
+                          <Radio value={0}>无费减</Radio>
+                        </Radio.Group>
+                        <span style={{ color: "red", marginLeft: "8px" }}>
+                          *
+                        </span>
+                      </FormItem>
+                    </div>
+                }
+              </div>
               {
                 //审计
                 this.state.addProjectType == "3" &&

+ 1 - 1
js/component/dataDic.js

@@ -2374,7 +2374,7 @@ module.exports = {
     { value: "平台管理", key: "operate" },
     { value: "渠道管理", key: "channelList" },
     { value: "阿米巴", key: "amiba" },
-    { value: "查询管理", key: "povertyInquiry" }
+    { value: "查询管理", key: "povertyInquiry" },
   ],
   //意向进度
   intentProgress: [

+ 12 - 25
js/component/manageCenter/components/checkProject/index.jsx

@@ -160,7 +160,7 @@ class CheckProject extends Component {
                 {/*this.props.startType   0外包  1供应商(不需要审核)*/}
                 {/*record.status  0-未支付 1-待全款 ,2已全款  status=2的时候已经全款,按钮可以去掉了*/}
                 <Button disabled={
-                  !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && record.status !== 2)
+                  !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1 || parseInt(this.props.startType) === 2) && record.status !== 2)
                 } type="primary" onClick={() => {
                   this.setState({
                     previewPayVisible: true,
@@ -279,7 +279,7 @@ class CheckProject extends Component {
                   {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
                   {/*this.props.startType   0外包  1供应商(不需要审核)*/}
                   <Button disabled={
-                    !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
+                    !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1 || parseInt(this.props.startType) === 2) && this.props.dataSource.length === 0)
                   } type="primary" onClick={() => {
                     this.setState({
                       previewPayVisible: true,
@@ -396,7 +396,7 @@ class CheckProject extends Component {
                   {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
                   {
                     <Button disabled={
-                      !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
+                      !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1 || parseInt(this.props.startType) === 2) && this.props.dataSource.length === 0)
                     } type="primary" onClick={() => {
                       this.setState({
                         previewPayVisible: true,
@@ -531,7 +531,7 @@ class CheckProject extends Component {
                     {/*存在支付节点时不显示第三方的申请付款*/}
                     {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
                     <Button disabled={
-                      !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
+                      !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1 || parseInt(this.props.startType) === 2) && this.props.dataSource.length === 0)
                     } type="primary" onClick={() => {
                       this.setState({
                         previewPayVisible: true,
@@ -540,21 +540,6 @@ class CheckProject extends Component {
                     }}>
                       申请付款
                     </Button>
-                    {/*{record.officialCost === 1? <Button*/}
-                    {/*    type="primary"*/}
-                    {/*    style={{*/}
-                    {/*      marginLeft: '10px',*/}
-                    {/*    }}*/}
-                    {/*    disabled={!(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1))}*/}
-                    {/*    onClick={() => {*/}
-                    {/*      this.setState({*/}
-                    {/*        previewPayVisible: true,*/}
-                    {/*        previewPayInfor: record,*/}
-                    {/*        type: 2,*/}
-                    {/*      })*/}
-                    {/*    }}>*/}
-                    {/*  付官费*/}
-                    {/*</Button> : <div/>}*/}
                     {this.props.status === 2 && !this.props.isAuditPaymentGLY ? <Popconfirm
                       title="是否删除?"
                       onConfirm={() => {
@@ -664,7 +649,7 @@ class CheckProject extends Component {
                     {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
                     {
                       <Button disabled={
-                        !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
+                        !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1 || parseInt(this.props.startType) === 2) && this.props.dataSource.length === 0)
                       } type="primary" onClick={() => {
                         this.setState({
                           previewPayVisible: true,
@@ -797,7 +782,7 @@ class CheckProject extends Component {
                   {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
                   {
                     <Button disabled={
-                      !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
+                      !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1 || parseInt(this.props.startType) === 2) && this.props.dataSource.length === 0)
                     } type="primary" onClick={() => {
                       this.setState({
                         previewPayVisible: true,
@@ -951,12 +936,14 @@ class CheckProject extends Component {
                 <div>类型:</div>
               </div>
               {
-                parseInt(this.props.startType) === 0 ?
+                parseInt(this.props.startType) === 0
+                  ?
                   <div>
                     <div>外包(外包派单,不走总部)</div>
                     <div className="tipsText">提示高于总部价格,费用个人承担</div>
-                  </div> :
-                  <div>供应商信息(普通单)</div>
+                  </div> : parseInt(this.props.startType) === 1
+                    ?
+                    <div>供应商信息(普通单)</div> : <div>高质量申请</div>
               }
               <div style={{ marginLeft: 'auto' }}>
                 <span style={{ color: '#58a3ff' }}>项目状态:</span>{getProjectName(parseInt(this.props.projectStatus))}
@@ -1065,7 +1052,7 @@ class CheckProject extends Component {
               </div>
             </div>
             {/*如果是软著类或者专利类的专利申请,隐藏付款节点但当为外包类型时,无需隐藏*/}
-            {(!((this.props.projectType === 1 && this.props.patentType === 0) || this.props.projectType === 2)) || this.props.startType === 0 ? <div className="thirdParty">
+            {(!((this.props.projectType === 1 && this.props.patentType === 0) || this.props.projectType === 2)) || this.props.startType === 0 || this.props.startType === 2 ? <div className="thirdParty">
               <div>
                 <span className="title">
                   付款节点

+ 4 - 0
js/component/manageCenter/customer/NEW/intentionCustomer/intentionCustomer.jsx

@@ -36,6 +36,10 @@ const confirm = Modal.confirm;
 const IntentionCustomer = Form.create()(
   React.createClass({
     loadData(pageNo, apiUrl) {
+      // 新需求 除湖南和内蒙古外 不让其他省操作
+      if (adminData.province != "21" && adminData.province != "11") {
+        return
+      }
       this.setState({
         visitModul: false,
         loading: true,

+ 1 - 3
js/component/manageCenter/customer/NEW/query/queryCutomer.jsx

@@ -504,9 +504,7 @@ const QueryCustomer = React.createClass({
 				    >
 				        <Input />
 				    </AutoComplete>   */}
-              <Button type="primary" onClick={this.search}>
-                搜索
-              </Button>
+              <Button type="primary" onClick={this.search}>搜索</Button>
               <Button onClick={this.reset}>重置</Button>
             </div>
           </TabPane>

File diff suppressed because it is too large
+ 601 - 576
js/component/manageCenter/customer/customerManagement/adminCustomerStatistics.jsx


+ 33 - 14
js/component/manageCenter/customer/publicSummary/index.jsx

@@ -50,9 +50,15 @@ class PublicSummary extends Component {
           key: "userName",
           width: 150,
           fixed: "left",
-          render: (text) => {
+          render: (text, record) => {
             return (
-              <div>{text}</div>
+              <div>
+                <div>{text}</div>
+                <div style={{ color: ["red", "green"][record.signBills] }}>
+                  {["未签单", "已签单"][record.signBills]}
+                  {record.signBills == 1 && `(${record.signTime})`}
+                </div>
+              </div >
             );
           },
         },
@@ -126,12 +132,16 @@ class PublicSummary extends Component {
           title: "打卡时间",
           dataIndex: "clockInTimes",
           key: "clockInTimes",
-          width: 80,
+          width: 120,
           render: (text, record) => (
-            <span>
-              <div style={{ width: 70 }}>{text}</div>
+            <div>
+              {
+                text.split("\n").map(it =>
+                  <div>{it}</div>
+                )
+              }
               <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>
-            </span>
+            </div>
           )
         },
         {
@@ -242,11 +252,13 @@ class PublicSummary extends Component {
                 onClick={(e) => {
                   e.stopPropagation();
                   let arr1 = text || [];
-                  let arr2 = record.photoUrl || [];
+                  // let arr2 = record.photoUrl || [];
+                  let arr3 = record.list || [];
                   this.setState(
                     {
                       annexUrlArr: splitUrl(arr1, ",", globalConfig.avatarHost + "/upload"),
-                      photoUrlArr: splitUrl(arr2, ",", globalConfig.avatarHost + "/upload"),
+                      phoList: arr3,
+                      // photoUrlArr: splitUrl(arr2, ",", globalConfig.avatarHost + "/upload"),
                     }, () => {
                       this.setState({
                         imgListVisible: true,
@@ -1018,16 +1030,23 @@ class PublicSummary extends Component {
             footer=""
           >
             <div>
-              <div>申请附件</div>
+              <div style={{ paddingBottom: "20px", fontSize: "15px" }}>申请附件</div>
               <ImgList
                 fileList={this.state.annexUrlArr}
                 domId="publicStatistics"
               />
-              <div style={{ paddingTop: "35px" }}>打卡照片</div>
-              <ImgList
-                fileList={this.state.photoUrlArr}
-                domId="publicStatistics1"
-              />
+              <div style={{ padding: "20px 0", fontSize: "15px" }}>打卡照片</div>
+              {
+                this.state.phoList.map(it =>
+                  <div>
+                    <div>{it.clockInTime}</div>
+                    <ImgList
+                      fileList={splitUrl(it.photoUrl, ",", globalConfig.avatarHost + "/upload")}
+                      domId="publicStatistics1"
+                    />
+                  </div>
+                )
+              }
             </div>
           </Modal>
         ) : null}

+ 223 - 221
js/component/manageCenter/customer/statistics/departmentStatistics/customerDetails.jsx

@@ -4,242 +4,244 @@ import PropTypes from 'prop-types';
 import $ from "jquery/src/ajax";
 
 class CustomerDetails extends Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            loading: false,
-            columns: [{
-                title: '客户名称',
-                dataIndex: 'name',
-                key: 'name'
-            }, {
-                title: '来源',
-                dataIndex: 'sourceName',
-                key: 'sourceName',
-                width: 75,
-            }, {
-                title: '联系人(部门/职务)',
-                dataIndex: 'contacts',
-                key: 'contacts',
-                width: 155,
-                render: (text, record) => {
-                    if (!text) { return '' }
-                    let str = text + '(' + (record.contactsDep ? record.contactsDep : ' ') + '/' + (record.contactsPosition ? record.contactsPosition : ' ') + ')';
-                    return (
-                        <Tooltip title={str}>
-                            <div style={{
-                                maxWidth: '155px',
-                                overflow: 'hidden',
-                                textOverflow: "ellipsis",
-                                whiteSpace: 'nowrap',
-                            }}>{str}</div>
-                        </Tooltip>
-                    )
-                }
-            }, {
-                title: '联系人电话',
-                dataIndex: 'contactMobile',
-                key: 'contactMobile'
-            }, {
-                title: '创建时间',
-                dataIndex: 'createTime',
-                key: 'createTime',
-                width: 145,
-            }, {
-                title: '跟进时间',
-                dataIndex: 'followTime',
-                key: 'followTime',
-                width: 145,
-            }, {
-                title: '企业主营',
-                dataIndex: 'businessScope',
-                key: 'businessScope',
-                width: 200,
-                render: (text) => {
-                    return (
-                        <Tooltip title={text}>
-                            <div style={{
-                                maxWidth: '200px',
-                                overflow: 'hidden',
-                                textOverflow: "ellipsis",
-                                whiteSpace: 'nowrap',
-                            }}>{text}</div>
-                        </Tooltip>
-                    )
-                }
-            }, {
-                title: '意向合作',
-                dataIndex: 'intendedProject',
-                key: 'intendedProject',
-                width: 200,
-                render: (text) => {
-                    return (
-                        <Tooltip title={text}>
-                            <div style={{
-                                maxWidth: '200px',
-                                overflow: 'hidden',
-                                textOverflow: "ellipsis",
-                                whiteSpace: 'nowrap',
-                            }}>{text}</div>
-                        </Tooltip>
-                    )
-                }
-            },],
-            pagination: {
-                defaultCurrent: 1,
-                defaultPageSize: 10,
-                showQuickJumper: true,
-                pageSize: 10,
-                onChange: function (page) {
-                    this.loadData(page);
-                }.bind(this),
-                showTotal: function (total) {
-                    return '共' + total + '条数据';
-                }
-            }
+  constructor(props) {
+    super(props);
+    this.state = {
+      loading: false,
+      columns: [{
+        title: '客户名称',
+        dataIndex: 'name',
+        key: 'name'
+      }, {
+        title: '来源',
+        dataIndex: 'sourceName',
+        key: 'sourceName',
+        width: 75,
+      }, {
+        title: '联系人(部门/职务)',
+        dataIndex: 'contacts',
+        key: 'contacts',
+        width: 155,
+        render: (text, record) => {
+          if (!text) { return '' }
+          let str = text + '(' + (record.contactsDep ? record.contactsDep : ' ') + '/' + (record.contactsPosition ? record.contactsPosition : ' ') + ')';
+          return (
+            <Tooltip title={str}>
+              <div style={{
+                maxWidth: '155px',
+                overflow: 'hidden',
+                textOverflow: "ellipsis",
+                whiteSpace: 'nowrap',
+              }}>{str}</div>
+            </Tooltip>
+          )
+        }
+      }, {
+        title: '联系人电话',
+        dataIndex: 'contactMobile',
+        key: 'contactMobile'
+      }, {
+        title: '创建时间',
+        dataIndex: 'createTime',
+        key: 'createTime',
+        width: 145,
+      }, {
+        title: '跟进时间',
+        dataIndex: 'followTime',
+        key: 'followTime',
+        width: 145,
+      }, {
+        title: '企业主营',
+        dataIndex: 'businessScope',
+        key: 'businessScope',
+        width: 200,
+        render: (text) => {
+          return (
+            <Tooltip title={text}>
+              <div style={{
+                maxWidth: '200px',
+                overflow: 'hidden',
+                textOverflow: "ellipsis",
+                whiteSpace: 'nowrap',
+              }}>{text}</div>
+            </Tooltip>
+          )
+        }
+      }, {
+        title: '意向合作',
+        dataIndex: 'intendedProject',
+        key: 'intendedProject',
+        width: 200,
+        render: (text) => {
+          return (
+            <Tooltip title={text}>
+              <div style={{
+                maxWidth: '200px',
+                overflow: 'hidden',
+                textOverflow: "ellipsis",
+                whiteSpace: 'nowrap',
+              }}>{text}</div>
+            </Tooltip>
+          )
+        }
+      },],
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return '共' + total + '条数据';
         }
-        this.loadData = this.loadData.bind(this);
-        this.isView = this.isView.bind(this);
+      }
     }
+    this.loadData = this.loadData.bind(this);
+    this.isView = this.isView.bind(this);
+  }
 
-    componentDidMount() {
-        this.loadData();
-    }
+  componentDidMount() {
+    this.loadData();
+  }
 
-    loadData(pageNo) {
-        this.setState({
-            loading: true
-        })
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/admin/customer/selectAdminCustomerList",
-            data: {
-                pageNo: pageNo || 1,
-                pageSize: this.state.pagination.pageSize,
-                aid: this.props.aid,
-                type: this.props.type,                       //0 所有 1新增 2领取 3已签 4面谈
-                startTime: this.props.startTime,
-                endTime: this.props.endTime,
-            },
-            success: function (data) {
-                let theArr = [];
-                if (data.error.length || data.data.list == "") {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                    };
-                } else {
-                    for (let i = 0; i < data.data.list.length; i++) {
-                        let thisdata = data.data.list[i];
-                        thisdata.key = i;
-                        theArr.push(thisdata);
-                    };
-                    this.state.pagination.current = pageNo;
-                    this.state.pagination.total = data.data.totalCount;
-                };
-                if (!data.data.list.length) {
-                    this.state.pagination.current = 0
-                    this.state.pagination.total = 0
-                }
-                this.setState({
-                    dataSource: theArr,
-                    pagination: this.state.pagination,
-                });
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    }
-    // 判断是否有权限查看详情
-    isView() {
-        // 11=运营管理,12=总裁助理,13=总裁
-        let iskeep =
-            window.adminData.shiroList.indexOf("11") != -1 ||
-            window.adminData.shiroList.indexOf("12") != -1 ||
-            window.adminData.shiroList.indexOf("13") != -1
-        // 
-        let isName = this.props.aName.indexOf("曹津") != -1
-        if (iskeep && isName) {
-            return false
+  loadData(pageNo) {
+    this.setState({
+      loading: true
+    })
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/selectAdminCustomerList",
+      data: {
+        pageNo: pageNo || 1,
+        pageSize: this.state.pagination.pageSize,
+        aid: this.props.aid,
+        type: this.props.type,                       //0 所有 1新增 2领取 3已签 4面谈
+        startTime: this.props.startTime,
+        endTime: this.props.endTime,
+      },
+      success: function (data) {
+        let theArr = [];
+        if (data.error.length || data.data.list == "") {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          };
         } else {
-            return true
+          for (let i = 0; i < data.data.list.length; i++) {
+            let thisdata = data.data.list[i];
+            thisdata.key = i;
+            theArr.push(thisdata);
+          };
+          this.state.pagination.current = pageNo;
+          this.state.pagination.total = data.data.totalCount;
+        };
+        if (!data.data.list.length) {
+          this.state.pagination.current = 0
+          this.state.pagination.total = 0
         }
+        this.setState({
+          dataSource: theArr,
+          pagination: this.state.pagination,
+        });
+      }.bind(this),
+    }).always(function () {
+      this.setState({
+        loading: false
+      });
+    }.bind(this));
+  }
+  // 判断是否有权限查看详情
+  isView() {
+    // 11=运营管理,12=总裁助理,13=总裁
+    let iskeep =
+      window.adminData.shiroList.indexOf("11") != -1 ||
+      window.adminData.shiroList.indexOf("12") != -1 ||
+      window.adminData.shiroList.indexOf("13") != -1
+    // 
+    let isName = this.props.aName.indexOf("曹津") != -1
+    if (iskeep && isName) {
+      return false
+    } else {
+      return true
     }
+  }
 
-    render() {
-        return (
-            <div>
-                <Modal
-                    maskClosable={true}
-                    visible={this.props.visible}
-                    onOk={this.props.onCancel}
-                    onCancel={this.props.onCancel}
-                    width='1300px'
-                    title={
-                        <span>
-                            <span style={{ marginRight: '15px' }}>客户详情</span>
-                            <Tag color="#f50">{this.props.aName}</Tag>
-                            <Tag color="#108ee9">
-                                {
-                                    this.props.type === 0 ?
-                                        '私有客户' :
-                                        this.props.type === 1 ?
-                                            '外联客户' :
-                                            this.props.type === 2 ?
-                                                '签单客户' :
-                                                this.props.type === 3 ?
-                                                    '私有新增客户' :
-                                                    this.props.type === 4 ?
-                                                        '外联新增客户' :
-                                                        this.props.type === 5 ?
-                                                            '私有面谈客户' :
-                                                            this.props.type === 6 ?
-                                                                '外联面谈客户' :
-                                                                this.props.type === 7 ?
-                                                                    '私有领取客户' : ''
-                                }
-                            </Tag>
-                        </span>
-                    }
-                    footer=''
-                    className="admin-desc-content">
-                    <div className="patent-table">
-                        <Spin spinning={this.state.loading}>
-                            {
-                                this.isView()
-                                    ? <Table
-                                        columns={this.state.columns}
-                                        dataSource={this.state.dataSource}
-                                        pagination={this.state.pagination}
-                                    />
-                                    : <div style={{ padding: "40px 0", textAlign: "center", color: "red", fontSize: "20px" }}>
-                                        暂无权限查看
-                                    </div>
+  render() {
+    return (
+      <div>
+        <Modal
+          maskClosable={true}
+          visible={this.props.visible}
+          onOk={this.props.onCancel}
+          onCancel={this.props.onCancel}
+          width='1300px'
+          title={
+            <span>
+              <span style={{ marginRight: '15px' }}>客户详情</span>
+              <Tag color="#f50">{this.props.aName}</Tag>
+              <Tag color="#108ee9">
+                {
+                  this.props.type === 0 ?
+                    '私有客户' :
+                    this.props.type === 1 ?
+                      '外联客户' :
+                      this.props.type === 2 ?
+                        '签单客户' :
+                        this.props.type === 3 ?
+                          '私有新增客户' :
+                          this.props.type === 4 ?
+                            '外联新增客户' :
+                            this.props.type === 5 ?
+                              '私有面谈客户' :
+                              this.props.type === 6 ?
+                                '外联面谈客户' :
+                                this.props.type === 7 ?
+                                  '私有领取客户' :
+                                  this.props.type === 8 ?
+                                    '私有转交客户' : ''
+                }
+              </Tag>
+            </span>
+          }
+          footer=''
+          className="admin-desc-content">
+          <div className="patent-table">
+            <Spin spinning={this.state.loading}>
+              {
+                this.isView()
+                  ? <Table
+                    columns={this.state.columns}
+                    dataSource={this.state.dataSource}
+                    pagination={this.state.pagination}
+                  />
+                  : <div style={{ padding: "40px 0", textAlign: "center", color: "red", fontSize: "20px" }}>
+                    暂无权限查看
+                  </div>
 
-                            }
-                        </Spin>
-                    </div>
-                </Modal>
-            </div>
-        );
-    }
+              }
+            </Spin>
+          </div>
+        </Modal>
+      </div>
+    );
+  }
 }
 
 CustomerDetails.propTypes = {
-    visible: PropTypes.bool,
-    onCancel: PropTypes.func,
-    aid: PropTypes.number,      //员工ID
-    type: PropTypes.number,     //列表类型 客户总数 成交客户总数 新增客户数等等
-    startTime: PropTypes.string, //开始时间
-    endTime: PropTypes.string,   //结束时间
+  visible: PropTypes.bool,
+  onCancel: PropTypes.func,
+  aid: PropTypes.number,      //员工ID
+  type: PropTypes.number,     //列表类型 客户总数 成交客户总数 新增客户数等等
+  startTime: PropTypes.string, //开始时间
+  endTime: PropTypes.string,   //结束时间
 }
 
 CustomerDetails.defaultProps = {
-    visible: false,
-    onCancel: () => { }
+  visible: false,
+  onCancel: () => { }
 }
 
 export default CustomerDetails;

+ 39 - 13
js/component/manageCenter/customer/statistics/departmentStatistics/index.jsx

@@ -83,9 +83,9 @@ class DepartmentStatistics extends Component {
           },
         },
         {
-          title: "外联数",
-          dataIndex: "channelCount",
-          key: "channelCount",
+          title: "私有新增数",
+          dataIndex: "newCount",
+          key: "newCount",
           className: 'tableRowStyle',
           width: 120,
           render: (text, record) => {
@@ -97,9 +97,9 @@ class DepartmentStatistics extends Component {
                     e.stopPropagation();
                     this.setState({
                       customerVisible: true,
-                      aid: record.aid,
                       aName: record.aName,
-                      type: 1,
+                      aid: record.aid,
+                      type: 3,
                     })
                   }
                 }}>
@@ -109,9 +109,9 @@ class DepartmentStatistics extends Component {
           },
         },
         {
-          title: "签单数",
-          dataIndex: "signCount",
-          key: "signCount",
+          title: "私有转交数",
+          dataIndex: "transferCount",
+          key: "transferCount",
           className: 'tableRowStyle',
           width: 120,
           render: (text, record) => {
@@ -125,7 +125,7 @@ class DepartmentStatistics extends Component {
                       customerVisible: true,
                       aName: record.aName,
                       aid: record.aid,
-                      type: 2,
+                      type: 8,
                     })
                   }
                 }}>
@@ -135,9 +135,35 @@ class DepartmentStatistics extends Component {
           },
         },
         {
-          title: "私有新增数",
-          dataIndex: "newCount",
-          key: "newCount",
+          title: "外联数",
+          dataIndex: "channelCount",
+          key: "channelCount",
+          className: 'tableRowStyle',
+          width: 120,
+          render: (text, record) => {
+            return (
+              <div
+                className={record.aid ? 'receiveCount' : ''}
+                onClick={(e) => {
+                  if (record.aid) {
+                    e.stopPropagation();
+                    this.setState({
+                      customerVisible: true,
+                      aid: record.aid,
+                      aName: record.aName,
+                      type: 1,
+                    })
+                  }
+                }}>
+                {text}
+              </div>
+            );
+          },
+        },
+        {
+          title: "签单数",
+          dataIndex: "signCount",
+          key: "signCount",
           className: 'tableRowStyle',
           width: 120,
           render: (text, record) => {
@@ -151,7 +177,7 @@ class DepartmentStatistics extends Component {
                       customerVisible: true,
                       aName: record.aName,
                       aid: record.aid,
-                      type: 3,
+                      type: 2,
                     })
                   }
                 }}>

+ 26 - 9
js/component/manageCenter/financialManage/account/accountDetaillist.jsx

@@ -36,7 +36,9 @@ const AccountDetaillist = React.createClass({
       reason: "",
       checkData: {},
       aname: "",
-      searchValues: {}, // 列表筛选条件
+      searchValues: {
+        myType: "0"
+      }, // 列表筛选条件
       loading: false, //加载动画
       changeList: undefined, // 更改后的表格显示数据
       dataSource: [], // 列表数据
@@ -168,6 +170,7 @@ const AccountDetaillist = React.createClass({
           key: "status",
           render: (text, record) => {
             return (
+              (!!text || text == 0) &&
               <span style={{ color: accountStatus[text].color }}>
                 {accountStatus[text].label}
               </span>
@@ -375,10 +378,6 @@ const AccountDetaillist = React.createClass({
         aLink.click();
         document.body.removeChild(aLink);
       });
-
-
-
-
     }
   },
 
@@ -517,7 +516,9 @@ const AccountDetaillist = React.createClass({
   reset() {
     this.setState({
       aname: "",
-      searchValues: JSON.parse(JSON.stringify({})),
+      searchValues: {
+        myType: "0"
+      },
     }, () => {
       this.loadData();
     })
@@ -592,6 +593,22 @@ const AccountDetaillist = React.createClass({
         <Tabs defaultActiveKey="2" className="test">
           <TabPane tab="搜索" key="2">
             <div className="user-search" style={{ marginLeft: 10 }}>
+              <Select
+                style={{ width: 140 }}
+                placeholder=""
+                value={searchValues["myType"]
+                  ? searchValues["myType"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["myType"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">查看列表</Option>
+                <Option value="1">我的列表</Option>
+              </Select>
               <Input
                 placeholder="合同编号"
                 value={searchValues["contractNo"]
@@ -606,11 +623,11 @@ const AccountDetaillist = React.createClass({
               />
               <Input
                 placeholder="客户名称"
-                value={searchValues["username"]
-                  ? searchValues["username"]
+                value={searchValues["buyerName"]
+                  ? searchValues["buyerName"]
                   : ""}
                 onChange={(e) => {
-                  searchValues["username"] = e.target.value;
+                  searchValues["buyerName"] = e.target.value;
                   this.setState({
                     searchValues: searchValues,
                   });

File diff suppressed because it is too large
+ 1008 - 37
js/component/manageCenter/financialManage/account/accountDetails.jsx


+ 3 - 0
js/component/manageCenter/financialManage/account/accountDetails.less

@@ -0,0 +1,3 @@
+.ant-modal{
+  top: 50px;
+}

+ 29 - 6
js/component/manageCenter/financialManage/account/accountReview.jsx

@@ -40,7 +40,8 @@ const AccountReview = React.createClass({
       checkData: {},
       aname: "",
       searchValues: {
-        examineStatus: this.props.isOperate ? "1" : undefined
+        examineStatus: this.props.isOperate ? "1" : undefined,
+        roleType: this.props.isOperate ? undefined : "0"
       }, // 列表筛选条件
       loading: false, //加载动画
       changeList: undefined, // 更改后的表格显示数据
@@ -282,7 +283,7 @@ const AccountReview = React.createClass({
       pageNo: pageNo || 1,
       pageSize: pagination.pageSize,
       expenseMain: 1,
-      processStatus: this.props.isOperate ? 1 : 2,
+      processStatus: this.props.isOperate ? 1 : undefined,
     });
     $.ajax({
       method: "get",
@@ -527,7 +528,10 @@ const AccountReview = React.createClass({
   reset() {
     this.setState({
       aname: "",
-      searchValues: JSON.parse(JSON.stringify({ examineStatus: this.props.isOperate ? "1" : undefined })),
+      searchValues: {
+        examineStatus: this.props.isOperate ? "1" : undefined,
+        roleType: this.props.isOperate ? undefined : "0",
+      },
     }, () => {
       this.loadData();
     })
@@ -571,6 +575,25 @@ const AccountReview = React.createClass({
         <Tabs defaultActiveKey="2" className="test">
           <TabPane tab="搜索" key="2">
             <div className="user-search" style={{ marginLeft: 10 }}>
+              {
+                !this.props.isOperate &&
+                <Select
+                  style={{ width: 140 }}
+                  placeholder=""
+                  value={searchValues["roleType"]
+                    ? searchValues["roleType"]
+                    : undefined}
+                  onChange={(e) => {
+                    searchValues["roleType"] = e;
+                    this.setState({
+                      searchValues: searchValues,
+                    });
+                  }}
+                >
+                  <Option value="0">全部列表</Option>
+                  <Option value="1">我的列表</Option>
+                </Select>
+              }
               <Input
                 placeholder="合同编号"
                 value={searchValues["contractNo"]
@@ -631,7 +654,7 @@ const AccountReview = React.createClass({
               </AutoComplete>
               <Select
                 placeholder="所属部门"
-                style={{ width: 200, marginRight: 10 }}
+                style={{ width: 180, marginRight: 10 }}
                 value={searchValues["depId"]
                   ? searchValues["depId"]
                   : undefined}
@@ -648,7 +671,7 @@ const AccountReview = React.createClass({
               </Select>
               <Select
                 placeholder="申请部门"
-                style={{ width: 200, marginRight: 10 }}
+                style={{ width: 180, marginRight: 10 }}
                 value={searchValues["applyDep"]
                   ? searchValues["applyDep"]
                   : undefined}
@@ -665,7 +688,7 @@ const AccountReview = React.createClass({
               </Select>
               <Select
                 placeholder="支付部门"
-                style={{ width: 200, marginRight: 10 }}
+                style={{ width: 180, marginRight: 10 }}
                 value={searchValues["payDep"]
                   ? searchValues["payDep"]
                   : undefined}

+ 24 - 1
js/component/manageCenter/financialManage/account/accountReview.less

@@ -27,6 +27,19 @@
   table {
     font-size: 12px !important;
   }
+
+  table,
+  th,
+  td {
+    white-space: normal;
+
+  }
+
+  tr {
+    page-break-inside: avoid;
+  
+  }
+
 }
 
 .m_table {
@@ -76,7 +89,7 @@
     font-weight: bold;
     padding: 2px 5px;
     // border-bottom: 1px solid #000;
-    margin-bottom: 20px;
+    margin-bottom: 5px;
   }
 
   .ant-table-wrapper {
@@ -101,4 +114,14 @@
     background: transparent;
     text-align: center;
   }
+}
+
+.light {
+  background: #D3D3D3;
+
+}
+
+.dark {
+  background: white;
+
 }

File diff suppressed because it is too large
+ 1210 - 0
js/component/manageCenter/financialManage/account/accountTotal.jsx


+ 19 - 0
js/component/manageCenter/financialManage/account/index.less

@@ -0,0 +1,19 @@
+.receiveCount{
+  cursor: pointer;
+  padding: 6px;
+}
+.receiveCount:hover{
+  background: #0e77ca;
+  color: #FFFFFF;
+  font-weight: bolder;
+}
+
+.light {
+  background: #D3D3D3;
+
+}
+
+.dark {
+  background: white;
+
+}

+ 551 - 0
js/component/manageCenter/financialManage/account/publicityAccount.jsx

@@ -0,0 +1,551 @@
+import React from "react";
+import $ from "jquery/src/ajax";
+import moment from "moment";
+import {
+  Button,
+  Form,
+  Input,
+  Spin,
+  Table,
+  Select,
+  message,
+  Tabs,
+  DatePicker,
+  AutoComplete,
+  Modal,
+  Tooltip,
+  Tag,
+} from "antd";
+import { ChooseList } from "../../order/orderNew/chooseList";
+import { ShowModal, getAccountName, getSecondaryAccountName, getClockState } from "../../../tools"
+import { accountType, accountStatus } from "@/dataDic";
+import ShowModalDiv from "@/showModal.jsx";
+import OrderDetail from '../../order/orderNew/changeComponent/orderDetail';
+import './index.less';
+
+const FormItem = Form.Item;
+const { RangePicker } = DatePicker;
+const { TabPane } = Tabs;
+
+const PublicityAccount = React.createClass({
+
+  getInitialState() {
+    return {
+      searchValues: {
+        allStatus: "0"
+      }, // 列表筛选条件
+      loading: false, //加载动画
+      changeList: undefined, // 更改后的表格显示数据
+      dataSource: [], // 列表数据
+      departmentArr: [], // 部门信息
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      columns: [
+        {
+          title: "合同/客户",
+          dataIndex: "contractNo",
+          key: "contractNo",
+          width: 300,
+          render: (text, record) => {
+            return (
+              <span>
+                <span>{text}</span>
+                {" / " + record.buyerName}
+              </span>
+            );
+          },
+        },
+        {
+          title: "营销所属部门",
+          dataIndex: "depName",
+          key: "depName",
+          render: (text, record) => {
+            return (
+              <div>
+                {text}
+              </div>
+            );
+          },
+        },
+        {
+          title: "营销员",
+          dataIndex: "salesmanName",
+          key: "salesmanName",
+          render: (text, record) => {
+            return (
+              <div>
+                {text}
+              </div>
+            );
+          },
+        },
+        {
+          title: "公出/实际/超出(时)",
+          dataIndex: "maxDuration",
+          key: "maxDuration",
+          render: (text, record) => {
+            return (
+              <div>
+                {text + " / " + record.actualDuration + " / "}
+                <span style={{ color: record.exceedType == 1 && "red" }}>{record.exceedDuration}</span>
+              </div>
+            );
+          },
+        },
+        {
+          title: "合同总额/已收款(万元)",
+          dataIndex: "totalAmount",
+          key: "totalAmount",
+          render: (text, record) => {
+            return (
+              <div>
+                {text + " / " + record.settlementAmount}
+              </div>
+            );
+          },
+        },
+        {
+          title: "报销总额(元)",
+          dataIndex: "expenseAmount",
+          key: "expenseAmount",
+          render: (text, record) => {
+            return (
+              <div>
+                {text}
+              </div>
+            );
+          },
+        },
+        {
+          title: "已付成本(万元)",
+          dataIndex: "paymentAmount",
+          key: "paymentAmount",
+          render: (text, record) => {
+            return (
+              <div>
+                {text}
+              </div>
+            );
+          },
+        },
+        {
+          title: "报销人数/天数/报销次数",
+          dataIndex: "peopleCount",
+          key: "peopleCount",
+          render: (text, record) => {
+            return (
+              <div>
+                {text + " / " + record.days + " / " + record.expenseCount}
+              </div>
+            );
+          },
+        },
+        {
+          title: "报销未审核/驳回次数",
+          dataIndex: "notExamine",
+          key: "notExamine",
+          render: (text, record) => {
+            return (
+              <div>
+                {text + " / " + record.rejectCount}
+              </div>
+            );
+          },
+        },
+      ],
+    };
+  },
+
+  componentWillMount() {
+    this.departmentList();
+    this.loadData();
+  },
+
+  // 列表接口
+  loadData(pageNo) {
+    const { searchValues, pagination } = this.state;
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchValues, {
+      // pageNo: pageNo || 1,
+      // pageSize: pagination.pageSize,
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/release/releaseAndExpenseCount",
+      data: datas,
+      success: function (data) {
+        ShowModal(this);
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          if (data.data) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data && !data.data.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+              totalAmount: data.data.totalAmount,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+
+  departmentList() {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/organization/selectSuperId",
+      data: {},
+      success: function (data) {
+        let thedata = data.data;
+        let theArr = [];
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          thedata.map(function (item, index) {
+            theArr.push({
+              key: index,
+              name: item.name,
+              id: item.id
+            });
+          });
+        }
+        this.setState({
+          departmentArr: theArr
+        });
+      }.bind(this)
+    }).always(
+      function () {
+
+      }.bind(this)
+    );
+  },
+  // 搜索
+  search() {
+    this.loadData();
+  },
+  // 重置
+  reset() {
+    this.setState({
+      searchValues: {
+        allStatus: "0"
+      },
+    }, () => {
+      this.loadData();
+    })
+  },
+
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  },
+  // 导出
+  export() {
+    this.setState({
+      exportExecLoading: true
+    })
+    let loading = message.loading('加载中...');
+    let data = this.state.searchValues;
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/release/releaseAndExpenseCount/Export",
+      data,
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.download(data.data);
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(function () {
+      loading();
+      this.setState({
+        exportExecLoading: false
+      })
+    }.bind(this));
+  },
+  // 下载
+  download(fileName) {
+    window.location.href = globalConfig.context + "/open/download?fileName=" + fileName
+  },
+  // 清理缓存
+  getCountsClear() {
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/release/releaseAndExpenseCountClear",
+      data: {},
+      success: function (data) {
+        ShowModal(this);
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          message.success("清除成功!")
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+
+  followUp(e) {
+    this.setState({
+      aname: e
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+      },
+      success: function (data) {
+        let thedata = data.data || [];
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          fjlist: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+
+  selectF(value) {
+    const { searchValues, fjlist } = this.state;
+    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        aid: newdataSources.find((item) => item.name == value).id,
+      }),
+    });
+  },
+
+  render() {
+    const { searchValues, } = this.state
+    const dataSources = this.state.fjlist || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    return (
+      <div className="user-content">
+        <ShowModalDiv ShowModal={this.state.showModal} />
+        <div className="content-title" style={{ marginBottom: 10 }}>
+          <span style={{ fontWeight: 900, fontSize: 16 }}>公出&报销</span>
+        </div>
+        <Tabs defaultActiveKey="2" className="test">
+          <TabPane tab="搜索" key="2">
+            <div className="user-search" style={{ marginLeft: 10 }}>
+              <Input
+                placeholder="合同编号"
+                value={searchValues["contactNo"]
+                  ? searchValues["contactNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["contactNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Input
+                placeholder="客户名称"
+                value={searchValues["buyerName"]
+                  ? searchValues["buyerName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["buyerName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                placeholder="所属部门"
+                style={{ width: 200, marginRight: 10 }}
+                value={searchValues["depId"]
+                  ? searchValues["depId"]
+                  : undefined}
+                onChange={e => {
+                  searchValues["depId"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                {this.state.departmentArr.map(function (item) {
+                  return <Select.Option key={item.id}>{item.name}</Select.Option>;
+                })}
+              </Select>
+              <AutoComplete
+                className="certain-category-search"
+                dropdownClassName="certain-category-search-dropdown"
+                dropdownMatchSelectWidth={false}
+                style={{ width: 140 }}
+                dataSource={options}
+                placeholder="营销员名称"
+                value={this.state.aname}
+                onChange={this.followUp.bind(this)}
+                filterOption={true}
+                onSelect={this.selectF.bind(this)}
+              >
+                <Input />
+              </AutoComplete>
+              <Select
+                style={{ width: 140 }}
+                placeholder=""
+                value={searchValues["allStatus"]
+                  ? searchValues["allStatus"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["allStatus"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">全部公出</Option>
+                <Option value="1">未超出</Option>
+                <Option value="2">已超出</Option>
+              </Select>
+              <span>报销时间:</span>
+              <RangePicker
+                style={{ width: 300 }}
+                value={[
+                  searchValues.startTime ? moment(searchValues.startTime) : null,
+                  searchValues.endTime ? moment(searchValues.endTime) : null,
+                ]}
+                onChange={(data, dataString) => {
+                  this.setState({
+                    searchValues: Object.assign(searchValues, {
+                      startTime: dataString[0],
+                      endTime: dataString[1],
+                    }),
+                  });
+                }}
+              />
+              <Button
+                type="primary"
+                onClick={this.search}
+                style={{ margin: "0 10px" }}
+              >搜索</Button>
+              <Button onClick={this.reset}>重置</Button>
+              <Button
+                type="primary"
+                onClick={this.getCountsClear}
+                style={{ marginLeft: 10 }}
+              >清理缓存</Button>
+            </div>
+          </TabPane>
+          <TabPane tab="更改表格显示数据" key="1">
+            <div style={{ marginLeft: 10 }}>
+              <ChooseList
+                columns={this.state.columns}
+                changeFn={this.changeList}
+                changeList={this.state.changeList}
+                top={55}
+                margin={11}
+              />
+            </div>
+          </TabPane>
+          <TabPane tab="导出" key="3">
+            <div style={{ float: "left" }}>
+              <Button
+                type="primary"
+                loading={this.state.exportPendingLoading}
+                onClick={this.export}
+                style={{ margin: 10 }}
+              >
+                导出excel
+              </Button>
+            </div>
+          </TabPane>
+        </Tabs>
+        <div className="patent-table">
+          <Spin spinning={this.state.loading}>
+            <Table
+              bordered
+              columns={
+                this.state.changeList == undefined
+                  ? this.state.columns
+                  : this.state.changeList
+              }
+              dataSource={this.state.dataSource}
+              pagination={false}
+              size="small"
+            />
+          </Spin>
+        </div>
+      </div>
+    );
+  },
+});
+
+export default PublicityAccount;

+ 18 - 0
js/component/manageCenter/financialManage/content.jsx

@@ -325,6 +325,24 @@ class Content extends Component {
           });
         });
         break;
+      // 报销总计
+      case "accountTotal":
+        require.ensure([], () => {
+          const AccountTotal = require("./account/accountTotal").default;
+          this.setState({
+            component: <AccountTotal />,
+          });
+        });
+        break;
+      // 公出&报销
+      case "publicityAccount":
+        require.ensure([], () => {
+          const PublicityAccount = require("./account/publicityAccount").default;
+          this.setState({
+            component: <PublicityAccount />,
+          });
+        });
+        break;
       // 费用单列表
       case "accountlist":
         require.ensure([], () => {

+ 4 - 4
js/component/manageCenter/financialManage/distribute/public.less

@@ -44,10 +44,10 @@ button:focus,button:active{
 	margin-bottom: 10px;
 }
 table tr span,table tr td{
-    overflow: hidden;
-    white-space:nowrap; 
-    text-overflow:ellipsis; 
-    -o-text-overflow:ellipsis;
+    // overflow: hidden;
+    // white-space:nowrap; 
+    // text-overflow:ellipsis; 
+    // -o-text-overflow:ellipsis;
 }
 .patent-addNew {
     float: right;

+ 1 - 2
js/component/manageCenter/order/content.jsx

@@ -320,8 +320,7 @@ class Content extends Component {
         break;
       case "settlementManage":
         require.ensure([], () => {
-          const SettlementManage = require("./settlementOrder/settlementManage/settlementManagement")
-            .default;
+          const SettlementManage = require("./settlementOrder/settlementManage/settlementManagement").default;
           this.setState({
             component: <SettlementManage />,
           });

+ 2 - 2
js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js

@@ -485,7 +485,7 @@ class OrderDetail extends Component {
       labelCol: { span: 10 },
       wrapperCol: { span: 14 }
     };
-    const data = this.props.orderData;
+    const data = this.props.orderData || {};
     const propsList = this.props.contactList || [];
     const expandedRowRenderVip = (e) => {
       const data = e.splitList;
@@ -761,7 +761,7 @@ class OrderDetail extends Component {
           imgId={"orderImg1x"}
         //  getContentUrl = {this.getContentUrl}
         />
-        
+
         <Property
           patentStatus={data.patentStatus}
         />

+ 328 - 318
js/component/manageCenter/project/content.jsx

@@ -1,326 +1,336 @@
 import React, { Component } from 'react';
 import '../content.less';
 import LeftTab from '../leftTab';
-import {getMenu} from '../publicMenu.js'
+import { getMenu } from '../publicMenu.js'
 
 class Content extends Component {
-    constructor() {
-        super();
-        this.state = {
-            loading: false,
-            component: <div></div>,
-        };
-    }
-    componentWillMount() {
-        var ids=window.location.href.indexOf('rid=');
-        var idk=window.location.href.substr(ids+4);
-        var rid=idk.split('#');
-        let menu=getMenu(rid);
-        let curry;
-        if(menu[0].subMenus.length>0){
-        	curry=menu[0].subMenus[0].url.split('#');
-        }else{
-        	curry=menu[0].url.split('#');
-        };
-        if (window.location.hash) {
-            this.getKey(window.location.hash.substr(1));
-        } else {
-         this.getKey(curry[1]);
-        };
-    }
-    getKey(key) {
-        switch (key) {
-          //项目派单
-          case "projectAssignment":
-            require.ensure([], () => {
-              const ProjectAssignment = require("./project/projectAssignment")
-                .default;
-              this.setState({
-                component: <ProjectAssignment ApiUrl={""} />
-              });
-            });
-            break;
-          //项目查询
-          case "projectQuery":
-            require.ensure([], () => {
-              const ProjectQuery = require("./project/projectQuery")
-                .default;
-              this.setState({
-                component: <ProjectQuery ApiUrl={""} />
-              });
-            });
-            break;
-            //项目汇总表
-            case "highTech":
-                require.ensure([], () => {
-                    const ProjectQuery = require("./summary/highTech")
-                        .default;
-                    this.setState({
-                        component: <ProjectQuery ApiUrl={""} />
-                    });
-                });
-                break;
-             //项目统计
-            case "projecCount":
-                require.ensure([], () => {
-                    const ProjectQuery = require("./summary/projecCount")
-                        .default;
-                    this.setState({
-                        component: <ProjectQuery ApiUrl={""} />
-                    });
-                });
-                break;
-          //外包派单
-          case "zxsglyOutSourcingPaiDan":
-            require.ensure([], () => {
-              const ZxsglyOutSourcingPaiDan = require("./project/zxsglyOutSourcingPaiDan")
-                .default;
-              this.setState({
-                component: <ZxsglyOutSourcingPaiDan ApiUrl={""} />
-              });
-            });
-            break;
-          //外包任务派单
-          case "outsourceTaskAssignment":
-            require.ensure([], () => {
-              const OutsourceTaskAssignment = require("./project/outsourceTaskAssignment")
-                .default;
-              this.setState({
-                component: <OutsourceTaskAssignment ApiUrl={""} />
-              });
-            });
-            break;
-          //企业项目查询
-          case "enterpriseProjectQuery":
-            require.ensure([], () => {
-                const EnterpriseProjectQuery = require("./project/enterpriseProjectQuery")
-                    .default;
-                this.setState({
-                    component: <EnterpriseProjectQuery ApiUrl={""} />
-                });
-            });
-            break;
-            case "businessManagement":
-                require.ensure([], () => {
-                    const BusinessManagement = require("./task/businessManagement/index")
-                        .default;
-                    this.setState({
-                        component: <BusinessManagement ApiUrl={""} />
-                    });
-                });
-                break;
-          //任务查询
-          case "taskQuery":
-            require.ensure([], () => {
-              const TaskQuery = require("./task/taskQuery").default;
-              this.setState({
-                component: <TaskQuery ApiUrl={""} />
-              });
-            });
-            break;
-          case "taskQueryZxs":
-            require.ensure([], () => {
-              const TaskQuery = require("./task/taskQueryZxs").default;
-              this.setState({
-                component: <TaskQuery ApiUrl={""} />
-              });
-            });
-            break;
-          //任务派单
-          case "taskAssignment":
-            require.ensure([], () => {
-              const TaskAssignment = require("./task/taskAssignment")
-                .default;
-              this.setState({
-                component: <TaskAssignment ApiUrl={""} />
-              });
-            });
-            break;
-            //专利列表
-            case "patentList":
-                require.ensure([], () => {
-                    const PatentList = require("./patent/list")
-                        .default;
-                    this.setState({
-                        component: <PatentList />
-                    });
-                });
-                break;
-            //7天内提醒缴费专利列表
-            case "patentSevenList":
-                require.ensure([], () => {
-                    const PatentList = require("./patent/list")
-                        .default;
-                    this.setState({
-                        component: <PatentList status={5}/>
-                    });
-                });
-                break;
-            //15天内提醒缴费专利列表
-            case "patentFifteenList":
-                require.ensure([], () => {
-                    const PatentList = require("./patent/list")
-                        .default;
-                    this.setState({
-                        component: <PatentList status={4}/>
-                    });
-                });
-                break;
-            //30天内提醒缴费专利列表
-            case "patentThirtyList":
-                require.ensure([], () => {
-                    const PatentList = require("./patent/list")
-                        .default;
-                    this.setState({
-                        component: <PatentList status={3}/>
-                    });
-                });
-                break;
-            //60天内提醒缴费专利列表
-            case "patentSixtyList":
-                require.ensure([], () => {
-                    const PatentList = require("./patent/list")
-                        .default;
-                    this.setState({
-                        component: <PatentList status={2}/>
-                    });
-                });
-                break;
-            //90天内提醒缴费专利列表
-            case "patentNinetyList":
-                require.ensure([], () => {
-                    const PatentList = require("./patent/list")
-                        .default;
-                    this.setState({
-                        component: <PatentList status={1}/>
-                    });
-                });
-                break;
-        //专利成本审核列表(专利管理员查看)
-        case "patentCostList":
-            require.ensure([], () => {
-                const CostAuditList = require("../order/orderNew/costAuditList").default;
-                this.setState({
-                    component: <CostAuditList isPatentManager/>,
-                });
-            });
-            break;
-          //我的任务
-          case "myTask":
-            require.ensure([], () => {
-              const MyTask = require("./task/myTask").default;
-              this.setState({
-                component: <MyTask ApiUrl={""} />
-              });
-            });
-            break;
-          //我的任务
-          case "myTaskZxs":
-            require.ensure([], () => {
-              const MyTask = require("./task/myTaskZxs").default;
-              this.setState({
-                component: <MyTask ApiUrl={""} />
-              });
-            });
-            break;
-          //我的外包任务
-          case "myTaskOutsource":
-            require.ensure([], () => {
-              const MyTaskOutsource = require("./task/myTaskOutsource")
-                .default;
-              this.setState({
-                component: <MyTaskOutsource ApiUrl={""} />
-              });
-            });
-            break;
-          //我的外包任务
-          case "myTaskOutsourceZxs":
-            require.ensure([], () => {
-              const MyTaskOutsource = require("./task/myTaskOutsourceZxs")
-                .default;
-              this.setState({
-                component: <MyTaskOutsource ApiUrl={""} />
-              });
-            });
-            break;
-          //合同变更审核列表
-          case "contractChangeJsy":
-            require.ensure([], () => {
-              const ContractChangeJsy = require("./task/contractChangeJsy")
-                .default;
-              this.setState({
-                component: <ContractChangeJsy ApiUrl={""} />
-              });
-            });
-            break;
-          //合同变更审核列表
-          case "contractChangeJsjl":
-            require.ensure([], () => {
-              const ContractChangeJsjl = require("./task/contractChangeJsjl")
-                .default;
-              this.setState({
-                component: <ContractChangeJsjl ApiUrl={""} />
-              });
-            });
-            break;
-          //合同变更审核列表
-          case "contractChangeJszj":
-            require.ensure([], () => {
-              const ContractChangeJszj = require("./task/contractChangeJszj")
-                .default;
-              this.setState({
-                component: <ContractChangeJszj ApiUrl={""} />
-              });
-            });
-            break;
-            //付款申请驳回列表
-            case "payApplyReject":
-                require.ensure([], () => {
-                    const PayApplyReject = require("./task/payApplyReject/index")
-                        .default;
-                    this.setState({
-                        component: <PayApplyReject ApiUrl={""} />
-                    });
-                });
-                break;
-          //任务统计
-          case "taskCount":
-            require.ensure([], () => {
-              const TaskCount = require("./task/taskCount").default;
-              this.setState({
-                component: <TaskCount ApiUrl={""} />
-              });
-            });
-            break;
-          //我的任务统计
-          case "myTaskCount":
-            require.ensure([], () => {
-              const MyTaskCount = require("./task/myTaskCount").default;
-              this.setState({
-                component: <MyTaskCount ApiUrl={""} />
-              });
-            });
-            break;
-          default:
-            require.ensure([], () => {
-              const Module = require("../module").default;
-              this.setState({
-                component: <Module ApiUrl={""} />
-              });
-            });
-        };
-        window.location.hash = key;
-    }
-    render() {
-        return (
-            <div className="manage-content">
-                <LeftTab handlekey={this.getKey.bind(this)} />
-                <div className="content-right">
-                   {this.state.component}
-                </div>
-            </div>
-        )
-    }
+  constructor() {
+    super();
+    this.state = {
+      loading: false,
+      component: <div></div>,
+    };
+  }
+  componentWillMount() {
+    var ids = window.location.href.indexOf('rid=');
+    var idk = window.location.href.substr(ids + 4);
+    var rid = idk.split('#');
+    let menu = getMenu(rid);
+    let curry;
+    if (menu[0].subMenus.length > 0) {
+      curry = menu[0].subMenus[0].url.split('#');
+    } else {
+      curry = menu[0].url.split('#');
+    };
+    if (window.location.hash) {
+      this.getKey(window.location.hash.substr(1));
+    } else {
+      this.getKey(curry[1]);
+    };
+  }
+  getKey(key) {
+    switch (key) {
+      //项目派单
+      case "projectAssignment":
+        require.ensure([], () => {
+          const ProjectAssignment = require("./project/projectAssignment")
+            .default;
+          this.setState({
+            component: <ProjectAssignment ApiUrl={""} />
+          });
+        });
+        break;
+      //项目查询
+      case "projectQuery":
+        require.ensure([], () => {
+          const ProjectQuery = require("./project/projectQuery")
+            .default;
+          this.setState({
+            component: <ProjectQuery ApiUrl={""} />
+          });
+        });
+        break;
+      //项目汇总表
+      case "highTech":
+        require.ensure([], () => {
+          const ProjectQuery = require("./summary/highTech")
+            .default;
+          this.setState({
+            component: <ProjectQuery ApiUrl={""} />
+          });
+        });
+        break;
+      //项目统计
+      case "projecCount":
+        require.ensure([], () => {
+          const ProjectQuery = require("./summary/projecCount")
+            .default;
+          this.setState({
+            component: <ProjectQuery ApiUrl={""} />
+          });
+        });
+        break;
+      //项目数据
+      case "projecData":
+        require.ensure([], () => {
+          const ProjecData = require("./summary/projecData")
+            .default;
+          this.setState({
+            component: <ProjecData ApiUrl={""} />
+          });
+        });
+        break;
+      //外包派单
+      case "zxsglyOutSourcingPaiDan":
+        require.ensure([], () => {
+          const ZxsglyOutSourcingPaiDan = require("./project/zxsglyOutSourcingPaiDan")
+            .default;
+          this.setState({
+            component: <ZxsglyOutSourcingPaiDan ApiUrl={""} />
+          });
+        });
+        break;
+      //外包任务派单
+      case "outsourceTaskAssignment":
+        require.ensure([], () => {
+          const OutsourceTaskAssignment = require("./project/outsourceTaskAssignment")
+            .default;
+          this.setState({
+            component: <OutsourceTaskAssignment ApiUrl={""} />
+          });
+        });
+        break;
+      //企业项目查询
+      case "enterpriseProjectQuery":
+        require.ensure([], () => {
+          const EnterpriseProjectQuery = require("./project/enterpriseProjectQuery")
+            .default;
+          this.setState({
+            component: <EnterpriseProjectQuery ApiUrl={""} />
+          });
+        });
+        break;
+      case "businessManagement":
+        require.ensure([], () => {
+          const BusinessManagement = require("./task/businessManagement/index")
+            .default;
+          this.setState({
+            component: <BusinessManagement ApiUrl={""} />
+          });
+        });
+        break;
+      //任务查询
+      case "taskQuery":
+        require.ensure([], () => {
+          const TaskQuery = require("./task/taskQuery").default;
+          this.setState({
+            component: <TaskQuery ApiUrl={""} />
+          });
+        });
+        break;
+      case "taskQueryZxs":
+        require.ensure([], () => {
+          const TaskQuery = require("./task/taskQueryZxs").default;
+          this.setState({
+            component: <TaskQuery ApiUrl={""} />
+          });
+        });
+        break;
+      //任务派单
+      case "taskAssignment":
+        require.ensure([], () => {
+          const TaskAssignment = require("./task/taskAssignment")
+            .default;
+          this.setState({
+            component: <TaskAssignment ApiUrl={""} />
+          });
+        });
+        break;
+      //专利列表
+      case "patentList":
+        require.ensure([], () => {
+          const PatentList = require("./patent/list")
+            .default;
+          this.setState({
+            component: <PatentList />
+          });
+        });
+        break;
+      //7天内提醒缴费专利列表
+      case "patentSevenList":
+        require.ensure([], () => {
+          const PatentList = require("./patent/list")
+            .default;
+          this.setState({
+            component: <PatentList status={5} />
+          });
+        });
+        break;
+      //15天内提醒缴费专利列表
+      case "patentFifteenList":
+        require.ensure([], () => {
+          const PatentList = require("./patent/list")
+            .default;
+          this.setState({
+            component: <PatentList status={4} />
+          });
+        });
+        break;
+      //30天内提醒缴费专利列表
+      case "patentThirtyList":
+        require.ensure([], () => {
+          const PatentList = require("./patent/list")
+            .default;
+          this.setState({
+            component: <PatentList status={3} />
+          });
+        });
+        break;
+      //60天内提醒缴费专利列表
+      case "patentSixtyList":
+        require.ensure([], () => {
+          const PatentList = require("./patent/list")
+            .default;
+          this.setState({
+            component: <PatentList status={2} />
+          });
+        });
+        break;
+      //90天内提醒缴费专利列表
+      case "patentNinetyList":
+        require.ensure([], () => {
+          const PatentList = require("./patent/list")
+            .default;
+          this.setState({
+            component: <PatentList status={1} />
+          });
+        });
+        break;
+      //专利成本审核列表(专利管理员查看)
+      case "patentCostList":
+        require.ensure([], () => {
+          const CostAuditList = require("../order/orderNew/costAuditList").default;
+          this.setState({
+            component: <CostAuditList isPatentManager />,
+          });
+        });
+        break;
+      //我的任务
+      case "myTask":
+        require.ensure([], () => {
+          const MyTask = require("./task/myTask").default;
+          this.setState({
+            component: <MyTask ApiUrl={""} />
+          });
+        });
+        break;
+      //我的任务
+      case "myTaskZxs":
+        require.ensure([], () => {
+          const MyTask = require("./task/myTaskZxs").default;
+          this.setState({
+            component: <MyTask ApiUrl={""} />
+          });
+        });
+        break;
+      //我的外包任务
+      case "myTaskOutsource":
+        require.ensure([], () => {
+          const MyTaskOutsource = require("./task/myTaskOutsource")
+            .default;
+          this.setState({
+            component: <MyTaskOutsource ApiUrl={""} />
+          });
+        });
+        break;
+      //我的外包任务
+      case "myTaskOutsourceZxs":
+        require.ensure([], () => {
+          const MyTaskOutsource = require("./task/myTaskOutsourceZxs")
+            .default;
+          this.setState({
+            component: <MyTaskOutsource ApiUrl={""} />
+          });
+        });
+        break;
+      //合同变更审核列表
+      case "contractChangeJsy":
+        require.ensure([], () => {
+          const ContractChangeJsy = require("./task/contractChangeJsy")
+            .default;
+          this.setState({
+            component: <ContractChangeJsy ApiUrl={""} />
+          });
+        });
+        break;
+      //合同变更审核列表
+      case "contractChangeJsjl":
+        require.ensure([], () => {
+          const ContractChangeJsjl = require("./task/contractChangeJsjl")
+            .default;
+          this.setState({
+            component: <ContractChangeJsjl ApiUrl={""} />
+          });
+        });
+        break;
+      //合同变更审核列表
+      case "contractChangeJszj":
+        require.ensure([], () => {
+          const ContractChangeJszj = require("./task/contractChangeJszj")
+            .default;
+          this.setState({
+            component: <ContractChangeJszj ApiUrl={""} />
+          });
+        });
+        break;
+      //付款申请驳回列表
+      case "payApplyReject":
+        require.ensure([], () => {
+          const PayApplyReject = require("./task/payApplyReject/index")
+            .default;
+          this.setState({
+            component: <PayApplyReject ApiUrl={""} />
+          });
+        });
+        break;
+      //任务统计
+      case "taskCount":
+        require.ensure([], () => {
+          const TaskCount = require("./task/taskCount").default;
+          this.setState({
+            component: <TaskCount ApiUrl={""} />
+          });
+        });
+        break;
+      //我的任务统计
+      case "myTaskCount":
+        require.ensure([], () => {
+          const MyTaskCount = require("./task/myTaskCount").default;
+          this.setState({
+            component: <MyTaskCount ApiUrl={""} />
+          });
+        });
+        break;
+      default:
+        require.ensure([], () => {
+          const Module = require("../module").default;
+          this.setState({
+            component: <Module ApiUrl={""} />
+          });
+        });
+    };
+    window.location.hash = key;
+  }
+  render() {
+    return (
+      <div className="manage-content">
+        <LeftTab handlekey={this.getKey.bind(this)} />
+        <div className="content-right">
+          {this.state.component}
+        </div>
+      </div>
+    )
+  }
 }
 
 export default Content;

+ 0 - 0
js/component/manageCenter/project/summary/projecData.jsx


+ 231 - 225
js/component/manageCenter/project/task/businessManagement/checkInfor.jsx

@@ -1,247 +1,253 @@
-import React,{Component} from 'react';
-import {Button, Form, Input, message, Modal, Radio, Select, Spin} from "antd";
+import React, { Component } from 'react';
+import { Button, Form, Input, message, Modal, Radio, Select, Spin } from "antd";
 import {
-    getboutique,
+  getboutique,
 } from "@/tools";
 import $ from "jquery";
 
 const formItemLayout = {
-    labelCol: { span: 8 },
-    wrapperCol: { span: 14 }
+  labelCol: { span: 8 },
+  wrapperCol: { span: 14 }
 };
 
 const FormItem = Form.Item;
 
-class checkInfor extends Component{
-    constructor(props) {
-        super(props);
-        this.state={
-            loading: false,
-            patentType:props.infor ? props.infor.patentType : '',
-            officialCost:props.infor ? props.infor.officialCost : '',
-            costReduction:props.infor ? props.infor.costReduction : '',
+class checkInfor extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      loading: false,
+      patentType: props.infor ? props.infor.patentType : '',
+      officialCost: props.infor ? props.infor.officialCost : '',
+      costReduction: props.infor ? props.infor.costReduction : '',
 
-            patentTypeList:[],
-        }
-        this.onChange = this.onChange.bind(this);
-        this.getpatentTypeList = this.getpatentTypeList.bind(this);
+      patentTypeList: [],
     }
+    this.onChange = this.onChange.bind(this);
+    this.getpatentTypeList = this.getpatentTypeList.bind(this);
+  }
 
-    componentDidMount() {
-        this.getpatentTypeList();
-    }
+  componentDidMount() {
+    this.getpatentTypeList();
+  }
 
-    onChange() {
+  onChange() {
+    this.setState({
+      loading: true,
+    });
+    if (this.state.patentType === null) {
+      message.warning('请选择专利类型')
+      return
+    }
+    if ((this.state.patentType === 0 || this.state.patentType === 2) && isNaN(parseInt(this.state.costReduction))) {
+      message.warning('请选择是否有费减')
+      return;
+    }
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/newOrder/updateOrderTask",
+      data: {
+        id: this.props.infor.id, //项目ID
+        officialCost: this.state.officialCost, //是否有官费
+        costReduction: (this.state.patentType === 0 || this.state.patentType === 2) ? this.state.costReduction : 0, //是否有费减
+        patentType: this.state.patentType, //专利类型
+      },
+    }).done(
+      function (data) {
         this.setState({
-            loading: true,
+          loading: false,
         });
-        if(this.state.patentType === null){
-            message.warning('请选择专利类型')
-            return
+        if (!data.error.length) {
+          message.success("保存成功!");
+          this.props.onCancel();
+        } else {
+          message.warning(data.error[0].message);
         }
-        if((this.state.patentType === 0 || this.state.patentType === 2) && isNaN(parseInt(this.state.costReduction)) && this.state.officialCost === 1){
-            message.warning('请选择是否有费减')
-            return;
-        }
-        $.ajax({
-            method: "POST",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + "/api/admin/newOrder/updateOrderTask",
-            data: {
-                id: this.props.infor.id, //项目ID
-                officialCost: this.state.officialCost, //是否有官费
-                costReduction: (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1 ?this.state.costReduction : 0, //是否有费减
-                patentType: this.state.patentType, //专利类型
-            },
-        }).done(
-            function (data) {
-                this.setState({
-                    loading: false,
-                });
-                if (!data.error.length) {
-                    message.success("保存成功!");
-                    this.props.onCancel();
-                } else {
-                    message.warning(data.error[0].message);
-                }
-            }.bind(this)
-        );
-    }
+      }.bind(this)
+    );
+  }
 
-    getpatentTypeList() {
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            crossDomain: false,
-            url: globalConfig.context + '/api/admin/orderProject/getPatentType',
-            success: function (data) {
-                if (data.error.length === 0) {
-                    this.setState({
-                        patentTypeList:data.data
-                    })
-                }else{
-                    message.warning(data.error[0].message);
-                };
-            }.bind(this)
-        });
-    }
+  getpatentTypeList() {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + '/api/admin/orderProject/getPatentType',
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.setState({
+            patentTypeList: data.data
+          })
+        } else {
+          message.warning(data.error[0].message);
+        };
+      }.bind(this)
+    });
+  }
 
-    render() {
-        const {
-            commodityName,
-            commodityQuantity,
-            officialCost,
-            costReduction,
-            commodityPrice,
-            main,
-            taskComment,
-            ifCertificationFee,//是否包含认证费
-            declarationBatch,//批次
-            type,//项目类型  0 正常 1专利 2软著 3审计 4双软 5高新 6商标
-            patentType,//项目类型
-            patentTypeName,//项目类型名称
-        } = this.props.infor;
-        return (
-            <Modal
-                maskClosable={false}
-                visible={this.props.visible}
-                onOk={this.props.onCancel}
-                onCancel={this.props.onCancel}
-                width="800px"
-                title="项目任务详情"
-                footer=""
-                className="admin-desc-content"
+  render() {
+    const {
+      commodityName,
+      commodityQuantity,
+      officialCost,
+      costReduction,
+      commodityPrice,
+      main,
+      taskComment,
+      ifCertificationFee,//是否包含认证费
+      declarationBatch,//批次
+      type,//项目类型  0 正常 1专利 2软著 3审计 4双软 5高新 6商标
+      patentType,//项目类型
+      patentTypeName,//项目类型名称
+    } = this.props.infor;
+    return (
+      <Modal
+        maskClosable={false}
+        visible={this.props.visible}
+        onOk={this.props.onCancel}
+        onCancel={this.props.onCancel}
+        width="800px"
+        title="项目任务详情"
+        footer=""
+        className="admin-desc-content"
+      >
+        <Form layout="horizontal" id="demand-form">
+          <div className="clearfix">
+            <FormItem
+              className="half-item"
+              {...formItemLayout}
+              label="项目名称"
             >
-                <Form layout="horizontal" id="demand-form">
-                    <div className="clearfix">
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="项目名称"
-                        >
-                            <span>{commodityName}</span>
-                        </FormItem>
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="项目数量"
-                        >
-                            <span>{commodityQuantity}</span>
-                        </FormItem>
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="金额(万元)"
-                        >
-                            <span>{commodityPrice}</span>
-                        </FormItem>
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="主要项目"
-                        >
-                            <span>{getboutique(String(main))}</span>
-                        </FormItem>
-                        {type === 5 && <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="企业申报批次"
-                        >
-                                <span>
-                                    {
-                                        declarationBatch === 1 ? '第一批' :
-                                            declarationBatch === 2 ? '第二批' :
-                                                declarationBatch === 3 ? '第三批' :
-                                                    declarationBatch === 4 ? '第四批' : '未知'
-                                    }
-                                </span>
-                        </FormItem>}
-                        <div className="clearfix">
-                            <FormItem
-                                labelCol={{ span: 4 }}
-                                wrapperCol={{ span: 16 }}
-                                label="服务说明"
-                            >
-                                <span>{taskComment}</span>
-                            </FormItem>
-                        </div>
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="专利类型"
-                        >
-                            <Select
-                                placeholder="请选择专利类型"
-                                style={{ width: "200px" }}
-                                value={this.state.patentType}
-                                onChange={(e) => {
-                                    this.setState({ patentType: e });
-                                    if(e !== 0 && e !== 2){
-                                        this.setState({
-                                            costReduction: ''
-                                        })
-                                    }
-                                }}
-                            >
-                                {this.state.patentTypeList.map(function (v,k) {
-                                    return (
-                                        <Select.Option key={k} value={v.id}>{v.name}</Select.Option>
-                                    );
-                                })}
-                            </Select>
-                        </FormItem>
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="官费"
-                            style={{ display: this.state.displayFees }}
-                        >
-                            <Radio.Group
-                                value={this.state.officialCost}
-                                onChange={(e) => {
-                                    this.setState({ officialCost: e.target.value });
-                                    if(e.target.value === 0){
-                                        this.setState({
-                                            costReduction: ''
-                                        })
-                                    }
-                                }}
-                            >
-                                <Radio value={1}>含官费</Radio>
-                                <Radio value={0}>不含官费</Radio>
-                            </Radio.Group>
-                        </FormItem>
-                        <FormItem
-                            className="half-item"
-                            {...formItemLayout}
-                            label="费减"
-                            style={{ display: this.state.displayFees }}
-                        >
-                            <Radio.Group
-                                disabled={this.state.officialCost === 0 || (this.state.patentType !== 0 && this.state.patentType !== 2)}
-                                value={this.state.costReduction}
-                                onChange={(e) => {
-                                    this.setState({ costReduction: e.target.value });
-                                }}
-                            >
-                                <Radio value={1}>有费减</Radio>
-                                <Radio value={0}>无费减</Radio>
-                            </Radio.Group>
-                        </FormItem>
-                    </div>
-                    <div style={{color:'#f00',paddingLeft: '67px',paddingBottom: '10px'}}>
-                        注意:技术员已发起二次确认,请核对本次费用情况,填写有误,将影响到成本支付情况
-                    </div>
-                    <div style={{display:'flex',justifyContent:"center"}}>
-                        <Button type='primary' onClick={()=>{
-                            this.onChange();
-                        }}>确认核对</Button>
-                    </div>
-                </Form>
-            </Modal>
-        );
-    }
+              <span>{commodityName}</span>
+            </FormItem>
+            <FormItem
+              className="half-item"
+              {...formItemLayout}
+              label="项目数量"
+            >
+              <span>{commodityQuantity}</span>
+            </FormItem>
+            <FormItem
+              className="half-item"
+              {...formItemLayout}
+              label="金额(万元)"
+            >
+              <span>{commodityPrice}</span>
+            </FormItem>
+            <FormItem
+              className="half-item"
+              {...formItemLayout}
+              label="主要项目"
+            >
+              <span>{getboutique(String(main))}</span>
+            </FormItem>
+            {type === 5 && <FormItem
+              className="half-item"
+              {...formItemLayout}
+              label="企业申报批次"
+            >
+              <span>
+                {
+                  declarationBatch === 1 ? '第一批' :
+                    declarationBatch === 2 ? '第二批' :
+                      declarationBatch === 3 ? '第三批' :
+                        declarationBatch === 4 ? '第四批' : '未知'
+                }
+              </span>
+            </FormItem>}
+            <div className="clearfix">
+              <FormItem
+                labelCol={{ span: 4 }}
+                wrapperCol={{ span: 16 }}
+                label="服务说明"
+              >
+                <span>{taskComment}</span>
+              </FormItem>
+            </div>
+            <div className="clearfix">
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="专利类型"
+              >
+                <Select
+                  placeholder="请选择专利类型"
+                  style={{ width: "200px" }}
+                  value={this.state.patentType}
+                  onChange={(e) => {
+                    this.setState({ patentType: e });
+                    if (e !== 0 && e !== 2) {
+                      this.setState({
+                        costReduction: ''
+                      })
+                    }
+                  }}
+                >
+                  {this.state.patentTypeList.map(function (v, k) {
+                    return (
+                      <Select.Option key={k} value={v.id}>{v.name}</Select.Option>
+                    );
+                  })}
+                </Select>
+              </FormItem>
+            </div>
+            <div className="clearfix">
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="官费"
+                style={{ display: this.state.displayFees }}
+              >
+                <Radio.Group
+                  value={this.state.officialCost}
+                  onChange={(e) => {
+                    this.setState({ officialCost: e.target.value });
+                    if (e.target.value === 0) {
+                      this.setState({
+                        costReduction: ''
+                      })
+                    }
+                  }}
+                >
+                  <Radio value={1}>含官费</Radio>
+                  <Radio value={0}>不含官费</Radio>
+                </Radio.Group>
+              </FormItem>
+            </div>
+            <div className="clearfix">
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="费减"
+                style={{ display: this.state.displayFees }}
+              >
+                <Radio.Group
+                  disabled={this.state.patentType !== 0 && this.state.patentType !== 2}
+                  value={this.state.costReduction}
+                  onChange={(e) => {
+                    this.setState({ costReduction: e.target.value });
+                  }}
+                >
+                  <Radio value={1}>有费减</Radio>
+                  <Radio value={0}>无费减</Radio>
+                </Radio.Group>
+              </FormItem>
+            </div>
+          </div>
+          <div style={{ color: '#f00', paddingLeft: '67px', paddingBottom: '10px' }}>
+            注意:技术员已发起二次确认,请核对本次费用情况,填写有误,将影响到成本支付情况
+          </div>
+          <div style={{ display: 'flex', justifyContent: "center" }}>
+            <Button type='primary' onClick={() => {
+              this.onChange();
+            }}>确认核对</Button>
+          </div>
+        </Form>
+      </Modal>
+    );
+  }
 }
 
 export default checkInfor;

+ 74 - 101
js/component/manageCenter/project/task/myTask.jsx

@@ -138,6 +138,7 @@ const Task = React.createClass({
           this.state.outsourceStatusSearch >= 999
             ? undefined
             : this.state.outsourceStatusSearch, //外包状态搜索
+        projectName: this.state.projectName, // 项目名称
       },
       success: function (data) {
         ShowModal(this)
@@ -169,6 +170,8 @@ const Task = React.createClass({
         }
         this.setState({
           dataSource: theArr,
+          totalAmount: data.data.totalAmount || 0,
+          totalNumber: data.data.totalNumber || 0,
           pagination: this.state.pagination,
         })
       }.bind(this),
@@ -361,7 +364,7 @@ const Task = React.createClass({
           render: (text, record) => {
             if (record.outsourceType === 1) {
               return '供应商'
-            } else {
+            } else if ((record.outsourceType === 0)) {
               if (text === 0) {
                 return <Tag color="#f50">外包待审核</Tag>
               } else if (text === 1) {
@@ -371,6 +374,10 @@ const Task = React.createClass({
               } else {
                 return <div style={{ textAlign: 'center' }}>/</div>
               }
+            } else if ((record.outsourceType === 2)) {
+              return '高质量申请'
+            } else {
+              return <div style={{ textAlign: 'center' }}>/</div>
             }
           },
         },
@@ -1874,30 +1881,42 @@ const Task = React.createClass({
   },
   //导出
   exportExec() {
-    let departmentName = '',
-      depart = this.state.departmentArr || []
-    depart.map((item) => {
-      if (this.state.departmentId == item.id) {
-        departmentName = item.name
-        return
-      }
-    })
-    // 导出
-    let categoryName = '',
-      category = this.state.categoryArr || []
-    category.map((item) => {
-      if (this.state.categoryId == item.id) {
-        categoryName = item.name
-        return
-      }
-    })
+    // let departmentName = '',
+    //   depart = this.state.departmentArr || []
+    // depart.map((item) => {
+    //   if (this.state.departmentId == item.id) {
+    //     departmentName = item.name
+    //     return
+    //   }
+    // })
+    // // 导出
+    // let categoryName = '',
+    //   category = this.state.categoryArr || []
+    // category.map((item) => {
+    //   if (this.state.categoryId == item.id) {
+    //     categoryName = item.name
+    //     return
+    //   }
+    // })
     let data = {
-      departmentId: this.state.departmentId,
-      departmentName: departmentName,
-      salesName: this.state.orderRefundSearch, //订单负责人
-      startTime: this.state.releaseDate[0],
-      endTime: this.state.releaseDate[1],
-      grantStatus: this.state.grantStatus,
+      orderNo: this.state.orderNoSearch, //订单编号
+      contractNo: this.state.contractNoSearch, //合同编号
+      name: this.state.nameSearch, //客户名称
+      taskId: this.state.taskNoSearch, //项目编号
+      cid: this.state.category,//项目分类
+      deps: this.state.departmenttSearch, //订单部门
+      taskStatus: this.state.taskStatuSearch, //项目状态
+      approval: this.state.approvalSearch, //特批状态搜索
+      outsourceStatus:
+        this.state.outsourceStatusSearch >= 999
+          ? undefined
+          : this.state.outsourceStatusSearch, //外包状态搜索
+      projectName: this.state.projectName, // 项目名称
+    }
+    for (let key in data) {
+      if (!data[key]) {
+        delete data[key]
+      }
     }
     window.location.href =
       globalConfig.context +
@@ -2195,6 +2214,7 @@ const Task = React.createClass({
         approvalSearch: undefined,
         category: undefined,
         outsourceStatusSearch: [],
+        projectName: undefined,
       })
     }
     this.setState({
@@ -2355,8 +2375,6 @@ const Task = React.createClass({
     })
   },
   timeDetail(record) {
-    console.log(record)
-
     this.setState({
       loading: true,
       recordHour: record.hours,
@@ -2377,7 +2395,6 @@ const Task = React.createClass({
           this.setState({
             dataSourceTime: data.data,
           })
-          console.log(this.state.dataSourceTime)
         }
       }.bind(this),
     }).always(
@@ -2409,7 +2426,7 @@ const Task = React.createClass({
   },
   // 项目发起外包
   sureOut(startType) {
-    if (this.state.startType !== 0 && this.state.startType !== 1) {
+    if (this.state.startType !== 0 && this.state.startType !== 1 && this.state.startType !== 2) {
       message.warning('请选择类型')
       return
     }
@@ -2439,7 +2456,7 @@ const Task = React.createClass({
     //refundStatus   0-待审核 ,1-审核通过,2-审核拒绝
     //类型为供应商时不需要发起原因
     //this.state.startType 0外包  1供应商
-    if (!this.state.reason && (this.state.refundStatus === 2 || typeof this.state.refundStatus === 'undefined') && this.state.startType !== 1) {
+    if (!this.state.reason && (this.state.refundStatus === 2 || typeof this.state.refundStatus === 'undefined') && this.state.startType == 0) {
       message.warning('发起原因不能为空')
       return
     }
@@ -2507,7 +2524,6 @@ const Task = React.createClass({
               ? _this.getUrl(_this.state.pictureUrl)
               : ''
           }
-
           ajaxObj = $.ajax({
             method: 'POST',
             dataType: 'json',
@@ -3890,6 +3906,13 @@ const Task = React.createClass({
                 <Select.Option key={2}>外包审核驳回</Select.Option>
                 <Select.Option key={999}>全部</Select.Option>
               </Select>
+              <Input
+                placeholder="请输入项目名称"
+                value={this.state.projectName}
+                onChange={(e) => {
+                  this.setState({ projectName: e.target.value })
+                }}
+              />
               <Button type="primary" onClick={this.search}>
                 搜索
               </Button>
@@ -3963,6 +3986,15 @@ const Task = React.createClass({
               size={'small'}
             />
           </Spin>
+          <p
+            style={{ display: "inline-block", fontSize: "14px", color: "red" }}
+          >
+            {
+              <span style={{ marginRight: 10 }}>
+                {`累计:${this.state.totalNumber}个,共${this.state.totalAmount}万元`}
+              </span>
+            }
+          </p>
         </div>
         <Assign
           title="项目"
@@ -5000,6 +5032,7 @@ const Task = React.createClass({
                           >
                             <Radio value={0}>外包(不走总部)</Radio>
                             <Radio value={1}>供应商信息</Radio>
+                            {adminData.isTechTransfer && <Radio value={2}>高质量申请</Radio>}
                           </Radio.Group>
                         </FormItem>
                       </div>
@@ -5070,7 +5103,7 @@ const Task = React.createClass({
                         </FormItem>
                       </div>
                       {/*外包类型无此选项*/}
-                      {this.state.startType !== 0 && this.state.projectType === 1 ?
+                      {this.state.startType === 1 && this.state.projectType === 1 ?
                         <div className="clearfix">
                           <FormItem
                             className="half-item"
@@ -5181,7 +5214,7 @@ const Task = React.createClass({
                       {/*this.state.startType 0外包 1供应商*/}
                       <div
                         style={{
-                          display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
+                          display: (this.state.startType === 0 || this.state.startType === 2) ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
                         }}
                       >
                         <span
@@ -5216,7 +5249,7 @@ const Task = React.createClass({
                       <div
                         className="clearfix"
                         style={{
-                          display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
+                          display: (this.state.startType === 0 || this.state.startType === 2) ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
                         }}
                       >
                         <Spin spinning={this.state.payNodeLoading}>
@@ -5260,36 +5293,12 @@ const Task = React.createClass({
                           />
                         </FormItem>
                       </div>
-                      {/*<div className="clearfix">
-                                          <FormItem className="half-item"
-                                              {...formItemLayout}
-                                              label="上传协议文件" style={{height:"auto"}}>
-                                               <Upload header={{authorization: 'authorization-text'}} action={globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"}
-                                                      data={(e)=>{
-                                                          return {
-                                                              'sign': e.name.substring(0,e.name.lastIndexOf("."))
-                                                          }
-                                                      }}
-                                                      fileList={this.state.fileUrl}
-                                                      onChange={(e)=>{
-                                                          this.setState({
-                                                              attachmentUrl:e.fileList,
-                                                              fileUrl:e.fileList
-                                                          })
-                                                      }}>
-                                                  {fileUrl.length>1?null:<Button>
-                                                  <Icon type="upload" /> 点击上传
-                                                  </Button>}
-                                              </Upload>
-                                              <span className="tip" style={{display:"inline-block"}}>支持文件格式: doc,excel,ppt</span>
-                                          </FormItem>
-                                      </div>*/}
                       <p
                         className="tip"
                         style={{
                           paddingBottom: '12px',
                           width: '240px',
-                          marginLeft: '145px',
+                          marginLeft: '195px',
                           color: 'red',
                         }}
                       >
@@ -5313,7 +5322,7 @@ const Task = React.createClass({
                       </div>
                       {/*只有审核拒绝和第一次发起外包的时候才要填写发起原因   如果是类型为供应商则不需要发起原因*/}
                       {/*this.state.startType  0外包  1供应商*/}
-                      {(typeof this.state.refundStatus === 'undefined' || this.state.refundStatus === 2) && this.state.startType !== 1 ?
+                      {(typeof this.state.refundStatus === 'undefined' || this.state.refundStatus === 2) && this.state.startType == 0 ?
                         <div className="clearfix">
                           <FormItem
                             className="half-item"
@@ -5465,43 +5474,6 @@ const Task = React.createClass({
                             ))
                           }
                         </div>
-                        {/*  <div*/}
-                        {/*    className="clearfix"*/}
-                        {/*    style={{*/}
-                        {/*      display: this.state.refundStatus == 0 ? 'none' : 'block',*/}
-                        {/*    }}*/}
-                        {/*  >*/}
-                        {/*    <FormItem*/}
-                        {/*      className="half-item"*/}
-                        {/*      {...formItemLayout}*/}
-                        {/*      label="审核意见"*/}
-                        {/*    >*/}
-                        {/*      <span>{this.state.remarks}</span>*/}
-                        {/*    </FormItem>*/}
-                        {/*  </div>*/}
-                        {/*  {parseInt(this.state.startType) !== 1 ?<div className="clearfix">*/}
-                        {/*    <FormItem*/}
-                        {/*      className="half-item"*/}
-                        {/*      {...formItemLayout}*/}
-                        {/*      label="审核结果"*/}
-                        {/*    >*/}
-                        {/*      <span>{getRefundStatus(this.state.refundStatus)}</span>*/}
-                        {/*    </FormItem>*/}
-                        {/*  </div> : <div/>}*/}
-                        {/*  <div*/}
-                        {/*    className="clearfix"*/}
-                        {/*    style={{*/}
-                        {/*      display: this.state.refundStatus == 0 ? 'none' : 'block',*/}
-                        {/*    }}*/}
-                        {/*  >*/}
-                        {/*    <FormItem*/}
-                        {/*      className="half-item"*/}
-                        {/*      {...formItemLayout}*/}
-                        {/*      label="审核时间"*/}
-                        {/*    >*/}
-                        {/*      <span>{this.state.auditTimes}</span>*/}
-                        {/*    </FormItem>*/}
-                        {/*  </div>*/}
                       </div>
                     ) : (
                       ''
@@ -6319,6 +6291,7 @@ const Task = React.createClass({
                           >
                             <Radio value={0}>外包(不走总部)</Radio>
                             <Radio value={1}>供应商信息</Radio>
+                            {adminData.isTechTransfer && <Radio value={2}>高质量申请</Radio>}
                           </Radio.Group>
                         </FormItem>
                       </div>
@@ -6388,7 +6361,7 @@ const Task = React.createClass({
                           </Radio.Group>
                         </FormItem>
                       </div>
-                      {this.state.startType !== 0 && this.state.projectType === 1 ?
+                      {this.state.startType === 1 && this.state.projectType === 1 ?
                         <div className="clearfix">
                           <FormItem
                             className="half-item"
@@ -6502,7 +6475,7 @@ const Task = React.createClass({
                       {/*如果是软著类或者专利类的专利申请,隐藏付款节点*/}
                       <div
                         style={{
-                          display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
+                          display: (this.state.startType === 0 || this.state.startType === 2) ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
                         }}
                       >
                         <span
@@ -6537,7 +6510,7 @@ const Task = React.createClass({
                       <div
                         className="clearfix"
                         style={{
-                          display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
+                          display: (this.state.startType === 0 || this.state.startType === 2) ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2 ? 'none' : 'block'),  //0正常 1专利 2软著 3审计
                         }}
                       >
                         <Spin spinning={this.state.payNodeLoading}>
@@ -6612,7 +6585,7 @@ const Task = React.createClass({
                       </div>
                       {/*只有审核拒绝和第一次发起外包的时候才要填写发起原因 如果是类型为供应商则不需要发起原因*/}
                       {/*this.state.startType  0外包  1供应商*/}
-                      {(typeof this.state.refundStatus === 'undefined' || this.state.refundStatus === 2) && this.state.startType !== 1 ?
+                      {(typeof this.state.refundStatus === 'undefined' || this.state.refundStatus === 2) && this.state.startType == 0 ?
                         <div className="clearfix">
                           <FormItem
                             className="half-item"
@@ -6841,7 +6814,7 @@ const Task = React.createClass({
             ThirdId={this.state.ThirdId}
             tid={this.state.tid}
             patentType={this.state.patentType}
-            projectType={this.state.startType === 0 ? 0 : this.state.projectType}
+            projectType={(this.state.startType === 0 || this.state.startType === 2) ? 0 : this.state.projectType}
             realProjectType={this.state.projectType}       //真实的项目类型
             startType={this.state.startType}               //项目类型 0外包  1供应商
             thirdCompanyName={this.state.thirdCompanyName}

+ 7 - 0
js/component/manageCenter/set/business/businessProject.jsx

@@ -609,6 +609,8 @@ const BusinessProject = Form.create()(React.createClass({
             str = "商标"
           } else if (thisdata.type == 7) {
             str = "会员"
+          } else if (thisdata.type == 8) {
+            str = "投标"
           }
           theArr.push({
             editId: thisdata.id,//每一条记录的ID
@@ -658,6 +660,8 @@ const BusinessProject = Form.create()(React.createClass({
           str = "商标"
         } else if (thisdata.type == 7) {
           str = "会员"
+        } else if (thisdata.type == 8) {
+          str = "投标"
         }
         this.setState({
           editId: thisdata.id, //每一条记录的ID
@@ -2206,6 +2210,8 @@ const BusinessProject = Form.create()(React.createClass({
                                 str = "商标";
                               } else if (e == 7) {
                                 str = "会员";
+                              } else if (e == 8) {
+                                str = "投标";
                               }
                               this.setState({
                                 typeStatus: e,
@@ -2221,6 +2227,7 @@ const BusinessProject = Form.create()(React.createClass({
                             <Select.Option key={5}>高新</Select.Option>
                             <Select.Option key={6}>商标</Select.Option>
                             <Select.Option key={7}>会员</Select.Option>
+                            <Select.Option key={8}>投标</Select.Option>
                           </Select>
                         </FormItem>
                         {this.state.typeStatus == 1 && <FormItem

+ 142 - 142
js/component/manageCenter/set/content.jsx

@@ -5,149 +5,149 @@ import LeftTab from '../leftTab';
 import { getMenu } from '../publicMenu.js'
 
 class Content extends Component {
-    constructor() {
-        super();
-        this.state = {
-            loading: false,
-            component: <div />,
-        };
-    }
-    componentWillMount() {
-        var ids = window.location.href.indexOf('rid=');
-        var idk = window.location.href.substr(ids + 4);
-        var rid = idk.split('#');
-        let menu = getMenu(rid);
-        let curry;
-        if (menu[0].subMenus.length > 0) {
-            curry = menu[0].subMenus[0].url.split('#');
-        } else {
-            curry = menu[0].url.split('#');
-        };
-        if (window.location.hash) {
-            this.getKey(window.location.hash.substr(1));
-        } else {
-            this.getKey(curry[1]);
-        };
-    }
-    getKey(key) {
-        switch (key) {
-            case 'softwareConfigure':
-                require.ensure([], () => {
-                    const SoftwareConfigure = require('./projectConfigure/softwareConfigure').default;
-                    this.setState({
-                        component: <SoftwareConfigure />,
-                    });
-                });
-                break;
-            case 'officialFees':
-                require.ensure([], () => {
-                    const OfficialFees = require('./projectConfigure/officialFees').default;
-                    this.setState({
-                        component: <OfficialFees />,
-                    });
-                });
-                break;
-            case 'patentFees':
-                require.ensure([], () => {
-                    const PatentFees = require('./projectConfigure/patentFees').default;
-                    this.setState({
-                        component: <PatentFees />,
-                    });
-                });
-                break;
-            case 'organization':
-                require.ensure([], () => {
-                    const Organization = require('./organization/organization').default;
-                    this.setState({
-                        component: <Organization />,
-                    });
-                });
-                break;
-            case 'workeTimes':
-                require.ensure([], () => {
-                    const WorkeTimes = require('./workeTimes/index').default;
-                    this.setState({
-                        component: <WorkeTimes />,
-                    });
-                });
-                break;
-            case 'businessCategory':
-                require.ensure([], () => {
-                    const BusinessCategory = require('./business/businessCategory').default;
-                    this.setState({
-                        component: <BusinessCategory />
-                    });
-                });
-                break;
-            case 'businessProject':
-                require.ensure([], () => {
-                    const BusinessProject = require('./business/businessProject').default;
-                    this.setState({
-                        component: <BusinessProject />
-                    });
-                });
-                break;
-            case 'businessQuery':
-                require.ensure([], () => {
-                    const BusinessQuery = require('./business/businessQuery').default;
-                    this.setState({
-                        component: <BusinessQuery />
-                    });
-                });
-                break;
-            case 'user':
-                require.ensure([], () => {
-                    const User = require('./userManagementS/user').default;
-                    this.setState({
-                        component: <User />
-                    });
-                });
-                break;
+  constructor() {
+    super();
+    this.state = {
+      loading: false,
+      component: <div />,
+    };
+  }
+  componentWillMount() {
+    var ids = window.location.href.indexOf('rid=');
+    var idk = window.location.href.substr(ids + 4);
+    var rid = idk.split('#');
+    let menu = getMenu(rid);
+    let curry;
+    if (menu[0].subMenus.length > 0) {
+      curry = menu[0].subMenus[0].url.split('#');
+    } else {
+      curry = menu[0].url.split('#');
+    };
+    if (window.location.hash) {
+      this.getKey(window.location.hash.substr(1));
+    } else {
+      this.getKey(curry[1]);
+    };
+  }
+  getKey(key) {
+    switch (key) {
+      case 'softwareConfigure':
+        require.ensure([], () => {
+          const SoftwareConfigure = require('./projectConfigure/softwareConfigure').default;
+          this.setState({
+            component: <SoftwareConfigure />,
+          });
+        });
+        break;
+      case 'officialFees':
+        require.ensure([], () => {
+          const OfficialFees = require('./projectConfigure/officialFees').default;
+          this.setState({
+            component: <OfficialFees />,
+          });
+        });
+        break;
+      case 'patentFees':
+        require.ensure([], () => {
+          const PatentFees = require('./projectConfigure/patentFees').default;
+          this.setState({
+            component: <PatentFees />,
+          });
+        });
+        break;
+      case 'organization':
+        require.ensure([], () => {
+          const Organization = require('./organization/organization').default;
+          this.setState({
+            component: <Organization />,
+          });
+        });
+        break;
+      case 'workeTimes':
+        require.ensure([], () => {
+          const WorkeTimes = require('./workeTimes/index').default;
+          this.setState({
+            component: <WorkeTimes />,
+          });
+        });
+        break;
+      case 'businessCategory':
+        require.ensure([], () => {
+          const BusinessCategory = require('./business/businessCategory').default;
+          this.setState({
+            component: <BusinessCategory />
+          });
+        });
+        break;
+      case 'businessProject':
+        require.ensure([], () => {
+          const BusinessProject = require('./business/businessProject').default;
+          this.setState({
+            component: <BusinessProject />
+          });
+        });
+        break;
+      case 'businessQuery':
+        require.ensure([], () => {
+          const BusinessQuery = require('./business/businessQuery').default;
+          this.setState({
+            component: <BusinessQuery />
+          });
+        });
+        break;
+      case 'user':
+        require.ensure([], () => {
+          const User = require('./userManagementS/user').default;
+          this.setState({
+            component: <User />
+          });
+        });
+        break;
 
-            case 'roles':
-                require.ensure([], () => {
-                    const Roles = require('./userManagementS/roles').default;
-                    this.setState({
-                        component: <Roles />,
-                    });
-                });
-                break;
-            case 'permission':
-                require.ensure([], () => {
-                    const Jurisdiction = require('./userManagementS/jurisdiction').default;
-                    this.setState({
-                        component: <Jurisdiction />
-                    });
-                });
-                break;
-            case 'bar':
-                require.ensure([], () => {
-                    const Bar = require('./amoeba/barList').default;
-                    this.setState({
-                        component: <Bar />
-                    });
-                });
-                break;
-            default:
-                require.ensure([], () => {
-                    const Module = require('../module').default;
-                    this.setState({
-                        component: <Module />
-                    });
-                });
-        };
-        window.location.hash = key;
-    }
-    render() {
-        return (
-            <div className="manage-content">
-                <LeftTab handlekey={this.getKey.bind(this)} />
-                <div className="content-right">
-                    {this.state.component}
-                </div>
-            </div>
-        )
-    }
+      case 'roles':
+        require.ensure([], () => {
+          const Roles = require('./userManagementS/roles').default;
+          this.setState({
+            component: <Roles />,
+          });
+        });
+        break;
+      case 'permission':
+        require.ensure([], () => {
+          const Jurisdiction = require('./userManagementS/jurisdiction').default;
+          this.setState({
+            component: <Jurisdiction />
+          });
+        });
+        break;
+      case 'bar':
+        require.ensure([], () => {
+          const Bar = require('./amoeba/barList').default;
+          this.setState({
+            component: <Bar />
+          });
+        });
+        break;
+      default:
+        require.ensure([], () => {
+          const Module = require('../module').default;
+          this.setState({
+            component: <Module />
+          });
+        });
+    };
+    window.location.hash = key;
+  }
+  render() {
+    return (
+      <div className="manage-content">
+        <LeftTab handlekey={this.getKey.bind(this)} />
+        <div className="content-right">
+          {this.state.component}
+        </div>
+      </div>
+    )
+  }
 }
 
 export default Content;

+ 64 - 0
js/component/manageCenter/standard/content.jsx

@@ -0,0 +1,64 @@
+import React, { Component } from 'react';
+import '../content.less';
+import './content.less';
+import LeftTab from '../leftTab';
+import { getMenu } from '../publicMenu.js'
+
+class Content extends Component {
+  constructor() {
+    super();
+    this.state = {
+      loading: false,
+      component: <div />,
+    };
+  }
+  componentWillMount() {
+    var ids = window.location.href.indexOf('rid=');
+    var idk = window.location.href.substr(ids + 4);
+    var rid = idk.split('#');
+    let menu = getMenu(rid);
+    let curry;
+    if (menu[0].subMenus.length > 0) {
+      curry = menu[0].subMenus[0].url.split('#');
+    } else {
+      curry = menu[0].url.split('#');
+    };
+    if (window.location.hash) {
+      this.getKey(window.location.hash.substr(1));
+    } else {
+      this.getKey(curry[1]);
+    };
+  }
+  getKey(key) {
+    switch (key) {
+      case 'standard':
+        require.ensure([], () => {
+          const Standard = require('./stList/index').default;
+          this.setState({
+            component: <Standard />
+          });
+        });
+        break;
+      default:
+        require.ensure([], () => {
+          const Module = require('../module').default;
+          this.setState({
+            component: <Module />
+          });
+        });
+    };
+    window.location.hash = key;
+  }
+  render() {
+    return (
+      <div className="manage-content">
+        <LeftTab handlekey={this.getKey.bind(this)} />
+        <div className="content-right">
+          {this.state.component}
+        </div>
+      </div>
+    )
+  }
+}
+
+export default Content;

+ 112 - 0
js/component/manageCenter/standard/content.less

@@ -0,0 +1,112 @@
+.user-content {
+  background: #fff;
+  padding: 20px;
+
+  .content-title {
+    color: #333;
+    font-size: 16px;
+  }
+
+  .user-search {
+    margin-bottom: 10px;
+
+    >input {
+      width: 140px;
+    }
+
+    >* {
+      margin-right: 10px;
+      margin-top: 10px;
+    }
+
+    >input,
+    >button,
+    .ant-select {
+      margin-top: 10px;
+      margin-right: 10px;
+    }
+
+    .ant-switch {
+      margin-left: 10px;
+    }
+
+    .search-more {
+      margin: 10px 0;
+    }
+
+    .search-div {
+      display: inline-block;
+      margin-top: 10px;
+      margin-right: 10px;
+    }
+  }
+}
+
+.ant-modal-body {
+  .modal-box {
+    overflow: hidden;
+    line-height: 28px;
+    margin-bottom: 10px;
+
+    .modal-box-title {
+      float: left;
+      width: 84px;
+      text-align: right;
+      margin-right: 20px;
+    }
+
+    .modal-box-detail {
+      float: left;
+      width: 400px;
+
+      >span {
+        margin-right: 6px;
+      }
+    }
+
+    >button {
+      margin-right: 20px;
+    }
+  }
+}
+
+.no-all-select {
+  .ant-table-selection {
+    .ant-checkbox {
+      display: none;
+    }
+  }
+}
+
+.addButton {
+  float: right;
+  margin-right: 50px !important;
+}
+
+.tip {
+  color: red;
+  font-size: 12px;
+}
+
+.division {
+  margin: 0 auto;
+  margin-top: 25px;
+  width: 80%;
+}
+
+.fa {
+  display: flex;
+  justify-content: space-around;
+}
+
+// .ant-upload-select{
+// 	vertical-align: top;
+// }
+
+.ant-upload.ant-upload-select {
+  vertical-align: top;
+}
+
+.ant-upload-list-item {
+  font-size: 14px;
+}

+ 802 - 0
js/component/manageCenter/standard/stList/index.jsx

@@ -0,0 +1,802 @@
+import React from 'react';
+import $ from 'jquery/src/ajax';
+import {
+  Form, Icon, Button, Input, Select, AutoComplete, Spin, Table,
+  message, DatePicker, Modal, Tabs
+} from 'antd';
+import moment from 'moment';
+import { ShowModal, splitUrl } from '../../../tools.js';
+import { ChooseList } from "../../order/orderNew/chooseList";
+import "./index.less";
+import ImgList from "../../../common/imgList";
+
+const PicturesWall = React.createClass({
+
+  getInitialState() {
+    return {
+      previewVisible: false,
+      previewImage: "",
+      fileList: this.props.pictureUrl,
+    };
+  },
+
+  getDefaultProps() {
+    return {
+      changeClick: this.modifyChange,
+    };
+  },
+
+  handleCancel() {
+    this.setState({ previewVisible: false });
+  },
+
+  handlePreview(file) {
+    this.setState({
+      previewImage: file.url || file.thumbUrl,
+      previewVisible: true,
+    });
+  },
+
+  handleChange(info) {
+    let fileList = info.fileList;
+    this.setState({ fileList });
+    this.props.fileList(fileList);
+  },
+
+  componentWillReceiveProps(nextProps) {
+    this.state.fileList = nextProps.pictureUrl;
+  },
+
+  render() {
+    const { fileList } = this.state;
+    return (
+      <div style={{ display: "inline-block" }}>
+        <ImgList
+          isSupportPDF={true}
+          domId={this.props.domId}
+          uploadConfig={{
+            action: globalConfig.context + "/api/admin/standard/uploadPicture",
+            data: { sign: "standard_document" },
+            multiple: true,
+            listType: "picture-card",
+          }}
+          onChange={(infor) => {
+            this.handleChange(infor);
+          }}
+          fileList={fileList}
+        />
+      </div>
+    );
+  },
+
+});
+
+const { TabPane } = Tabs
+const FormItem = Form.Item;
+const Standard = Form.create()(React.createClass({
+
+  getInitialState() {
+    return {
+      searchValues: {},
+      loading: false,
+      changeList: undefined, // 更改后的表格显示数据
+      dataSource: [],
+      departmentArr: [],
+      typeList: [
+        { key: "国家标准", value: 0, },
+        { key: "行业标准", value: 1, },
+        { key: "地方标准", value: 2, },
+        { key: "团体标准", value: 3, },
+        { key: "国际标准", value: 4, },
+      ],
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 20,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return '共' + total + '条数据';
+        }
+      },
+      columns: [
+        {
+          title: '标准编号',
+          dataIndex: 'serialNumber',
+          key: 'serialNumber',
+        },
+        {
+          title: '标准名称',
+          dataIndex: 'name',
+          key: 'name',
+        },
+        {
+          title: '参考',
+          dataIndex: 'reference',
+          key: 'reference',
+          render: (text, record) => <span>{['国家 ', '行业 ', '地方 ', '团体 ', '国际 '][record.type]}{text}</span>
+        },
+        {
+          title: '部门',
+          dataIndex: 'depName',
+          key: 'depName',
+        },
+        {
+          title: '负责人',
+          dataIndex: 'adminName',
+          key: 'adminName',
+        },
+        {
+          title: '标准状态',
+          dataIndex: 'status',
+          key: 'status',
+          render: text => <span style={{ color: ["red", "green"][text] }}>{["关闭", "开启"][text]}</span>
+        },
+        {
+          title: '更新时间',
+          dataIndex: 'updateTime',
+          key: 'updateTime',
+        },
+        {
+          title: '附件',
+          dataIndex: 'url',
+          key: 'url',
+          render: (text, record, index) =>
+            <div className='selStandard'>
+              <ImgList
+                fileList={text ? splitUrl(text, ',', globalConfig.avatarHost + '/upload') : []}
+                domId={"selStandard" + index}
+              />
+            </div>
+        },
+      ],
+      visible: "",
+      data: {},
+      orgCodeUrl: [],
+    };
+  },
+
+  componentWillMount() {
+    this.loadData();
+    this.departmentList();
+  },
+
+  // 列表接口
+  loadData(pageNo) {
+    const { searchValues, pagination } = this.state;
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchValues, {
+      pageNo: pageNo || 1,
+      pageSize: pagination.pageSize,
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/standard/list",
+      data: datas,
+      success: function (data) {
+        ShowModal(this);
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+
+  //部门
+  departmentList() {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/organization/selectSuperId",
+      data: {},
+      success: function (data) {
+        let thedata = data.data;
+        let theArr = [];
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          thedata.map(function (item, index) {
+            theArr.push({
+              key: index,
+              name: item.name,
+              id: item.id
+            });
+          });
+        }
+        this.setState({
+          departmentArr: theArr
+        });
+      }.bind(this)
+    }).always(
+      function () {
+
+      }.bind(this)
+    );
+  },
+
+  search() {
+    this.loadData();
+  },
+
+  reset() {
+    this.setState({
+      searchValues: {}
+    }, () => {
+      this.loadData();
+    })
+  },
+
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach(item => {
+      arr.forEach(val => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr
+    });
+  },
+
+  addClick() {
+    this.setState({
+      visible: "add"
+    })
+  },
+
+  tableRowClick(e) {
+    if (!adminData.isSuperAdmin) {
+      return
+    }
+    this.setState({
+      visible: "edit",
+    })
+    this.getDetails(e.id)
+    // const orgCodeUrl = e.url ? splitUrl(e.url, ',', globalConfig.avatarHost + '/upload') : []
+    // this.setState({
+    //   visible: "edit",
+    //   data: e,
+    //   orgCodeUrl,
+    //   adminName: e.adminName,
+    // })
+  },
+
+  getDetails(id) {
+    this.setState({
+      loading: true
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/standard/get",
+      data: {
+        id,
+      },
+      success: function (data) {
+        let thedata = data.data || {};
+        let orgCodeUrl = []
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          };
+        } else {
+          orgCodeUrl = thedata.url ? splitUrl(thedata.url, ',', globalConfig.avatarHost + '/upload') : []
+        }
+        this.setState({
+          data: thedata,
+          orgCodeUrl,
+          adminName: thedata.adminName,
+        })
+      }.bind(this),
+    }).always(function () {
+      this.setState({
+        loading: false
+      });
+    }.bind(this));
+  },
+
+  getOrgCodeUrl(e) {
+    this.setState({
+      orgCodeUrl: e
+    });
+  },
+
+  handleCancel() {
+    this.setState({
+      visible: "",
+      adminName: undefined,
+      data: {},
+      orgCodeUrl: [],
+    })
+  },
+
+  handleSubmit() {
+    const { data } = this.state
+    if (!data.serialNumber) {
+      message.warning('标准编号不能为空!');
+      return;
+    }
+    if (!data.name) {
+      message.warning('标准名称不能为空!');
+      return;
+    }
+    if (!data.depId) {
+      message.warning('部门不能为空!');
+      return;
+    }
+    if (!data.status && data.status != 0) {
+      message.warning('请选择状态!');
+      return;
+    }
+    let pictureUrl = "";
+    if (this.state.orgCodeUrl.length) {
+      let picArr = [];
+      this.state.orgCodeUrl.map(function (item) {
+        if (
+          item.response &&
+          item.response.data &&
+          item.response.data.length
+        ) {
+          picArr.push(item.response.data);
+        }
+      });
+      pictureUrl = picArr.join(",");
+    }
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url:
+        data.id
+          ? globalConfig.context + '/api/admin/standard/update'
+          : globalConfig.context + '/api/admin/standard/add',
+      data: Object.assign(data, {
+        url: pictureUrl,
+      }),
+    }).done(function (data) {
+      this.setState({
+        loading: false
+      });
+      if (!data.error.length) {
+        message.success('保存成功!');
+        this.handleCancel();
+        this.loadData();
+      } else {
+        message.warning(data.error[0].message);
+      }
+    }.bind(this));
+  },
+
+  followUp(e) {
+    this.setState({
+      adminName: e
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+      },
+      success: function (data) {
+        let thedata = data.data || [];
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          fjlist: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+
+  selectF(value) {
+    const { data, fjlist } = this.state;
+    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
+    this.setState({
+      data: Object.assign(data, {
+        aid: newdataSources.find((item) => item.name == value).id,
+      }),
+    });
+  },
+
+  render() {
+    const { RangePicker } = DatePicker;
+    let departmentArr = this.state.departmentArr || [];
+    const { searchValues, data } = this.state
+    const dataSources = this.state.fjlist || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    const formItemLayout = {
+      labelCol: { span: 8 },
+      wrapperCol: { span: 14 },
+    };
+    return (
+      <div className="user-content">
+        <div className="content-title">
+          <Tabs defaultActiveKey="1" className="test">
+            <TabPane tab="搜索" key="1">
+              <div className="user-search" style={{ marginLeft: 10 }}>
+                <Input
+                  placeholder="请输入标准名称"
+                  value={searchValues["name"]
+                    ? searchValues["name"]
+                    : ""}
+                  onChange={(e) => {
+                    searchValues["name"] = e.target.value;
+                    this.setState({
+                      searchValues: searchValues,
+                    });
+                  }}
+                />
+                <Select
+                  placeholder="请输入部门名称"
+                  style={{ width: 230 }}
+                  value={searchValues["depId"]
+                    ? searchValues["depId"]
+                    : undefined}
+                  onChange={e => {
+                    searchValues["depId"] = e;
+                    this.setState({
+                      searchValues: searchValues,
+                    });
+                  }}
+                >
+                  {departmentArr.map(function (item) {
+                    return (
+                      <Select.Option key={item.id}>{item.name}</Select.Option>
+                    );
+                  })}
+                </Select>
+                <Select
+                  placeholder="状态"
+                  style={{ width: 140 }}
+                  value={searchValues["status"]}
+                  onChange={(e) => {
+                    searchValues["status"] = e;
+                    this.setState({
+                      searchValues: searchValues,
+                    });
+                  }}
+                >
+                  <Select.Option value={null}>全部</Select.Option>
+                  <Select.Option value={0}>关闭</Select.Option>
+                  <Select.Option value={1}>开启</Select.Option>
+                </Select>
+                <span>时间:</span>
+                <RangePicker
+                  style={{ width: 300 }}
+                  value={[
+                    searchValues.startTime ? moment(searchValues.startTime) : null,
+                    searchValues.endTime ? moment(searchValues.endTime) : null,
+                  ]}
+                  onChange={(data, dataString) => {
+                    this.setState({
+                      searchValues: Object.assign(searchValues, {
+                        startTime: dataString[0],
+                        endTime: dataString[1],
+                      }),
+                    });
+                  }}
+                />
+                <Button
+                  type="primary"
+                  onClick={this.search}
+                  style={{ margin: "0 10px" }}
+                >搜索</Button>
+                <Button onClick={this.reset}>重置</Button>
+              </div>
+            </TabPane>
+            <TabPane tab="更改表格显示数据" key="2">
+              <div style={{ marginLeft: 10 }}>
+                <ChooseList
+                  columns={this.state.columns}
+                  changeFn={this.changeList}
+                  changeList={this.state.changeList}
+                  top={55}
+                  margin={11}
+                />
+              </div>
+            </TabPane>
+            {adminData.isSuperAdmin ?
+              <TabPane tab="新增" key="3">
+                <Button
+                  type="primary"
+                  className="addButton"
+                  style={{ float: "left", marginBottom: 10, marginTop: 12 }}
+                  onClick={this.addClick}
+                >
+                  新增
+                </Button>
+              </TabPane> : ""}
+          </Tabs>
+          <div className="patent-table">
+            <Spin spinning={this.state.loading}>
+              <Table
+                bordered
+                columns={
+                  this.state.changeList
+                    ? this.state.changeList
+                    : this.state.columns
+                }
+                style={{
+                  cursor: 'pointer',
+                }}
+                dataSource={this.state.dataSource}
+                pagination={this.state.pagination}
+                onRowDoubleClick={this.tableRowClick}
+              />
+            </Spin>
+          </div>
+        </div>
+        {
+          this.state.visible != "" &&
+          <Modal
+            title={!!data.id ? "编辑标准" : "新增标准"}
+            visible={this.state.visible != ""}
+            width="600px"
+            onCancel={this.handleCancel}
+            maskClosable={false}
+            footer=""
+            className="admin-desc-content"
+          >
+            <Form
+              layout="horizontal"
+              // onSubmit={this.handleSubmit}
+              id="demand-form"
+            >
+              <Spin spinning={this.state.loading}>
+                <div className="clearfix">
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="标准编号"
+                  >
+                    <Input
+                      placeholder="标准编号"
+                      value={data["serialNumber"]
+                        ? data["serialNumber"]
+                        : ""}
+                      style={{ width: "230px" }}
+                      onChange={(e) => {
+                        data["serialNumber"] = e.target.value;
+                        this.setState({
+                          data: data
+                        });
+                      }}
+                    />
+                    <span className="mandatory">*</span>
+                  </FormItem>
+
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="标准名称"
+                  >
+                    <Input
+                      placeholder="标准名称"
+                      value={data["name"]
+                        ? data["name"]
+                        : ""}
+                      style={{ width: "230px" }}
+                      onChange={(e) => {
+                        data["name"] = e.target.value;
+                        this.setState({
+                          data: data
+                        });
+                      }}
+                    />
+                    <span className="mandatory">*</span>
+                  </FormItem>
+
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="参考"
+                  >
+                    <Select
+                      placeholder="请选择"
+                      style={{ width: "80px" }}
+                      value={data.type}
+                      onChange={(e) => {
+                        data["type"] = e;
+                        this.setState({
+                          data: data
+                        });
+                      }}
+                    >
+                      {this.state.typeList.map(function (item) {
+                        return (
+                          <Select.Option key={item.value} value={item.value}>
+                            {item.key}
+                          </Select.Option>
+                        );
+                      })}
+                    </Select>
+                    <Input
+                      placeholder="请输入参考网址"
+                      value={data["reference"]
+                        ? data["reference"]
+                        : ""}
+                      style={{ width: "140px", marginLeft: "10px" }}
+                      onChange={(e) => {
+                        data["reference"] = e.target.value;
+                        this.setState({
+                          data: data
+                        });
+                      }}
+                    />
+                  </FormItem>
+
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="部门"
+                  >
+                    <Select
+                      placeholder="请选择部门"
+                      style={{ width: 230 }}
+                      value={data["depId"]
+                        ? data["depId"]
+                        : undefined}
+                      onChange={e => {
+                        data["depId"] = e;
+                        this.setState({
+                          data: data,
+                        });
+                      }}
+                    >
+                      {departmentArr.map(function (item) {
+                        return (
+                          <Select.Option key={item.id}>{item.name}</Select.Option>
+                        );
+                      })}
+                    </Select>
+                    <span className="mandatory">*</span>
+                  </FormItem>
+
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="负责人"
+                  >
+                    <AutoComplete
+                      className="certain-category-search"
+                      dropdownClassName="certain-category-search-dropdown"
+                      dropdownMatchSelectWidth={false}
+                      style={{ width: 230 }}
+                      dataSource={options}
+                      placeholder="营销员名称"
+                      value={this.state.adminName}
+                      onChange={this.followUp.bind(this)}
+                      filterOption={true}
+                      onSelect={this.selectF.bind(this)}
+                    >
+                      <Input />
+                    </AutoComplete>
+                  </FormItem>
+
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="状态"
+                  >
+                    <Select
+                      placeholder=""
+                      style={{ width: "80px" }}
+                      value={data.status}
+                      onChange={(e) => {
+                        data["status"] = e;
+                        this.setState({
+                          data: data,
+                        });
+                      }}
+                    >
+                      {[
+                        { key: "关闭", value: 0 },
+                        { key: "开启", value: 1 },
+                      ].map(function (item) {
+                        return (
+                          <Select.Option key={item.value} value={item.value}>
+                            {item.key}
+                          </Select.Option>
+                        );
+                      })}
+                    </Select>
+                    <span className="mandatory">*</span>
+                  </FormItem>
+
+                  <FormItem
+                    className="half-middle"
+                    {...formItemLayout}
+                    label="上附件"
+                  >
+                    <PicturesWall
+                      domId={'standard'}
+                      fileList={this.getOrgCodeUrl}
+                      pictureUrl={this.state.orgCodeUrl}
+                    />
+                  </FormItem>
+                  <span className="mandatory" style={{ marginLeft: 210 }}>支持图片,pdf</span>
+
+                </div>
+                <FormItem className="half-middle">
+                  <Button
+                    className="set-submit"
+                    type="primary"
+                    onClick={this.handleSubmit}
+                    style={{ marginLeft: "150px" }}
+                  >
+                    保存
+                  </Button>
+                  <Button
+                    className="set-submit"
+                    type="ghost"
+                    onClick={this.handleCancel}
+                  >
+                    取消
+                  </Button>
+                </FormItem>
+              </Spin>
+            </Form>
+          </Modal>
+        }
+      </div>
+    );
+  }
+}));
+
+export default Standard;

+ 106 - 0
js/component/manageCenter/standard/stList/index.less

@@ -0,0 +1,106 @@
+.user-content {
+  background: #fff;
+  padding: 20px;
+
+  .content-title {
+    color: #333;
+    font-size: 16px;
+    overflow: hidden;
+  }
+
+  .user-search {
+
+    // margin-bottom: 10px;
+    >input {
+      width: 140px;
+    }
+
+    >button,
+    .ant-select,
+    >input {
+      margin-right: 10px;
+      // margin-top: 10px;
+    }
+
+    .ant-switch {
+      margin-left: 10px;
+    }
+
+    .search-more {
+      margin: 10px 0;
+
+      >span {
+        margin-right: 10px;
+      }
+    }
+  }
+
+  .addButton {
+    float: right;
+    margin-right: 10px !important;
+  }
+}
+
+.ant-tabs-bar {
+  margin-bottom: 10px;
+}
+
+.half-item {
+  float: left;
+  width: 50%;
+  min-height: 36px;
+  margin-bottom: 10px;
+
+  button {
+    margin-left: 20px;
+  }
+}
+
+.half-middle {
+  width: 80%;
+  margin: 10px auto;
+  height: 36px;
+
+  button {
+    margin-left: 20px;
+  }
+}
+
+.patent-table {
+  clear: both;
+}
+
+.set-submit {
+  margin-right: 15px;
+}
+
+.deletButton {
+  float: right;
+  margin-bottom: 15px;
+}
+
+.clearfix {
+  clear: both;
+}
+
+.mandatory {
+  color: red;
+  margin-left: 8px;
+}
+
+.search-more .ant-select-auto-complete.ant-select-lg .ant-input {
+  height: 28px
+}
+
+.rolesCol {
+  width: 90%;
+}
+
+.selStandard {
+  .ant-upload-list-picture-card .ant-upload-list-item {
+    float: left;
+    width: 40px;
+    height: 40px;
+    margin: 0 8px 0 0;
+  }
+}

+ 22 - 21
js/component/manageCenter/topTab.jsx

@@ -909,27 +909,28 @@ const TopTab = React.createClass({
           showDesc={this.state.messageModalShow}
           closeDesc={this.closeMessageModal}
         />
-
-        <Modal
-          title="报销清单查询"
-          visible={this.state.visible}
-          onOk={() => { this.onAccount() }}
-          onCancel={() => { this.setState({ visible: false, }) }}
-          okText="确认"
-          cancelText="取消"
-          maskClosable={false}
-        >
-          <div style={{ width: "60%", margin: "40px auto" }}>
-            <Input
-              placeholder="请输入报销单编号"
-              value={this.state.checkNo}
-              onChange={(e) => {
-                this.setState({ checkNo: e.target.value });
-              }}
-            />
-          </div>
-        </Modal>
-
+        {
+          this.state.visible &&
+          <Modal
+            title="报销清单查询"
+            visible={this.state.visible}
+            onOk={() => { this.onAccount() }}
+            onCancel={() => { this.setState({ visible: false, }) }}
+            okText="确认"
+            cancelText="取消"
+            maskClosable={false}
+          >
+            <div style={{ width: "60%", margin: "40px auto" }}>
+              <Input
+                placeholder="请输入报销单编号"
+                value={this.state.checkNo}
+                onChange={(e) => {
+                  this.setState({ checkNo: e.target.value });
+                }}
+              />
+            </div>
+          </Modal>
+        }
         {
           // 报销信息详情
           this.state.detailsPup &&

+ 2 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "afanti",
-  "version": "1.3.08",
+  "version": "1.3.15",
   "description": "",
   "main": "index.js",
   "scripts": {
@@ -60,6 +60,7 @@
     "react": "^15.4.1",
     "react-dom": "^15.4.1",
     "react-pdf": "^1.8.3",
+    "react-print-html": "^1.0.5",
     "react-quill": "^1.0.0",
     "viewer": "^0.10.11",
     "viewerjs": "^1.6.2",

+ 6 - 0
webpack.config.js

@@ -312,6 +312,12 @@ module.exports = (function () {
             template: './template/template.html',
             chunks: ['user/account/evaluateInfo', 'vendors'],
         }),
+        new HtmlWebpackPlugin({
+          title: '管理员-标准管理',
+          filename: 'admin/standard.html',
+          template: './template/template.html',
+          chunks: ['admin/standard', 'vendors'],
+      }),
         //portal 门户
         // new HtmlWebpackPlugin({
         //     title: '主页-需求搜索',

+ 7 - 1
webpack/entry.config.js

@@ -20,6 +20,8 @@ module.exports = {
     "admin/set": "./js/admin/set.js",
     "admin/userManage": "./js/admin/userManage.js",
     "admin/idea": "./js/admin/idea.js",
+    "admin/amiba": "./js/admin/amiba.js",
+    "admin/standard": "./js/admin/standard.js",
     //admin-servicesManage
     "admin/servicesManage/contract": "./js/admin/servicesManage/contract.js",
     "admin/servicesManage/patent": "./js/admin/servicesManage/patent.js",
@@ -36,7 +38,6 @@ module.exports = {
     "admin/customerService": "./js/admin/customerService.js",
     "admin/legalAffairs": "./js/admin/legalAffairs.js",
     "admin/channelList": "./js/admin/channelList.js",
-    "admin/amiba": "./js/admin/amiba.js",
     "admin/povertyInquiry": "./js/admin/povertyInquiry.js",
     "admin/achievement": "./js/admin/achievement.js",
     "admin/customer": "./js/admin/customer.js",
@@ -156,6 +157,11 @@ module.exports = {
       "webpack/hot/only-dev-server",
       "./js/admin/amiba.js",
     ],
+    "admin/standard": [
+      "webpack-dev-server/client?http://127.0.0.1:80", // WebpackDevServer host and port
+      "webpack/hot/only-dev-server",
+      "./js/admin/standard.js",
+    ],
     "admin/povertyInquiry": [
       "webpack-dev-server/client?http://127.0.0.1:80", // WebpackDevServer host and port
       "webpack/hot/only-dev-server",

+ 5 - 0
yarn.lock

@@ -5462,6 +5462,11 @@ react-pdf@^1.8.3:
     react ">=15.5"
     react-dom ">=15.5"
 
+react-print-html@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/react-print-html/-/react-print-html-1.0.5.tgz#d48beb5ad1059f1c72102940fbc2d3c9d9827033"
+  integrity sha512-LUKVDJPu+95gbFg8wDreYxx2q2Krbh/aa/esTo4WewsizhukjQZiZC8yFohwApX6kfrkk7brT5XqO/yCOzkD6g==
+
 react-quill@^1.0.0:
   version "1.1.0"
   resolved "http://registry.npm.taobao.org/react-quill/download/react-quill-1.1.0.tgz"