Browse Source

修复预览会被浏览器阻止的bug

yee 8 years ago
parent
commit
18de9b4414
26 changed files with 359 additions and 192 deletions
  1. 5 35
      js/component/account/services/activityCostList.jsx
  2. 7 22
      js/component/account/services/intellectualDesc.jsx
  3. 16 0
      js/component/manageCenter/servicesManage/copyright/comPatentAdd.jsx
  4. 3 3
      js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx
  5. 35 1
      js/component/manageCenter/servicesManage/copyright/copyright.jsx
  6. 8 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx
  7. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activity.jsx
  8. 64 87
      js/component/manageCenter/servicesManage/highTech/fosterDesc/activityCostList.jsx
  9. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/finance.jsx
  10. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx
  11. 2 2
      js/component/manageCenter/servicesManage/highTech/fosterDesc/hrSituation.jsx
  12. 13 8
      js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx
  13. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/orgTechCenter.jsx
  14. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/ratepay.jsx
  15. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/standard.jsx
  16. 1 1
      js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.jsx
  17. 55 2
      js/component/manageCenter/servicesManage/highTech/highTechApply.jsx
  18. 5 3
      js/component/manageCenter/servicesManage/highTech/highTechInfo.jsx
  19. 55 7
      js/component/manageCenter/servicesManage/patent/comPatentAdd.jsx
  20. 5 5
      js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx
  21. 18 0
      js/component/manageCenter/servicesManage/technology/applyAdd.jsx
  22. 1 2
      js/component/manageCenter/servicesManage/technology/applyChange.jsx
  23. 34 0
      js/component/manageCenter/servicesManage/technology/applyManage.jsx
  24. 12 3
      js/component/manageCenter/userManage/orgDesc.jsx
  25. 13 3
      js/component/manageCenter/userManage/userDesc.jsx
  26. 1 1
      js/component/tools.js

+ 5 - 35
js/component/account/services/activityCostList.jsx

@@ -68,8 +68,8 @@ const ActivityDescFrom = Form.create()(React.createClass({
 
                         externalTotalCost: values.externalTotalCost,
                         externalAbroadCost: values.externalAbroadCost,
-                        enterpriseFiller: values.enterpriseFiller,
-                        signDateFormattedDate: values.signDate.format('YYYY-MM-DD'),
+                        //enterpriseFiller: values.enterpriseFiller,
+                        //signDateFormattedDate: values.signDate.format('YYYY-MM-DD'),
                         sortNumber: values.sortNumber,
                         accountUrl: this.state.accountUrl
                     }
@@ -237,28 +237,6 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
-                        label="企业填报人"
-                    >
-                        {getFieldDecorator('enterpriseFiller', {
-                            rules: [{ required: true, message: '此项为必填项!' }],
-                            initialValue: theData.enterpriseFiller
-                        })(
-                            <Input />
-                            )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="企业填报人签字日期"
-                    >
-                        {getFieldDecorator('signDate', {
-                            rules: [{ type: "object", required: true, message: '此项为必填项!' }],
-                            initialValue: theData.signDate ? moment(theData.signDate) : null
-                        })(
-                            <DatePicker onChange={(date, dateString) => { this.state.signDateFormattedDate = dateString }} />
-                            )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
                         label="排序号"
                     >
                         {getFieldDecorator('sortNumber', {
@@ -433,9 +411,9 @@ const Activity = React.createClass({
                     thisdata.internalAmortizationCost + thisdata.internalAmortizationCost + thisdata.internalDesignCost +
                     thisdata.internalEquipmentCost + thisdata.internalOtherCost + thisdata.externalTotalCost,
 
-                    enterpriseFiller: thisdata.enterpriseFiller,
-                    signDate: thisdata.signDate,
-                    signDateFormattedDate: thisdata.signDateFormattedDate,
+                    //enterpriseFiller: thisdata.enterpriseFiller,
+                    //signDate: thisdata.signDate,
+                    //signDateFormattedDate: thisdata.signDateFormattedDate,
 
                     sortNumber: thisdata.sortNumber,
 
@@ -529,14 +507,6 @@ const Activity = React.createClass({
                     dataIndex: 'allCost',
                     key: 'allCost'
                 }, {
-                    title: '企业填报人',
-                    dataIndex: 'enterpriseFiller',
-                    key: 'enterpriseFiller'
-                }, {
-                    title: '企业填报人签字日期',
-                    dataIndex: 'signDateFormattedDate',
-                    key: 'signDateFormattedDate'
-                }, {
                     title: '排序号',
                     dataIndex: 'sortNumber',
                     key: 'sortNumber'

+ 7 - 22
js/component/account/services/intellectualDesc.jsx

@@ -26,25 +26,8 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 if (data.error && data.error.length) {
                     message.warning(data.error[0].message);
                 };
-                return;
-            };
-            this.setState({
-                id: data.data.id,
-                uid: data.data.uid,
-                pid: data.data.pid,
-                intellectualPropertyNumber: data.data.intellectualPropertyNumber,
-                intellectualPropertyName: data.data.intellectualPropertyName,
-                sortNumber: data.data.sortNumber,
-                catagory: data.data.catagory,
-                obtainWay: data.data.obtainWay,
-                authorizationNumber: data.data.authorizationNumber,
-                authorizationDate: data.data.authorizationDate,
-                propertyRightUrl: data.data.propertyRightUrl,
-                type: data.data.type,
-                manuscript: data.data.manuscript,
-                propertyRightDownloadFileName: data.data.propertyRightDownloadFileName,
-                authorizationDateFormattedDate: data.data.authorizationDateFormattedDate
-            });
+                this.state.data = {};
+            } else { this.state.data = data.data };
         }).always(function () {
             this.setState({
                 loading: false
@@ -116,8 +99,10 @@ const IntellectualDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
-            this.loadData(nextProps.data.id, nextProps.data.type);
-            this.props.form.resetFields();
+            if (nextProps.data.id) {
+                this.loadData(nextProps.data.id, nextProps.data.type);
+            };
+            this.state.data = {};
             this.state.fileList = [];
         };
     },
@@ -129,7 +114,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
             wrapperCol: { span: 12 },
         };
         const _me = this;
-        const theData = this.state;
+        const theData = this.state.data;
         return (
             <Form horizontal onSubmit={this.handleSubmit}>
                 <FormItem

+ 16 - 0
js/component/manageCenter/servicesManage/copyright/comPatentAdd.jsx

@@ -66,6 +66,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                         "outsource": values.outsource, // 外包公司, size 0-60
                         "comment": values.workIssue, // 派单信息, size 0-128
                         "inUrgent": values.inUrgent, //  加急天数,
+                        "salesman": values.salesman,//营销员
                         //"comment": values.comment, // 备注 size 0-128
                         "principal": values.principal // 负责人id
                     }
@@ -161,6 +162,20 @@ const PatentAddFrom = Form.create()(React.createClass({
                         <Input placeholder="输入外包公司" />
                     )}
                 </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="营销员"
+                >
+                    {getFieldDecorator('salesman', {
+                        rules: [{ required: true, message: '请选择一个营销员!' }]
+                    })(
+                        <Select
+                            placeholder="请选择加急时间"
+                            style={{ width: 200 }}>
+                            {this.props.salesmanOption}
+                        </Select>
+                        )}
+                </FormItem>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">确认</Button>
                     <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
@@ -211,6 +226,7 @@ const PatentAdd = React.createClass({
                             closeModal={this.handleCancel}
                             okClick={() => { this.props.closeAdd(false, true) }}
                             companyOption={this.props.companyOption}
+                            salesmanOption={this.props.salesmanOption}
                             consultantOption={this.props.consultantOption} />
                     </Modal>
                 </Spin>

+ 3 - 3
js/component/manageCenter/servicesManage/copyright/comPatentChange.jsx

@@ -238,7 +238,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                     pagination={false}
                     dataSource={this.state.stateTable}
                     columns={this.state.stateColumns} />
-                <div className="clearfix" style={{paddingLeft:'4px', paddingTop: '20px', background: '#eee' }}>
+                <div className="clearfix" style={{paddingLeft:'4px', paddingTop: '20px',marginBottom:'10px', background: '#eee' }}>
                     <FormItem className="half-item"
                         {...formItemLayout}
                         label="状态流转"
@@ -381,7 +381,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_apply', '/api/admin/copyright/download')}>软著申请书</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'copyright', 'copyright_apply', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'copyright', 'copyright_apply', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
@@ -418,7 +418,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
                             <span className="download-file">
                                 <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_auth', '/api/admin/copyright/download')}>软著证书</a>
                                 <a onClick={() => {
-                                    getPreview(theData.id, 'copyright', 'copyright_auth', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                    var newTab = window.open('about:blank'); getPreview(theData.id, 'copyright', 'copyright_auth', function (data) { newTab.location.href = data; });
                                 }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                             </span>
                             : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 35 - 1
js/component/manageCenter/servicesManage/copyright/copyright.jsx

@@ -66,7 +66,7 @@ const copyright = React.createClass({
                         createTimeFormattedDate: thisdata.createTimeFormattedDate,
                         acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
                         founder: thisdata.founder,
-                        techPrincipal:thisdata.techPrincipal
+                        techPrincipal: thisdata.techPrincipal
                     });
                 };
                 this.state.pagination.defaultCurrent = data.data.pageNo;
@@ -111,6 +111,38 @@ const copyright = React.createClass({
             });
         }.bind(this));
     },
+    getSalesmanList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/salesman",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                    return;
+                };
+                let _me = this, theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    )
+                };
+                this.setState({
+                    salesmanOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getCompanyList() {
         this.setState({
             loading: true
@@ -302,6 +334,7 @@ const copyright = React.createClass({
         });
         this.loadData();
         this.getAuthorList();
+        this.getSalesmanList();
         this.getCompanyList();
         this.getStateList();
         if (window.location.search) {
@@ -459,6 +492,7 @@ const copyright = React.createClass({
                         <span>软著申请管理</span>
                         <PatentAdd
                             companyOption={this.state.companyOption}
+                            salesmanOption={this.state.salesmanOption}
                             onClick={this.addClick}
                             closeAdd={this.closeAdd} />
                     </div>

+ 8 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/achievement.jsx

@@ -190,7 +190,14 @@ const AchievementDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'achievement', '/api/admin/downloadAchievement')}>{theData.enclosureDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'achievement', 'achievement', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank');
+                                if (theData.enclosureUrl.split('.')[1] == 'doc' || theData.enclosureUrl.split('.')[1] == 'docx') {
+                                    getPreview(theData.id, 'achievement', 'achievement', function (data) {
+                                        newTab.location.href = data;
+                                    });
+                                } else {
+                                    newTab.location.href = globalConfig.context + '/open/writeImage?path=' + theData.enclosureUrl
+                                }
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/activity.jsx

@@ -336,7 +336,7 @@ const ActivityForm = Form.create()(React.createClass({
                                 <span className="download-file">
                                     <a onClick={newDownloadFile.bind(null, theData.id, 'proof', '/api/admin/downloadProof')}>{theData.proofDownloadFileName}</a>
                                     <a onClick={() => {
-                                        getPreview(theData.id, 'activity', 'proof', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                        var newTab = window.open('about:blank'); getPreview(theData.id, 'activity', 'proof', function (data) { newTab.location.href = data; });
                                     }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                                 </span>
                                 : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 64 - 87
js/component/manageCenter/servicesManage/highTech/fosterDesc/activityCostList.jsx

@@ -56,10 +56,10 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     url: globalConfig.context + "/api/admin/activityCost",
                     data: {
                         id: this.props.data.id,
-                        aid: this.props.data.aid,
+                        aid: this.props.data.aid || this.state.aid,
                         uid: this.props.uid,
                         activityNumber: this.state.activityNumber,
-                        year: this.state.year,
+                        year: this.props.data.year || this.state.year,
 
                         internalLaborCost: values.internalLaborCost,
                         internalDirectCost: values.internalDirectCost,
@@ -71,8 +71,8 @@ const ActivityDescFrom = Form.create()(React.createClass({
 
                         externalTotalCost: values.externalTotalCost,
                         externalAbroadCost: values.externalAbroadCost,
-                        enterpriseFiller: values.enterpriseFiller,
-                        signDateFormattedDate: values.signDate.format('YYYY-MM-DD'),
+                        //enterpriseFiller: values.enterpriseFiller,
+                        //signDateFormattedDate: values.signDate.format('YYYY-MM-DD'),
                         sortNumber: values.sortNumber,
                         accountUrl: this.state.accountUrl
                     }
@@ -113,7 +113,10 @@ const ActivityDescFrom = Form.create()(React.createClass({
                         </Select>
                 }
                 <p className="activityCost-title">费用年份</p>
-                <div><YearSelect defValue={this.state.year} handleyear={(e) => { this.state.year = e; }} /></div>
+                {
+                    theData.year ? <span>{theData.year}</span> :
+                        <YearSelect handleyear={(e) => { this.state.year = e; }} />
+                }
                 <p className="activityCost-title">内部研究开发费用(万元)</p>
                 <div className="clearfix activityCost-box">
                     <FormItem className="half-item"
@@ -241,28 +244,6 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     </FormItem>
                     <FormItem className="half-item"
                         {...formItemLayout}
-                        label="企业填报人"
-                    >
-                        {getFieldDecorator('enterpriseFiller', {
-                            rules: [{ required: true, message: '此项为必填项!' }],
-                            initialValue: theData.enterpriseFiller
-                        })(
-                            <Input />
-                            )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
-                        label="企业填报人签字日期"
-                    >
-                        {getFieldDecorator('signDate', {
-                            rules: [{ type: "object", required: true, message: '此项为必填项!' }],
-                            initialValue: theData.signDate ? moment(theData.signDate) : null
-                        })(
-                            <DatePicker onChange={(date, dateString) => { this.state.signDateFormattedDate = dateString }} />
-                            )}
-                    </FormItem>
-                    <FormItem className="half-item"
-                        {...formItemLayout}
                         label="排序号"
                     >
                         {getFieldDecorator('sortNumber', {
@@ -304,7 +285,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'activity_cost_account', '/api/admin/downloadActivityCost')}>{theData.accountDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'activityCost', 'activity_cost_account', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'activityCost', 'activity_cost_account', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
@@ -401,66 +382,70 @@ const Activity = React.createClass({
         })).done((data1, data2) => {
             let data = data1[0];
             let activityNumber = data2[0];
-            if (data.error.length || !data.data || !data.data.list) {
-                message.warning(data.error[0].message);
-                return;
-            };
-            if (activityNumber.error.length || !activityNumber.data) {
-                message.warning(activityNumber.error[0].message);
-                return;
-            };
-            for (let i = 0; i < data.data.list.length; i++) {
-                let thisdata = data.data.list[i];
-                this.state.data.push({
-                    key: i,
-                    id: thisdata.id,
-                    uid: thisdata.uid,
-                    aid: thisdata.aid,
-                    activityNumber: thisdata.activityNumber,
-                    year: thisdata.year,
-                    startDate: thisdata.startDate,
-                    endDate: thisdata.endDate,
+            if (!data.data || !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];
+                    this.state.data.push({
+                        key: i,
+                        id: thisdata.id,
+                        uid: thisdata.uid,
+                        aid: thisdata.aid,
+                        activityNumber: thisdata.activityNumber,
+                        year: thisdata.year,
+                        startDate: thisdata.startDate,
+                        endDate: thisdata.endDate,
 
-                    internalAllCost:
-                    thisdata.internalLaborCost + thisdata.internalDirectCost + thisdata.internalDepreciationCost +
-                    thisdata.internalAmortizationCost + thisdata.internalAmortizationCost + thisdata.internalDesignCost +
-                    thisdata.internalEquipmentCost + thisdata.internalOtherCost,
+                        internalAllCost:
+                        thisdata.internalLaborCost + thisdata.internalDirectCost + thisdata.internalDepreciationCost +
+                        thisdata.internalAmortizationCost + thisdata.internalAmortizationCost + thisdata.internalDesignCost +
+                        thisdata.internalEquipmentCost + thisdata.internalOtherCost,
 
-                    internalLaborCost: thisdata.internalLaborCost,
-                    internalDirectCost: thisdata.internalDirectCost,
-                    internalDepreciationCost: thisdata.internalDepreciationCost,
-                    internalAmortizationCost: thisdata.internalAmortizationCost,
-                    internalDesignCost: thisdata.internalDesignCost,
-                    internalEquipmentCost: thisdata.internalEquipmentCost,
-                    internalOtherCost: thisdata.internalOtherCost,
+                        internalLaborCost: thisdata.internalLaborCost,
+                        internalDirectCost: thisdata.internalDirectCost,
+                        internalDepreciationCost: thisdata.internalDepreciationCost,
+                        internalAmortizationCost: thisdata.internalAmortizationCost,
+                        internalDesignCost: thisdata.internalDesignCost,
+                        internalEquipmentCost: thisdata.internalEquipmentCost,
+                        internalOtherCost: thisdata.internalOtherCost,
 
-                    externalTotalCost: thisdata.externalTotalCost,
-                    externalAbroadCost: thisdata.externalAbroadCost,
+                        externalTotalCost: thisdata.externalTotalCost,
+                        externalAbroadCost: thisdata.externalAbroadCost,
 
-                    allCost:
-                    thisdata.internalLaborCost + thisdata.internalDirectCost + thisdata.internalDepreciationCost +
-                    thisdata.internalAmortizationCost + thisdata.internalAmortizationCost + thisdata.internalDesignCost +
-                    thisdata.internalEquipmentCost + thisdata.internalOtherCost + thisdata.externalTotalCost,
+                        allCost:
+                        thisdata.internalLaborCost + thisdata.internalDirectCost + thisdata.internalDepreciationCost +
+                        thisdata.internalAmortizationCost + thisdata.internalAmortizationCost + thisdata.internalDesignCost +
+                        thisdata.internalEquipmentCost + thisdata.internalOtherCost + thisdata.externalTotalCost,
 
-                    enterpriseFiller: thisdata.enterpriseFiller,
-                    signDate: thisdata.signDate,
-                    signDateFormattedDate: thisdata.signDateFormattedDate,
+                        //enterpriseFiller: thisdata.enterpriseFiller,
+                        //signDate: thisdata.signDate,
+                        //signDateFormattedDate: thisdata.signDateFormattedDate,
 
-                    sortNumber: thisdata.sortNumber,
+                        sortNumber: thisdata.sortNumber,
 
-                    startDateFormattedDate: thisdata.startDateFormattedDate,
-                    endDateFormattedDate: thisdata.endDateFormattedDate,
-                    accountDownloadFileName: thisdata.accountDownloadFileName,
-                    accountUrl: thisdata.accountUrl
+                        startDateFormattedDate: thisdata.startDateFormattedDate,
+                        endDateFormattedDate: thisdata.endDateFormattedDate,
+                        accountDownloadFileName: thisdata.accountDownloadFileName,
+                        accountUrl: thisdata.accountUrl
+                    });
+                };
+                this.state.pagination.current = data.data.pageNo;
+                this.state.pagination.total = data.data.totalCount;
+                this.setState({
+                    dataSource: this.state.data,
+                    pagination: this.state.pagination
                 });
             };
-            this.state.activityNumberList = activityNumber.data;
-            this.state.pagination.current = data.data.pageNo;
-            this.state.pagination.total = data.data.totalCount;
-            this.setState({
-                dataSource: this.state.data,
-                pagination: this.state.pagination
-            });
+            if (!activityNumber.data) {
+                if (activityNumber.error && activityNumber.error.length) {
+                    message.warning(activityNumber.error[0].message);
+                };
+            } else {
+                this.state.activityNumberList = activityNumber.data;
+            };
         }).always(function () {
             this.setState({
                 loading: false
@@ -540,14 +525,6 @@ const Activity = React.createClass({
                     dataIndex: 'allCost',
                     key: 'allCost'
                 }, {
-                    title: '企业填报人',
-                    dataIndex: 'enterpriseFiller',
-                    key: 'enterpriseFiller'
-                }, {
-                    title: '企业填报人签字日期',
-                    dataIndex: 'signDateFormattedDate',
-                    key: 'signDateFormattedDate'
-                }, {
                     title: '排序号',
                     dataIndex: 'sortNumber',
                     key: 'sortNumber'

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/finance.jsx

@@ -316,7 +316,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'finance', '/api/admin/downloadFinance')}>{theData.financeDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'finance', 'finance', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'finance', 'finance', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/honorList.jsx

@@ -143,7 +143,7 @@ const HonorListDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'honor', '/api/admin/downloadHonor')}>{theData.enclosureDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'honor', 'honor', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'honor', 'honor', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 2 - 2
js/component/manageCenter/servicesManage/highTech/fosterDesc/hrSituation.jsx

@@ -481,7 +481,7 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'roster', '/api/admin/downloadHumanResource')}>{theData.rosterDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'humanResource', 'roster', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'humanResource', 'roster', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
@@ -518,7 +518,7 @@ const HrSituationDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'social_security', '/api/admin/downloadHumanResource')}>{theData.socialSecurityDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'humanResource', 'social_security', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'humanResource', 'social_security', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                          : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 13 - 8
js/component/manageCenter/servicesManage/highTech/fosterDesc/intellectualDesc.jsx

@@ -17,8 +17,8 @@ const IntellectualDescFrom = Form.create()(React.createClass({
             crossDomain: false,
             url: globalConfig.context + "/api/admin/intellectualDetail",
             data: {
-                id: id != undefined ? id : this.props.data.id,
-                type: type != undefined ? type : this.props.data.type
+                id: id ? id : this.props.data.id,
+                type: type != undefined && type != null ? type : this.props.data.type
             }
         }).done((data) => {
             if (!data.data) {
@@ -53,7 +53,9 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
-        this.loadData();
+        if (this.props.data.id && this.props.data.type != undefined && this.props.data.type != null) {
+            this.loadData();
+        };
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -93,8 +95,10 @@ const IntellectualDescFrom = Form.create()(React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         if (!this.props.visible && nextProps.visible) {
-            this.loadData(nextProps.data.id, nextProps.data.type);
-            this.props.form.resetFields();
+            if (nextProps.data.id) {
+                this.loadData(nextProps.data.id, nextProps.data.type);
+            };
+            this.state.data = {};
             this.state.fileList = [];
         };
     },
@@ -224,8 +228,9 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                         {theData.propertyRightUrl ?
                             <span className="download-file">
                                 <a onClick={newDownloadFile.bind(null, this.props.data.id, 'property_right', '/api/admin/downloadPropertyRight')}>{theData.propertyRightDownloadFileName}</a>
-                                <a onClick={() => {
-                                    getPreview(theData.id, 'intellectualProperty', 'property_right', function (data) { console.log(data); window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                <a onClick={() => { var newTab = window.open('about:blank'); getPreview(theData.id, 'intellectualProperty', 'property_right', function (data) {
+                                        newTab.location.href = data;
+                                    });
                                 }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                             </span>
                             : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传知识产权证书!</span>}
@@ -235,7 +240,7 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                             <span className="download-file">
                                 <a onClick={newDownloadFile.bind(null, this.props.data.id, 'manuscript', '/api/admin/downloadManuscript', this.props.data.type)}>稿件下载</a>
                                 <a onClick={() => {
-                                    getPreview(theData.pid, 'intellectualProperty', theData.type == 1 ? 'patent_writing' : 'copyright_apply', function (data) { console.log(data); window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                    var newTab = window.open('about:blank'); getPreview(theData.pid, 'intellectualProperty', theData.type == 1 ? 'patent_writing' : 'copyright_apply', function (data) { console.log(data); newTab.location.href = data; });
                                 }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                             </span>
                             : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传稿件!</span>}

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/orgTechCenter.jsx

@@ -141,7 +141,7 @@ const CenterListDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'protocol', '/api/admin/downloadProtocol')}>{theData.protocolDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'techCenterDetail', 'protocol', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'techCenterDetail', 'protocol', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/ratepay.jsx

@@ -269,7 +269,7 @@ const RatepayDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'ratepay', '/api/admin/downloadRatepay')}>{theData.taxReturnDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'ratepay', 'ratepay', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'ratepay', 'ratepay', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/standard.jsx

@@ -162,7 +162,7 @@ const StandardDesc = React.createClass({
                                 <span className="download-file">
                                     <a onClick={newDownloadFile.bind(null, this.props.data.id, 'standard', '/api/admin/downloadStandard')}>标准定制附件</a>
                                     <a onClick={() => {
-                                        getPreview(this.props.data.id, 'standard', 'standard', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                        var newTab = window.open('about:blank'); getPreview(this.props.data.id, 'standard', 'standard', function (data) { newTab.location.href = data; });
                                     }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                                 </span>
                                 : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 1 - 1
js/component/manageCenter/servicesManage/highTech/fosterDesc/techProduct.jsx

@@ -259,7 +259,7 @@ const TechProductDescFrom = Form.create()(React.createClass({
                         <span className="download-file">
                             <a onClick={newDownloadFile.bind(null, this.props.data.id, 'tech_product', '/api/admin/downloadTecProduct')}>{theData.accountDownloadFileName}</a>
                             <a onClick={() => {
-                                getPreview(theData.id, 'techProduct', 'tech_product', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                var newTab = window.open('about:blank'); getPreview(theData.id, 'techProduct', 'tech_product', function (data) { newTab.location.href = data; });
                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /></a>
                         </span>
                         : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 55 - 2
js/component/manageCenter/servicesManage/highTech/highTechApply.jsx

@@ -371,11 +371,11 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                             </div>
                         </div>
                         <div className="form-title">状态流转记录: </div>
-                        <Table style={{background: "#eee" }}
+                        <Table style={{ background: "#eee" }}
                             pagination={false}
                             dataSource={this.state.stateTable}
                             columns={this.state.stateColumns} />
-                        <div className="clearfix" style={{paddingTop:'20px',background:'#eee'}}>
+                        <div className="clearfix" style={{ paddingTop: '20px', background: '#eee' }}>
                             <FormItem className="half-item"
                                 labelCol={{ span: 4 }}
                                 wrapperCol={{ span: 18 }}
@@ -672,6 +672,7 @@ const CognizanceAdd = React.createClass({
             this.state.contacts = undefined;
             this.state.comment = undefined;
             this.state.consultant = undefined;
+            this.state.salesman = undefined;
             this.state.uid = undefined;
         };
         this.state.visible = nextProps.showAdd;
@@ -710,6 +711,13 @@ const CognizanceAdd = React.createClass({
             });
             return;
         };
+        if (!this.state.salesman) {
+            message.warning('请选择一个营销员!');
+            this.setState({
+                loading: false
+            });
+            return;
+        };
         $.ajax({
             method: "POST",
             dataType: "json",
@@ -720,6 +728,7 @@ const CognizanceAdd = React.createClass({
                 contacts: this.state.contacts,
                 comment: this.state.comment,
                 consultant: this.state.consultant,
+                salesman: this.state.salesman,
                 largeOrder: this.state.largeOrder,
                 uid: this.state.uid
             }
@@ -812,6 +821,16 @@ const CognizanceAdd = React.createClass({
                                 onChange={(e) => { this.setState({ comment: e.target.value }); }} />
                         </div>
                     </div>
+                    <div className="clearfix" style={{ marginTop: 20 }}>
+                        <div className="half-item">
+                            <span>选择营销员:  </span>
+                            <Select placeholder="请选择营销员" style={{ width: 200 }}
+                                value={this.state.salesman}
+                                onSelect={(e, n) => { this.setState({ salesman: e }); }}>
+                                {this.props.salesmanOption}
+                            </Select>
+                        </div>
+                    </div>
                 </Modal>
             </div>
         );
@@ -909,6 +928,38 @@ const Cognizance = React.createClass({
             });
         }.bind(this));
     },
+    getSalesmanList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/salesman",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                    return;
+                };
+                let _me = this, theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    )
+                };
+                this.setState({
+                    salesmanOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getCompanyList() {
         this.setState({
             loading: true
@@ -1025,6 +1076,7 @@ const Cognizance = React.createClass({
         });
         this.loadData();
         this.getAuthorList();
+        this.getSalesmanList();
         this.getCompanyList();
         if (window.location.search) {
             let theArr = getSearchUrl(window.location.search);
@@ -1158,6 +1210,7 @@ const Cognizance = React.createClass({
                     closeDesc={this.closeDesc} />
                 <CognizanceAdd
                     authorOption={this.state.authorOption}
+                    salesmanOption={this.state.salesmanOption}
                     companyOption={this.state.companyOption}
                     showAdd={this.state.showAdd}
                     closeAdd={this.closeAdd} />

+ 5 - 3
js/component/manageCenter/servicesManage/highTech/highTechInfo.jsx

@@ -215,7 +215,7 @@ const highTechInfo = React.createClass({
             ]
         };
     },
-    //第一
+    //基础资料
     loadInfoData(uid) {
         this.setState({
             loading: true
@@ -364,7 +364,8 @@ const highTechInfo = React.createClass({
             });
         }.bind(this));
     },
-    //第二
+    //申请书
+    //第一
     loadHighTechList(uid) {
         $.ajax({
             method: "post",
@@ -466,7 +467,7 @@ const highTechInfo = React.createClass({
             };
         }.bind(this));
     },
-    //第
+    //第
     loadIntellectualData(uid) {
         $.ajax({
             method: "get",
@@ -542,6 +543,7 @@ const highTechInfo = React.createClass({
             this.loadHRData(uid);
         }.bind(this));
     },
+    //第三
     loadHRData(uid) {
         $.ajax({
             method: "post",

+ 55 - 7
js/component/manageCenter/servicesManage/patent/comPatentAdd.jsx

@@ -13,7 +13,7 @@ class Avatar extends React.Component {
         }
     }
     componentWillReceiveProps(nextProps) {
-        if ( !this.props.visible && nextProps.visible) {
+        if (!this.props.visible && nextProps.visible) {
             this.state.fileList = [];
         };
     }
@@ -80,6 +80,38 @@ const PatentAddFrom = Form.create()(React.createClass({
             });
         }.bind(this));
     },
+    getSalesmanList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/salesman",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                    return;
+                };
+                let _me = this, theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    )
+                };
+                this.setState({
+                    salesmanOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getContactsList(theUid) {
         $.ajax({
             method: "get",
@@ -118,6 +150,7 @@ const PatentAddFrom = Form.create()(React.createClass({
     },
     componentWillMount() {
         this.getCompanyList();
+        this.getSalesmanList();
     },
     handleSubmit(e) {
         e.preventDefault();
@@ -138,7 +171,8 @@ const PatentAddFrom = Form.create()(React.createClass({
                         'secondInventorName': values.secondInventorName,
                         'office': values.office,
                         'thirdInventorName': values.thirdInventorName,
-                        'patentProryStatementUrl': this.state.avatarUrl
+                        'patentProryStatementUrl': this.state.avatarUrl,
+                        'salesman': values.salesman
                     }
                 }).done(function (data) {
                     if (data.error && !data.error.length) {
@@ -263,16 +297,30 @@ const PatentAddFrom = Form.create()(React.createClass({
                     wrapperCol={{ span: 12 }}
                 >
                     {getFieldDecorator('avatar')(
-                        <Avatar 
-                        urlData={this.avatarUrl} 
-                        name='patent_prory_statement' 
-                        oid={this.state.companyName}
-                        visible = {this.props.visible} />
+                        <Avatar
+                            urlData={this.avatarUrl}
+                            name='patent_prory_statement'
+                            oid={this.state.companyName}
+                            visible={this.props.visible} />
                     )}
                     <p>
                         <a onClick={() => { window.open(globalConfig.context + "/api/admin/patent/downloadTemplateFile?sign=patent_prory_statement") }}>模板下载</a>
                     </p>
                 </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="营销员"
+                >
+                    {getFieldDecorator('salesman', {
+                        rules: [{ required: true, message: '请选择一个营销员!' }],
+                        initialValue: this.state.salesman || null
+                    })(
+                        <Select placeholder="选择营销员"
+                            style={{ width: 260 }} >
+                            {this.state.salesmanOption}
+                        </Select>
+                        )}
+                </FormItem>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                     <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>

+ 5 - 5
js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx

@@ -471,7 +471,7 @@ const PatentDesc = React.createClass({
                                                 <Button onClick={this.confirmButton}>确认稿件</Button> : <span></span>
                                             }
                                             <a onClick={() => {
-                                                getPreview(this.state.data.id, 'patent', 'patent_writing', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                                var newTab = window.open('about:blank'); getPreview(this.state.data.id, 'patent', 'patent_writing', function (data) { newTab.location.href = data; });
                                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利稿件未上传</p>
@@ -480,7 +480,7 @@ const PatentDesc = React.createClass({
                                         <p className="download-file">
                                             <a onClick={newDownloadFile.bind(null, this.state.xid, "authorization_notice", "/api/admin/patent/download")}>授权通知书</a>
                                             <a onClick={() => {
-                                                getPreview(this.state.data.id, 'patent', 'authorization_notice', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                                var newTab = window.open('about:blank'); getPreview(this.state.data.id, 'patent', 'authorization_notice', function (data) { newTab.location.href = data; });
                                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />授权通知书未上传</p>
@@ -489,7 +489,7 @@ const PatentDesc = React.createClass({
                                         <p className="download-file">
                                             <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_certificate", "/api/admin/patent/download")}>专利证书</a>
                                             <a onClick={() => {
-                                                getPreview(this.state.data.id, 'patent', 'patent_certificate', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                                var newTab = window.open('about:blank'); getPreview(this.state.data.id, 'patent', 'patent_certificate', function (data) { newTab.location.href = data; });
                                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利证书未上传</p>
@@ -498,7 +498,7 @@ const PatentDesc = React.createClass({
                                         <p className="download-file">
                                             <a onClick={newDownloadFile.bind(null, this.state.xid, "patent_prory_statement", "/api/admin/patent/download")}>专利代理委托书</a>
                                             <a onClick={() => {
-                                                getPreview(this.state.data.id, 'patent', 'patent_prory_statement', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                                var newTab = window.open('about:blank'); getPreview(this.state.data.id, 'patent', 'patent_prory_statement', function (data) { newTab.location.href = data; });
                                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />专利代理委托书未上传</p>
@@ -507,7 +507,7 @@ const PatentDesc = React.createClass({
                                         <p className="download-file">
                                             <a onClick={newDownloadFile.bind(null, this.state.lastYearTaxReportId, "last_year_ratepay", "/api/admin/patent/downloadRatepay")}>上年度纳税报表</a>
                                             <a onClick={() => {
-                                                getPreview(this.state.lastYearTaxReportId, 'patent', 'last_year_ratepay', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                                var newTab = window.open('about:blank'); getPreview(this.state.lastYearTaxReportId, 'patent', 'last_year_ratepay', function (data) { newTab.location.href = data; });
                                             }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                                         </p> :
                                         <p><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />上年度纳税报表未上传</p>

+ 18 - 0
js/component/manageCenter/servicesManage/technology/applyAdd.jsx

@@ -88,6 +88,13 @@ const ApplyAdd = React.createClass({
             });
             return;
         };
+        if (!this.state.salesman) {
+            message.warning('请选择一个营销员!');
+            this.setState({
+                loading: false
+            });
+            return;
+        };
         $.ajax({
             method: "POST",
             dataType: "json",
@@ -106,6 +113,7 @@ const ApplyAdd = React.createClass({
                 projectApproval: this.state.projectApproval,
                 subsidy: this.state.subsidy,
                 consultant: this.state.consultant,
+                salesman: this.state.salesman
             }
         }).done(function (data) {
             if (!data.error.length) {
@@ -227,11 +235,21 @@ const ApplyAdd = React.createClass({
                                 <Radio value={2}>后补助</Radio>
                             </Radio.Group>
                         </div>
+
                         <div className="half-item">
                             <span className="item-title">金额: </span>
                             <Input style={{ width: 200 }} onChange={(e) => { this.state.projectApproval = e.target.value; }} />
                             <span>万元</span>
                         </div>
+                        <div className="half-item">
+                            <span className="item-title">营销员:  </span>
+                            <Select
+                                placeholder="请填写营销员"
+                                style={{ width: 260 }}
+                                onChange={(e) => { this.state.salesman = e; }}>
+                                {this.props.salesmanOption}
+                            </Select>
+                        </div>
                     </div>
                 </Modal>
             </div>

+ 1 - 2
js/component/manageCenter/servicesManage/technology/applyChange.jsx

@@ -474,7 +474,6 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                                     };
                                     this.state.approvalUrl = info.file.response.data;
                                 } else if (info.file.status === 'error') {
-                                    debugger
                                     message.error(`${info.file.name} 文件上传失败。`);
                                 }
                                 this.setState({ fileList: info.fileList.slice(-1) });
@@ -486,7 +485,7 @@ const ApplyChangeFrom = Form.create()(React.createClass({
                             <span className="download-file">
                                 <a onClick={techDownloadFile.bind(null, "/api/admin/techproject/download", this.state.data.id)}>项目材料</a>
                                 <a onClick={() => {
-                                    getPreview(theData.id, 'techProject', 'tech_project', function (data) { window.open('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data)) });
+                                    var newTab = window.open('about:blank'); getPreview(theData.id, 'techProject', 'tech_project', function (data) { newTab.location.href = data; });
                                 }}><Icon style={{ fontSize: '16px' }} type="eye-o" /> </a>
                             </span>
                             : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>

+ 34 - 0
js/component/manageCenter/servicesManage/technology/applyManage.jsx

@@ -107,6 +107,38 @@ const ApplyManage = React.createClass({
             });
         }.bind(this));
     },
+    getSalesmanList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/salesman",
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                    return;
+                };
+                let _me = this, theArr = [];
+                for (var item in data.data) {
+                    theArr.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    )
+                };
+                this.setState({
+                    salesmanOption: theArr
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     getConsultant() {
         this.setState({
             loading: true
@@ -264,6 +296,7 @@ const ApplyManage = React.createClass({
         });
         this.loadData();
         this.getAuthorList();
+        this.getSalesmanList();
         this.getCompanyList();
         this.getConsultant();
         if (window.location.search) {
@@ -401,6 +434,7 @@ const ApplyManage = React.createClass({
                 <ApplyAdd
                     consultantOption={this.state.consultantOption}
                     companyAddOption={this.state.companyAddOption}
+                    salesmanOption={this.state.salesmanOption}
                     showAdd={this.state.showAdd}
                     closeAdd={this.closeAdd} />
             </div >

+ 12 - 3
js/component/manageCenter/userManage/orgDesc.jsx

@@ -13,6 +13,7 @@ const OrgCertify = Form.create()(React.createClass({
             visible: false,
             loading: false,
             tabKey: "1",
+            saveSign: "save",
             eduLvlOption: [],
             auditStatusOption: []
         };
@@ -157,7 +158,9 @@ const OrgCertify = Form.create()(React.createClass({
         }.bind(this));
     },
     handleSubmit(e) {
-        e.preventDefault();
+        if (e) {
+            e.preventDefault();
+        };
         this.props.form.validateFields((err, values) => {
             if (!err) {
                 this.setState({
@@ -219,7 +222,8 @@ const OrgCertify = Form.create()(React.createClass({
                         locationProvince: values.locationAddress[0],
 
                         aid: values.aid, //指派业务员ID
-                        mid: values.mid //指派客户经理ID
+                        mid: values.mid, //指派客户经理ID
+                        saveSign: this.state.saveSign
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -230,6 +234,7 @@ const OrgCertify = Form.create()(React.createClass({
                 }.bind(this)).always(function () {
                     this.setState({
                         visible: false,
+                        saveSign: "save"
                     });
                     this.props.handleOk();
                 }.bind(this));
@@ -672,7 +677,11 @@ const OrgCertify = Form.create()(React.createClass({
                 </Tabs>
                 <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
-                    <Button className="set-submit" type="ghost" onClick={this.handleCancel} >取消</Button>
+                    <Button className="set-submit" type="ghost"
+                        onClick={() => {
+                            this.state.saveSign = "submit";
+                            this.handleSubmit();
+                        }}>提交审核</Button>
                 </FormItem>
             </Form >
         );

+ 13 - 3
js/component/manageCenter/userManage/userDesc.jsx

@@ -11,7 +11,8 @@ const UserForm = Form.create()(React.createClass({
     getInitialState() {
         return {
             visible: false,
-            loading: false
+            loading: false,
+            saveSign: "save"
         };
     },
     loadData(uid) {
@@ -137,7 +138,9 @@ const UserForm = Form.create()(React.createClass({
         }.bind(this));
     },
     handleSubmit(e) {
-        e.preventDefault();
+        if (e) {
+            e.preventDefault();
+        };
         this.props.form.validateFields((err, values) => {
             //金额判断
             if (values.amountMoney && values.amountMoney < 0 && values.amountMoney > 100 && /^\d+(\.\d{2})?$/.test(values.amountMoney)) {
@@ -174,7 +177,8 @@ const UserForm = Form.create()(React.createClass({
                         paymentDateFormattedDate: values.paymentDateFormattedDate ? values.paymentDateFormattedDate.format("YYYY-MM-DD") : undefined,
 
                         aid: values.aid, //指派业务员ID
-                        mid: values.mid //指派客户经理ID
+                        mid: values.mid, //指派客户经理ID
+                        saveSign: this.state.saveSign
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -185,6 +189,7 @@ const UserForm = Form.create()(React.createClass({
                 }.bind(this)).always(function () {
                     this.setState({
                         visible: false,
+                        saveSign: "save"
                     });
                     this.props.handleOk();
                 }.bind(this));
@@ -403,6 +408,11 @@ const UserForm = Form.create()(React.createClass({
                 </div>
                 <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                    <Button className="set-submit" type="ghost"
+                        onClick={() => {
+                            this.state.saveSign = "submit";
+                            this.handleSubmit();
+                        }}>提交审核</Button>
                 </FormItem>
             </Form >
         )

+ 1 - 1
js/component/tools.js

@@ -563,7 +563,7 @@ module.exports = {
                         message.warning(data.error[0].message);
                     };
                 };
-                callback(data.data);
+                callback('https://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(location.origin + globalConfig.context + "/open/preview?" + data.data));
             }
         });
     },