dev01 2 years ago
parent
commit
25abea611f

+ 54 - 54
js/component/common/imgList/index.js

@@ -1,5 +1,5 @@
-import React,{Component} from 'react';
-import {Icon, message, Spin, Upload,Progress} from 'antd';
+import React, { Component } from 'react';
+import { Icon, message, Spin, Upload, Progress } from 'antd';
 import './index.less';
 import './index.less';
 import Viewer from 'viewerjs';
 import Viewer from 'viewerjs';
 import 'viewerjs/dist/viewer.css';
 import 'viewerjs/dist/viewer.css';
@@ -8,14 +8,14 @@ import PropTypes from 'prop-types';
 const uploadButton = (
 const uploadButton = (
     <div>
     <div>
         <Icon type="plus" />
         <Icon type="plus" />
-        <div className="ant-upload-text" style={{cursor:'pointer'}}>点击上传</div>
+        <div className="ant-upload-text" style={{ cursor: 'pointer' }}>点击上传</div>
     </div>
     </div>
 );
 );
 
 
-class ImgList extends Component{
+class ImgList extends Component {
     constructor(props) {
     constructor(props) {
         super(props);
         super(props);
-        this.state={
+        this.state = {
             seeMore: false,
             seeMore: false,
             gallery: null,
             gallery: null,
             loading: true,
             loading: true,
@@ -33,27 +33,27 @@ class ImgList extends Component{
     }
     }
 
 
     componentDidMount() {
     componentDidMount() {
-        this.setTimeOutObj = setTimeout(()=>{
+        this.setTimeOutObj = setTimeout(() => {
             this.setState({
             this.setState({
                 gallery: new Viewer(document.getElementById(this.props.domId))
                 gallery: new Viewer(document.getElementById(this.props.domId))
-            },()=>{
+            }, () => {
                 this.setState({
                 this.setState({
                     loading: false
                     loading: false
                 })
                 })
             })
             })
-        },10000)
+        }, 10000)
     }
     }
 
 
-    imgLoading(){
-        if(Object.keys(this.props.uploadConfig).length !== 0){
+    imgLoading() {
+        if (Object.keys(this.props.uploadConfig).length !== 0) {
             this.setTimeOutObj && clearTimeout(this.setTimeOutObj);
             this.setTimeOutObj && clearTimeout(this.setTimeOutObj);
-        }else{
+        } else {
             let num = this.state.imgLoadNum + 1;
             let num = this.state.imgLoadNum + 1;
-            if(num >= this.props.fileList.length){
+            if (num >= this.props.fileList.length) {
                 this.state.gallery && this.state.gallery.destroy();
                 this.state.gallery && this.state.gallery.destroy();
                 this.setState({
                 this.setState({
                     gallery: new Viewer(document.getElementById(this.props.domId))
                     gallery: new Viewer(document.getElementById(this.props.domId))
-                },()=>{
+                }, () => {
                     this.setTimeOutObj && clearTimeout(this.setTimeOutObj);
                     this.setTimeOutObj && clearTimeout(this.setTimeOutObj);
                     this.setState({
                     this.setState({
                         loading: false
                         loading: false
@@ -72,25 +72,25 @@ class ImgList extends Component{
             message.error('文件大小不能超过 10MB!');
             message.error('文件大小不能超过 10MB!');
             return isLt2M;
             return isLt2M;
         }
         }
-        if(this.props.accept){
-            if(isLt2M){
+        if (this.props.accept) {
+            if (isLt2M) {
                 this.state.newUploadArr.push(file)
                 this.state.newUploadArr.push(file)
                 this.setState({
                 this.setState({
-                    newUploadArr:this.state.newUploadArr
+                    newUploadArr: this.state.newUploadArr
                 })
                 })
             }
             }
             return isLt2M;
             return isLt2M;
-        }else{
+        } else {
             const isJPG = file.type.split('/');
             const isJPG = file.type.split('/');
             if (isJPG[0] !== 'image') {
             if (isJPG[0] !== 'image') {
                 message.error('只能上传图片文件!');
                 message.error('只能上传图片文件!');
                 return false;
                 return false;
             }
             }
-            if(isJPG && isLt2M){
+            if (isJPG && isLt2M) {
                 //用于计算当次选择的图片数量
                 //用于计算当次选择的图片数量
                 this.state.newUploadArr.push(file)
                 this.state.newUploadArr.push(file)
                 this.setState({
                 this.setState({
-                    newUploadArr:this.state.newUploadArr
+                    newUploadArr: this.state.newUploadArr
                 })
                 })
             }
             }
             return isJPG && isLt2M;
             return isJPG && isLt2M;
@@ -102,8 +102,8 @@ class ImgList extends Component{
     }
     }
 
 
     render() {
     render() {
-        const {fileList} = this.props;
-        if(!fileList || !Array.isArray(fileList)){
+        const { fileList } = this.props;
+        if (!fileList || !Array.isArray(fileList)) {
             return null;
             return null;
         }
         }
         return (
         return (
@@ -113,29 +113,29 @@ class ImgList extends Component{
                         <Upload
                         <Upload
                             {...this.props.uploadConfig}
                             {...this.props.uploadConfig}
                             accept={this.props.accept || "image/*"}
                             accept={this.props.accept || "image/*"}
-                            className={Object.keys(this.props.uploadConfig).length !== 0 ? "" : "demandDetailShow-upload" }
+                            className={Object.keys(this.props.uploadConfig).length !== 0 ? "" : "demandDetailShow-upload"}
                             listType={this.props.accept ? this.props.uploadConfig.listType : "picture-card"}
                             listType={this.props.accept ? this.props.uploadConfig.listType : "picture-card"}
                             fileList={
                             fileList={
                                 Object.keys(this.props.uploadConfig).length !== 0 ?
                                 Object.keys(this.props.uploadConfig).length !== 0 ?
                                     (
                                     (
-                                        fileList.map((v,i)=>{
+                                        fileList.map((v, i) => {
                                             v.index = i;
                                             v.index = i;
                                             return v
                                             return v
                                         })
                                         })
                                     ) : (
                                     ) : (
-                                        this.state.seeMore?
-                                            fileList.map((v,i)=>{
+                                        this.state.seeMore ?
+                                            fileList.map((v, i) => {
                                                 v.index = i;
                                                 v.index = i;
                                                 return v
                                                 return v
                                             }) :
                                             }) :
-                                            fileList.map((v,i)=>{
+                                            fileList.map((v, i) => {
                                                 v.index = i;
                                                 v.index = i;
                                                 return v
                                                 return v
-                                            }).slice(0,10)
+                                            }).slice(0, 10)
                                     )
                                     )
                             }
                             }
                             onPreview={(file) => {
                             onPreview={(file) => {
-                                if(Object.keys(this.props.uploadConfig).length !== 0){
+                                if (Object.keys(this.props.uploadConfig).length !== 0) {
                                     //TODO 上传组件,查看图片临时解决方法,无法查看下一张
                                     //TODO 上传组件,查看图片临时解决方法,无法查看下一张
                                     let image = new Image();
                                     let image = new Image();
                                     image.src = file.url || file.thumbUrl;
                                     image.src = file.url || file.thumbUrl;
@@ -146,56 +146,56 @@ class ImgList extends Component{
                                     });
                                     });
 
 
                                     viewer.show();
                                     viewer.show();
-                                }else{
+                                } else {
                                     this.state.gallery.view(file.index).show();
                                     this.state.gallery.view(file.index).show();
                                 }
                                 }
                             }}
                             }}
                             beforeUpload={this.beforeUpload}
                             beforeUpload={this.beforeUpload}
-                            onChange={(infor)=>{
-                                if(infor.file.status){
+                            onChange={(infor) => {
+                                if (infor.file.status) {
                                     let newUploadNum = this.state.newUploadArr.length
                                     let newUploadNum = this.state.newUploadArr.length
                                     this.state.gallery && this.state.gallery.destroy();
                                     this.state.gallery && this.state.gallery.destroy();
                                     this.props.onChange(infor);
                                     this.props.onChange(infor);
-                                    if(infor.file && infor.file.status === 'error'){
+                                    if (infor.file && infor.file.status === 'error') {
                                         message.error('图片上传失败,请重新上传!');
                                         message.error('图片上传失败,请重新上传!');
                                     }
                                     }
                                     //用于控制进度条
                                     //用于控制进度条
-                                    if(infor.file && infor.file.status !== 'removed' && infor.event){
+                                    if (infor.file && infor.file.status !== 'removed' && infor.event) {
                                         let percent = 0;
                                         let percent = 0;
                                         this.state.newUploadInforArr[infor.file.uid] = infor.event.percent;
                                         this.state.newUploadInforArr[infor.file.uid] = infor.event.percent;
                                         this.setState({
                                         this.setState({
-                                            newUploadInforArr:this.state.newUploadInforArr
+                                            newUploadInforArr: this.state.newUploadInforArr
                                         })
                                         })
-                                        for(let i of Object.values(this.state.newUploadInforArr)){
-                                            percent+= i
+                                        for (let i of Object.values(this.state.newUploadInforArr)) {
+                                            percent += i
                                         }
                                         }
-                                        let percentNum = percent/newUploadNum/100;
+                                        let percentNum = percent / newUploadNum / 100;
                                         this.setState({
                                         this.setState({
-                                            percent:percentNum
+                                            percent: percentNum
                                         })
                                         })
-                                        if(percentNum <= 1) {
+                                        if (percentNum <= 1) {
                                             this.setState({
                                             this.setState({
                                                 uploadLoading: true,
                                                 uploadLoading: true,
                                             })
                                             })
                                         }
                                         }
-                                        if(percentNum >= 1){
+                                        if (percentNum >= 1) {
                                             this.setState({
                                             this.setState({
                                                 percent: 1,
                                                 percent: 1,
-                                            },()=>{
-                                                setTimeout(()=>{
+                                            }, () => {
+                                                setTimeout(() => {
                                                     this.setState({
                                                     this.setState({
                                                         uploadLoading: false,
                                                         uploadLoading: false,
-                                                    },()=>{
+                                                    }, () => {
                                                         this.setState({
                                                         this.setState({
                                                             percent: 0,
                                                             percent: 0,
                                                             newUploadArr: [],
                                                             newUploadArr: [],
                                                             newUploadInforArr: {}
                                                             newUploadInforArr: {}
                                                         })
                                                         })
                                                     })
                                                     })
-                                                },1500)
+                                                }, 1500)
                                             })
                                             })
                                         }
                                         }
-                                    }else if(infor.file && infor.file.status === 'removed'){
+                                    } else if (infor.file && infor.file.status === 'removed') {
                                         this.setState({
                                         this.setState({
                                             percent: 0,
                                             percent: 0,
                                             newUploadArr: [],
                                             newUploadArr: [],
@@ -209,16 +209,16 @@ class ImgList extends Component{
                         </Upload>
                         </Upload>
                     </Spin>
                     </Spin>
                 </div>
                 </div>
-                {fileList.length > 10 && Object.keys(this.props.uploadConfig).length === 0 ? <div className='seeMore' onClick={()=>{this.setState({seeMore:!this.state.seeMore})}}>
+                {fileList.length > 10 && Object.keys(this.props.uploadConfig).length === 0 ? <div className='seeMore' onClick={() => { this.setState({ seeMore: !this.state.seeMore }) }}>
                     {this.state.seeMore ? '收起' : '查看更多'}
                     {this.state.seeMore ? '收起' : '查看更多'}
-                </div> : <div/>}
-                <ul id={this.props.domId} style={{display:'none',zIndex:-1,}}>
+                </div> : <div />}
+                <ul id={this.props.domId} style={{ display: 'none', zIndex: -1, }}>
                     {
                     {
-                        fileList.map((value,index)=>(
+                        fileList.map((value, index) => (
                             <li key={index}>
                             <li key={index}>
-                                <img src={value.url || value.thumbUrl} onLoad={()=>{
+                                <img src={value.url || value.thumbUrl} onLoad={() => {
                                     this.imgLoading();
                                     this.imgLoading();
-                                }}/>
+                                }} />
                             </li>
                             </li>
                         ))
                         ))
                     }
                     }
@@ -231,14 +231,14 @@ class ImgList extends Component{
                         percent={parseFloat(this.state.percent * 100).toFixed(0)}
                         percent={parseFloat(this.state.percent * 100).toFixed(0)}
                     />
                     />
                     <div className='promptText'>文件上传中...</div>
                     <div className='promptText'>文件上传中...</div>
-                </div> : <div/>}
+                </div> : <div />}
             </div>
             </div>
         )
         )
     }
     }
 }
 }
 
 
 ImgList.propTypes = {
 ImgList.propTypes = {
-    domId : PropTypes.string,                            //如果一个界面有多个该组件,需要传入自定义id名称,用于图片列表显示
+    domId: PropTypes.string,                            //如果一个界面有多个该组件,需要传入自定义id名称,用于图片列表显示
     fileList: PropTypes.array.isRequired,                //图片文件列表
     fileList: PropTypes.array.isRequired,                //图片文件列表
     uploadConfig: PropTypes.object,                      //上传图片配置参数(需要上传图片时需要,存在与否,用于区分是否为上传或者为查看)
     uploadConfig: PropTypes.object,                      //上传图片配置参数(需要上传图片时需要,存在与否,用于区分是否为上传或者为查看)
     onChange: PropTypes.func,                            //选择图片
     onChange: PropTypes.func,                            //选择图片
@@ -248,7 +248,7 @@ ImgList.defaultProps = {
     domId: 'images',
     domId: 'images',
     fileList: [],
     fileList: [],
     uploadConfig: {},
     uploadConfig: {},
-    onChange:()=>{}
+    onChange: () => { }
 }
 }
 
 
 export default ImgList;
 export default ImgList;

+ 1 - 1
js/component/common/logPopup/viplogs.jsx

@@ -94,7 +94,7 @@ class VipLogs extends Component {
               visible: true,
               visible: true,
             })
             })
           }}
           }}
-          style={{ marginLeft: "10px" }}
+          style={{ margin: 5 }}
         >
         >
           日志
           日志
         </Button>
         </Button>

+ 36 - 15
js/component/common/projectOperation/index.jsx

@@ -1,9 +1,10 @@
 // 开单
 // 开单
 import React, { Component } from "react";
 import React, { Component } from "react";
-import { AutoComplete, Button, Form, Input, message, Modal, Radio, Select, Spin } from "antd";
+import { AutoComplete, Button, Upload, Form, Input, message, Modal, Radio, Select, Spin } from "antd";
 import { boutique } from "../../dataDic";
 import { boutique } from "../../dataDic";
 import $ from "jquery";
 import $ from "jquery";
-import { getboutique } from "../../tools";
+import { getboutique, splitUrl } from "../../tools";
+import ImgList from "../imgList";
 
 
 const FormItem = Form.Item;
 const FormItem = Form.Item;
 
 
@@ -27,12 +28,10 @@ class ProjectOperation extends Component {
             declarationBatch: '',
             declarationBatch: '',
             ifCertificationFee: '',
             ifCertificationFee: '',
             displayFees: "none",
             displayFees: "none",
-
             customerArr: [],
             customerArr: [],
             patentTypeList: [],
             patentTypeList: [],
-
             loading: false,
             loading: false,
-
+            orgCodeUrl: [],
             patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0  //收否为专利转让 0 否 1 是
             patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0  //收否为专利转让 0 否 1 是
         }
         }
         this.onSubmit = this.onSubmit.bind(this);
         this.onSubmit = this.onSubmit.bind(this);
@@ -77,6 +76,13 @@ class ProjectOperation extends Component {
             declarationBatch: dataInfor.declarationBatch || 1,//申报批次(只有高新有)
             declarationBatch: dataInfor.declarationBatch || 1,//申报批次(只有高新有)
             ifCertificationFee: isNaN(parseInt(dataInfor.ifCertificationFee)) ? '' : dataInfor.ifCertificationFee,//是否包含认证费
             ifCertificationFee: isNaN(parseInt(dataInfor.ifCertificationFee)) ? '' : dataInfor.ifCertificationFee,//是否包含认证费
             isIso: dataInfor.commodityName.indexOf("贯标") !== -1,
             isIso: dataInfor.commodityName.indexOf("贯标") !== -1,
+            orgCodeUrl: dataInfor.pictureUrl
+                ? splitUrl(
+                    dataInfor.pictureUrl,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                )
+                : [],
         });
         });
     }
     }
 
 
@@ -530,22 +536,37 @@ class ProjectOperation extends Component {
                                 </Select>}
                                 </Select>}
                                 <span className="mandatory">*</span>
                                 <span className="mandatory">*</span>
                             </FormItem>
                             </FormItem>
+                            {/* {
+                                this.state.orgCodeUrl.length > 0 &&
+                                <div className="clearfix">
+                                    <FormItem
+                                        labelCol={{ span: 4 }}
+                                        wrapperCol={{ span: 16 }}
+                                        label="附件"
+                                    >
+                                        <ImgList
+                                            fileList={this.state.orgCodeUrl}
+                                            domId="publicStatistics"
+                                        />
+                                    </FormItem>
+                                </div>
+                            } */}
                             <div className="clearfix">
                             <div className="clearfix">
                                 <FormItem
                                 <FormItem
                                     labelCol={{ span: 4 }}
                                     labelCol={{ span: 4 }}
                                     wrapperCol={{ span: 16 }}
                                     wrapperCol={{ span: 16 }}
                                     label="项目说明"
                                     label="项目说明"
                                 >
                                 >
-                                    {readOnly ? this.state.taskComment : 
-                                    <Input
-                                        type="textarea"
-                                        placeholder="如:派2022年会员服务,总会员服务三年,客户付款情况说明"
-                                        autosize={{ minRows: 4 }}
-                                        value={this.state.taskComment}
-                                        onChange={(e) => {
-                                            this.setState({ taskComment: e.target.value });
-                                        }}
-                                    />}
+                                    {readOnly ? this.state.taskComment :
+                                        <Input
+                                            type="textarea"
+                                            placeholder="如:派2022年会员服务,总会员服务三年,客户付款情况说明"
+                                            autosize={{ minRows: 4 }}
+                                            value={this.state.taskComment}
+                                            onChange={(e) => {
+                                                this.setState({ taskComment: e.target.value });
+                                            }}
+                                        />}
                                 </FormItem>
                                 </FormItem>
                                 <div style={{ color: "red", marginLeft: 144 }}>
                                 <div style={{ color: "red", marginLeft: 144 }}>
                                     请详细说明项目服务时间,总服务时间及付款情况,如:<span style={{ color: "#333" }}>派2022年会员服务,总会员服务三年,客户付款情况说明</span>
                                     请详细说明项目服务时间,总服务时间及付款情况,如:<span style={{ color: "#333" }}>派2022年会员服务,总会员服务三年,客户付款情况说明</span>

+ 142 - 8
js/component/common/projectOperation/vip.jsx

@@ -1,6 +1,8 @@
 import React, { Component } from "react";
 import React, { Component } from "react";
-import { AutoComplete, Button, Form, Input, message, Modal, Radio, Select, Spin } from "antd";
+import { AutoComplete, Button, Form, Input, message, Modal, Select, Spin } from "antd";
 import $ from "jquery";
 import $ from "jquery";
+import ImgList from "../../common/imgList";
+import { splitUrl } from "../../tools";
 
 
 const FormItem = Form.Item;
 const FormItem = Form.Item;
 
 
@@ -9,6 +11,58 @@ const formItemLayout = {
   wrapperCol: { span: 14 },
   wrapperCol: { span: 14 },
 };
 };
 
 
+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
+          domId={this.props.domId}
+          uploadConfig={{
+            action: globalConfig.context + "/api/admin/orderProject/uploadMemberFile",
+            data: { sign: "order_invoice_file" },
+            multiple: true,
+            listType: "picture-card",
+          }}
+          onChange={(infor) => {
+            this.handleChange(infor);
+          }}
+          fileList={fileList}
+        />
+      </div>
+    );
+  },
+});
+
 class ProjectOperationVip extends Component {
 class ProjectOperationVip extends Component {
   constructor(props) {
   constructor(props) {
     super(props);
     super(props);
@@ -24,18 +78,17 @@ class ProjectOperationVip extends Component {
       declarationBatch: '',
       declarationBatch: '',
       ifCertificationFee: '',
       ifCertificationFee: '',
       displayFees: "none",
       displayFees: "none",
-
       customerArr: [],
       customerArr: [],
       patentTypeList: [],
       patentTypeList: [],
-
       loading: false,
       loading: false,
-
-      patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0  //收否为专利转让 0 否 1 是
+      patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0, //收否为专利转让 0 否 1 是
+      orgCodeUrl: [],
     }
     }
     this.onSubmit = this.onSubmit.bind(this);
     this.onSubmit = this.onSubmit.bind(this);
     this.httpChange = this.httpChange.bind(this);
     this.httpChange = this.httpChange.bind(this);
     this.selectAuto = this.selectAuto.bind(this);
     this.selectAuto = this.selectAuto.bind(this);
     this.setValue = this.setValue.bind(this);
     this.setValue = this.setValue.bind(this);
+    this.getOrgCodeUrl = this.getOrgCodeUrl.bind(this);
   }
   }
 
 
   componentDidMount() {
   componentDidMount() {
@@ -52,10 +105,31 @@ class ProjectOperationVip extends Component {
       commodityQuantity: dataInfor.commodityQuantity, // 数量
       commodityQuantity: dataInfor.commodityQuantity, // 数量
       memberType: dataInfor.memberType.toString(),// 付款情况
       memberType: dataInfor.memberType.toString(),// 付款情况
       taskComment: dataInfor.taskComment, // 备注
       taskComment: dataInfor.taskComment, // 备注
+      orgCodeUrl: dataInfor.pictureUrl ? splitUrl(dataInfor.pictureUrl, ",", globalConfig.avatarHost + "/upload") : [],// 附件
     });
     });
   }
   }
+  //
+  getOrgCodeUrl(e) {
+    this.setState({ orgCodeUrl: e });
+  }
   // 新建会员项目
   // 新建会员项目
   onSubmit() {
   onSubmit() {
+
+    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(",");
+    }
+
     if (this.state.commodityId === undefined || !this.state.commodityId) {
     if (this.state.commodityId === undefined || !this.state.commodityId) {
       message.warning("服务名称不匹配!");
       message.warning("服务名称不匹配!");
       return
       return
@@ -72,17 +146,24 @@ class ProjectOperationVip extends Component {
       message.warning("请选择付款情况!");
       message.warning("请选择付款情况!");
       return
       return
     }
     }
+    if (this.state.memberType == "1" || this.state.memberType == "2") {
+      if (typeof pictureUrl !== "string") {
+        message.warning("请上传附件!");
+        return
+      }
+    }
     this.setState({
     this.setState({
       loading: true,
       loading: true,
     });
     });
     let infor = {
     let infor = {
-      commodityId: this.state.commodityId, //项目编号
       orderNo: this.props.orderNo, //订单编号
       orderNo: this.props.orderNo, //订单编号
+      commodityId: this.state.commodityId, //项目编号
       commodityName: this.state.commodityName, //项目名称
       commodityName: this.state.commodityName, //项目名称
       commodityQuantity: this.state.commodityQuantity, //商品数量
       commodityQuantity: this.state.commodityQuantity, //商品数量
       commodityPrice: 0, //签单总价
       commodityPrice: 0, //签单总价
       taskComment: this.state.taskComment, //服务说明
       taskComment: this.state.taskComment, //服务说明
       memberType: this.state.memberType,//会员付款状态
       memberType: this.state.memberType,//会员付款状态
+      pictureUrl: pictureUrl.length ? pictureUrl : "",//附件
     }
     }
     $.ajax({
     $.ajax({
       method: "POST",
       method: "POST",
@@ -105,7 +186,6 @@ class ProjectOperationVip extends Component {
                 跟进查看会员项目的审核状态,审核通过,即表示添加会员项目完成!!!
                 跟进查看会员项目的审核状态,审核通过,即表示添加会员项目完成!!!
               </div>),
               </div>),
           });
           });
-          // message.success("保存成功!");
           this.props.onCancel();
           this.props.onCancel();
         } else {
         } else {
           message.warning(data.error[0].message);
           message.warning(data.error[0].message);
@@ -115,6 +195,22 @@ class ProjectOperationVip extends Component {
   }
   }
   // 修改会员项目
   // 修改会员项目
   onChange() {
   onChange() {
+
+    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(",");
+    }
+
     if (this.state.commodityId === undefined || !this.state.commodityId) {
     if (this.state.commodityId === undefined || !this.state.commodityId) {
       message.warning("服务名称不匹配!");
       message.warning("服务名称不匹配!");
       return
       return
@@ -131,6 +227,12 @@ class ProjectOperationVip extends Component {
       message.warning("请选择付款情况!");
       message.warning("请选择付款情况!");
       return
       return
     }
     }
+    if (this.state.memberType == "1" || this.state.memberType == "2") {
+      if (typeof pictureUrl !== "string") {
+        message.warning("请上传附件!");
+        return
+      }
+    }
     this.setState({
     this.setState({
       loading: true,
       loading: true,
     });
     });
@@ -142,10 +244,12 @@ class ProjectOperationVip extends Component {
       data: {
       data: {
         id: this.state.fid, //任务ID
         id: this.state.fid, //任务ID
         commodityId: this.state.commodityId, //项目ID
         commodityId: this.state.commodityId, //项目ID
+        commodityName: this.state.commodityName, //项目名称
         orderNo: this.props.orderNo, //订单编号
         orderNo: this.props.orderNo, //订单编号
         commodityQuantity: this.state.commodityQuantity, //数量
         commodityQuantity: this.state.commodityQuantity, //数量
         taskComment: this.state.taskComment, //备注
         taskComment: this.state.taskComment, //备注
         memberType: this.state.memberType,//会员付款状态
         memberType: this.state.memberType,//会员付款状态
+        pictureUrl: pictureUrl.length ? pictureUrl : "",//附件
       },
       },
     }).done(
     }).done(
       function (data) {
       function (data) {
@@ -273,7 +377,16 @@ class ProjectOperationVip extends Component {
                   />}
                   />}
                 <span className="mandatory">*</span>
                 <span className="mandatory">*</span>
               </FormItem>
               </FormItem>
-              <div style={{ marginTop: "33px", color: "red", textAlign: "right", position: "relative", top: "-8", left: "0" }}>如会员项目,服务一年,请填写1,服务二年,请填写2,依次类推</div>
+              <div
+                style={{
+                  marginTop: "33px",
+                  color: "red",
+                  textAlign: "right",
+                  position: "relative",
+                  top: "-8",
+                  left: "0"
+                }}
+              >如会员项目,服务一年,请填写1,服务二年,请填写2,依次类推</div>
               <FormItem
               <FormItem
                 className="half-item"
                 className="half-item"
                 {...formItemLayout}
                 {...formItemLayout}
@@ -305,6 +418,27 @@ class ProjectOperationVip extends Component {
                   </Select>}
                   </Select>}
                 <span className="mandatory">*</span>
                 <span className="mandatory">*</span>
               </FormItem>
               </FormItem>
+              {
+                (this.state.memberType == "1" || this.state.memberType == "2") &&
+                <div className="clearfix">
+                  <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 16 }}
+                    label="上传附件"
+                  >
+                    <PicturesWall
+                      domId={'vip'}
+                      fileList={this.getOrgCodeUrl}
+                      pictureUrl={this.state.orgCodeUrl}
+                    />
+                    <span className="mandatory">*</span>
+                  </FormItem>
+                  <div style={{ color: "red", marginLeft: 144, marginBottom: 15 }}>
+                    特批需上传附件图,请上传客户同意我方继续服务并安排给我司付款的聊天记录截图,
+                    <p>若没有客户同意继续服务及会安排付款的截图,特派流程将无法走下去,以免造成派单耽搁</p>
+                  </div>
+                </div>
+              }
               <div className="clearfix">
               <div className="clearfix">
                 <FormItem
                 <FormItem
                   labelCol={{ span: 4 }}
                   labelCol={{ span: 4 }}

+ 100 - 31
js/component/manageCenter/financialManage/distribute/projectvip.jsx

@@ -4,13 +4,15 @@ import "./public.less";
 import "./shouKuan.less";
 import "./shouKuan.less";
 import { AutoComplete, Button, Input, Spin, Table, Select, message, Tabs, Tag, Tooltip, Modal } from "antd";
 import { AutoComplete, Button, Input, Spin, Table, Select, message, Tabs, Tag, Tooltip, Modal } from "antd";
 import OrderDesc from "../orderDetail/orderDesc";
 import OrderDesc from "../orderDetail/orderDesc";
-import ResolutionDetail from "@/resolutionDetail";
 import { ChooseList } from "../../order/orderNew/chooseList"
 import { ChooseList } from "../../order/orderNew/chooseList"
 import ReactToPrint from "react-to-print";
 import ReactToPrint from "react-to-print";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import { salesList } from "@/dataDic.js";
 import { salesList } from "@/dataDic.js";
 import ShowModalDiv from "@/showModal.jsx";
 import ShowModalDiv from "@/showModal.jsx";
 import VipLogs from "../../../common/logPopup/viplogs";//会员日志
 import VipLogs from "../../../common/logPopup/viplogs";//会员日志
+import { splitUrl } from "@/tools";
+import ImgList from "../../../common/imgList";
+
 const { TabPane } = Tabs;
 const { TabPane } = Tabs;
 
 
 //财务专员会员项目审核
 //财务专员会员项目审核
@@ -183,6 +185,12 @@ const ProjectVip = React.createClass({
           }
           }
         },
         },
         {
         {
+          title: "数量",
+          dataIndex: "commodityQuantity",
+          key: "commodityQuantity",
+          className: "title-table",
+        },
+        {
           title: "项目说明",
           title: "项目说明",
           dataIndex: "taskComment",
           dataIndex: "taskComment",
           key: "taskComment",
           key: "taskComment",
@@ -205,38 +213,30 @@ const ProjectVip = React.createClass({
         },
         },
         {
         {
           title: "操作",
           title: "操作",
-          dataIndex: "caozuo",
-          key: "caouzo",
+          dataIndex: "pictureUrl",
+          key: "pictureUrl",
           className: "title-table",
           className: "title-table",
-          width: 216,
           render: (text, recard) => {
           render: (text, recard) => {
             return (
             return (
               <div>
               <div>
-                {
-                  recard.status == 1 &&
-                  <Button
-                    type="primary"
-                    onClick={(e) => {
-                      e.stopPropagation(),
-                        this.checkRemark(recard, 1);
-                    }}
-                  >
-                    通过
-                  </Button>
-                }
-                {
-                  recard.status == 1 &&
-                  <Button
-                    type="danger"
-                    style={{ marginLeft: 10, }}
-                    onClick={(e) => {
-                      e.stopPropagation(),
-                        this.checkRemark(recard, 0);
-                    }}
-                  >
-                    驳回
-                  </Button>
-                }
+                <Button
+                  type="primary"
+                  style={{ margin: 5 }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    let arr = text || [];
+                    this.setState({
+                      pictureUrlArr: splitUrl(arr, ",", globalConfig.avatarHost + "/upload"),
+                      recard,
+                    }, () => {
+                      this.setState({
+                        imgListVisible: true,
+                      })
+                    })
+                  }}
+                >
+                  审核
+                </Button>
                 <VipLogs id={recard.id} />
                 <VipLogs id={recard.id} />
               </div>
               </div>
             );
             );
@@ -250,6 +250,9 @@ const ProjectVip = React.createClass({
       checkVisible: "",//审核弹窗开关
       checkVisible: "",//审核弹窗开关
       checkId: "",//会员项目编号
       checkId: "",//会员项目编号
       result: -1,//1同意 0驳回
       result: -1,//1同意 0驳回
+      imgListVisible: false,//附件弹窗
+      pictureUrlArr: [],//附件
+      recard: {},
     };
     };
   },
   },
 
 
@@ -374,10 +377,10 @@ const ProjectVip = React.createClass({
     })
     })
   },
   },
   // 点击审核
   // 点击审核
-  checkRemark(record, nmb) {
+  checkRemark(nmb) {
     this.setState({
     this.setState({
       checkVisible: true,
       checkVisible: true,
-      checkId: record.id,
+      checkId: this.state.recard.id,
       result: nmb
       result: nmb
     });
     });
   },
   },
@@ -409,6 +412,7 @@ const ProjectVip = React.createClass({
             loading: false,
             loading: false,
             checkVisible: false,
             checkVisible: false,
             checkData: '',
             checkData: '',
+            imgListVisible: false,
           });
           });
           this.loadData()
           this.loadData()
         } else {
         } else {
@@ -823,6 +827,7 @@ const ProjectVip = React.createClass({
           //审核弹窗
           //审核弹窗
           this.state.checkVisible &&
           this.state.checkVisible &&
           <Modal
           <Modal
+            width="400px"
             maskClosable={false}
             maskClosable={false}
             title="审核订单"
             title="审核订单"
             confirmLoading={this.state.loading}
             confirmLoading={this.state.loading}
@@ -838,6 +843,7 @@ const ProjectVip = React.createClass({
             }}
             }}
           >
           >
             <TextArea
             <TextArea
+              rows={4}
               value={this.state.checkData}
               value={this.state.checkData}
               onChange={(e) => {
               onChange={(e) => {
                 this.setState({
                 this.setState({
@@ -848,6 +854,69 @@ const ProjectVip = React.createClass({
             />
             />
           </Modal>
           </Modal>
         }
         }
+        {
+          //查看附件
+          this.state.imgListVisible &&
+          <Modal
+            maskClosable={false}
+            visible={this.state.imgListVisible}
+            onOk={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            onCancel={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            width="600px"
+            title="审核"
+            footer=""
+          >
+            <div>附件</div>
+            <div>
+              <ImgList
+                fileList={this.state.pictureUrlArr}
+                domId="publicStatistics"
+              />
+            </div>
+            <div
+              style={{
+                display: "flex",
+                flexDirection: "row",
+                justifyContent: "center",
+              }}
+            >
+              {
+                this.state.recard.status == 1 &&
+                <Button
+                  type="primary"
+                  style={{ margin: '20px 10px 5px' }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    this.checkRemark(1);
+                  }}
+                >
+                  通过
+                </Button>
+              }
+              {
+                this.state.recard.status == 1 &&
+                <Button
+                  type="danger"
+                  style={{ margin: '20px 10px 5px' }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    this.checkRemark(0);
+                  }}
+                >
+                  驳回
+                </Button>
+              }
+            </div>
+          </Modal>
+        }
       </div>
       </div>
     );
     );
   },
   },

+ 57 - 2
js/component/manageCenter/financialManage/distribute/projectvipall.jsx

@@ -9,6 +9,8 @@ import OrderItemStatus from "../../../common/orderItemStatus";
 import { salesList } from "@/dataDic.js";
 import { salesList } from "@/dataDic.js";
 import ShowModalDiv from "@/showModal.jsx";
 import ShowModalDiv from "@/showModal.jsx";
 import VipLogs from "../../../common/logPopup/viplogs";
 import VipLogs from "../../../common/logPopup/viplogs";
+import { splitUrl } from "@/tools";
+import ImgList from "../../../common/imgList";
 const { TabPane } = Tabs;
 const { TabPane } = Tabs;
 
 
 
 
@@ -182,6 +184,12 @@ const ProjectVipAll = React.createClass({
           }
           }
         },
         },
         {
         {
+          title: "数量",
+          dataIndex: "commodityQuantity",
+          key: "commodityQuantity",
+          className: "title-table",
+        },
+        {
           title: "项目说明",
           title: "项目说明",
           dataIndex: "taskComment",
           dataIndex: "taskComment",
           key: "taskComment",
           key: "taskComment",
@@ -204,12 +212,29 @@ const ProjectVipAll = React.createClass({
         },
         },
         {
         {
           title: "操作",
           title: "操作",
-          dataIndex: "caozuo",
-          key: "caouzo",
+          dataIndex: "pictureUrl",
+          key: "pictureUrl",
           className: "title-table",
           className: "title-table",
           render: (text, recard) => {
           render: (text, recard) => {
             return (
             return (
               <div>
               <div>
+                <Button
+                  type="primary"
+                  style={{ margin: 5 }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    let arr = text || [];
+                    this.setState({
+                      pictureUrlArr: splitUrl(arr, ",", globalConfig.avatarHost + "/upload"),
+                    }, () => {
+                      this.setState({
+                        imgListVisible: true,
+                      })
+                    })
+                  }}
+                >
+                  查看附件
+                </Button>
                 <VipLogs id={recard.id} />
                 <VipLogs id={recard.id} />
               </div>
               </div>
             );
             );
@@ -223,6 +248,8 @@ const ProjectVipAll = React.createClass({
       checkVisible: "",//审核弹窗开关
       checkVisible: "",//审核弹窗开关
       checkId: "",//会员项目编号
       checkId: "",//会员项目编号
       result: -1,//1同意 0驳回
       result: -1,//1同意 0驳回
+      imgListVisible: false,//附件弹窗
+      pictureUrlArr: [],//附件
     };
     };
   },
   },
 
 
@@ -748,6 +775,34 @@ const ProjectVipAll = React.createClass({
             />
             />
           </Modal>
           </Modal>
         }
         }
+        {
+          //查看附件
+          this.state.imgListVisible &&
+          <Modal
+            maskClosable={false}
+            visible={this.state.imgListVisible}
+            onOk={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            onCancel={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            width="600px"
+            title="附件"
+            footer=""
+          >
+            <div>
+              <ImgList
+                fileList={this.state.pictureUrlArr}
+                domId="publicStatistics"
+              />
+            </div>
+          </Modal>
+        }
       </div>
       </div>
     );
     );
   },
   },

+ 99 - 30
js/component/manageCenter/order/orderNew/approvedvipproject.jsx

@@ -9,6 +9,8 @@ import OrderItemStatus from "../../../common/orderItemStatus";
 import { salesList } from "@/dataDic.js";
 import { salesList } from "@/dataDic.js";
 import ShowModalDiv from "@/showModal.jsx";
 import ShowModalDiv from "@/showModal.jsx";
 import VipLogs from "../../../common/logPopup/viplogs";//会员日志
 import VipLogs from "../../../common/logPopup/viplogs";//会员日志
+import { splitUrl } from "@/tools";
+import ImgList from "../../../common/imgList";
 const { TabPane } = Tabs;
 const { TabPane } = Tabs;
 
 
 //总裁特批会员项目
 //总裁特批会员项目
@@ -177,6 +179,12 @@ const ApprovedVipProject = React.createClass({
           }
           }
         },
         },
         {
         {
+          title: "数量",
+          dataIndex: "commodityQuantity",
+          key: "commodityQuantity",
+          className: "title-table",
+        },
+        {
           title: "项目说明",
           title: "项目说明",
           dataIndex: "taskComment",
           dataIndex: "taskComment",
           key: "taskComment",
           key: "taskComment",
@@ -199,37 +207,29 @@ const ApprovedVipProject = React.createClass({
         },
         },
         {
         {
           title: "操作",
           title: "操作",
-          dataIndex: "caozuo",
-          key: "caouzo",
-          width: 216,
+          dataIndex: "pictureUrl",
+          key: "pictureUrl",
           render: (text, recard) => {
           render: (text, recard) => {
             return (
             return (
               <div>
               <div>
-                {
-                  recard.status == 2 &&
-                  <Button
-                    type="primary"
-                    onClick={(e) => {
-                      e.stopPropagation(),
-                        this.checkRemark(recard, 1);
-                    }}
-                  >
-                    通过
-                  </Button>
-                }
-                {
-                  recard.status == 2 &&
-                  <Button
-                    type="danger"
-                    style={{ marginLeft: 10, }}
-                    onClick={(e) => {
-                      e.stopPropagation(),
-                        this.checkRemark(recard, 0);
-                    }}
-                  >
-                    驳回
-                  </Button>
-                }
+                <Button
+                  type="primary"
+                  style={{ margin: 5 }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    let arr = text || [];
+                    this.setState({
+                      pictureUrlArr: splitUrl(arr, ",", globalConfig.avatarHost + "/upload"),
+                      recard,
+                    }, () => {
+                      this.setState({
+                        imgListVisible: true,
+                      })
+                    })
+                  }}
+                >
+                  审核
+                </Button>
                 <VipLogs id={recard.id} />
                 <VipLogs id={recard.id} />
               </div>
               </div>
             );
             );
@@ -243,6 +243,9 @@ const ApprovedVipProject = React.createClass({
       checkVisible: "",//审核弹窗开关
       checkVisible: "",//审核弹窗开关
       checkId: "",//会员项目编号
       checkId: "",//会员项目编号
       result: -1,//1同意 0驳回
       result: -1,//1同意 0驳回
+      imgListVisible: false,//附件弹窗
+      pictureUrlArr: [],//附件
+      recard: {},
     };
     };
   },
   },
 
 
@@ -367,10 +370,10 @@ const ApprovedVipProject = React.createClass({
     })
     })
   },
   },
   // 点击审核
   // 点击审核
-  checkRemark(record, nmb) {
+  checkRemark(nmb) {
     this.setState({
     this.setState({
       checkVisible: true,
       checkVisible: true,
-      checkId: record.id,
+      checkId: this.state.recard.id,
       result: nmb
       result: nmb
     });
     });
   },
   },
@@ -402,6 +405,7 @@ const ApprovedVipProject = React.createClass({
             loading: false,
             loading: false,
             checkVisible: false,
             checkVisible: false,
             checkData: '',
             checkData: '',
+            imgListVisible: false,
           });
           });
           this.loadData()
           this.loadData()
         } else {
         } else {
@@ -816,6 +820,7 @@ const ApprovedVipProject = React.createClass({
           //审核弹窗
           //审核弹窗
           this.state.checkVisible &&
           this.state.checkVisible &&
           <Modal
           <Modal
+            width="400px"
             maskClosable={false}
             maskClosable={false}
             title="审核订单"
             title="审核订单"
             confirmLoading={this.state.loading}
             confirmLoading={this.state.loading}
@@ -831,6 +836,7 @@ const ApprovedVipProject = React.createClass({
             }}
             }}
           >
           >
             <TextArea
             <TextArea
+              rows={4}
               value={this.state.checkData}
               value={this.state.checkData}
               onChange={(e) => {
               onChange={(e) => {
                 this.setState({
                 this.setState({
@@ -841,6 +847,69 @@ const ApprovedVipProject = React.createClass({
             />
             />
           </Modal>
           </Modal>
         }
         }
+        {
+          //查看附件
+          this.state.imgListVisible &&
+          <Modal
+            maskClosable={false}
+            visible={this.state.imgListVisible}
+            onOk={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            onCancel={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            width="600px"
+            title="审核"
+            footer=""
+          >
+            <div>附件</div>
+            <div>
+              <ImgList
+                fileList={this.state.pictureUrlArr}
+                domId="publicStatistics"
+              />
+            </div>
+            <div
+              style={{
+                display: "flex",
+                flexDirection: "row",
+                justifyContent: "center",
+              }}
+            >
+              {
+                this.state.recard.status == 2 &&
+                <Button
+                  type="primary"
+                  style={{ margin: '20px 10px 5px' }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    this.checkRemark(1);
+                  }}
+                >
+                  通过
+                </Button>
+              }
+              {
+                this.state.recard.status == 2 &&
+                <Button
+                  type="danger"
+                  style={{ margin: '20px 10px 5px' }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    this.checkRemark(0);
+                  }}
+                >
+                  驳回
+                </Button>
+              }
+            </div>
+          </Modal>
+        }
       </div>
       </div>
     );
     );
   },
   },

+ 58 - 3
js/component/manageCenter/order/orderNew/myprojectvip.jsx

@@ -10,6 +10,8 @@ import { salesList } from "@/dataDic.js";
 import ProjectOperationVip from ".././../../common/projectOperation/vip";
 import ProjectOperationVip from ".././../../common/projectOperation/vip";
 import ShowModalDiv from "@/showModal.jsx";
 import ShowModalDiv from "@/showModal.jsx";
 import VipLogs from "../../../common/logPopup/viplogs";//会员日志
 import VipLogs from "../../../common/logPopup/viplogs";//会员日志
+import { splitUrl } from "@/tools";
+import ImgList from "../../../common/imgList";
 const { TabPane } = Tabs;
 const { TabPane } = Tabs;
 
 
 //我的会员项目列表
 //我的会员项目列表
@@ -176,6 +178,12 @@ const MyProjectVip = React.createClass({
           }
           }
         },
         },
         {
         {
+          title: "数量",
+          dataIndex: "commodityQuantity",
+          key: "commodityQuantity",
+          className: "title-table",
+        },
+        {
           title: "项目说明",
           title: "项目说明",
           dataIndex: "taskComment",
           dataIndex: "taskComment",
           key: "taskComment",
           key: "taskComment",
@@ -197,8 +205,8 @@ const MyProjectVip = React.createClass({
         },
         },
         {
         {
           title: "操作",
           title: "操作",
-          dataIndex: "caozuo",
-          key: "caouzo",
+          dataIndex: "pictureUrl",
+          key: "pictureUrl",
           className: "title-table",
           className: "title-table",
           render: (text, recard) => {
           render: (text, recard) => {
             return (
             return (
@@ -206,7 +214,7 @@ const MyProjectVip = React.createClass({
                 {
                 {
                   recard.status == 4 &&
                   recard.status == 4 &&
                   <Button
                   <Button
-                    style={{ marginLeft: 10 }}
+                    style={{ margin: 5 }}
                     type="primary"
                     type="primary"
                     onClick={() => {
                     onClick={() => {
                       this.setState({
                       this.setState({
@@ -218,6 +226,23 @@ const MyProjectVip = React.createClass({
                     重新提交
                     重新提交
                   </Button>
                   </Button>
                 }
                 }
+                <Button
+                  type="primary"
+                  style={{ margin: 5 }}
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    let arr = text || [];
+                    this.setState({
+                      pictureUrlArr: splitUrl(arr, ",", globalConfig.avatarHost + "/upload"),
+                    }, () => {
+                      this.setState({
+                        imgListVisible: true,
+                      })
+                    })
+                  }}
+                >
+                  查看附件
+                </Button>
                 <VipLogs id={recard.id} />
                 <VipLogs id={recard.id} />
               </div>
               </div>
             );
             );
@@ -233,6 +258,8 @@ const MyProjectVip = React.createClass({
       result: -1,//1同意 0驳回
       result: -1,//1同意 0驳回
       vipVisible: false,//编辑弹窗
       vipVisible: false,//编辑弹窗
       dataInfor: {},//编辑的数据
       dataInfor: {},//编辑的数据
+      imgListVisible: false,//附件弹窗
+      pictureUrlArr: [],//附件
     };
     };
   },
   },
 
 
@@ -778,6 +805,34 @@ const MyProjectVip = React.createClass({
             onCancel={this.vipClose}
             onCancel={this.vipClose}
           />
           />
         }
         }
+        {
+          //查看附件
+          this.state.imgListVisible &&
+          <Modal
+            maskClosable={false}
+            visible={this.state.imgListVisible}
+            onOk={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            onCancel={() => {
+              this.setState({
+                imgListVisible: false,
+              });
+            }}
+            width="600px"
+            title="附件"
+            footer=""
+          >
+            <div>
+              <ImgList
+                fileList={this.state.pictureUrlArr}
+                domId="publicStatistics"
+              />
+            </div>
+          </Modal>
+        }
       </div>
       </div>
     );
     );
   },
   },

+ 8 - 2
js/component/manageCenter/project/summary/highTechConfig.jsx

@@ -628,8 +628,8 @@ const currency = [
     },
     },
     {
     {
         title: "项目说明",
         title: "项目说明",
-        dataIndex: "specialComment",
-        key: "specialComment",
+        dataIndex: "taskComment",
+        key: "taskComment",
         width: 300,
         width: 300,
         // render: (v) => (
         // render: (v) => (
         //     <Tooltip placement="topRight" title={v} overlayStyle={{
         //     <Tooltip placement="topRight" title={v} overlayStyle={{
@@ -644,6 +644,12 @@ const currency = [
         //     </Tooltip>
         //     </Tooltip>
         // )
         // )
     },
     },
+    {
+        title: "特别说明",
+        dataIndex: "specialComment",
+        key: "specialComment",
+        isNoD: true,
+    }
 ];
 ];
 
 
 export {
 export {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "afanti",
   "name": "afanti",
-  "version": "1.2.25",
+  "version": "1.2.27",
   "description": "",
   "description": "",
   "main": "index.js",
   "main": "index.js",
   "scripts": {
   "scripts": {