test01 3 anni fa
parent
commit
55f82a2aef
32 ha cambiato i file con 947 aggiunte e 30 eliminazioni
  1. 2 1
      js/component/common/imgList/index.js
  2. 6 0
      js/component/common/tabelContent/autoCompleteSearch.jsx
  3. 2 2
      js/component/common/tabelContent/index.jsx
  4. 8 0
      js/component/manageCenter/customer/operationalData/interviewStatistics/detailedList.jsx
  5. 14 0
      js/component/manageCenter/customer/operationalData/reexamine/details.jsx
  6. 27 1
      js/component/manageCenter/customer/publicStatistics/detailedList.jsx
  7. 28 3
      js/component/manageCenter/customer/publicSummary/index.jsx
  8. 14 0
      js/component/manageCenter/customerService/administration/followUpDetails.jsx
  9. 14 0
      js/component/manageCenter/customerService/administration/order.jsx
  10. 15 1
      js/component/manageCenter/financialManage/distribute/approvedOutsourcing.jsx
  11. 15 1
      js/component/manageCenter/financialManage/distribute/approvedOutsourcingAll.jsx
  12. 14 0
      js/component/manageCenter/financialManage/distribute/outOutsourcingList.jsx
  13. 14 0
      js/component/manageCenter/financialManage/distribute/outsourcingPaiDan.jsx
  14. 16 0
      js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx
  15. 148 1
      js/component/manageCenter/order/orderNew/addService.jsx
  16. 14 0
      js/component/manageCenter/order/orderNew/approveds.jsx
  17. 186 1
      js/component/manageCenter/order/orderNew/arrearsList.jsx
  18. 9 0
      js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js
  19. 14 0
      js/component/manageCenter/order/orderNew/checkOutsourcing.jsx
  20. 137 0
      js/component/manageCenter/order/orderNew/contentUrl.jsx
  21. 14 0
      js/component/manageCenter/order/orderNew/examine.jsx
  22. 14 0
      js/component/manageCenter/order/orderNew/inquiry.jsx
  23. 14 0
      js/component/manageCenter/order/orderNew/outsourcingList.jsx
  24. 14 0
      js/component/manageCenter/order/orderNew/outsourcingPro.jsx
  25. 14 3
      js/component/manageCenter/order/orderNew/press.jsx
  26. 6 0
      js/component/manageCenter/order/orderNew/pressList.jsx
  27. 38 0
      js/component/manageCenter/order/orderNew/reject.jsx
  28. 37 15
      js/component/manageCenter/project/project/projectAssignment.jsx
  29. 14 0
      js/component/manageCenter/project/project/projectQuery.jsx
  30. 14 0
      js/component/manageCenter/project/task/businessManagement/orderInfor.jsx
  31. 70 0
      js/component/manageCenter/project/task/myTask.jsx
  32. 1 1
      package.json

+ 2 - 1
js/component/common/imgList/index.js

@@ -7,7 +7,8 @@ import PropTypes from 'prop-types';
 
 const uploadButton = (
     <div>
-        <div className="ant-upload-text">点击上传</div>
+        <Icon type="plus" />
+        <div className="ant-upload-text" style={{cursor:'pointer'}}>点击上传</div>
     </div>
 );
 

+ 6 - 0
js/component/common/tabelContent/autoCompleteSearch.jsx

@@ -36,6 +36,12 @@ class AutoCompleteSearch extends Component{
             autoCompleteSearchLoading: true,
             searchValue: value
         });
+        if(value == "") {
+            this.setState({
+                autoCompleteSearchLoading: false,
+            })
+            return
+        }
         let data = {};
         data[this.props.config.search] = value
         this.ajax = $.ajax({

+ 2 - 2
js/component/common/tabelContent/index.jsx

@@ -303,14 +303,14 @@ class TabelContent extends Component {
                         <AutoCompleteSearch
                           ref={(ref) =>{
                          
-                            console.log(ref);
+                            // console.log(ref);
                            
                             (this.autoCompleteSearchRef[v.dataKey] = ref)
                           }
                           }
                           value={searchValues[v.dataKey]}
                           onSelect={(value, title) => {
-                            console.log(value, title);
+                            // console.log(value, title);
                             searchValues[v.dataKey] = value;
                             searchValues["aName"] = title;
                             if (v.dataTitle) {

+ 8 - 0
js/component/manageCenter/customer/operationalData/interviewStatistics/detailedList.jsx

@@ -198,6 +198,14 @@ class DetailedList extends Component{
                     )
                 },
                 {
+                    title: "公出类型",
+                    dataIndex: "type",
+                    key: "type",
+                    width: 70,
+                    render: (text) =>
+                      text === 1 ? "技术公出" : text === 0 ? "业务/行政公出" : "",
+                  },
+                {
                     title: "公出原因/计划",
                     dataIndex: "remarks",
                     key: "remarks",

+ 14 - 0
js/component/manageCenter/customer/operationalData/reexamine/details.jsx

@@ -15,6 +15,7 @@ import $ from "jquery/src/ajax";
 import ProjectDetailsReadOnly from "../../../../common/projectDetailsReadOnly";
 import OrderRiZi from "@/orderRiZi.jsx";
 import OrderCoor from "../../../order/orderNew/changeComponent/orderCoor";
+import ContentUrl from "../../../order/orderNew/contentUrl";
 const FormItem = Form.Item;
 
 const formItemLayout = {
@@ -279,6 +280,13 @@ class Details extends Component{
                                 globalConfig.avatarHost + "/upload"
                             )
                             : [], //图片地址
+                        contentUrl:thisdata.serviceContent
+                            ? splitUrl(
+                                thisdata.serviceContent,
+                                ",",
+                                globalConfig.avatarHost + "/upload"
+                              )
+                            : [], //图片地址
                         salesmanName: thisdata.salesmanName, //营销员名称
                         salesmanMobile: thisdata.salesmanMobile, //营销员电话
                         oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -703,6 +711,12 @@ class Details extends Component{
                                     </div>
                                 </FormItem>
                             </div>
+                            <ContentUrl
+                             processStatus={1}
+                             domId = {"detailContent"}
+                             contentUrl = {this.state.contentUrl}
+                             imgId = {"detailContentImg"}
+                            />
                             <div className="clearfix">
                                 <FormItem
                                     className="half-item"

+ 27 - 1
js/component/manageCenter/customer/publicStatistics/detailedList.jsx

@@ -42,12 +42,14 @@ class DetailedList extends Component {
           dataIndex: "key",
           key: "key",
           width: 45,
+          fixed: 'left'
         },
         {
           title: "客户名称",
           dataIndex: "nickname",
           key: "nickname",
           width: 80,
+          fixed: 'left',
           render: (text) => {
             return (
               // <Tooltip title={text}>
@@ -182,6 +184,14 @@ class DetailedList extends Component {
             text === 1 ? "已打卡" : text === 0 ? "未打卡" : "",
         },
         {
+          title: "公出类型",
+          dataIndex: "type",
+          key: "type",
+          width: 70,
+          render: (text) =>
+            text === 1 ? "技术公出" : text === 0 ? "业务/行政公出" : "",
+        },
+        {
           title: "公出目标",
           dataIndex: "remarks",
           key: "remarks",
@@ -475,6 +485,7 @@ class DetailedList extends Component {
         uid: this.state.theCustomerTypes,
         status: this.state.status,
         clockIn: this.state.clockIn,
+        publicType:this.state.type
       },
       success: function (data) {
         ShowModal(this);
@@ -524,6 +535,7 @@ class DetailedList extends Component {
         customer: "",
         theTypes: undefined,
         theTypes1: undefined,
+        type:undefined
       },
       () => {
         this.loadData();
@@ -704,6 +716,7 @@ class DetailedList extends Component {
       uid: this.state.theCustomerTypes,
       status: this.state.status,
       clockIn: this.state.clockIn,
+      publicType:this.state.type
     };
     for (let i of Object.keys(data)) {
       if (i === "status" || i === "clockIn") {
@@ -772,7 +785,7 @@ class DetailedList extends Component {
           visible={this.props.visible}
           onOk={this.props.onCancel}
           onCancel={this.props.onCancel}
-          width="2000px"
+          width="1600px"
           title={
             <span>
               <span style={{ marginRight: "15px" }}>公出详细列表</span>
@@ -841,6 +854,19 @@ class DetailedList extends Component {
                     </Select>
                   </span>
                   <span style={{ marginRight: "10px" }}>
+                  <Select
+                    placeholder="请选择公出类型"
+                    style={{ width: 200, marginLeft: 10 }}
+                    value={this.state.type}
+                    onChange={(e) => {
+                      this.setState({ type: e });
+                    }}
+                  >
+                    <Select.Option value={0}>营销打卡</Select.Option>
+                    <Select.Option value={1}>技术打卡</Select.Option>
+                  </Select>
+                </span>
+                  <span style={{ marginRight: "10px" }}>
                     <AutoComplete
                       className="certain-category-search"
                       dropdownClassName="certain-category-search-dropdown"

+ 28 - 3
js/component/manageCenter/customer/publicSummary/index.jsx

@@ -40,12 +40,14 @@ class PublicSummary extends Component {
           dataIndex: "key",
           key: "key",
           width: 45,
+          fixed: 'left'
         },
         {
           title: "客户名称",
           dataIndex: "nickname",
           key: "nickname",
           width: 80,
+          fixed: 'left',
           render: (text) => {
             return (
               <div
@@ -174,6 +176,14 @@ class PublicSummary extends Component {
             text === 1 ? "已打卡" : text === 0 ? "未打卡" : "",
         },
         {
+          title: "公出类型",
+          dataIndex: "type",
+          key: "type",
+          width: 70,
+          render: (text) =>
+            text === 1 ? "技术公出" : text === 0 ? "业务/行政公出" : "",
+        },
+        {
           title: "公出目标",
           dataIndex: "remarks",
           key: "remarks",
@@ -434,6 +444,7 @@ class PublicSummary extends Component {
         status: this.state.status,
         clockIn: this.state.clockIn,
         depId: this.state.depId || undefined,
+        publicType:this.state.type
       },
       success: function (data) {
         ShowModal(this);
@@ -484,6 +495,7 @@ class PublicSummary extends Component {
         customer: "",
         theTypes: undefined,
         theTypes1: undefined,
+        type:undefined
       },
       () => {
         this.loadData();
@@ -667,6 +679,7 @@ class PublicSummary extends Component {
       status: this.state.status,
       clockIn: this.state.clockIn,
       depId: this.state.depId,
+      publicType:this.state.type
     };
     for (let i of Object.keys(data)) {
       if (i === "status" || i === "clockIn") {
@@ -684,9 +697,8 @@ class PublicSummary extends Component {
       crossDomain: false,
       url:
         globalConfig.context +
-        "/api/admin/release/publicReleaseDtails/export?" +
-        $.param(data),
-      data: {},
+        "/api/admin/release/publicReleaseDtails/export",
+      data,
       success: function (data) {
         if (data.error.length === 0) {
           this.download(data.data);
@@ -791,6 +803,19 @@ class PublicSummary extends Component {
                   </Select>
                 </span>
                 <span style={{ marginRight: "10px" }}>
+                  <Select
+                    placeholder="请选择公出类型"
+                    style={{ width: 200, marginLeft: 10 }}
+                    value={this.state.type}
+                    onChange={(e) => {
+                      this.setState({ type: e });
+                    }}
+                  >
+                    <Select.Option value={0}>营销打卡</Select.Option>
+                    <Select.Option value={1}>技术打卡</Select.Option>
+                  </Select>
+                </span>
+                <span style={{ marginRight: "10px" }}>
                   <AutoComplete
                     className="certain-category-search"
                     dropdownClassName="certain-category-search-dropdown"

+ 14 - 0
js/component/manageCenter/customerService/administration/followUpDetails.jsx

@@ -16,6 +16,7 @@ import CustomerServiceRecord from './customerServiceRecord';
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from "../../order/orderNew/changeComponent/orderCoor";
+import ContentUrl from "../../order/orderNew/contentUrl";
 const FormItem = Form.Item;
 const { TabPane } = Tabs;
 const formItemLayout = {
@@ -454,6 +455,13 @@ class FollowUpDetails extends Component{
                                 globalConfig.avatarHost + "/upload"
                             )
                             : [], //图片地址
+                        contentUrl:thisdata.serviceContent
+                            ? splitUrl(
+                                thisdata.serviceContent,
+                                ",",
+                                globalConfig.avatarHost + "/upload"
+                              )
+                            : [], //图片地址
                         salesmanName: thisdata.salesmanName, //营销员名称
                         salesmanMobile: thisdata.salesmanMobile, //营销员电话
                         oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -705,6 +713,12 @@ class FollowUpDetails extends Component{
                                                 </div>
                                             </FormItem>
                                         </div>
+                                        <ContentUrl
+                                        processStatus={1}
+                                        domId = {"followContent"}
+                                        contentUrl = {this.state.contentUrl}
+                                        imgId = {"followContentImg"}
+                                        />
                                         <div className="clearfix">
                                             <FormItem
                                                 className="half-item"

+ 14 - 0
js/component/manageCenter/customerService/administration/order.jsx

@@ -47,6 +47,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from "../../order/orderNew/changeComponent/orderCoor.jsx";
+import ContentUrl from "../../order/orderNew/contentUrl.jsx";
 const { Option } = Select;
 const { TabPane } = Tabs;
 const PicturesWall = React.createClass({
@@ -1653,6 +1654,13 @@ const Order = Form.create()(
                                     globalConfig.avatarHost + "/upload"
                                 )
                                 : [], //图片地址
+                            contentUrl:thisdata.serviceContent
+                                ? splitUrl(
+                                    thisdata.serviceContent,
+                                    ",",
+                                    globalConfig.avatarHost + "/upload"
+                                  )
+                                : [], //图片地址
                             salesmanName: thisdata.salesmanName, //营销员名称
                             salesmanMobile: thisdata.salesmanMobile, //营销员电话
                             oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -4279,6 +4287,12 @@ const Order = Form.create()(
                                                 </Modal>
                                             </FormItem>
                                         </div>
+                                        <ContentUrl
+                                        processStatus={1}
+                                        domId = {"orderContents"}
+                                        contentUrl = {this.state.contentUrl}
+                                        imgId = {"orderContentsImg"}
+                                        />
                                         <div className="clearfix">
                                             <FormItem
                                                 className="half-item"

+ 15 - 1
js/component/manageCenter/financialManage/distribute/approvedOutsourcing.jsx

@@ -46,6 +46,7 @@ import {getProjectName} from "../../../tools";
 import DepartmentList from "../../../common/departmentList";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
+import ContentUrl from '../../order/orderNew/contentUrl'
 const FormItem = Form.Item
 
 const approvedOutsourcing = React.createClass({
@@ -1878,6 +1879,13 @@ const approvedOutsourcing = React.createClass({
                 globalConfig.avatarHost + '/upload'
               )
             : [],
+            contentUrl:thisData.serviceContent
+            ? splitUrl(
+                thisData.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
           orderNo: thisData.orderNo, //订单编号
           buyerId: thisData.buyerId,
           depName: thisData.depName,
@@ -3190,7 +3198,7 @@ const approvedOutsourcing = React.createClass({
                   : this.state.changeList
               }
               dataSource={this.state.dataSource}
-              rowSelection={false}
+              // rowSelection={false}
               scroll={{ x: 'max-content', y: 0 }}
               pagination={this.state.pagination}
               onRowDoubleClick={this.tableRowClick.bind(this)}
@@ -3476,6 +3484,12 @@ const approvedOutsourcing = React.createClass({
                         </Modal>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"sourcingContents"}
+                    contentUrl = {this.state.contentUrl}
+                    imgId = {"sourcingContentsImg"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         className="half-item"

+ 15 - 1
js/component/manageCenter/financialManage/distribute/approvedOutsourcingAll.jsx

@@ -43,6 +43,7 @@ import ImgList from "../../../common/imgList";
 import {getProjectName} from "../../../tools";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
+import ContentUrl from "../../order/orderNew/contentUrl";
 const FormItem = Form.Item;
 
 const approvedOutsourcing = React.createClass({
@@ -1880,6 +1881,13 @@ const approvedOutsourcing = React.createClass({
                 globalConfig.avatarHost + "/upload"
               )
             : [],
+          contentUrl:thisData.serviceContent
+            ? splitUrl(
+                thisData.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
           orderNo: thisData.orderNo, //订单编号
           buyerId: thisData.buyerId,
           depName: thisData.depName,
@@ -3154,7 +3162,7 @@ const approvedOutsourcing = React.createClass({
                   : this.state.changeList
               }
               dataSource={this.state.dataSource}
-              rowSelection={false}
+              // rowSelection={false}
               scroll={{ x: "max-content", y: 0 }}
               pagination={this.state.pagination}
               onRowDoubleClick={this.tableRowClick.bind(this)}
@@ -3440,6 +3448,12 @@ const approvedOutsourcing = React.createClass({
                         </Modal>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"approvedContents"}
+                    contentUrl = {this.state.contentUrl}
+                    imgId = {"approvedContentsImg"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         className="half-item"

+ 14 - 0
js/component/manageCenter/financialManage/distribute/outOutsourcingList.jsx

@@ -33,6 +33,7 @@ import {ChooseList} from "../../order/orderNew/chooseList";
 import {getProjectName} from "../../../tools";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
+import ContentUrl from "../../order/orderNew/contentUrl";
 const FormItem = Form.Item;
 
 const outsourcingPaiDan = React.createClass({
@@ -673,6 +674,13 @@ const outsourcingPaiDan = React.createClass({
                 globalConfig.avatarHost + "/upload"
               )
             : [],
+            contentUrl:thisData.serviceContent
+            ? splitUrl(
+                thisData.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
           orderNo: thisData.orderNo, //订单编号
           buyerId: thisData.buyerId,
           depName: thisData.depName,
@@ -1238,6 +1246,12 @@ const outsourcingPaiDan = React.createClass({
                         </Modal>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"cingListContents"}
+                    contentUrl = {this.state.contentUrl}
+                    imgId = {"cingListContentsImg"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         className="half-item"

+ 14 - 0
js/component/manageCenter/financialManage/distribute/outsourcingPaiDan.jsx

@@ -33,6 +33,7 @@ import {ChooseList} from "../../order/orderNew/chooseList";
 import {getProjectName} from "../../../tools";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
+import ContentUrl from "../../order/orderNew/contentUrl";
 const FormItem = Form.Item;
 
 const outsourcingPaiDan = React.createClass({
@@ -782,6 +783,13 @@ const outsourcingPaiDan = React.createClass({
                 globalConfig.avatarHost + "/upload"
               )
             : [],
+            contentUrl:thisData.serviceContent
+            ? splitUrl(
+                thisData.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
           orderNo: thisData.orderNo, //订单编号
           buyerId: thisData.buyerId,
           depName: thisData.depName,
@@ -1394,6 +1402,12 @@ const outsourcingPaiDan = React.createClass({
                         </Modal>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"paidanContents"}
+                    contentUrl = {this.state.contentUrl}
+                    imgId = {"paidanContentsImg"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         className="half-item"

+ 16 - 0
js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx

@@ -29,6 +29,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from '../../order/orderNew/changeComponent/orderCoor';
+import ContentUrl from '../../order/orderNew/contentUrl';
 const OrderDetail = Form.create()(
   React.createClass({
     loadXmu(record) {
@@ -385,6 +386,13 @@ const OrderDetail = Form.create()(
                   globalConfig.avatarHost + "/upload"
                 )
               : [],
+              contentUrl:thisData.serviceContent
+            ? splitUrl(
+                thisData.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
             orderNo: thisData.orderNo, //订单编号
             buyerId: thisData.buyerId,
             depName: thisData.depName,
@@ -1147,6 +1155,14 @@ const OrderDetail = Form.create()(
                   </Modal>
                 </FormItem>
               </div>
+              <div style={{marginLeft:"56px"}}>
+              <ContentUrl
+               processStatus={1}
+               domId = {"detailContents"}
+               contentUrl = {this.state.contentUrl}
+               imgId = {"detailContentsImg"}
+               />
+              </div>
               <div className="clearfix">
                 <FormItem
                   className="half-item"

+ 148 - 1
js/component/manageCenter/order/orderNew/addService.jsx

@@ -287,6 +287,7 @@ const NewService = Form.create()(
         orgCodeUrl: [],
         voucherUrl: [],
         replenishUrl: [],
+        contentUrl:[],
         customerArr: [],
         declarationBatch: 1, //申报批次  默认第一批
         // 禁用变更类型转换
@@ -1819,6 +1820,29 @@ const NewService = Form.create()(
         });
         theReplenishUrl = picArr.join(",");
       }
+      // 服务内容上传图片
+      let contentUrl = [];
+      console.log(this.props.userDetaile);
+      if(this.props.userDetaile) {
+        if (this.state.contentUrl.length ) {
+          let picArr = [];
+          this.state.contentUrl.map(function (item) {
+            if (
+              item.response &&
+              item.response.data &&
+              item.response.data.length
+            ) {
+              picArr.push(item.response.data);
+            }
+          });
+          contentUrl = picArr.join(",");
+        }else{
+          message.info("请上传服务内容图片")
+          return
+        }
+      }
+      
+      // 
       if (this.props.userDetaile) {
         if (isNaN(parseInt(this.state.totalAmount))) {
           message.warning("签单金额不能为空");
@@ -1908,6 +1932,7 @@ const NewService = Form.create()(
               orderRemarks: this.state.orderRemarks, //订单备注
               contractPictureUrl: theorgCodeUrl.length ? theorgCodeUrl : "",
               agreementUrl: theReplenishUrl.length ? theReplenishUrl : "",
+              serviceContent:contentUrl.length ? contentUrl : "",
               orderDep: this.state.organizationSearch,
             },
       }).done(
@@ -2030,6 +2055,13 @@ const NewService = Form.create()(
                   globalConfig.avatarHost + "/upload"
                 )
               : [], //图片地址
+            contentUrl:thisData.serviceContent
+            ? splitUrl(
+                thisData.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
             signDate: thisData.signDate, //签单时间
             userName: thisData.userName, //客户名称
             salesmanName: thisData.salesmanName, //营销员名称
@@ -2807,6 +2839,9 @@ const NewService = Form.create()(
     getReplenishUrl(e) {
       this.setState({ replenishUrl: e });
     },
+    getContentUrl(e) {
+      this.setState({ contentUrl: e });
+    },
     getVoucherUrl(e) {
       this.setState({ voucherUrl: e });
     },
@@ -3955,6 +3990,44 @@ const NewService = Form.create()(
         rotateDeg,
       });
     },
+    downImgCont() {
+      let num = 0;
+      for (let i = 0; i < this.state.contentUrl.length; i++) {
+        if (this.state.contentUrl[i].url == this.state.previewImage) {
+          num = i;
+        }
+      }
+      if (num == this.state.replenishUrl.length - 1) {
+        return message.warning("已经是最后一张了哦");
+      }
+      this.state.previewImage = this.state.contentUrl[num + 1].url;
+      this.setState({
+        previewImage: this.state.previewImage,
+        rotateDeg: 0,
+      });
+    },
+    upImgCont() {
+      let num = 0;
+      for (let i = 0; i < this.state.contentUrl.length; i++) {
+        if (this.state.contentUrl[i].url == this.state.previewImage) {
+          num = i;
+        }
+      }
+      if (num == 0) {
+        return message.warning("已经是第一张了哦");
+      }
+      this.state.previewImage = this.state.contentUrl[num - 1].url;
+      this.setState({
+        previewImage: this.state.previewImage,
+        rotateDeg: 0,
+      });
+    },
+    rotateCont() {
+      let rotateDeg = this.state.rotateDeg + 90;
+      this.setState({
+        rotateDeg,
+      });
+    },
     showConfirmChange(fn, record) {
       confirm({
         title: "确定取消本次变更吗?",
@@ -5408,6 +5481,81 @@ const NewService = Form.create()(
                               </div>
                             )}
                           </div>
+                          {/* 服务内容 */}
+                           <div class="clearfix" style={{display:"flex",margin:" 0 0 10px 80px"}}>
+                            <div style={{marginRight:"6px"}}>
+                            <div style={{display:"flex"}}><span style={{color:'red'}}>*</span><span style={{color:"#333"}}>服务内容:</span></div>  
+                            </div>
+                           <div>
+                               {this.state.processStatus == 0 ? <div> <PicturesWall
+                                    domId={"addServiceContent"}
+                                    fileList={this.getContentUrl}
+                                    pictureUrl={this.state.contentUrl}
+                                    url="/api/admin/order/uploadOrderImg"
+                                    sign=""
+                                  />
+                                  <p> <span style={{color:"red",display:"inline-block"}}>(请将合同中的服务内容,截图上传!含服务年限,时间节点等;)</span>图片建议:要清晰。</p></div> : this.state.contentUrl.length>0 ?  <div><ImgList
+                                        domId={"addService13"}
+                                        fileList={this.state.contentUrl}
+                                        ItemWidth={"96px"}
+                                      /> 
+                                    <Modal
+                                    maskClosable={false}
+                                    footer={null}
+                                    width={"50%"}
+                                    visible={this.state.previewVisibleCont}
+                                    onCancel={() => {
+                                      this.setState({
+                                        previewVisibleCont: false,
+                                        rotateDeg: 0,
+                                      });
+                                    }}
+                                  >
+                                    <img
+                                      alt=""
+                                      style={{
+                                        width: "100%",
+                                        transform: `rotate(${this.state.rotateDeg}deg)`,
+                                      }}
+                                      src={this.state.previewImage || ""}
+                                    />
+                                    <Button
+                                      onClick={this.rotateCont}
+                                      style={{
+                                        position: "relative",
+                                        left: "50%",
+                                        transform: "translateX(-50%)",
+                                      }}
+                                    >
+                                      旋转
+                                    </Button>
+                                    <Button
+                                      onClick={this.upImgCont}
+                                      style={{
+                                        position: "absolute",
+                                        left: -81,
+                                        top: "50%",
+                                        transform: "translateY(-50%)",
+                                      }}
+                                    >
+                                      上一张
+                                    </Button>
+                                    <Button
+                                      onClick={this.downImgCont}
+                                      style={{
+                                        position: "absolute",
+                                        right: -81,
+                                        top: "50%",
+                                        transform: "translateY(-50%)",
+                                      }}
+                                    >
+                                      下一张
+                                    </Button>
+                                  </Modal>
+                                      </div>:"暂无附件!"}
+                            </div>
+                            </div>
+                          {/* 服务内容结束 */}
                           <div className="clearfix">
                             {this.state.processStatus == 0 ? (
                               <div className="clearfix">
@@ -6192,7 +6340,6 @@ const NewService = Form.create()(
                                       });
                                     }
                                   }}
-                                  value={this.state.typeChange}
                                 >
                                   <Option value={0}>退单退款</Option>
                                   <Option value={1}>项目及金额变更</Option>

+ 14 - 0
js/component/manageCenter/order/orderNew/approveds.jsx

@@ -45,6 +45,7 @@ import DepartmentList from "../../../common/departmentList";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from './changeComponent/orderCoor';
+import ContentUrl from './contentUrl';
 const { TabPane } = Tabs;
 const { TextArea } = Input;
 //图片组件
@@ -1033,6 +1034,13 @@ const IntentionCustomer = Form.create()(
                     globalConfig.avatarHost + "/upload"
                   )
                 : [],
+                contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               financeName: thisdata.financeName, //财务名称
@@ -2396,6 +2404,12 @@ const IntentionCustomer = Form.create()(
                         <p>图片建议:要清晰。</p>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"approContents"}
+                    contentUrl = {this.state.contentUrl}
+                    imgId = {"approContentsImg"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         className="half-item"

+ 186 - 1
js/component/manageCenter/order/orderNew/arrearsList.jsx

@@ -98,6 +98,7 @@ const ArrearsList = Form.create()(
           defaultPageSize: 10,
           showQuickJumper: true,
           pageSize: 10,
+          modalVisible:false,
           onChange: function (page) {
             this.loadData(page);
           }.bind(this),
@@ -157,6 +158,11 @@ const ArrearsList = Form.create()(
             },
           },
           {
+            title: "项目名称",
+            dataIndex: "commodityName",
+            key: "commodityName",
+          },
+          {
             title: "项目状态",
             dataIndex: "projectStatus",
             key: "projectStatus",
@@ -228,7 +234,96 @@ const ArrearsList = Form.create()(
             dataIndex: "signDate",
             key: "signDate",
           },
+          {
+            title: "移交法务",
+            dataIndex: "legalTimes",
+            key: "legalTimes",
+          },
+        ],
+        legalColumns:[
+          {
+            title: "序号",
+            dataIndex: "key",
+            key: "key",
+            width: 45,
+          },
+          {
+            title: "操作人名称",
+            dataIndex: "adminName",
+            key: "adminName",
+            width: 80,
+          },
+          {
+            title: "客户名称",
+            dataIndex: "userName",
+            key: "userName",
+            width: 140,
+          },
+          {
+            title: "法务时间",
+            dataIndex: "operationDate",
+            key: "operationDate",
+            width: 140,
+          },
+          {
+            title: "详细",
+            dataIndex: "remarks",
+            key: "remarks",
+            width: 140,
+          },
+          {
+            title: "法务类型",
+            dataIndex: "type",
+            key: "type",
+            width: 140,
+            render:(text,data) => {
+              let status;
+              if (data.status == 0) {
+                status = "否";
+              } else if (data.status == 1) {
+                status = "已回款";
+              } else if (data.status == 2) {
+                status = "已诉讼";
+              } else if (data.status == 3) {
+                status = "已坏账处理";
+              }
+              //
+              if (data.type == 0) {
+                return "法务催收中";
+              } else if (data.type == 1) {
+                return "延期法务";
+              } else if (data.type == 2) {
+                return `已完成法务/${status}`;
+              } else if (data.type == 3) {
+                return "自动转交";
+              } else if (data.type == 4) {
+                return "营销转交";
+              }
+            }
+          },
+          {
+            title: "操作时间",
+            dataIndex: "createDate",
+            key: "createDate",
+            width: 140,
+          },
         ],
+        legalDataSource:[],
+        legalPagination:{
+          defaultCurrent: 1,
+          defaultPageSize: 10,
+          showQuickJumper: true,
+          pageSize: 10,
+          onChange: function (page) {
+            this.linkList(page);
+            this.setState({
+              selectedRowKeys: [],
+            });
+          }.bind(this),
+          showTotal: function (total) {
+            return "共" + total + "条数据";
+          },
+        },
         dataSource: [],
       };
     },
@@ -295,6 +390,58 @@ const ArrearsList = Form.create()(
         changeList: newArr
       });
     },
+    viewLegal(){
+      console.log(this.state.rowkey);
+      if(this.state.recordt == undefined || this.state.recordt == [] || this.state.rowkey.length == 0  ) {
+        message.info("请选择查看的单号")
+        return
+      }
+      this.setState({
+        modalVisible:true
+      })
+      $.ajax({
+        method: "get",
+        dataType: "json",
+        crossDomain: false,
+        url: globalConfig.context + "/api/admin/lagalAffairs/lagalAffairsLogList",
+        data: {
+          pageNo:  1,
+          pageSize: 10,
+          orderNo:this.state.recordt
+        },
+        success: function (data) {
+          let theArr = []
+          if (data.error.length) {
+            this.setState({
+              loadLegal: false,
+            });
+            message.warning(data.error[0].message);
+          } else {
+            for (let i = 0; i < data.data.length; i++) {
+              let thisdata = data.data[i];
+              let obj = thisdata;
+              obj.key = i + 1;
+              theArr.push(obj);
+            }
+            this.setState({
+              legalDataSource: theArr,
+              legalPagination: this.state.legalPagination
+            });
+            this.state.legalPagination.total = data.data.totalCount;
+              this.state.legalPagination.current = data.data.pageNo;
+            }
+            if (data.data && data.data.list && !data.data.list.length) {
+              this.state.legalPagination.total = 0;
+            }  
+        }.bind(this),
+      }).always(
+        function () {
+          this.setState({
+            loadLegal: false,
+          });
+        }.bind(this)
+      );
+    },
     render() {
       const formItemLayout = {
         labelCol: { span: 8 },
@@ -309,12 +456,17 @@ const ArrearsList = Form.create()(
             modalVisible: false,
             selectedRows: selectedRows.slice(-1),
             selectedRowKeys: selectedRowKeys.slice(-1),
+          },() =>{
+            this.setState({
+              rowkey:this.state.selectedRowKeys
+            })
           });
+         
         },
         onSelect: (recordt) => {
           this.setState({
             modalVisible: false,
-            recordt: recordt.id,
+            recordt: recordt.orderNo,
           });
         },
       };
@@ -435,6 +587,16 @@ const ArrearsList = Form.create()(
                   />
                 </div>
               </TabPane>
+              <TabPane tab="查看" key="4">
+              <Button
+                  // disabled={ this.state.rowkey.length == 0 ? true : false}
+                  type="primary"
+                  onClick={this.viewLegal}
+                  style={{ marginBottom: 10, marginTop: 10, marginLeft: 10 }}
+                >
+                  查看欠款法务列表
+                </Button>
+              </TabPane>
             </Tabs>
             <div className="patent-table">
               <Spin spinning={this.state.loading}>
@@ -447,11 +609,34 @@ const ArrearsList = Form.create()(
                   dataSource={this.state.dataSource}
                   pagination={this.state.pagination}
                   scroll={{ x: "max-content", y: 0 }}
+                  rowSelection={rowSelection} 
                   bordered
                   size="small"
                 />
               </Spin>
             </div>
+          <Modal
+          title="欠款法务列表"
+          footer=""
+          width={1000}
+          visible={this.state.modalVisible}
+          onCancel={()=>{
+            this.setState({
+              modalVisible:false
+            })
+          }}
+        >
+          <Spin spinning={this.state.loadLegal}>
+                <Table
+                  columns={this.state.legalColumns}
+                  dataSource={this.state.legalDataSource}
+                  pagination={this.state.legalPagination}
+                  scroll={{ x: "max-content", y: 0 }}
+                  bordered
+                  size="small"
+                />
+              </Spin>
+        </Modal>
           </div>
         </div>
       );

+ 9 - 0
js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js

@@ -17,12 +17,14 @@ import {getProjectName} from "../../../../tools";
 import ProjectDetailsReadOnly from "../../../../common/projectDetailsReadOnly";
 import EnterpriseNameChange from "../../../../common/enterpriseNameChange";
 import OrderCoor from "./orderCoor"
+import ContentUrl from "../contentUrl";
 const FormItem = Form.Item;
 class OrderDetail extends Component {
   constructor(props) {
     super(props);
     this.state = {
       dataInfor:{},
+      contentUrl:[],
       newContactsLists: [
         {
           title: "项目名称",
@@ -697,6 +699,13 @@ class OrderDetail extends Component {
             </Modal>
           </FormItem>
         </div>
+        <ContentUrl
+         processStatus={1}
+         domId = {"orderContent"}
+         contentUrl = {data.serviceContent ? splitUrl(data.serviceContent, ",", globalConfig.avatarHost + "/upload") : []}
+         imgId = {"orderImg1x"}
+        //  getContentUrl = {this.getContentUrl}
+        />
         <div className="clearfix">
           <FormItem
             className="half-item"

+ 14 - 0
js/component/manageCenter/order/orderNew/checkOutsourcing.jsx

@@ -36,6 +36,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from './changeComponent/orderCoor'
+import ContentUrl from './contentUrl'
 const checkOutsourcing = Form.create()(
   React.createClass({
     loadData(pageNo) {
@@ -512,6 +513,13 @@ const checkOutsourcing = Form.create()(
                     globalConfig.avatarHost + '/upload'
                   )
                 : [],
+                contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -1573,6 +1581,12 @@ const checkOutsourcing = Form.create()(
                           </Modal>
                         </FormItem>
                       </div>
+                      <ContentUrl
+                      processStatus={1}
+                      domId = {"checkContents"}
+                      contentUrl = {this.state.contentUrl}
+                      imgId = {"checkContentsImg"}
+                      />
                       <div className="clearfix">
                         <FormItem
                           className="half-item"

+ 137 - 0
js/component/manageCenter/order/orderNew/contentUrl.jsx

@@ -0,0 +1,137 @@
+import React, { Component } from "react";
+import {Table,Modal,Button} from "antd";
+import PicturesWall from "./changeComponent/picturesWall.js";
+import ImgList from "../../../common/imgList";
+import $ from "jquery/src/ajax";
+class contentUrl extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      dataView: null,
+      rotateDeg: 0,
+
+    };
+    this.formRef = {};
+    this.downImg = this.downImg.bind(this);
+    this.upImg = this.upImg.bind(this);
+    this.rotate = this.rotate.bind(this);
+  }
+  downImg() {
+    let num = 0;
+    for (let i = 0; i < this.props.contentUrl.length; i++) {
+      if (this.props.contentUrl[i].url == this.state.previewImage) {
+        num = i;
+      }
+    }
+    if (num == this.props.contentUrl.length - 1) {
+      return message.warning("已经是最后一张了哦");
+    }
+    this.state.previewImage = this.props.contentUrl[num + 1].url;
+    this.setState({
+      previewImage: this.state.previewImage,
+      rotateDeg: 0,
+    });
+  }
+  upImg() {
+    let num = 0;
+    for (let i = 0; i < this.props.contentUrl.length; i++) {
+      if (this.props.contentUrl[i].url == this.state.previewImage) {
+        num = i;
+      }
+    }
+    if (num == 0) {
+      return message.warning("已经是第一张了哦");
+    }
+    this.state.previewImage = this.props.contentUrl[num - 1].url;
+    this.setState({
+      previewImage: this.state.previewImage,
+      rotateDeg: 0,
+    });
+  }
+  rotate() {
+    let rotateDeg = this.state.rotateDeg + 90;
+    this.setState({
+      rotateDeg,
+    });
+  }
+  render() {
+    const contentUrl = this.props.contentUrl
+    return (
+      <div class="clearfix" style={{display:"flex",margin:"0 0 10px 80px"}}>
+      <div style={{marginRight:"6px"}}>
+      <div style={{display:"flex"}}><span style={{color:'red'}}>*</span><span style={{color:"#333"}}>服务内容:</span></div>  
+      </div>
+     <div>
+         {this.props.processStatus == 0 ? <div> <PicturesWall
+              domId={this.props.domId}
+              fileList={this.props.getContentUrl}
+              pictureUrl={this.props.contentUrl}
+              url="/api/admin/order/uploadOrderImg"
+              sign=""
+            />
+            <p><span style={{color:"red",display:"inline-block"}}>(请将合同中的服务内容,截图上传!含服务年限,时间节点等;)</span>图片建议:要清晰。</p></div> : contentUrl ?  <div><ImgList
+                  domId={this.props.imgId}
+                  fileList={this.props.contentUrl}
+                  ItemWidth={"96px"}
+                /><Modal
+                maskClosable={false}
+                footer={null}
+                width={"50%"}
+                visible={this.state.previewVisible}
+                onCancel={() => {
+                  this.setState({
+                    previewVisible: false,
+                    rotateDeg: 0,
+                  });
+                }}
+              >
+                <img
+                  alt=""
+                  style={{
+                    width: "100%",
+                    transform: `rotate(${this.state.rotateDeg}deg)`,
+                  }}
+                  src={this.state.previewImage || ""}
+                />
+                <Button
+                  onClick={this.rotate}
+                  style={{
+                    position: "relative",
+                    left: "50%",
+                    transform: "translateX(-50%)",
+                  }}
+                >
+                  旋转
+                </Button>
+                <Button
+                  onClick={this.upImg}
+                  style={{
+                    position: "absolute",
+                    left: -81,
+                    top: "50%",
+                    transform: "translateY(-50%)",
+                  }}
+                >
+                  上一张
+                </Button>
+                <Button
+                  onClick={this.downImg}
+                  style={{
+                    position: "absolute",
+                    right: -81,
+                    top: "50%",
+                    transform: "translateY(-50%)",
+                  }}
+                >
+                  下一张
+                </Button>
+              </Modal> </div>
+                :"暂无附件!"}
+                {/* <div style={{color:"red"}}>(请将合同中的服务内容,截图上传!含服务年限,时间节点等)</div> */}
+      </div>
+      </div>
+    );
+  }
+}
+
+export default contentUrl;

+ 14 - 0
js/component/manageCenter/order/orderNew/examine.jsx

@@ -41,6 +41,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from "./changeComponent/orderCoor";
+import ContentUrl from "./contentUrl";
 const confirm = Modal.confirm;
 const { Option } = Select;
 //图片组件
@@ -603,6 +604,13 @@ const IntentionCustomer = Form.create()(
                     globalConfig.avatarHost + "/upload"
                   )
                 : [], //图片地址
+                contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -1767,6 +1775,12 @@ const IntentionCustomer = Form.create()(
                             </FormItem>
                           </div>
                         </div>
+                        <ContentUrl
+                        processStatus={1}
+                        domId = {"examineContents"}
+                        contentUrl = {this.state.contentUrl}
+                        imgId = {"examineContentsImg"}
+                        />
                         <div className="clearfix">
                           <FormItem
                             className="half-item"

+ 14 - 0
js/component/manageCenter/order/orderNew/inquiry.jsx

@@ -50,6 +50,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from "./changeComponent/orderCoor.jsx";
+import ContentUrl from "./contentUrl.jsx";
 import Order from "../../customerService/administration/order.jsx";
 const { Option } = Select;
 const { TabPane } = Tabs;
@@ -1659,6 +1660,13 @@ const IntentionCustomer = Form.create()(
                     globalConfig.avatarHost + "/upload"
                   )
                 : [], //图片地址
+                contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -4285,6 +4293,12 @@ const IntentionCustomer = Form.create()(
                         </Modal>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"inquiryContents"}
+                    contentUrl = {this.state.contentUrl}
+                    imgId = {"inquiryContentsImg"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         className="half-item"

+ 14 - 0
js/component/manageCenter/order/orderNew/outsourcingList.jsx

@@ -42,6 +42,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from "./changeComponent/orderCoor";
+import ContentUrl from "./contentUrl";
 //图片组件
 const PicturesWall = React.createClass({
   getInitialState() {
@@ -786,6 +787,13 @@ const outsourcingList = Form.create()(
                     globalConfig.avatarHost + "/upload"
                   )
                 : [], //图片地址
+                contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -1901,6 +1909,12 @@ const outsourcingList = Form.create()(
                             </Modal>
                           </FormItem>
                         </div>
+                        <ContentUrl
+                        processStatus={1}
+                        domId = {"outsourcingList"}
+                        contentUrl = {this.state.contentUrl}
+                        imgId = {"outsourcingList"}
+                        />
                         <div className="clearfix">
                           <FormItem
                             className="half-item"

+ 14 - 0
js/component/manageCenter/order/orderNew/outsourcingPro.jsx

@@ -43,6 +43,7 @@ import {ChooseList} from "./chooseList";
 import {getProjectName} from "../../../tools";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import OrderCoor from "./changeComponent/orderCoor";
+import ContentUrl from "./contentUrl";
 //图片组件
 const PicturesWall = React.createClass({
   getInitialState() {
@@ -582,6 +583,13 @@ const outsourcingPro = Form.create()(
                     globalConfig.avatarHost + "/upload"
                   )
                 : [], //图片地址
+                contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -1969,6 +1977,12 @@ const outsourcingPro = Form.create()(
                             </Modal>
                           </FormItem>
                         </div>
+                      <ContentUrl
+                        processStatus={1}
+                        domId = {"outContents"}
+                        contentUrl = {this.state.contentUrl}
+                        imgId = {"outContentsImg"}
+                        />
                         <div className="clearfix">
                           <FormItem
                               className="half-item"

+ 14 - 3
js/component/manageCenter/order/orderNew/press.jsx

@@ -60,7 +60,8 @@ const IntentionCustomer = Form.create()(React.createClass({
               startDate: thisdata.startDate, //催收启动时间
               depName: thisdata.depName, //部门名称
               contractNo: thisdata.contractNo,
-              dunStatus: thisdata.dunStatus == 0 ? "未触发" : "已触发"
+              dunStatus: thisdata.dunStatus == 0 ? "未触发" : "已触发",
+              commodityName:thisdata.commodityName,
             });
           }
           this.state.pagination.total = data.data.totalCount;
@@ -148,12 +149,14 @@ const IntentionCustomer = Form.create()(React.createClass({
       {
         title: "序号",
         dataIndex: "key",
-        key: "key"
+        key: "key",
+        fixed: 'left'
       },
       {
         title: "合同编号",
         dataIndex: "contractNo",
-        key: "contractNo"
+        key: "contractNo",
+        fixed: 'left'
       },
       {
         title: "订单编号",
@@ -196,6 +199,14 @@ const IntentionCustomer = Form.create()(React.createClass({
         }
       },
       {
+        title: "项目名称",
+        dataIndex: "commodityName",
+        key: "commodityName",
+        // render: text => {
+        //   return getNewOrderStatus(text);
+        // }
+      },
+      {
         title: "项目状态",
         dataIndex: "projectStatus",
         key: "projectStatus",

+ 6 - 0
js/component/manageCenter/order/orderNew/pressList.jsx

@@ -80,6 +80,7 @@ const IntentionCustomer = Form.create()(
                 startDate: thisdata.startDate, //催收启动时间
                 depName: thisdata.depName, //部门名称
                 dunStatus: thisdata.dunStatus == 0 ? "未触发" : "已触发",
+                commodityName:thisdata.commodityName,
               });
             }
             this.state.pagination.total = data.data.totalCount;
@@ -223,6 +224,11 @@ const IntentionCustomer = Form.create()(
             },
           },
           {
+            title: "项目名称",
+            dataIndex: "commodityName",
+            key: "commodityName",
+          },
+          {
             title: "项目状态",
             dataIndex: "projectStatus",
             key: "projectStatus",

+ 38 - 0
js/component/manageCenter/order/orderNew/reject.jsx

@@ -40,6 +40,7 @@ import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from './changeComponent/orderCoor';
 import ProjectOperation from "../../../common/projectOperation";
+import ContentUrl from './contentUrl';
 //图片组件
 const PicturesWall = React.createClass({
 	getInitialState() {
@@ -150,6 +151,7 @@ const IntentionCustomer = Form.create()(
         selectedRowKeys: [],
         orgCodeUrl: [],
         replenishUrl: [],
+        contentUrl:[],
         customerArr: [],
         resVisible: false,
         pagination: {
@@ -974,6 +976,13 @@ const IntentionCustomer = Form.create()(
                     globalConfig.avatarHost + "/upload"
                   )
                 : [], //图片地址
+              contentUrl:thisdata.serviceContent
+            ? splitUrl(
+                thisdata.serviceContent,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
+            : [], //图片地址
               salesmanName: thisdata.salesmanName, //营销员名称
               salesmanMobile: thisdata.salesmanMobile, //营销员电话
               oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
@@ -1421,6 +1430,24 @@ const IntentionCustomer = Form.create()(
         });
         theReplenishUrl = picArr.join(",");
       }
+      // 服务内容上传图片
+      let contentUrl = [];
+      if (this.state.contentUrl.length) {
+        let picArr = [];
+        this.state.contentUrl.map(function (item) {
+          if (
+            item.response &&
+            item.response.data &&
+            item.response.data.length
+          ) {
+            picArr.push(item.response.data);
+          }
+        });
+        contentUrl = picArr.join(",");
+      }else{
+        message.info("请上传服务内容图片")
+        return
+      }
       if (moneyVerify(this.state.totalAmount)) {
         this.setState({
           flag: false,
@@ -1522,6 +1549,7 @@ const IntentionCustomer = Form.create()(
           orderRemarks: this.state.orderRemarks, //订单备注
           contractPictureUrl: theorgCodeUrl.length ? theorgCodeUrl : "",
           agreementUrl: theReplenishUrl.length ? theReplenishUrl : "",
+          serviceContent:contentUrl.length ? contentUrl : "",
           orderDep: this.state.organizationSearch,
         },
         success: function (data) {
@@ -1721,6 +1749,9 @@ const IntentionCustomer = Form.create()(
     getReplenishUrl(e) {
       this.setState({ replenishUrl: e });
     },
+    getContentUrl(e) {
+      this.setState({ contentUrl: e });
+    },
     //关闭详情
     visitCancel() {
       this.setState({
@@ -2279,6 +2310,13 @@ const IntentionCustomer = Form.create()(
                         </Button>
                       </FormItem>
                     </div>
+                    <ContentUrl
+                      processStatus={this.state.processStatus}
+                      domId = {"rejectContent"}
+                      contentUrl = {this.state.contentUrl}
+                      getContentUrl = {this.getContentUrl}
+                      imgId = {"rejectImg1"}
+                    />
                     <div className="clearfix">
                       <FormItem
                         labelCol={{ span: 4 }}

+ 37 - 15
js/component/manageCenter/project/project/projectAssignment.jsx

@@ -36,6 +36,7 @@ import OrderRiZi from "@/orderRiZi.jsx";
 import {ChooseList} from "../../order/orderNew/chooseList";
 import ProjectOperation from "../../../common/projectOperation";
 import OrderCoor from "../../order/orderNew/changeComponent/orderCoor";
+import ContentUrl from "../../order/orderNew/contentUrl";
 const {TabPane} = Tabs
 
 const PaiDan = React.createClass({
@@ -496,6 +497,20 @@ const PaiDan = React.createClass({
                   globalConfig.avatarHost + "/upload"
                 )
               : [], //图片地址
+          contentUrl:thisdata.serviceContent
+                ? splitUrl(
+                    thisdata.serviceContent,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                  )
+                : [], //图片地址
+                replenishUrl: thisdata.agreementUrl
+                ? splitUrl(
+                    thisdata.agreementUrl,
+                    ",",
+                    globalConfig.avatarHost + "/upload"
+                )
+                : [], //图片地址
             salesmanName: thisdata.salesmanName, //营销员名称
             salesmanMobile: thisdata.salesmanMobile, //营销员电话
             financeName: thisdata.financeName, //财务名称
@@ -1384,23 +1399,24 @@ const PaiDan = React.createClass({
                                     查看订单日志
                                   </Button>
                                 </FormItem>
-                                {/* <FormItem
+                                <FormItem
+                                style={{right:"15px"}}
                                   labelCol={{ span: 4 }}
                                   wrapperCol={{ span: 18 }}
                                   label="补充协议"
-                                > */}
-                                  {/*<Upload*/}
-                                  {/*  className="demandDetailShow-upload"*/}
-                                  {/*  listType="picture-card"*/}
-                                  {/*  fileList={this.state.replenishUrl}*/}
-                                  {/*  onPreview={(file) => {*/}
-                                  {/*    this.setState({*/}
-                                  {/*      previewImage: file.url || file.thumbUrl,*/}
-                                  {/*      previewVisibles: true,*/}
-                                  {/*    });*/}
-                                  {/*  }}*/}
-                                  {/*/>*/}
-                                  {/* <div
+                                > 
+                                  {/* <Upload
+                                    className="demandDetailShow-upload"
+                                    listType="picture-card"
+                                   fileList={this.state.replenishUrl}
+                                    onPreview={(file) => {
+                                      this.setState({
+                                       previewImage: file.url || file.thumbUrl,
+                                        previewVisibles: true,
+                                      });
+                                    }}
+                                  /> */}
+                                   <div
                                     style={{
                                       paddingTop: "10px",
                                       paddingBottom: "10px",
@@ -1471,10 +1487,16 @@ const PaiDan = React.createClass({
                                       下一张
                                     </Button>
                                   </Modal>
-                                </FormItem> */}
+                                </FormItem> 
                               </div>
                             )}
                           </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"projectsContents"}
+                    contentUrl = {this.state.contentUrl }
+                    imgId = {"projectsContentsImg"}
+                    />
                 <div className="clearfix">
                   <FormItem
                     className="half-item"

+ 14 - 0
js/component/manageCenter/project/project/projectQuery.jsx

@@ -25,6 +25,7 @@ import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
  import OrderItemStatus from "../../../common/orderItemStatus";
  import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import OrderCoor from '../../order/orderNew/changeComponent/orderCoor';
+import ContentUrl from '../../order/orderNew/contentUrl';
 const {TabPane} = Tabs
 const PaiDan = React.createClass({
   loadData(pageNo) {
@@ -356,6 +357,13 @@ const PaiDan = React.createClass({
                   globalConfig.avatarHost + "/upload"
                 )
               : [], //图片地址
+            contentUrl:thisdata.serviceContent
+              ? splitUrl(
+                  thisdata.serviceContent,
+                  ",",
+                  globalConfig.avatarHost + "/upload"
+                )
+              : [], //图片地址
             salesmanName: thisdata.salesmanName, //营销员名称
             salesmanMobile: thisdata.salesmanMobile, //营销员电话
             financeName: thisdata.financeName, //财务名称
@@ -1105,6 +1113,12 @@ const PaiDan = React.createClass({
                     </Modal>
                   </FormItem>
                 </div>
+                <ContentUrl
+                    processStatus={1}
+                    domId = {"projectQueryContents"}
+                    contentUrl = {this.state.contentUrl }
+                    imgId = {"projectQueryContentsImg"}
+                    />
                 <div className="clearfix">
                   <FormItem
                     className="half-item"

+ 14 - 0
js/component/manageCenter/project/task/businessManagement/orderInfor.jsx

@@ -6,6 +6,7 @@ import EnterpriseNameChange from "../../../../common/enterpriseNameChange";
 import PicturesWall from "../../../order/orderNew/changeComponent/picturesWall";
 import ImgList from "../../../../common/imgList";
 import OrderCoor from "../../../order/orderNew/changeComponent/orderCoor";
+import ContentUrl from "../../../order/orderNew/contentUrl";
 import $ from "jquery";
 
 const FormItem = Form.Item;
@@ -217,6 +218,13 @@ class OrderInfor extends Component{
                             globalConfig.avatarHost + "/upload"
                         )
                         : [], //图片地址
+                    contentUrl:thisData.serviceContent
+                        ? splitUrl(
+                            thisData.serviceContent,
+                            ",",
+                            globalConfig.avatarHost + "/upload"
+                          )
+                        : [], //图片地址
                     signDate: thisData.signDate, //签单时间
                     userName: thisData.userName, //客户名称
                     salesmanName: thisData.salesmanName, //营销员名称
@@ -664,6 +672,12 @@ class OrderInfor extends Component{
                             </FormItem>
                         </div>
                     </div>
+                    <ContentUrl
+                    processStatus={1}
+                    domId = {"inforContents"}
+                    contentUrl = {this.state.contentUrl }
+                    imgId = {"inforContentsImg"}
+                    />
                     <div className="clearfix">
                         <FormItem
                             labelCol={{ span: 4 }}

+ 70 - 0
js/component/manageCenter/project/task/myTask.jsx

@@ -123,6 +123,7 @@ const Task = React.createClass({
                 specially: 0, //个人
                 name: this.state.nameSearch, //客户名称
                 depId: this.state.departmenttSearch, //订单部门
+                cid:this.state.category,//项目分类
                 orderNo: this.state.orderNoSearch, //订单编号
                 contractNo: this.state.contractNoSearch, //合同编号
                 taskId: this.state.taskNoSearch, //项目编号
@@ -223,6 +224,7 @@ const Task = React.createClass({
             selectedRowKeys: [],
             avisible: false,
             departmentArr: [],
+            categoryArr:[],
             selectedRows: [],
             attachmentUrl: [],
             contactList: [],
@@ -708,6 +710,7 @@ const Task = React.createClass({
 
     componentWillMount() {
         this.departmentList()
+        this.categoryList()
         this.loadData()
     },
     componentDidMount() {
@@ -1789,6 +1792,15 @@ const Task = React.createClass({
                 return
             }
         })
+        // 导出
+        let categoryName = '',
+                category = this.state.categoryArr || []
+            category.map((item) => {
+            if (this.state.categoryId == item.id) {
+                categoryName = item.name
+                return
+            }
+        })
         let data = {
             departmentId: this.state.departmentId,
             departmentName: departmentName,
@@ -2091,6 +2103,7 @@ const Task = React.createClass({
                 departmenttSearch: undefined,
                 projectStatusSearch: [], //项目状态
                 approvalSearch: undefined,
+                category:undefined,
                 outsourceStatusSearch: [],
             })
         }
@@ -2190,6 +2203,48 @@ const Task = React.createClass({
             }.bind(this)
         )
     },
+    // 业务类别
+    categoryList() {
+        this.setState({
+            loading: true,
+        })
+        $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/ProjectSize/getAllCname',
+            data: {
+                flag:0
+            },
+            success: function (data) {
+                let thedata = data.data
+                let theArr = []
+                if (!thedata) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                    thedata = {}
+                } else {
+                    thedata.map(function (item, index) {
+                        theArr.push({
+                            key: index,
+                            name: item.cname,
+                            id: item.id,
+                        })
+                    })
+                }
+                this.setState({
+                    categoryArr: theArr,
+                })
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    },
     changeList(arr) {
         const newArr = []
         this.state.columns.forEach((item) => {
@@ -3456,6 +3511,7 @@ const Task = React.createClass({
             wrapperCol: {span: 14},
         }
         let departmentArr = this.state.departmentArr || []
+        let categoryArr  = this.state.categoryArr  || []
         return (
             <div className="user-content">
                 {this.state.resVisible ? (
@@ -3503,6 +3559,20 @@ const Task = React.createClass({
                                     this.setState({taskNoSearch: e.target.value})
                                 }}
                             />
+                             <Select
+                                placeholder="业务类别"
+                                style={{width: 150, marginRight: '10px'}}
+                                value={this.state.category}
+                                onChange={(e) => {
+                                    this.setState({category: e})
+                                }}
+                            >
+                                {categoryArr.map(function (item) {
+                                    return (
+                                        <Select.Option key={item.id}>{item.name}</Select.Option>
+                                    )
+                                })}
+                            </Select>
                             <Select
                                 placeholder="选择部门"
                                 style={{width: 150, marginRight: '10px'}}

+ 1 - 1
package.json

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