|
@@ -0,0 +1,589 @@
|
|
|
+import React,{ Component } from 'react';
|
|
|
+import {Button, DatePicker, Select, Table, Input, Modal, Spin, message} from "antd";
|
|
|
+import moment from "moment";
|
|
|
+import $ from "jquery";
|
|
|
+
|
|
|
+const { Option } = Select;
|
|
|
+const confirm = Modal.confirm;
|
|
|
+
|
|
|
+class PatentSchedule extends Component{
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+ this.state={
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ title: '批次',
|
|
|
+ dataIndex: 'key',
|
|
|
+ key: 'key',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return index+1;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: props.bpType === 6 ? '商标号' : '专利号',
|
|
|
+ dataIndex: 'patentNo',
|
|
|
+ key: 'patentNo',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return !record.isChange ? text : <Input
|
|
|
+ value={text}
|
|
|
+ size={'small'}
|
|
|
+ style={{
|
|
|
+ width: '100px'
|
|
|
+ }}
|
|
|
+ onChange={(e)=>{
|
|
|
+ this.changeEvidence(e.target.value,index,'patentNo')
|
|
|
+ }}/>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: props.bpType === 6 ? '商标名称' : '专利名称',
|
|
|
+ dataIndex: 'patentName',
|
|
|
+ key: 'patentName',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return !record.isChange ? text : <Input
|
|
|
+ value={text}
|
|
|
+ style={{width: '100px'}}
|
|
|
+ size={'small'}
|
|
|
+ onChange={(e)=>{
|
|
|
+ this.changeEvidence(e.target.value,index,'patentName')
|
|
|
+ }}/>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '受理时间',
|
|
|
+ dataIndex: 'acceptTimes',
|
|
|
+ key: 'acceptTimes',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return !record.isChange ? text : <DatePicker
|
|
|
+ value={
|
|
|
+ text ? moment(text) : null
|
|
|
+ }
|
|
|
+ size={'small'}
|
|
|
+ style={{
|
|
|
+ marginTop: '4px',
|
|
|
+ width: '100px'
|
|
|
+ }}
|
|
|
+ showTime
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ onChange={(data, dataString) => {
|
|
|
+ this.changeEvidence(dataString,index,'acceptTimes')
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '下证时间',
|
|
|
+ dataIndex: 'licenceTimes',
|
|
|
+ key: 'licenceTimes',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return !record.isChange ? text : <DatePicker
|
|
|
+ value={
|
|
|
+ text ? moment(text) : null
|
|
|
+ }
|
|
|
+ size={'small'}
|
|
|
+ style={{
|
|
|
+ marginTop: '4px',
|
|
|
+ width: '100px'
|
|
|
+ }}
|
|
|
+ showTime
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ onChange={(data, dataString) => {
|
|
|
+ this.changeEvidence(dataString,index,'licenceTimes')
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '状态',
|
|
|
+ dataIndex: 'status',
|
|
|
+ key: 'status',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return !record.isChange ? text === 0 ? '待审核' : text === 1 ? '通过' : '驳回' : <Select style={{width:'80px'}} value={text} size={'small'} onChange={(v)=>{
|
|
|
+ this.changeEvidence(v,index,'status')
|
|
|
+ }}>
|
|
|
+ <Option value={0}>待审核</Option>
|
|
|
+ <Option value={1}>通过</Option>
|
|
|
+ <option value={2}>驳回</option>
|
|
|
+ </Select>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ dataIndex: 'h',
|
|
|
+ key: 'h',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return (
|
|
|
+ !props.readOnly ? <span>
|
|
|
+ <Button
|
|
|
+ size={'small'}
|
|
|
+ style={{
|
|
|
+ marginRight:'10px',
|
|
|
+ color: '#ffffff',
|
|
|
+ background: '#f00',
|
|
|
+ border: 'none',
|
|
|
+ }}
|
|
|
+ loading={this.state.loading}
|
|
|
+ onClick={()=>{
|
|
|
+ let _this = this;
|
|
|
+ if(record.isChange){
|
|
|
+ this.state.dataSource.splice(index,1)
|
|
|
+ this.setState({
|
|
|
+ dataSource: this.state.dataSource
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ confirm({
|
|
|
+ title: '提醒',
|
|
|
+ content: '确定要删除吗?',
|
|
|
+ onOk() {
|
|
|
+ _this.delectTaskProgress(record.id)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </Button>
|
|
|
+ {record.id && !record.isChange && <Button size={'small'} type='primary' onClick={()=>{
|
|
|
+ this.state.dataSource[index]['isChange'] = true
|
|
|
+ this.setState({
|
|
|
+ dataSource: this.state.dataSource
|
|
|
+ })
|
|
|
+ }}>修改</Button>}
|
|
|
+ {record.isChange &&<Button
|
|
|
+ size={'small'}
|
|
|
+ loading={this.state.loading}
|
|
|
+ style={{
|
|
|
+ marginLeft:'10px',
|
|
|
+ color: '#ffffff',
|
|
|
+ background: '#4ad028',
|
|
|
+ border: 'none',
|
|
|
+ }} onClick={()=>{
|
|
|
+ if(record.id){
|
|
|
+ this.changeTaskProgress(record);
|
|
|
+ }else{
|
|
|
+ this.createTaskProgress(record);
|
|
|
+ }
|
|
|
+ }}>保存</Button> }
|
|
|
+ </span> : null
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ dataSource: [],
|
|
|
+ visible: false,
|
|
|
+ columnsA: [
|
|
|
+ {
|
|
|
+ title: '时间',
|
|
|
+ dataIndex: 'createTime',
|
|
|
+ key: 'createTime',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作类型',
|
|
|
+ dataIndex: 'status',
|
|
|
+ key: 'status',
|
|
|
+ render: (text, record) => {
|
|
|
+ return text === 0 ? '新增' : text === 1 ? '删除' : '修改'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '专利号',
|
|
|
+ dataIndex: 'patentName',
|
|
|
+ key: 'patentName',
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ dataSourceA: [],
|
|
|
+ progressLogLoading: false,
|
|
|
+ acceptCount: props.acceptCount || 0,
|
|
|
+ certificatesCount: props.certificatesCount || 0,
|
|
|
+ rejectCount: props.rejectCount || 0,
|
|
|
+ };
|
|
|
+ this.changeEvidence = this.changeEvidence.bind(this);
|
|
|
+ this.createTaskProgress = this.createTaskProgress.bind(this);
|
|
|
+ this.selectTaskProgressLog = this.selectTaskProgressLog.bind(this);
|
|
|
+ this.delectTaskProgress = this.delectTaskProgress.bind(this);
|
|
|
+ this.changeTaskProgress = this.changeTaskProgress.bind(this);
|
|
|
+ this.loaduserss = this.loaduserss.bind(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ changeEvidence(value,index,key){
|
|
|
+ this.state.dataSource[index][key] = value;
|
|
|
+ this.setState({
|
|
|
+ dataSource: this.state.dataSource
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增申报进度
|
|
|
+ createTaskProgress(record) {
|
|
|
+ if(!record.patentNo){
|
|
|
+ message.warning('请填写专利号');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!record.patentName){
|
|
|
+ message.warning('请填写专利名称');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(typeof record.status !== 'number'){
|
|
|
+ message.warning('请选择状态');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setState({
|
|
|
+ loading: true,
|
|
|
+ })
|
|
|
+ let _this = this;
|
|
|
+ let data = Object.assign({},record);
|
|
|
+ delete data.isChange;
|
|
|
+ delete data.key;
|
|
|
+ data.taskId = this.props.taskId;
|
|
|
+ data.alreadyNumber = 1;
|
|
|
+ data.type = this.props.bpType === 1 ? 1 : this.props.bpType === 6 ? 2 : '';//0软著 1专利 2商标
|
|
|
+ $.ajax({
|
|
|
+ method: 'post',
|
|
|
+ dataType: 'json',
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + '/api/admin/orderProject/createTaskProgress',
|
|
|
+ data: data,
|
|
|
+ success: function (data) {
|
|
|
+ if (data.error.length) {
|
|
|
+ if (data.error && data.error.length) {
|
|
|
+ message.warning(data.error[0].message)
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ message.success('添加成功');
|
|
|
+ delete record.isChange;
|
|
|
+ delete record.key;
|
|
|
+ _this.props.refresh && _this.props.refresh();
|
|
|
+ _this.loaduserss();
|
|
|
+ }
|
|
|
+ }.bind(this),
|
|
|
+ }).always(
|
|
|
+ function () {
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ })
|
|
|
+ }.bind(this)
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ //申报进度日志
|
|
|
+ selectTaskProgressLog() {
|
|
|
+ this.setState({
|
|
|
+ loading: true,
|
|
|
+ })
|
|
|
+ $.ajax({
|
|
|
+ method: 'get',
|
|
|
+ dataType: 'json',
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + '/api/admin/orderProject/selectTaskProgressLog',
|
|
|
+ data: {
|
|
|
+ tid: this.props.taskId,
|
|
|
+ },
|
|
|
+ success: function (data) {
|
|
|
+ let theArr = []
|
|
|
+ if (data.error.length || data.data.list === '') {
|
|
|
+ if (data.error && data.error.length) {
|
|
|
+ message.warning(data.error[0].message)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (let i = 0; i < data.data.length; i++) {
|
|
|
+ let thisdata = data.data[i];
|
|
|
+ thisdata.key = i;
|
|
|
+ theArr.push(thisdata)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.setState({
|
|
|
+ dataSourceA: theArr,
|
|
|
+ })
|
|
|
+ }.bind(this),
|
|
|
+ }).always(
|
|
|
+ function () {
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ })
|
|
|
+ }.bind(this)
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改申报进度
|
|
|
+ changeTaskProgress(record) {
|
|
|
+ if(!record.patentNo){
|
|
|
+ message.warning('请填写专利号');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!record.patentName){
|
|
|
+ message.warning('请填写专利名称');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(typeof record.status !== 'number'){
|
|
|
+ message.warning('请选择状态');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setState({
|
|
|
+ loading: true,
|
|
|
+ })
|
|
|
+ let _this = this;
|
|
|
+ let data = Object.assign({},record);
|
|
|
+ delete data.isChange;
|
|
|
+ delete data.key;
|
|
|
+ data.taskId = this.props.taskId;
|
|
|
+ data.alreadyNumber = 1;
|
|
|
+ data.type = this.props.bpType === 1 ? 1 : this.props.bpType === 6 ? 2 : '';//0软著 1专利 2商标
|
|
|
+ for(let i in data){
|
|
|
+ if(typeof data[i] === 'object'){
|
|
|
+ delete data[i]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $.ajax({
|
|
|
+ method: 'post',
|
|
|
+ dataType: 'json',
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + '/api/admin/orderProject/updateTaskProgress',
|
|
|
+ data: data,
|
|
|
+ success: function (data) {
|
|
|
+ if (data.error.length) {
|
|
|
+ if (data.error && data.error.length) {
|
|
|
+ message.warning(data.error[0].message)
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ message.success('修改成功');
|
|
|
+ delete record.isChange;
|
|
|
+ delete record.key;
|
|
|
+ _this.props.refresh && _this.props.refresh();
|
|
|
+ _this.loaduserss();
|
|
|
+ }
|
|
|
+ }.bind(this),
|
|
|
+ }).always(
|
|
|
+ function () {
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ })
|
|
|
+ }.bind(this)
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除申报进度
|
|
|
+ delectTaskProgress(id) {
|
|
|
+ this.setState({
|
|
|
+ loading: true,
|
|
|
+ })
|
|
|
+ let _this = this;
|
|
|
+ $.ajax({
|
|
|
+ method: 'post',
|
|
|
+ dataType: 'json',
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + '/api/admin/orderProject/delectTaskProgress',
|
|
|
+ data: {
|
|
|
+ id
|
|
|
+ },
|
|
|
+ success: function (data) {
|
|
|
+ if (data.error.length) {
|
|
|
+ if (data.error && data.error.length) {
|
|
|
+ message.warning(data.error[0].message)
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ message.success('删除成功');
|
|
|
+ _this.loaduserss();
|
|
|
+ _this.props.refresh && this.props.refresh();
|
|
|
+ }
|
|
|
+ }.bind(this),
|
|
|
+ }).always(
|
|
|
+ function () {
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ })
|
|
|
+ }.bind(this)
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ //查看下证信息
|
|
|
+ loaduserss() {
|
|
|
+ this.setState({
|
|
|
+ progressLogLoading: true,
|
|
|
+ })
|
|
|
+ $.ajax({
|
|
|
+ method: 'get',
|
|
|
+ dataType: 'json',
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
|
|
|
+ data: {
|
|
|
+ tid: this.props.taskId,
|
|
|
+ },
|
|
|
+ success: function (data) {
|
|
|
+ let thisData = []
|
|
|
+ if (!thisData) {
|
|
|
+ if (data.error && data.error.length) {
|
|
|
+ message.warning(data.error[0].message)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.setState({
|
|
|
+ dataSource: data.data,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }.bind(this),
|
|
|
+ }).always(
|
|
|
+ function () {
|
|
|
+ this.setState({
|
|
|
+ progressLogLoading: false,
|
|
|
+ })
|
|
|
+ }.bind(this)
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ componentDidMount() {
|
|
|
+ this.loaduserss();
|
|
|
+ if(this.props.bpType === 1){
|
|
|
+ this.state.columns.splice(-2,0,{
|
|
|
+ title: '授权时间',
|
|
|
+ dataIndex: 'authorizeTimes',
|
|
|
+ key: 'authorizeTimes',
|
|
|
+ render: (text, record,index) => {
|
|
|
+ return !record.isChange ? text : <DatePicker
|
|
|
+ size={'small'}
|
|
|
+ style={{
|
|
|
+ marginTop: '4px',
|
|
|
+ width: '100px'
|
|
|
+ }}
|
|
|
+ value={
|
|
|
+ text ? moment(text) : null
|
|
|
+ }
|
|
|
+ showTime
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ onChange={(data, dataString) => {
|
|
|
+ this.changeEvidence(dataString,index,'authorizeTimes')
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.setState({
|
|
|
+ columns:this.state.columns
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ <div style={{
|
|
|
+ display:'flex',
|
|
|
+ alignItems:'center',
|
|
|
+ paddingLeft: '3%',
|
|
|
+ paddingRight: '10%',
|
|
|
+ color: '#000',
|
|
|
+ fontWeight: 400,
|
|
|
+ }}>
|
|
|
+ <div style={{paddingRight:'10px'}}>派单项目数:{this.props.commodityQuantity}</div>
|
|
|
+ <div style={{paddingRight:'10px'}}>
|
|
|
+ 受理数:
|
|
|
+ {this.props.readOnly ?
|
|
|
+ this.props.acceptCount:
|
|
|
+ <Input type='number' defaultValue={this.props.acceptCount || 0} value={this.state.acceptCount} style={{width:'70px'}} onChange={(e)=>{
|
|
|
+ this.setState({
|
|
|
+ acceptCount:e.target.value
|
|
|
+ })
|
|
|
+ this.props.onChange('acceptCount',e.target.value);
|
|
|
+ }}/>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <div style={{paddingRight:'10px'}}>
|
|
|
+ 下证数(即授权数):
|
|
|
+ {this.props.readOnly ?
|
|
|
+ this.props.certificatesCount:
|
|
|
+ <Input type='number' defaultValue={this.props.certificatesCount || 0} value={this.state.certificatesCount || (this.props.certificatesCount || 0)} style={{width:'70px'}} onChange={(e)=>{
|
|
|
+ this.setState({
|
|
|
+ certificatesCount:e.target.value
|
|
|
+ })
|
|
|
+ this.props.onChange('certificatesCount',e.target.value);
|
|
|
+ }}/>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ 驳回数:
|
|
|
+ {this.props.readOnly ?
|
|
|
+ this.props.rejectCount:
|
|
|
+ <Input type='number' defaultValue={this.props.rejectCount || 0} value={this.state.rejectCount || (this.props.rejectCount || 0)} style={{width:'70px'}} onChange={(e)=>{
|
|
|
+ this.setState({
|
|
|
+ rejectCount:e.target.value
|
|
|
+ })
|
|
|
+ this.props.onChange('rejectCount',e.target.value);
|
|
|
+ }}/>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <div style={{display:'flex',alignItems:'center',marginLeft:'auto'}}>
|
|
|
+ {!this.props.readOnly ? <Button
|
|
|
+ type="primary"
|
|
|
+ style={{ marginRight: '15px' }}
|
|
|
+ onClick={()=>{
|
|
|
+ let arr = this.state.dataSource.filter((v)=>v.isChange)
|
|
|
+ if(arr.length > 0){
|
|
|
+ message.warning('已存在未保存项,请先保存!')
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.state.dataSource.push({
|
|
|
+ key: this.state.dataSource.length+1,
|
|
|
+ isChange: true,
|
|
|
+ })
|
|
|
+ this.setState({
|
|
|
+ dataSource: this.state.dataSource
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {/* bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
|
|
|
+ {this.props.bpType === 1 ? '增加专利信息' : this.props.bpType === 6 ? '增加商标信息' : ''}
|
|
|
+ </Button> : null}
|
|
|
+ <Button
|
|
|
+ type="primary"
|
|
|
+ onClick={()=>{
|
|
|
+ this.selectTaskProgressLog();
|
|
|
+ this.setState({
|
|
|
+ visible: true
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 操作日志
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style={{
|
|
|
+ paddingTop:'10px'
|
|
|
+ }}>
|
|
|
+ <Spin spinning={this.state.progressLogLoading}>
|
|
|
+ <Table
|
|
|
+ columns={this.state.columns}
|
|
|
+ scroll={{ x: 'max-content', y: 0 }}
|
|
|
+ dataSource={this.state.dataSource}
|
|
|
+ pagination={false}
|
|
|
+ bordered
|
|
|
+ size={'small'}
|
|
|
+ />
|
|
|
+ </Spin>
|
|
|
+ </div>
|
|
|
+ {this.state.visible ? <Modal
|
|
|
+ maskClosable={false}
|
|
|
+ width="800px"
|
|
|
+ visible={this.state.visible}
|
|
|
+ onCancel={()=>{
|
|
|
+ this.setState({
|
|
|
+ visible: false
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ title="操作日志"
|
|
|
+ footer=""
|
|
|
+ className="admin-desc-content"
|
|
|
+ >
|
|
|
+ <div className="patent-table patent-table-center">
|
|
|
+ <Spin spinning={this.state.loading}>
|
|
|
+ <Table
|
|
|
+ columns={this.state.columnsA}
|
|
|
+ dataSource={this.state.dataSourceA}
|
|
|
+ pagination={false}
|
|
|
+ bordered
|
|
|
+ size="small"
|
|
|
+ />
|
|
|
+ </Spin>
|
|
|
+ </div>
|
|
|
+ </Modal> : null}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export default PatentSchedule;
|