|
@@ -1,10 +1,11 @@
|
|
|
import React from 'react';
|
|
|
-import { Icon, Modal, message, Spin, Input, Select, DatePicker, Button, Row, Col, Table, Form } from 'antd';
|
|
|
+import { Icon, Modal, message, Spin, Input, Select, DatePicker, Button, Row, Col, Table, Form, Upload } from 'antd';
|
|
|
import './comprehensive.less';
|
|
|
import ajax from 'jquery/src/ajax/xhr.js';
|
|
|
import $ from 'jquery/src/ajax';
|
|
|
+import moment from 'moment';
|
|
|
import { copyrightStateList } from '../../../dataDic.js';
|
|
|
-import { getCopyrightState, getTime } from '../../../tools.js';
|
|
|
+import { getCopyrightState, getTime, copyrightDownloadFile, beforeUploadFile, getInUrgentTime } from '../../../tools.js';
|
|
|
|
|
|
const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
getInitialState() {
|
|
@@ -47,7 +48,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
});
|
|
|
this.loadData();
|
|
|
},
|
|
|
- loadData(uid, id) {
|
|
|
+ loadData(id) {
|
|
|
this.setState({
|
|
|
loading: true
|
|
|
});
|
|
@@ -56,25 +57,22 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
dataType: "json",
|
|
|
crossDomain: false,
|
|
|
cache: false,
|
|
|
- url: globalConfig.context + "/api/admin/copyright/logs",
|
|
|
+ url: globalConfig.context + "/techservice/copyright/logs",
|
|
|
data: {
|
|
|
id: id || this.props.data.id
|
|
|
}
|
|
|
}), $.ajax({
|
|
|
- method: "post",
|
|
|
+ method: "get",
|
|
|
dataType: "json",
|
|
|
crossDomain: false,
|
|
|
cache: false,
|
|
|
- url: globalConfig.context + "/api/admin/getContacts",
|
|
|
- data: {
|
|
|
- uid: uid || this.props.data.uid
|
|
|
- }
|
|
|
+ url: globalConfig.context + "/techservice/cognizance/getContacts"
|
|
|
}), $.ajax({
|
|
|
method: "get",
|
|
|
dataType: "json",
|
|
|
crossDomain: false,
|
|
|
cache: false,
|
|
|
- url: globalConfig.context + "/api/admin/copyright/detail",
|
|
|
+ url: globalConfig.context + "/techservice/copyright/detail",
|
|
|
data: {
|
|
|
id: id || this.props.data.id
|
|
|
}
|
|
@@ -124,8 +122,10 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
principal: detailData.principal,
|
|
|
contact: detailData.contact,
|
|
|
copyrightName: detailData.copyrightName,
|
|
|
+ copyrightNumber: detailData.copyrightNumber,
|
|
|
status: detailData.status,
|
|
|
comment: detailData.comment,
|
|
|
+ copyrightInfo: detailData.copyrightInfo,
|
|
|
workIssue: detailData.workIssue,
|
|
|
outsource: detailData.outsource,
|
|
|
inUrgent: detailData.inUrgent,
|
|
@@ -143,6 +143,7 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
authorizedDateFormattedDate: detailData.authorizedDateFormattedDate,
|
|
|
createTimeFormattedDate: detailData.createTimeFormattedDate,
|
|
|
acceptTimeFormattedDate: detailData.acceptTimeFormattedDate,
|
|
|
+ expectTime: [detailData.acceptTime, detailData.inUrgent]
|
|
|
});
|
|
|
}).always(function () {
|
|
|
this.setState({
|
|
@@ -152,37 +153,32 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
},
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
if (!this.props.visible && nextProps.visible) {
|
|
|
- this.loadData(nextProps.data.uid, nextProps.data.id);
|
|
|
+ this.loadData(nextProps.data.id);
|
|
|
};
|
|
|
},
|
|
|
handleSubmit(e) {
|
|
|
e.preventDefault();
|
|
|
this.props.form.validateFields((err, values) => {
|
|
|
- if (values.state || values.principal || values.recordTime || values.comment) {
|
|
|
- if (!values.state && !values.principal && !values.recordTime) {
|
|
|
- message.warning("请填写完整的状态流转信息!");
|
|
|
- return;
|
|
|
- };
|
|
|
- };
|
|
|
if (!err) {
|
|
|
this.props.spinState(true);
|
|
|
$.ajax({
|
|
|
method: "POST",
|
|
|
dataType: "json",
|
|
|
crossDomain: false,
|
|
|
- url: globalConfig.context + "/api/admin/copyright/modify",
|
|
|
+ url: globalConfig.context + "/techservice/copyright/modify",
|
|
|
data: {
|
|
|
"id": this.props.data.id,
|
|
|
"contact": values.contact, // 联系人, 1,2,3
|
|
|
- //"copyrightInfo": values.copyrightInfo, // 软著简介,size 0-255
|
|
|
+ "copyrightInfo": values.copyrightInfo, // 软著简介,size 0-255
|
|
|
"copyrightName": values.copyrightName, // 软著名称, size 0-60
|
|
|
- "outsource": values.outsource, // 外包公司, size 0-60
|
|
|
- "workIssue": values.workIssue, // 派单信息, size 0-128
|
|
|
+ //"copyrightNumber": values.copyrightNumber,
|
|
|
+ //"outsource": values.outsource, // 外包公司, size 0-60
|
|
|
+ //"workIssue": values.workIssue, // 派单信息, size 0-128
|
|
|
"inUrgent": values.inUrgent, // 加急天数,
|
|
|
- "status": values.status, // 状态
|
|
|
- "comment": values.comment, // 备注 size 0-128
|
|
|
- "recordTime": values.recordTime ? values.recordTime.format("YYYY-MM-DD HH:mm:ss") : undefined, // 状态修改时间 yyyy-MM-dd HH:mm:ss
|
|
|
- "principal": values.principal // 负责人id
|
|
|
+ //"status": values.status, // 状态
|
|
|
+ //"comment": values.comment, // 备注 size 0-128
|
|
|
+ //"recordTime": values.recordTime ? values.recordTime.format("YYYY-MM-DD HH:mm:ss") : undefined, // 状态修改时间 yyyy-MM-dd HH:mm:ss
|
|
|
+ //"principal": values.principal, // 负责人id
|
|
|
}
|
|
|
}).done(function (data) {
|
|
|
if (!data.error.length) {
|
|
@@ -210,16 +206,16 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
return (
|
|
|
<Form onSubmit={this.handleSubmit} id="CopyrightDesc-form">
|
|
|
<Row className="express-desc-row">
|
|
|
- <Col span={4}>公司名称</Col>
|
|
|
- <Col span={4}>{theData.unitName}</Col>
|
|
|
+ <Col span={3}>公司名称</Col>
|
|
|
+ <Col span={6}>{theData.unitName}</Col>
|
|
|
<Col span={4}>公司组织机构代码</Col>
|
|
|
- <Col span={4}>{theData.unitNumber}</Col>
|
|
|
+ <Col span={6}>{theData.unitNumber}</Col>
|
|
|
</Row>
|
|
|
<Row className="express-desc-row">
|
|
|
- <Col span={4}>公司地址</Col>
|
|
|
- <Col span={4}>{theData.province}/{theData.city}/{theData.area}</Col>
|
|
|
+ <Col span={3}>公司地址</Col>
|
|
|
+ <Col span={6}>{theData.province}/{theData.city}/{theData.area}</Col>
|
|
|
<Col span={4}>联系人</Col>
|
|
|
- <Col span={4}>
|
|
|
+ <Col span={6}>
|
|
|
{getFieldDecorator('contact', {
|
|
|
rules: [{ required: true, message: '此项为必填项!' }],
|
|
|
initialValue: theData.contact
|
|
@@ -233,22 +229,26 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
</Col>
|
|
|
</Row>
|
|
|
<Row className="express-desc-row">
|
|
|
- <Col span={4}>编号</Col>
|
|
|
- <Col span={4}>{theData.serialNumber}</Col>
|
|
|
- <Col span={4}>外包公司</Col>
|
|
|
- <Col span={4}>
|
|
|
- {getFieldDecorator('outsource', {
|
|
|
- initialValue: theData.outsource
|
|
|
+ <Col span={3}>编号</Col>
|
|
|
+ <Col span={6}>{theData.serialNumber}</Col>
|
|
|
+ <Col span={4}>软著名称</Col>
|
|
|
+ <Col span={6}>
|
|
|
+ {getFieldDecorator('copyrightName', {
|
|
|
+ initialValue: theData.copyrightName
|
|
|
})(
|
|
|
- <Input placeholder="请输入外包公司" />
|
|
|
+ <Input placeholder="请输入软著名称" />
|
|
|
)}
|
|
|
</Col>
|
|
|
</Row>
|
|
|
<Row className="express-desc-row">
|
|
|
- <Col span={3}>派单详情</Col>
|
|
|
+ <Col span={3}>软著编号</Col>
|
|
|
+ <Col span={6}>{theData.copyrightNumber}</Col>
|
|
|
+ </Row>
|
|
|
+ <Row className="express-desc-row">
|
|
|
+ <Col span={3}>软著简介</Col>
|
|
|
<Col span={16}>
|
|
|
- {getFieldDecorator('workIssue', {
|
|
|
- initialValue: theData.workIssue
|
|
|
+ {getFieldDecorator('copyrightInfo', {
|
|
|
+ initialValue: theData.copyrightInfo
|
|
|
})(
|
|
|
<Input type="textarea"
|
|
|
placeholder="多行输入"
|
|
@@ -257,31 +257,32 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
</Col>
|
|
|
</Row>
|
|
|
<Row className="express-desc-row">
|
|
|
- <Col span={3}>软著名称</Col>
|
|
|
- <Col span={6}>
|
|
|
- {getFieldDecorator('copyrightName', {
|
|
|
- initialValue: theData.copyrightName
|
|
|
- })(
|
|
|
- <Input placeholder="请输入软著名称" />
|
|
|
- )}
|
|
|
- </Col>
|
|
|
+ <Col span={3}>派单详情</Col>
|
|
|
+ <Col span={16}>{theData.workIssue}</Col>
|
|
|
</Row>
|
|
|
<Row className="express-desc-row">
|
|
|
<Col span={3}>加急天数</Col>
|
|
|
<Col span={6}>
|
|
|
- {getFieldDecorator('inUrgent', {
|
|
|
- initialValue: theData.inUrgent ? String(theData.inUrgent) : undefined
|
|
|
- })(
|
|
|
- <Select
|
|
|
- placeholder="请选择加急时间"
|
|
|
- style={{ width: 120 }}>
|
|
|
- <Select.Option value="0">不加急</Select.Option>
|
|
|
- <Select.Option value="3">3天</Select.Option>
|
|
|
- <Select.Option value="5">5天</Select.Option>
|
|
|
- <Select.Option value="10">10天</Select.Option>
|
|
|
- <Select.Option value="20">20天</Select.Option>
|
|
|
- </Select>
|
|
|
- )}
|
|
|
+ {(() => {
|
|
|
+ switch (theData.inUrgent) {
|
|
|
+ case 0:
|
|
|
+ return '不加急';
|
|
|
+ case 3:
|
|
|
+ return '3天';
|
|
|
+ case 5:
|
|
|
+ return '5天';
|
|
|
+ case 10:
|
|
|
+ return '6-10天';
|
|
|
+ case 15:
|
|
|
+ return '11-15天';
|
|
|
+ case 20:
|
|
|
+ return '16-20天';
|
|
|
+ case 25:
|
|
|
+ return '21-25天';
|
|
|
+ case 30:
|
|
|
+ return '26-30天';
|
|
|
+ }
|
|
|
+ })()}
|
|
|
</Col>
|
|
|
</Row>
|
|
|
{theData.authorizedDateFormattedDate ? <Row className="express-desc-row">
|
|
@@ -290,49 +291,79 @@ const CopyrightDescForm = Form.create()(React.createClass({
|
|
|
</Row> :
|
|
|
<Row className="express-desc-row">
|
|
|
<Col span={3}>下证时间(预计)</Col>
|
|
|
- <Col span={6}>{theData.authorizedDateFormattedDate}</Col>
|
|
|
+ <Col span={6}>
|
|
|
+ {(() => {
|
|
|
+ if (theData.expectTime && theData.expectTime[0]) {
|
|
|
+ if (theData.expectTime[1]) {
|
|
|
+ return getTime(getInUrgentTime(moment(theData.expectTime[0]), theData.expectTime[1]))
|
|
|
+ } else {
|
|
|
+ return getTime(getInUrgentTime(moment(theData.expectTime[0]), 45))
|
|
|
+ };
|
|
|
+ };
|
|
|
+ })()}
|
|
|
+ </Col>
|
|
|
</Row>}
|
|
|
+ <div className="hrSituation-roster">
|
|
|
+ <Upload
|
|
|
+ name="copyright_apply"
|
|
|
+ action={globalConfig.context + "/techservice/copyright/upload"}
|
|
|
+ data={{ 'sign': 'copyright_apply', id: this.props.data.id }}
|
|
|
+ beforeUpload={beforeUploadFile}
|
|
|
+ showUploadList={false}
|
|
|
+ onChange={(info) => {
|
|
|
+ if (info.file.status !== 'uploading') {
|
|
|
+ console.log(info.file, info.fileList);
|
|
|
+ }
|
|
|
+ if (info.file.status === 'done') {
|
|
|
+ if (!info.file.response.error.length) {
|
|
|
+ message.success(`${info.file.name} 文件上传成功!`);
|
|
|
+ } else {
|
|
|
+ message.warning(info.file.response.error[0].message);
|
|
|
+ return;
|
|
|
+ };
|
|
|
+ this.state.copyrightApplyUrl = info.file.response.data;
|
|
|
+ } else if (info.file.status === 'error') {
|
|
|
+ message.error(`${info.file.name} 文件上传失败。`);
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Button><Icon type="upload" /> 上传软著申请书 </Button>
|
|
|
+ </Upload>
|
|
|
+ <p style={{ margin: '10px 0' }}>{theData.applicationUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_apply', '/techservice/copyright/download')}>{theData.applicationUrlDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
|
|
|
+ </div>
|
|
|
+ <div className="hrSituation-roster">
|
|
|
+ <Upload
|
|
|
+ name="copyright_auth"
|
|
|
+ action={globalConfig.context + "/techservice/copyright/upload"}
|
|
|
+ data={{ 'sign': 'copyright_auth', id: this.props.data.id }}
|
|
|
+ beforeUpload={beforeUploadFile}
|
|
|
+ showUploadList={false}
|
|
|
+ onChange={(info) => {
|
|
|
+ if (info.file.status !== 'uploading') {
|
|
|
+ console.log(info.file, info.fileList);
|
|
|
+ }
|
|
|
+ if (info.file.status === 'done') {
|
|
|
+ if (!info.file.response.error.length) {
|
|
|
+ message.success(`${info.file.name} 文件上传成功!`);
|
|
|
+ } else {
|
|
|
+ message.warning(info.file.response.error[0].message);
|
|
|
+ return;
|
|
|
+ };
|
|
|
+ this.state.copyrightAuthUrl = info.file.response.data;
|
|
|
+ } else if (info.file.status === 'error') {
|
|
|
+ message.error(`${info.file.name} 文件上传失败。`);
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Button><Icon type="upload" /> 上传软著证书 </Button>
|
|
|
+ </Upload>
|
|
|
+ <p style={{ margin: '10px 0' }}>{theData.certificateUrl ? <a onClick={copyrightDownloadFile.bind(null, theData.id, 'copyright_auth', '/techservice/copyright/download')}>{theData.certificateUrlDownloadFileName}</a> : <span><Icon type="exclamation-circle" style={{ color: '#ffbf00', marginRight: '6px' }} />未上传!</span>}</p>
|
|
|
+ </div>
|
|
|
<p>状态流转记录: </p>
|
|
|
<Table style={{ margin: '10px 0' }}
|
|
|
pagination={false}
|
|
|
dataSource={this.state.stateTable}
|
|
|
columns={this.state.stateColumns} />
|
|
|
- <div className="clearfix">
|
|
|
- <FormItem className="third-item"
|
|
|
- {...formItemLayout}
|
|
|
- label="状态流转"
|
|
|
- >
|
|
|
- {getFieldDecorator('status')(
|
|
|
- <Select placeholder="选择一个状态">{this.state.stateOption}</Select>
|
|
|
- )}
|
|
|
- </FormItem>
|
|
|
- <FormItem className="third-item"
|
|
|
- labelCol={{ span: 6 }}
|
|
|
- wrapperCol={{ span: 12 }}
|
|
|
- label="处理时间"
|
|
|
- >
|
|
|
- {getFieldDecorator('recordTime')(
|
|
|
- <DatePicker />
|
|
|
- )}
|
|
|
- </FormItem>
|
|
|
- <FormItem className="third-item"
|
|
|
- {...formItemLayout}
|
|
|
- label="负责人"
|
|
|
- >
|
|
|
- {getFieldDecorator('principal')(
|
|
|
- <Select placeholder="选择负责人">{this.props.authorOption}</Select>
|
|
|
- )}
|
|
|
- </FormItem>
|
|
|
- </div>
|
|
|
- <FormItem
|
|
|
- labelCol={{ span: 2 }}
|
|
|
- wrapperCol={{ span: 12 }}
|
|
|
- label="备注"
|
|
|
- >
|
|
|
- {getFieldDecorator('comment')(
|
|
|
- <Input />
|
|
|
- )}
|
|
|
- </FormItem>
|
|
|
<FormItem style={{ marginTop: '20px' }}>
|
|
|
<Button className="set-submit" type="primary" htmlType="submit">保存</Button>
|
|
|
<Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
|