import React, { Component } from 'react';
import { Button, Form, Input, message, Modal, Spin, Table, Tabs, Tag, Tooltip, Radio } from "antd";
import PatentSchedule from "../task/patentSchedule";
import ImgList from "../../../common/imgList";
import OrderDetail from "../../order/orderNew/changeComponent/orderDetail";
import {
getProcessStatus,
getApproval,
getTaskStatus,
getLiquidationStatus,
splitUrl,
getProjectStatus,
getboutique,
getprovince,
ShowModal,
getProjectName,
getFormRetrieve,
} from "@/tools";
import OrderRiZi from "@/orderRiZi.jsx";
import Picture from '@/manageCenter/publicComponent/picture'
import $ from "jquery";
import DeclarationProgress from "../../../common/declarationProgress";
import OrderItemStatus from "../../../common/orderItemStatus";
import EnterpriseNameChange from "../../../common/enterpriseNameChange";
const FormItem = Form.Item;
const { TabPane } = Tabs;
const formItemLayout = {
labelCol: { span: 8 },
wrapperCol: { span: 14 },
};
const utils = {
getSatisfaction: function (num) {
switch (num) {
case 0:
return "未收回";
case 1:
return "已收回";
default:
return "其它";
}
},
getChargeback: function (num) {
switch (num) {
case 0:
return "已完成";
case 1:
return "未完成";
default:
return "其它";
}
},
};
class ProjectDetails extends Component {
constructor(props) {
super(props);
this.state = {
satisfactionDegreeUrl: [], // 满意度调查表
satisfactionDegree: "", // 满意度
formRetrieve: "",// 满意调查表上传状态
timeRecordparse: {},
activeKey: '1',
loading: false,
orderData: [],
orderNo: "",
jiedian: [],
jiedianNew: [],
searchMore: true,
assignVisible: false,
releaseDate: [],
roleName: "",
testFlag: true,
departmentArr: [],
boHuivisible: false,
selectedRowKeys: [],
selectedRows: [],
paginations: false,
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page);
}.bind(this),
showTotal: function (total) {
return "共" + total + "条数据";
},
},
columns: [
{
title: "项目编号",
dataIndex: "id",
key: "id",
render: (text, record) => {
if (record.splitStatus == 2) {
return {record.splitSuper + "-" + record.splitId};
} else {
return text;
}
},
},
{
title: "任务名称",
dataIndex: "taskName",
key: "taskName",
className: "taskName",
},
{
title: "订单编号",
dataIndex: "orderNo",
key: "orderNo",
},
{
title: "业务类别",
dataIndex: "cname",
key: "cname",
},
{
title: "客户名称",
dataIndex: "userName",
key: "userName",
className: "userName",
width: 150,
render: (text) => {
return (
{text}
)
},
},
{
title: "任务状态",
dataIndex: "taskStatus",
key: "taskStatus",
render: (text) => {
return getTaskStatus(text);
},
},
{
title: "项目状态",
dataIndex: "projectStatus",
key: "projectStatus",
render: (text) => {
return getProjectStatus(text);
},
},
{
title: "分配时间",
dataIndex: "taskDate",
key: "taskDate",
},
{
title: "任务数量",
dataIndex: "commodityQuantity",
key: "commodityQuantity",
},
{
title: "任务责任人",
dataIndex: "receiverName",
key: "receiverName",
},
{
title: "订单部门",
dataIndex: "depName",
key: "depName",
},
],
dataSource: [],
searchTime: [],
columnsX: [
{
title: "业务项目名称",
dataIndex: "commodityName",
key: "commodityName",
render: (text, record) => {
return (
{text}{record.patentTypeName}
)
}
},
{
title: "项目类别",
dataIndex: "cname",
key: "cname",
},
{
title: "项目数量",
dataIndex: "commodityQuantity",
key: "commodityQuantity",
render: (text, record) => {
if (record.splitStatus == 1) {
return (
{text}{" "}
{/* {
e.stopPropagation();
this.showRes(record);
}}
>
已拆
*/}
);
} else {
return text;
}
},
},
{
title: "金额(万元)",
dataIndex: "commodityPrice",
key: "commodityPrice",
render: (text, record) => {
return (
{this.props.isZxs || text === -1 ? '***' : text}
)
}
},
{
title: "负责人",
dataIndex: "contacts",
key: "contacts",
},
{
title: "负责人电话",
dataIndex: "contactsMobile",
key: "contactsMobile",
},
{
title: "主要项目",
dataIndex: "main",
key: "main",
render: (text) => {
return text ? "是" : "否";
},
},
{
title: "总年限",
dataIndex: "yearSum",
key: "yearSum",
render: (text, record) => {
return (
{["", "一年", "二年", "三年", "四年", "五年"][text]}
);
}
},
{
title: "年限",
dataIndex: "serviceLife",
key: "serviceLife",
render: (text, record) => {
return (
{!!text && JSON.parse(text).toString()}
);
}
},
{
title: "本次派单",
dataIndex: "serviceYear",
key: "serviceYear",
render: (text, record) => {
return (
{!text ? "" : text}
);
}
},
{
title: "项目说明",
dataIndex: "taskComment",
key: "taskComment",
render: (text) => {
return (
{text}
)
},
},
],
columnsA: [
{
title: "流程",
dataIndex: "content",
key: "content",
align: "center",
},
{
title: "操作人",
dataIndex: "aName",
key: "aName",
align: "center",
},
{
title: "时间",
dataIndex: "createTimes",
key: "createTimes",
align: "center",
},
],
dataSourceX: [],
dataSourceA: [],
ContactsLists: [
{
title: "批次",
dataIndex: "num",
key: "num",
},
{
title: "下证时间",
dataIndex: "licenceTimes",
key: "licenceTimes",
},
{
title: "下证数量",
dataIndex: "alreadyNumber",
key: "alreadyNumber",
},
{
title: "未下证数量",
dataIndex: "notCount",
key: "notCount",
},
],
displayFees: "none",
costReduction: '',
officialCost: '',
isSoftware: false,
}
this.orderChange = this.orderChange.bind(this);
this.caozuorizhi = this.caozuorizhi.bind(this);
this.getOrderLog = this.getOrderLog.bind(this);
this.rizhi = this.rizhi.bind(this);
}
orderChange(key) {
this.setState({
activeKey: key,
});
if (key === '2') {
this.orderDetailData(this.props.orderNo);
this.xiangmu(this.props.orderNo);
this.jiedian(this.props.orderNo);
this.jiedianNew(this.props.orderNo);
}
}
caozuorizhi() {
this.setState({
visibleA: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/orderProject/TaskLogList",
data: {
id: this.props.id,
},
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];
theArr.push({
key: i,
id: thisdata.id, //日志ID
content: thisdata.content, //流程
taskId: thisdata.taskId, //任务ID
aName: thisdata.aName, //负责人
createTimes: thisdata.createTimes, //时间
});
}
}
this.setState({
dataSourceA: theArr,
});
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
//节点列表
jiedian(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
data: {
orderNo: orderNos,
},
success: function (data) {
let theArr = [];
let thisData = [];
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++) {
thisData = data.data[i];
theArr.push({
key: i,
dunSubject: thisData.dunSubject
? thisData.dunSubject.toString()
: "", //催款科目
id: thisData.id, //节点Id
money: thisData.money, //催款金额
dunStatus: thisData.dunStatus, //催款状态
});
}
this.setState({
jiedian: theArr,
});
}
}.bind(this),
});
}
//部门
departmentList() {
this.setState({
loading: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/organization/selectSuperId",
data: {},
success: function (data) {
let thedata = data.data;
let theArr = [];
if (!thedata) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
thedata.map(function (item, index) {
theArr.push({
key: index,
name: item.name,
id: item.id,
});
});
}
this.setState({
departmentArr: theArr,
});
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
//订单详情
xiangqing(id) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
data: {
id: id,
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
let thisdata = data.data;
this.setState({
certificationCorporate: thisdata.certificationCorporate,//认证费公司
certificationFee: thisdata.certificationFee,//认证费
ifCertificationFee: thisdata.ifCertificationFee,//是否包含认证费
id: thisdata.id, //ID
orderNo: thisdata.orderNo, //订单编号
userName: thisdata.userName, //客户名称
taskName: thisdata.taskName, //任务名称
cname: thisdata.cname, //项目品类
contractNo: thisdata.contractNo, //合同编号
projectStatus: thisdata.projectStatus, //项目状态
taskStatus: thisdata.taskStatus, //任务状态
taskDate: thisdata.taskDate, //分配时间
taskComment: thisdata.taskComment, //说明
attachmentUrl: thisdata.attachmentUrl
? splitUrl(
thisdata.attachmentUrl,
",",
globalConfig.avatarHost + "/upload"
)
: [], //图片地址
salesmanName: thisdata.salesmanName, //订单负责人
startDate: thisdata.startDate, //启动日期
endDate: thisdata.endDate, //结束日期
acceptDate: thisdata.acceptDate, //受理日期
reviewDate: thisdata.reviewDate, //评审日期
publicityDate: thisdata.publicityDate, //公示日期
licenceDate: thisdata.licenceDate, //发证日期
contacts: thisdata.contacts, //联系人
contactMobile: thisdata.contactMobile, //联系人电话
legalPerson: thisdata.legalPerson, //法人
legalPersonTel: thisdata.legalPersonTel, //法人电话
certificateNumber: thisdata.certificateNumber, //证书编号
status: thisdata.status, //状态
formRetrieve: thisdata.formRetrieve, //满意调查表状态
satisfactionDegree: thisdata.satisfactionDegree, //满意度
satisfactionDegreeUrl: thisdata.satisfactionDegreeUrl
? splitUrl(thisdata.satisfactionDegreeUrl, ',', globalConfig.avatarHost + '/upload')
: [], //满意度调查表
taskRefund: thisdata.taskRefund, //退单
refundContent: thisdata.refundContent, //退单信息
retrieveContent: thisdata.retrieveContent, //回收信息
arrivalMoney: thisdata.arrivalMoney, //是否到款
setUpAmount: thisdata.setUpAmount, //立项金额
declareUser: thisdata.declareUser, //账号
declarePwd: thisdata.declarePwd, //密码
depName: thisdata.depName, //订单部门
outsourceName: thisdata.outsourceName, //外包公司名称
outsourcePrice: thisdata.outsourcePrice, //外包价格
declarationBatch: thisdata.declarationBatch,
bpType: thisdata.bpType,//0 正常 1专利 2软著 3审计 4双软 5高新 6商标
cSort: thisdata.sort,
specialComment: thisdata.specialComment,
urgentDay: thisdata.urgentDay, //有无方案
ifMaterial: thisdata.ifMaterial, //加急情况
spotCheckStatus: thisdata.spotCheckStatus,
setUpStatus: thisdata.setUpStatus,
setUpTime: thisdata.setUpTime,
highTechStatus: thisdata.highTechStatus,
acceptCount: thisdata.acceptCount, //受理数
certificatesCount: thisdata.certificatesCount, //授权数
rejectCount: thisdata.rejectCount, //驳回数
commodityQuantity: thisdata.commodityQuantity, //派单项目数
timeRecordparse: thisdata.timeRecord ? JSON.parse(thisdata.timeRecord) : {},//项目状态JSON
});
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
//订单详情
xiangqings(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
data: {
orderNo: orderNos,
},
success: function (data) {
let thisdata = data.data;
let ProvinceCityArr = [];
let ProvinceS = thisdata.locationProvince; //省
let citys = thisdata.locationCity; //市
let Areas = thisdata.locationArea; //区
ProvinceCityArr.push(ProvinceS, citys, Areas);
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
this.setState({
orderUid: thisdata.uid,
examineName: thisdata.examineName,
processStatus: thisdata.processStatus, //流程状态
liquidationStatus: thisdata.liquidationStatus, //结算状态
approval: thisdata.approval, //特批状态
orderRemarks: thisdata.orderRemarks, //订单留言
salesmanName: thisdata.salesmanName, //营销员名称
salesmanMobile: thisdata.salesmanMobile, //营销员电话
oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
financeName: thisdata.financeName, //财务名称
financeMobile: thisdata.financeMobile, //财务电话
nowFinance: thisdata.nowFinance, //财务名称
nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
depName: thisdata.depName, //订单部门
locationProvince: thisdata.locationProvince,
locationCity: thisdata.locationCity,
locationArea: thisdata.locationArea,
ProvinceCity: ProvinceCityArr,
postalAddress: thisdata.postalAddress, //详细地址
outsource: thisdata.outsource,
deleteSign: thisdata.deleteSign,
});
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
//查看下证信息
loaduserss(id) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/orderProject/selectTaskProgress",
data: {
tid: id,
},
success: function (data) {
let theArr = [];
let thisData = [];
if (!thisData) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
for (let i = 0; i < data.data.length; i++) {
thisData = data.data[i];
theArr.push({
num: i + 1,
key: i,
id: thisData.id, //编号
alreadyNumber: thisData.alreadyNumber, //下证数
licenceTimes: thisData.licenceTimes, //下证时间
notCount: thisData.notCount, //未下证数
flag: true,
});
}
this.setState({
contactList: theArr,
});
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
jiedianNew(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
data: {
orderNo: orderNos,
},
success: function (data) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
} else {
let theArr = [];
let thisData = [];
let arr = data.data || [];
let totalCui = 0;
for (let i = 0; i < arr.length; i++) {
thisData = arr[i];
totalCui += +thisData.money;
thisData.key = i;
thisData.dunSubject = thisData.dunSubject
? thisData.dunSubject.toString()
: "", //催款科目
theArr.push(thisData);
}
if (!totalCui) {
totalCui = 0;
}
totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
this.setState({
jiedianNew: theArr,
totalCui,
});
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
orderDetailData(orderNos) {
this.setState({
loading: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
data: {
orderNo: orderNos,
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
this.setState({
loading: false,
});
}
} else {
let thisdata = data.data;
this.setState({
loading: false,
orderUid: thisdata.uid,
userName: thisdata.userName,
primaryOrderNo: thisdata.primaryOrder,
additionalOrder: thisdata.additionalOrder,
contractNo: thisdata.contractNo,
orderData: thisdata,
isAddition: thisdata.additionalOrder ? true : false,
contractPictureUrl: thisdata.contractPictureUrl
? splitUrl(
thisdata.contractPictureUrl,
",",
globalConfig.avatarHost + "/upload"
)
: [],
deleteSign: thisdata.deleteSign,
});
}
}.bind(this),
});
}
//项目列表
xiangmu(orderNos) {
this.setState({
loading: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
data: {
orderNo: orderNos,
},
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({
dataSourceX: theArr,
});
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
rizhi() {
this.setState({
loading: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: "/api/admin/newOrder/selectOrderLog",
data: {
orderNo: this.props.orderNo,
},
success: function (data) {
let theArr = [];
let thisData = data.data;
if (!thisData.length) {
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];
theArr.push({
processName: thisdata.processName,
adminName: thisdata.adminName,
createDate: thisdata.createDate,
remarks: thisdata.remarks,
});
}
}
this.setState({
dataSourceY: theArr,
});
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
getOrderLog() {
this.setState({
avisible: true,
});
this.rizhi();
}
componentDidMount() {
if (this.props.taskName.substring(0, 5) === "软件著作权") {
this.setState({
isSoftware: true,
})
}
this.setState({
isIso: this.props.taskName.indexOf("贯标") !== -1,
})
this.departmentList();
this.xiangqing(this.props.id);
this.xiangqings(this.props.orderNo);
this.xiangmu(this.props.orderNo);
this.loaduserss(this.props.id);
}
// 修改项目满意度
updateSatisfactionDegree(status) {
let satisfactionDegreeUrls = []
if (this.state.satisfactionDegreeUrl.length) {
let picArr = []
this.state.satisfactionDegreeUrl.map(function (item) {
if (item.response && item.response.data && item.response.data.length) {
picArr.push(item.response.data)
}
})
satisfactionDegreeUrls = picArr.join(',')
}
if (status == 2) {
if (satisfactionDegreeUrls.length == 0) {
message.warning("请先上传满意度调查表!");
return
}
if (!this.state.formRetrieve) {
message.warning("请先选择满意度!");
return
}
}
let obj1 = {
id: this.props.id,
formRetrieve: 1,
}
let obj2 = {
id: this.props.id,
formRetrieve: status,
satisfactionDegree: this.state.satisfactionDegree,
satisfactionDegreeUrl: satisfactionDegreeUrls.length ? satisfactionDegreeUrls : '',
}
this.setState({
loading: true,
});
$.ajax({
url: globalConfig.context + "/api/admin/orderProject/updateSatisfactionDegree",
method: "post",
data: status == 1 ? obj1 : obj2,
}).done(
function (data) {
this.setState({
loading: false,
});
if (data.error.length === 0) {
if (status == 1) {
this.setState({
formRetrieve: 1
})
} else if (status == 2) {
this.setState({
formRetrieve: 2
})
message.success("保存成功!");
}
} else {
message.warning(data.error[0].message);
}
}.bind(this)
);
}
// 可展开颜色不同
addRowColor(record) {
if (!!record.splitList && record.splitList.length > 0) {
return 'light'
} else {
return 'dark'
}
}
render() {
const expandedRowRenderVip = (e) => {
const data = e.splitList;
let columns = [];
if (data instanceof Array && data.length) {
if (e.cSort == 6) {
columns = [
{
title: "负责人",
dataIndex: "receiverName",
key: "receiverName",
},
{
title: "负责人电话",
dataIndex: "receiverMobile",
key: "receiverMobile",
},
{
title: "项目状态",
dataIndex: "projectStatus",
key: "projectStatus",
render: (text) => {
return getProjectName(text);
},
},
{
title: "本次派单",
dataIndex: "serviceYear",
key: "serviceYear",
},
{
title: "项目说明",
dataIndex: "taskComment",
key: "taskComment",
render: (text) => {
return (
{text}
)
},
},
];
} else {
columns = [
{
title: "子项目名称",
dataIndex: "taskName",
key: "taskName"
},
{
title: "子项目数量",
dataIndex: "commodityQuantity",
key: "commodityQuantity"
},
{
title: "拆分操作人",
dataIndex: "splitAname",
key: "splitAname"
},
{
title: "项目负责人",
dataIndex: "receiverName",
key: "receiverName"
},
{
title: "拆分时间",
dataIndex: "splitTimes",
key: "splitTimes"
}
]
}
return (
);
} else {
columns = [];
return (
{e.cSort == 6 ? "暂无派单" : "此项目暂未拆分"}
);
}
};
return (
this.props.visible ? {
this.props.visitOk && this.props.visitOk()
}}
onCancel={() => {
this.props.visitCancel && this.props.visitCancel();
}}
>
}>
{!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
{this.state.activeKey === "2" ?
: null}
{
this.setState({
avisible: false
})
}}
visible={this.state.avisible}
loading={this.state.loading}
/>
) : null}
: null
);
}
}
export default ProjectDetails;