dev01 2 anos atrás
pai
commit
1a1d889979

+ 1 - 1
js/component/common/projectOperation/index.jsx

@@ -335,7 +335,7 @@ class ProjectOperation extends Component {
                 onOk={this.props.onCancel}
                 onCancel={this.props.onCancel}
                 width="900px"
-                title={readOnly ? "项目任务详情" : "添加项目任务"}
+                title={readOnly ? "项目任务详情" : this.state.jid ? "编辑项目任务" : "添加项目任务"}
                 footer=""
                 className="admin-desc-content"
             >

+ 354 - 0
js/component/common/projectOperation/vip.jsx

@@ -0,0 +1,354 @@
+import React, { Component } from "react";
+import { AutoComplete, Button, Form, Input, message, Modal, Radio, Select, Spin } from "antd";
+import $ from "jquery";
+
+const FormItem = Form.Item;
+
+const formItemLayout = {
+  labelCol: { span: 8 },
+  wrapperCol: { span: 14 },
+};
+
+class ProjectOperationVip extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      commodityName: '',
+      commodityQuantity: '',
+      patentType: 0,
+      officialCost: '',
+      costReduction: '',
+      commodityPrice: '',
+      main: '',
+      taskComment: '',
+      declarationBatch: '',
+      ifCertificationFee: '',
+      displayFees: "none",
+
+      customerArr: [],
+      patentTypeList: [],
+
+      loading: false,
+
+      patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0  //收否为专利转让 0 否 1 是
+    }
+    this.onSubmit = this.onSubmit.bind(this);
+    this.httpChange = this.httpChange.bind(this);
+    this.selectAuto = this.selectAuto.bind(this);
+    this.setValue = this.setValue.bind(this);
+  }
+
+  componentDidMount() {
+    this.setValue();
+  }
+
+  setValue() {
+    const { dataInfor } = this.props;
+    if (!(dataInfor && Object.keys(dataInfor).length > 0)) { return; }
+    this.setState({
+      fid: dataInfor.id,
+      commodityId: dataInfor.commodityId, //服务ID
+      commodityName: dataInfor.commodityName, //项目名称
+      memberType: dataInfor.memberType,// 付款情况
+      commodityQuantity: dataInfor.commodityQuantity, // 数量
+      taskComment: dataInfor.taskComment, // 备注
+    });
+  }
+  // 新建会员项目
+  onSubmit() {
+    if (this.state.commodityId === undefined || !this.state.commodityId) {
+      message.warning("服务名称不匹配!");
+      return
+    }
+    let reg = /^([0]|[1-9][0-9]*)$/;
+    if (
+      !this.state.commodityQuantity ||
+      !reg.test(this.state.commodityQuantity)
+    ) {
+      message.warning("请输入正确商品数量!");
+      return
+    }
+    if (this.state.memberType === undefined) {
+      message.warning("请选择付款情况!");
+      return
+    }
+    this.setState({
+      loading: true,
+    });
+    let infor = {
+      commodityId: this.state.commodityId, //项目编号
+      orderNo: this.props.orderNo, //订单编号
+      commodityName: this.state.commodityName, //项目名称
+      commodityQuantity: this.state.commodityQuantity, //商品数量
+      commodityPrice: 0, //签单总价
+      taskComment: this.state.taskComment, //服务说明
+    }
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/addMemberProject",
+      data: infor,
+    }).done(
+      function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (!data.error.length) {
+          message.success("保存成功!");
+          this.props.onCancel();
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  }
+  // 修改会员项目
+  onChange() {
+    if (this.state.commodityId === undefined || !this.state.commodityId) {
+      message.warning("服务名称不匹配!");
+      return
+    }
+    let reg = /^([0]|[1-9][0-9]*)$/;
+    if (
+      !this.state.commodityQuantity ||
+      !reg.test(this.state.commodityQuantity)
+    ) {
+      message.warning("请输入正确商品数量!");
+      return false;
+    }
+    if (this.state.memberType === undefined) {
+      message.warning("请选择付款情况!");
+      return
+    }
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/updateMemberProject",
+      data: {
+        id: this.state.fid, //任务ID
+        commodityId: this.state.commodityId, //项目ID
+        orderNo: this.props.orderNo, //订单编号
+        commodityQuantity: this.state.commodityQuantity, //数量
+        taskComment: this.state.taskComment, //备注
+        memberType: this.state.memberType,//会员付款状态
+      },
+    }).done(
+      function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (!data.error.length) {
+          message.success("保存成功!");
+          this.props.onCancel();
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  }
+
+  httpChange(e) {
+    this.setState({
+      commodityName: e,
+    });
+    if (e.length >= 1) {
+      this.supervisor(e);
+    }
+  }
+
+  //加载(自动补全)
+  supervisor(e) {
+    //服务名称自动补全
+    let api = "/api/admin/order/getBusinessProjectByName";
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + api,
+      data: {
+        businessName: e,
+        cname: "高新会员服务",
+      },
+      success: function (data) {
+        let thedata = data.data;
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          customerArr: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+
+      }.bind(this)
+    );
+  }
+
+  //上级主管输入框失去焦点是判断客户是否存在
+  selectAuto(value) {
+    const { customerArr } = this.state;
+    const newdataSources = JSON.stringify(customerArr) == "{}" ? [] : customerArr;
+    this.setState({
+      commodityName: value,
+      commodityId: newdataSources.find((item) => item.bname == value).id,
+    });
+  }
+
+  render() {
+    let options = this.state.customerArr.map((group, index) => (
+      <Select.Option key={index} value={group.bname}>
+        {group.bname}
+      </Select.Option>
+    ));
+    const { readOnly } = this.props;
+    return (
+      <Modal
+        maskClosable={false}
+        visible={this.props.visible}
+        onOk={this.props.onCancel}
+        onCancel={this.props.onCancel}
+        width="900px"
+        title={readOnly ? "会员详情" : !this.state.fid ? "添加会员项目" : "编辑会员项目"}
+        footer=""
+        className="admin-desc-content"
+      >
+        <Form
+          layout="horizontal"
+        >
+          <Spin spinning={this.state.loading}>
+            <div className="clearfix">
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="服务名称"
+              >
+                {readOnly ? this.state.commodityName :
+                  <AutoComplete
+                    className="certain-category-search"
+                    dropdownClassName="certain-category-search-dropdown"
+                    dropdownMatchSelectWidth={false}
+                    style={{ width: "200px" }}
+                    dataSource={options}
+                    placeholder="输入服务名称"
+                    value={this.state.commodityName}
+                    onChange={this.httpChange}
+                    filterOption={true}
+                    onSelect={this.selectAuto}
+                  >
+                    <Input />
+                  </AutoComplete>}
+                <span className="mandatory">*</span>
+              </FormItem>
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="服务数量"
+              >
+                {readOnly ? this.state.commodityQuantity :
+                  <Input
+                    placeholder="请输入服务数量"
+                    value={this.state.commodityQuantity}
+                    style={{ width: "200px" }}
+                    onChange={(e) => {
+                      this.setState({ commodityQuantity: e.target.value });
+                    }}
+                    ref="commodityQuantity"
+                  />}
+                <span className="mandatory">*</span>
+              </FormItem>
+              <div style={{ marginTop: "33px", color: "red", textAlign: "right", position: "relative", top: "-8", left: "0" }}>如会员项目,服务一年,请填写1,服务二年,请填写2,依次类推</div>
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="付款情况"
+              >
+                {readOnly ?
+                  [
+                    { value: "0", key: "已付会员节点全款" },
+                    { value: "1", key: "已付部分期款,需特批" },
+                    { value: "2", key: "未付款,需特批" }][this.state.memberType] :
+                  <Select
+                    placeholder="选择付款情况"
+                    style={{ width: "200px" }}
+                    value={this.state.memberType}
+                    onChange={(e) => {
+                      this.setState({ memberType: e });
+                    }}
+                  >
+                    {[
+                      { value: "0", key: "已付会员节点全款" },
+                      { value: "1", key: "已付部分期款,需特批" },
+                      { value: "2", key: "未付款,需特批" }].map(function (item) {
+                        return (
+                          <Select.Option key={item.value}>
+                            {item.key}
+                          </Select.Option>
+                        );
+                      })}
+                  </Select>}
+                <span className="mandatory">*</span>
+              </FormItem>
+              <div className="clearfix">
+                <FormItem
+                  labelCol={{ span: 4 }}
+                  wrapperCol={{ span: 16 }}
+                  label="项目说明"
+                >
+                  {readOnly ? this.state.taskComment :
+                    <Input
+                      type="textarea"
+                      placeholder="如:增派2022.6-2023.5,总会员服务为3年,客户未付款,承诺10月份进行补付款"
+                      value={this.state.taskComment}
+                      onChange={(e) => {
+                        this.setState({ taskComment: e.target.value });
+                      }}
+                    />}
+                </FormItem>
+                <div style={{ color: "red", marginLeft: 144 }}>
+                  请详细说明项目服务时间,总服务时间及付款情况,如:<span style={{ color: "#333" }}>增派2022.6-2023.5,总会员服务为3年,客户未付款,承诺10月份进行补付款</span>
+                  <p>未付款时,需进行特批审核,请详细说明预计付款时间等详细情况</p>
+                </div>
+              </div>
+              {readOnly ? null : <FormItem
+                wrapperCol={{ span: 12, offset: 4 }}
+                className="half-middle"
+              >
+                <Button
+                  className="submitSave"
+                  type="primary"
+                  onClick={() => {
+                    if (!this.state.fid) {
+                      this.onSubmit()
+                    } else {
+                      this.onChange()
+                    }
+                  }}
+                >
+                  保存
+                </Button>
+                <Button
+                  className="submitSave"
+                  type="ghost"
+                  onClick={this.props.onCancel}
+                >
+                  取消
+                </Button>
+              </FormItem>}
+            </div>
+          </Spin>
+        </Form>
+      </Modal>
+    )
+  }
+}
+
+export default ProjectOperationVip;

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

@@ -31,6 +31,22 @@ class Content extends Component {
   }
   getKey(key) {
     switch (key) {
+      case "projectvip": //会员项目审核
+        require.ensure([], () => {
+          let Module = require("./distribute/projectvip").default;
+          this.setState({
+            component: <Module />,
+          });
+        });
+        break;
+      case "projectvipall": //会员项目
+        require.ensure([], () => {
+          let Module = require("./distribute/projectvipall").default;
+          this.setState({
+            component: <Module />,
+          });
+        });
+        break;
       case "paiDan": //派单管理
         require.ensure([], () => {
           let Module = require("./distribute/paiDan").default;

+ 835 - 0
js/component/manageCenter/financialManage/distribute/projectvip.jsx

@@ -0,0 +1,835 @@
+import React from "react";
+import $ from "jquery/src/ajax";
+import "./public.less";
+import "./shouKuan.less";
+import { AutoComplete, Button, Input, Spin, Table, Select, message, Tabs, Tag, Tooltip, Modal } from "antd";
+import OrderDesc from "../orderDetail/orderDesc";
+import ResolutionDetail from "@/resolutionDetail";
+import { ChooseList } from "../../order/orderNew/chooseList"
+import ReactToPrint from "react-to-print";
+import OrderItemStatus from "../../../common/orderItemStatus";
+const { TabPane } = Tabs;
+
+const ProjectVip = React.createClass({
+
+  //
+  getInitialState() {
+    return {
+      dvisible: false,
+      pageNo: 1,
+      totalPage: 0,
+      searchValues: {
+        status: "1"
+      },//查询条件
+      loading: false,
+      changeList: undefined,// 子组件改变的表格title数组
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.setState({
+            pageNo: page,
+          });
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      columns: [
+        // {
+        //   title: "销售类型",
+        //   dataIndex: "salesType",
+        //   key: "salesType",
+        //   render: (text, record) => {
+        //     return (
+        //       <Tooltip
+        //         title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
+        //       >
+        //         <span>
+        //           {salesList[text]}
+        //         </span>
+        //       </Tooltip>
+        //     );
+        //   },
+        // },
+        {
+          title: "合同编号",
+          dataIndex: "contractNo",
+          key: "contractNo",
+          width: 160,
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success("复制成功");
+                    }}
+                  >
+                    复制
+                  </Button>
+                }
+              >
+                <div>
+                  {text}
+                  <div style={{ display: "flex" }}>
+                    {/* <OrderItemStatus deleteSign={record.deleteSign} /> */}
+                    {
+                      record.approval == 1
+                        ? <Tag color="#faa755">特批待审</Tag> :
+                        record.approval == 2 && <Tag color="#ff0000">特批通过</Tag>
+                    }
+                  </div>
+                </div>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "客户名称",
+          dataIndex: "userName",
+          key: "userName",
+          width: 200,
+          render: text => {
+            return (
+              <Tooltip title={text}>
+                <div>{text}</div>
+              </Tooltip>
+            )
+          }
+        },
+        {
+          title: "订单编号",
+          dataIndex: "orderNo",
+          key: "orderNo",
+          width: 140,
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success("复制成功");
+                    }}
+                  >
+                    复制
+                  </Button>
+                }
+              >
+                <div>
+                  {text}
+                  <div>
+                    {record.signTotalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
+                    {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
+                  </div>
+                </div>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "订单部门",
+          dataIndex: "depName",
+          key: "depName",
+          className: "title-table",
+        },
+        {
+          title: "订单负责人",
+          dataIndex: "salesmanName",
+          key: "salesmanName",
+          className: "title-table",
+        },
+        {
+          title: "财务负责人",
+          dataIndex: "financeName",
+          key: "financeName",
+          className: "title-table",
+        },
+        {
+          title: "会员项目",
+          dataIndex: "projectName",
+          key: "projectName",
+          className: "title-table",
+        },
+        {
+          title: "项目说明",
+          dataIndex: "projectComment",
+          key: "projectComment",
+          className: "title-table",
+          width: 200,
+        },
+        {
+          title: "状态",
+          dataIndex: "status",
+          key: "status",
+          className: "title-table",
+          render: (text) => {
+            return (
+              <div>
+                {["", "财务审核", "特批审核", "通过", "驳回"][text]}
+              </div>
+            );
+          }
+        },
+        {
+          title: "操作",
+          dataIndex: "caozuo",
+          key: "caouzo",
+          className: "title-table",
+          width: 150,
+          render: (text, recard) => {
+            return (
+              <div>
+                {
+                  recard.status == 1 &&
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation(),
+                        this.checkRemark(recard, 1);
+                    }}
+                  >
+                    通过
+                  </Button>
+                }
+                {
+                  recard.status == 1 &&
+                  <Button
+                    type="danger"
+                    style={{ marginLeft: "5px", }}
+                    onClick={(e) => {
+                      e.stopPropagation(),
+                        this.checkRemark(recard, 0);
+                    }}
+                  >
+                    驳回
+                  </Button>
+                }
+              </div>
+            );
+          },
+        },
+      ],
+      dataSource: [],
+      fjlist: [],// 营销员列表
+      checkOrderNo: "",//操作订单编号
+      checkData: "",//操作描述
+      checkVisible: "",//审核弹窗开关
+      checkId: "",//会员项目编号
+      result: -1,//1同意 0驳回
+    };
+  },
+
+  componentWillMount() {
+    this.loadData();
+    this.departmentList();
+  },
+  // 获取订单部门
+  departmentList() {
+    $.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 () {
+
+      }.bind(this)
+    );
+  },
+  // 列表数据
+  loadData(pageNo, pageSize) {
+    const { searchValues, pagination } = this.state
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchValues, {
+      pageNo: pageNo || 1,
+      pageSize: pageSize || 10,
+      shiroType: 2, //财务审核
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/memberList",
+      data: datas,
+      success: function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+              totalPage: data.data.totalPage,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 点击行
+  tableRowClick(record) {
+    this.state.RowData = record;
+    this.setState({
+      showDesc: true,
+    });
+  },
+  // 关闭
+  closeDesc(e, s) {
+    this.state.showDesc = e;
+    if (s) {
+      this.loadData(this.state.page);
+    }
+  },
+  // 搜索
+  search() {
+    this.setState({
+      selectedRowKeys: []
+    })
+    this.loadData();
+  },
+  // 重置
+  reset() {
+    this.setState({
+      searchValues: JSON.parse(JSON.stringify({})),
+    }, () => {
+      this.loadData();
+    })
+  },
+  // 点击审核
+  checkRemark(record, nmb) {
+    this.setState({
+      checkVisible: true,
+      checkId: record.id,
+      result: nmb
+    });
+  },
+  // 审核
+  toExamine() {
+    if (!this.state.content) {
+      message.warning("请填写审核说明~");
+      return;
+    }
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/examineMemberProject",
+      data: {
+        id: this.state.checkId,
+        remarks: this.state.content,
+        result: this.state.result, //1同意 0驳回
+        type: 0, //0财务审核  1特批审核
+      },
+    }).done(
+      function (data) {
+        if (!data.error.length) {
+          message.success("审核成功!");
+          this.setState({
+            loading: false,
+          });
+          this.loadData()
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  },
+  // 更改表格显示数据
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  },
+  // 导出当前列表
+  exportAll() {
+    message.config({
+      duration: 20,
+    });
+    let loading = message.loading("下载中...");
+    this.setState({
+      exportPendingLoading: true,
+    });
+    let data = {
+      shiroType: 2, //财务审核
+    };
+    let obj1 = JSON.parse(JSON.stringify(this.state.searchValues));
+    data = Object.assign(data, obj1);
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: "/api/admin/orderProject/memberList/export",
+      data,
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.download(data.data);
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        loading();
+        this.setState({
+          exportPendingLoading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 打印
+  printAll() {
+    this.setState({
+      dvisible: true,
+    });
+    this.loadData(1, 9999999);
+  },
+  // 下载
+  download(fileName) {
+    window.location.href =
+      globalConfig.context + "/open/download?fileName=" + fileName;
+  },
+  // 查询订单负责人列表
+  followUp(e) {
+    const { searchValues } = this.state;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        aname: e,
+      }),
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+      },
+      success: function (data) {
+        let thedata = data.data;
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          fjlist: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 选中订单负责人
+  selectF(value) {
+    const { searchValues, fjlist } = this.state;
+    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        salesmanId: newdataSources.find((item) => item.name == value).id,
+      }),
+    });
+  },
+  // 失去焦点
+  blurChange(e) {
+    let theType = "";
+    let contactLists = this.state.customerArr || [];
+    if (e) {
+      contactLists.map(function (item) {
+        if (item.name == e.toString()) {
+          theType = item.id;
+        }
+      });
+    }
+    this.setState({
+      theTypes: theType,
+    });
+  },
+  // 删除数组最后一项(删除操作列)
+  truncate(arr) {
+    return arr.filter(function (v, i, ar) {
+      return i !== ar.length - 1
+    })
+  },
+
+  render() {
+    const { TextArea } = Input
+    const { searchValues, departmentArr = [] } = this.state
+    const dataSources = this.state.fjlist || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    return (
+      <div className="user-content">
+        <div className="content-title" style={{ marginBottom: 10 }}>
+          <span style={{ fontWeight: 900, fontSize: 16 }}>会员项目审核</span>
+        </div>
+        <Tabs defaultActiveKey="2" onChange={this.callback} className="test">
+          <TabPane tab="更改表格显示数据" key="1">
+            <div style={{ marginLeft: 10 }}>
+              <ChooseList
+                columns={this.state.columns}
+                changeFn={this.changeList}
+                changeList={this.state.changeList}
+                top={55}
+                margin={11}
+              />
+            </div>
+          </TabPane>
+          <TabPane tab="搜索" key="2">
+            <div className="user-search" style={{ marginLeft: 10 }}>
+              <Input
+                placeholder="订单编号"
+                value={searchValues["orderNo"]
+                  ? searchValues["orderNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["orderNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Input
+                placeholder="客户名称"
+                value={searchValues["userName"]
+                  ? searchValues["userName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["userName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                placeholder="订单部门"
+                style={{ width: 190, marginRight: 10 }}
+                value={searchValues["depId"]
+                  ? searchValues["depId"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["depId"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                {departmentArr.map(function (item) {
+                  return (
+                    <Select.Option key={item.id}>{item.name}</Select.Option>
+                  );
+                })}
+              </Select>
+              <Input
+                placeholder="合同编号"
+                value={searchValues["contractNo"]
+                  ? searchValues["contractNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["contractNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <AutoComplete
+                className="certain-category-search"
+                dropdownClassName="certain-category-search-dropdown"
+                dropdownMatchSelectWidth={false}
+                style={{ width: "120px" }}
+                dataSource={options}
+                placeholder="订单负责人"
+                value={searchValues.aname || undefined}
+                onChange={this.followUp.bind(this)}
+                filterOption={true}
+                onSelect={this.selectF.bind(this)}
+              >
+                <Input />
+              </AutoComplete>
+              <Input
+                placeholder="项目名称"
+                value={searchValues["projectName"]
+                  ? searchValues["projectName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["projectName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                style={{ width: 120 }}
+                placeholder="签单金额"
+                value={searchValues["amountStatus"]
+                  ? searchValues["amountStatus"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["amountStatus"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">10万元以下</Option>
+                <Option value="1">10~20万元</Option>
+                <Option value="2">20~30万元</Option>
+                <Option value="3">30~40万元</Option>
+                <Option value="4">40万元以上</Option>
+              </Select>
+              <Select
+                style={{ width: 120 }}
+                placeholder="特批状态"
+                value={searchValues["approval"]
+                  ? searchValues["approval"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["approval"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">非特批</Option>
+                <Option value="1">特批待审</Option>
+                <Option value="2">特批通过</Option>
+                <Option value="4">全部特批</Option>
+              </Select>
+              <Select
+                style={{ width: 120 }}
+                placeholder="审核状态"
+                value={searchValues["status"]
+                  ? searchValues["status"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["status"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="1">财务审核</Option>
+                <Option value="2">特批审核</Option>
+                <Option value="3">通过</Option>
+                <Option value="4">全部</Option>
+              </Select>
+              <Button
+                type="primary"
+                onClick={this.search}
+                style={{ marginLeft: 10 }}
+                disabled={this.state.loading ? true : false}
+              >
+                搜索
+              </Button>
+              <Button onClick={this.reset}>重置</Button>
+            </div>
+          </TabPane>
+          <TabPane tab="打印" key="3">
+            <Button
+              type="primary"
+              style={{ margin: "11px 0px 10px 10px" }}
+              onClick={this.printAll}
+            >
+              打印当前列表
+            </Button>
+          </TabPane>
+          <TabPane tab="导出Excel" key="4">
+            <Button
+              type="primary"
+              style={{ margin: "11px 0px 10px 10px" }}
+              onClick={this.exportAll}
+            >
+              导出当前列表
+            </Button>
+          </TabPane>
+        </Tabs>
+        <div className="patent-table">
+          <Spin spinning={this.state.loading}>
+            <Table
+              bordered
+              columns={
+                this.state.changeList == undefined
+                  ? this.state.columns
+                  : this.state.changeList
+              }
+              dataSource={this.state.dataSource}
+              pagination={this.state.pagination}
+              onRowDoubleClick={this.tableRowClick.bind(this)}
+              size="small"
+            />
+          </Spin>
+        </div>
+        {/* 订单详情 */}
+        <OrderDesc
+          data={this.state.RowData}
+          showDesc={this.state.showDesc}
+          closeDesc={this.closeDesc.bind(this)}
+        />
+        {
+          //打印预览
+          this.state.dvisible &&
+          <Modal
+            visible={this.state.dvisible}
+            footer=""
+            title="所有列表信息"
+            className="admin-desc-content"
+            width="1300px"
+            onCancel={() => {
+              this.loadData();
+              this.setState({
+                dvisible: false,
+              });
+            }}
+          >
+            <Spin spinning={this.state.loading}>
+              <div
+                className="patent-table"
+                style={{
+                  padding: "25px 0 30px 30px",
+                }}
+                ref={(e) => {
+                  this.refs.all = e;
+                }}
+              >
+                <Table
+                  columns={this.truncate(this.state.columns)}
+                  dataSource={this.state.dataSource}
+                  pagination={false}
+                  bordered
+                  size="small"
+                />
+              </div>
+            </Spin>
+
+            <ReactToPrint
+              trigger={() => (
+                <Button
+                  type="primary"
+                  style={{
+                    float: "right",
+                    marginTop: 10,
+                    position: "absolute",
+                    top: 0,
+                    right: 30,
+                  }}
+                >
+                  打印
+                </Button>
+              )}
+              content={() => this.refs.all}
+            />
+          </Modal>
+        }
+        {
+          //审核弹窗
+          this.state.checkVisible &&
+          <Modal
+            maskClosable={false}
+            title="审核订单"
+            confirmLoading={this.state.loading}
+            visible={this.state.checkVisible}
+            onOk={this.toExamine}
+            okText={this.state.result == 1 ? "通过" : this.state.result == 0 && "驳回"}
+            onCancel={() => {
+              this.loadData()
+              this.setState({
+                checkVisible: false,
+                checkData: '',
+              })
+            }}
+          >
+            <TextArea
+              value={this.state.checkData}
+              onChange={(e) => {
+                this.setState({
+                  checkData: e.target.value,
+                })
+              }}
+              placeholder="请填写审核内容"
+            />
+          </Modal>
+        }
+      </div>
+    );
+  },
+});
+
+export default ProjectVip;

+ 835 - 0
js/component/manageCenter/financialManage/distribute/projectvipall.jsx

@@ -0,0 +1,835 @@
+import React from "react";
+import $ from "jquery/src/ajax";
+import "./public.less";
+import "./shouKuan.less";
+import { AutoComplete, Button, Input, Spin, Table, Select, message, Tabs, Tag, Tooltip, Modal } from "antd";
+import OrderDesc from "../orderDetail/orderDesc";
+import ResolutionDetail from "@/resolutionDetail";
+import { ChooseList } from "../../order/orderNew/chooseList"
+import ReactToPrint from "react-to-print";
+import OrderItemStatus from "../../../common/orderItemStatus";
+const { TabPane } = Tabs;
+
+const ProjectVipAll = React.createClass({
+
+  //
+  getInitialState() {
+    return {
+      dvisible: false,
+      pageNo: 1,
+      totalPage: 0,
+      searchValues: {
+        status: "4"
+      },//查询条件
+      loading: false,
+      changeList: undefined,// 子组件改变的表格title数组
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.setState({
+            pageNo: page,
+          });
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      columns: [
+        // {
+        //   title: "销售类型",
+        //   dataIndex: "salesType",
+        //   key: "salesType",
+        //   render: (text, record) => {
+        //     return (
+        //       <Tooltip
+        //         title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
+        //       >
+        //         <span>
+        //           {salesList[text]}
+        //         </span>
+        //       </Tooltip>
+        //     );
+        //   },
+        // },
+        {
+          title: "合同编号",
+          dataIndex: "contractNo",
+          key: "contractNo",
+          width: 160,
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success("复制成功");
+                    }}
+                  >
+                    复制
+                  </Button>
+                }
+              >
+                <div>
+                  {text}
+                  <div style={{ display: "flex" }}>
+                    {/* <OrderItemStatus deleteSign={record.deleteSign} /> */}
+                    {
+                      record.approval == 1
+                        ? <Tag color="#faa755">特批待审</Tag> :
+                        record.approval == 2 && <Tag color="#ff0000">特批通过</Tag>
+                    }
+                  </div>
+                </div>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "客户名称",
+          dataIndex: "userName",
+          key: "userName",
+          width: 200,
+          render: text => {
+            return (
+              <Tooltip title={text}>
+                <div>{text}</div>
+              </Tooltip>
+            )
+          }
+        },
+        {
+          title: "订单编号",
+          dataIndex: "orderNo",
+          key: "orderNo",
+          width: 140,
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success("复制成功");
+                    }}
+                  >
+                    复制
+                  </Button>
+                }
+              >
+                <div>
+                  {text}
+                  <div>
+                    {record.signTotalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
+                    {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
+                  </div>
+                </div>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "订单部门",
+          dataIndex: "depName",
+          key: "depName",
+          className: "title-table",
+        },
+        {
+          title: "订单负责人",
+          dataIndex: "salesmanName",
+          key: "salesmanName",
+          className: "title-table",
+        },
+        {
+          title: "财务负责人",
+          dataIndex: "financeName",
+          key: "financeName",
+          className: "title-table",
+        },
+        {
+          title: "会员项目",
+          dataIndex: "projectName",
+          key: "projectName",
+          className: "title-table",
+        },
+        {
+          title: "项目说明",
+          dataIndex: "projectComment",
+          key: "projectComment",
+          className: "title-table",
+          width: 200,
+        },
+        {
+          title: "状态",
+          dataIndex: "status",
+          key: "status",
+          className: "title-table",
+          render: (text) => {
+            return (
+              <div>
+                {["", "财务审核", "特批审核", "通过", "驳回"][text]}
+              </div>
+            );
+          }
+        },
+        // {
+        //   title: "操作",
+        //   dataIndex: "caozuo",
+        //   key: "caouzo",
+        //   className: "title-table",
+        //   width: 150,
+        //   render: (text, recard) => {
+        //     return (
+        //       <div>
+        //         {
+        //           recard.status == 1 &&
+        //           <Button
+        //             type="primary"
+        //             onClick={(e) => {
+        //               e.stopPropagation(),
+        //                 this.checkRemark(recard, 1);
+        //             }}
+        //           >
+        //             通过
+        //           </Button>
+        //         }
+        //         {
+        //           recard.status == 1 &&
+        //           <Button
+        //             type="danger"
+        //             style={{ marginLeft: "5px", }}
+        //             onClick={(e) => {
+        //               e.stopPropagation(),
+        //                 this.checkRemark(recard, 0);
+        //             }}
+        //           >
+        //             驳回
+        //           </Button>
+        //         }
+        //       </div>
+        //     );
+        //   },
+        // },
+      ],
+      dataSource: [],
+      fjlist: [],// 营销员列表
+      checkOrderNo: "",//操作订单编号
+      checkData: "",//操作描述
+      checkVisible: "",//审核弹窗开关
+      checkId: "",//会员项目编号
+      result: -1,//1同意 0驳回
+    };
+  },
+
+  componentWillMount() {
+    this.loadData();
+    this.departmentList();
+  },
+  // 获取订单部门
+  departmentList() {
+    $.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 () {
+
+      }.bind(this)
+    );
+  },
+  // 列表数据
+  loadData(pageNo, pageSize) {
+    const { searchValues, pagination } = this.state
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchValues, {
+      pageNo: pageNo || 1,
+      pageSize: pageSize || 10,
+      shiroType: 0, //所有
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/memberList",
+      data: datas,
+      success: function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+              totalPage: data.data.totalPage,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 点击行
+  tableRowClick(record) {
+    this.state.RowData = record;
+    this.setState({
+      showDesc: true,
+    });
+  },
+  // 关闭
+  closeDesc(e, s) {
+    this.state.showDesc = e;
+    if (s) {
+      this.loadData(this.state.page);
+    }
+  },
+  // 搜索
+  search() {
+    this.setState({
+      selectedRowKeys: []
+    })
+    this.loadData();
+  },
+  // 重置
+  reset() {
+    this.setState({
+      searchValues: JSON.parse(JSON.stringify({})),
+    }, () => {
+      this.loadData();
+    })
+  },
+  // 点击审核
+  checkRemark(record, nmb) {
+    this.setState({
+      checkVisible: true,
+      checkId: record.id,
+      result: nmb
+    });
+  },
+  // 审核
+  toExamine() {
+    if (!this.state.content) {
+      message.warning("请填写审核说明~");
+      return;
+    }
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/examineMemberProject",
+      data: {
+        id: this.state.checkId,
+        remarks: this.state.content,
+        result: this.state.result, //1同意 0驳回
+        type: 0, //0财务审核  1特批审核
+      },
+    }).done(
+      function (data) {
+        if (!data.error.length) {
+          message.success("审核成功!");
+          this.setState({
+            loading: false,
+          });
+          this.loadData()
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  },
+  // 更改表格显示数据
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  },
+  // 导出当前列表
+  exportAll() {
+    message.config({
+      duration: 20,
+    });
+    let loading = message.loading("下载中...");
+    this.setState({
+      exportPendingLoading: true,
+    });
+    let data = {
+      shiroType: 0, //所有
+    };
+    let obj1 = JSON.parse(JSON.stringify(this.state.searchValues));
+    data = Object.assign(data, obj1);
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: "/api/admin/orderProject/memberList/export",
+      data,
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.download(data.data);
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        loading();
+        this.setState({
+          exportPendingLoading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 打印
+  printAll() {
+    this.setState({
+      dvisible: true,
+    });
+    this.loadData(1, 9999999);
+  },
+  // 下载
+  download(fileName) {
+    window.location.href =
+      globalConfig.context + "/open/download?fileName=" + fileName;
+  },
+  // 查询订单负责人列表
+  followUp(e) {
+    const { searchValues } = this.state;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        aname: e,
+      }),
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+      },
+      success: function (data) {
+        let thedata = data.data;
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          fjlist: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 选中订单负责人
+  selectF(value) {
+    const { searchValues, fjlist } = this.state;
+    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        salesmanId: newdataSources.find((item) => item.name == value).id,
+      }),
+    });
+  },
+  // 失去焦点
+  blurChange(e) {
+    let theType = "";
+    let contactLists = this.state.customerArr || [];
+    if (e) {
+      contactLists.map(function (item) {
+        if (item.name == e.toString()) {
+          theType = item.id;
+        }
+      });
+    }
+    this.setState({
+      theTypes: theType,
+    });
+  },
+  // 删除数组最后一项(删除操作列)
+  truncate(arr) {
+    return arr.filter(function (v, i, ar) {
+      return i !== ar.length - 1
+    })
+  },
+
+  render() {
+    const { TextArea } = Input
+    const { searchValues, departmentArr = [] } = this.state
+    const dataSources = this.state.fjlist || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    return (
+      <div className="user-content">
+        <div className="content-title" style={{ marginBottom: 10 }}>
+          <span style={{ fontWeight: 900, fontSize: 16 }}>会员项目(all)</span>
+        </div>
+        <Tabs defaultActiveKey="2" onChange={this.callback} className="test">
+          <TabPane tab="更改表格显示数据" key="1">
+            <div style={{ marginLeft: 10 }}>
+              <ChooseList
+                columns={this.state.columns}
+                changeFn={this.changeList}
+                changeList={this.state.changeList}
+                top={55}
+                margin={11}
+              />
+            </div>
+          </TabPane>
+          <TabPane tab="搜索" key="2">
+            <div className="user-search" style={{ marginLeft: 10 }}>
+              <Input
+                placeholder="订单编号"
+                value={searchValues["orderNo"]
+                  ? searchValues["orderNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["orderNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Input
+                placeholder="客户名称"
+                value={searchValues["userName"]
+                  ? searchValues["userName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["userName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                placeholder="订单部门"
+                style={{ width: 190, marginRight: 10 }}
+                value={searchValues["depId"]
+                  ? searchValues["depId"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["depId"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                {departmentArr.map(function (item) {
+                  return (
+                    <Select.Option key={item.id}>{item.name}</Select.Option>
+                  );
+                })}
+              </Select>
+              <Input
+                placeholder="合同编号"
+                value={searchValues["contractNo"]
+                  ? searchValues["contractNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["contractNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <AutoComplete
+                className="certain-category-search"
+                dropdownClassName="certain-category-search-dropdown"
+                dropdownMatchSelectWidth={false}
+                style={{ width: "120px" }}
+                dataSource={options}
+                placeholder="订单负责人"
+                value={searchValues.aname || undefined}
+                onChange={this.followUp.bind(this)}
+                filterOption={true}
+                onSelect={this.selectF.bind(this)}
+              >
+                <Input />
+              </AutoComplete>
+              <Input
+                placeholder="项目名称"
+                value={searchValues["projectName"]
+                  ? searchValues["projectName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["projectName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                style={{ width: 120 }}
+                placeholder="签单金额"
+                value={searchValues["amountStatus"]
+                  ? searchValues["amountStatus"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["amountStatus"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">10万元以下</Option>
+                <Option value="1">10~20万元</Option>
+                <Option value="2">20~30万元</Option>
+                <Option value="3">30~40万元</Option>
+                <Option value="4">40万元以上</Option>
+              </Select>
+              <Select
+                style={{ width: 120 }}
+                placeholder="特批状态"
+                value={searchValues["approval"]
+                  ? searchValues["approval"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["approval"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">非特批</Option>
+                <Option value="1">特批待审</Option>
+                <Option value="2">特批通过</Option>
+                <Option value="4">全部特批</Option>
+              </Select>
+              <Select
+                style={{ width: 120 }}
+                placeholder="审核状态"
+                value={searchValues["status"]
+                  ? searchValues["status"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["status"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="1">财务审核</Option>
+                <Option value="2">特批审核</Option>
+                <Option value="3">通过</Option>
+                <Option value="4">全部</Option>
+              </Select>
+              <Button
+                type="primary"
+                onClick={this.search}
+                style={{ marginLeft: 10 }}
+                disabled={this.state.loading ? true : false}
+              >
+                搜索
+              </Button>
+              <Button onClick={this.reset}>重置</Button>
+            </div>
+          </TabPane>
+          <TabPane tab="打印" key="3">
+            <Button
+              type="primary"
+              style={{ margin: "11px 0px 10px 10px" }}
+              onClick={this.printAll}
+            >
+              打印当前列表
+            </Button>
+          </TabPane>
+          <TabPane tab="导出Excel" key="4">
+            <Button
+              type="primary"
+              style={{ margin: "11px 0px 10px 10px" }}
+              onClick={this.exportAll}
+            >
+              导出当前列表
+            </Button>
+          </TabPane>
+        </Tabs>
+        <div className="patent-table">
+          <Spin spinning={this.state.loading}>
+            <Table
+              bordered
+              columns={
+                this.state.changeList == undefined
+                  ? this.state.columns
+                  : this.state.changeList
+              }
+              dataSource={this.state.dataSource}
+              pagination={this.state.pagination}
+              onRowDoubleClick={this.tableRowClick.bind(this)}
+              size="small"
+            />
+          </Spin>
+        </div>
+        {/* 订单详情 */}
+        <OrderDesc
+          data={this.state.RowData}
+          showDesc={this.state.showDesc}
+          closeDesc={this.closeDesc.bind(this)}
+        />
+        {
+          //打印预览
+          this.state.dvisible &&
+          <Modal
+            visible={this.state.dvisible}
+            footer=""
+            title="所有列表信息"
+            className="admin-desc-content"
+            width="1300px"
+            onCancel={() => {
+              this.loadData();
+              this.setState({
+                dvisible: false,
+              });
+            }}
+          >
+            <Spin spinning={this.state.loading}>
+              <div
+                className="patent-table"
+                style={{
+                  padding: "25px 0 30px 30px",
+                }}
+                ref={(e) => {
+                  this.refs.all = e;
+                }}
+              >
+                <Table
+                  columns={this.truncate(this.state.columns)}
+                  dataSource={this.state.dataSource}
+                  pagination={false}
+                  bordered
+                  size="small"
+                />
+              </div>
+            </Spin>
+
+            <ReactToPrint
+              trigger={() => (
+                <Button
+                  type="primary"
+                  style={{
+                    float: "right",
+                    marginTop: 10,
+                    position: "absolute",
+                    top: 0,
+                    right: 30,
+                  }}
+                >
+                  打印
+                </Button>
+              )}
+              content={() => this.refs.all}
+            />
+          </Modal>
+        }
+        {
+          //审核弹窗
+          this.state.checkVisible &&
+          <Modal
+            maskClosable={false}
+            title="审核订单"
+            confirmLoading={this.state.loading}
+            visible={this.state.checkVisible}
+            onOk={this.toExamine}
+            okText={this.state.result == 1 ? "通过" : this.state.result == 0 && "驳回"}
+            onCancel={() => {
+              this.loadData()
+              this.setState({
+                checkVisible: false,
+                checkData: '',
+              })
+            }}
+          >
+            <TextArea
+              value={this.state.checkData}
+              onChange={(e) => {
+                this.setState({
+                  checkData: e.target.value,
+                })
+              }}
+              placeholder="请填写审核内容"
+            />
+          </Modal>
+        }
+      </div>
+    );
+  },
+});
+
+export default ProjectVipAll;

+ 289 - 286
js/component/manageCenter/index/content.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Spin, Button, Tabs, Table, message, Modal,Tooltip } from 'antd';
+import { Spin, Button, Tabs, Table, message, Modal, Tooltip } from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 
@@ -14,13 +14,13 @@ const TabPane = Tabs.TabPane;
 const MessageModal = React.createClass({
     getInitialState() {
         return {
-            unreadData:[],
-            unreadDataType:'0',
-            dataSourceType:'1',
-            unreadDataIndex:0,
+            unreadData: [],
+            unreadDataType: '0',
+            dataSourceType: '1',
+            unreadDataIndex: 0,
             newVisible: false,
             loading: false,
-            categoryArr:[],
+            categoryArr: [],
             pagination: {
                 defaultCurrent: 1,
                 defaultPageSize: 10,
@@ -60,9 +60,9 @@ const MessageModal = React.createClass({
                     title: '内容',
                     dataIndex: 'content',
                     key: 'content',
-                    width:1189,
+                    width: 1189,
                     render: (text, record) => {
-                        return(
+                        return (
                             <Tooltip placement="topLeft" title={text}>
                                 <div style={{
                                     width: 1189,
@@ -80,16 +80,16 @@ const MessageModal = React.createClass({
                     title: "操作",
                     dataIndex: "abc",
                     key: "abc",
-                    width:150,
+                    width: 150,
                     render: (text, record) => {
                         let contractNo = '';
-                        if((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1){
+                        if ((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1) {
                             let arr = record.content.split('合同编号-');
                             contractNo = arr[1].match(/(\S*), 订单编号/)[1];
                         }
                         return (
                             record.noticeType === 48 || record.noticeType === 49 ?
-                                <Button type="primary" onClick={()=>{
+                                <Button type="primary" onClick={() => {
                                     this.category();
                                     record.id = record.uid;
                                     this.setState({
@@ -98,7 +98,7 @@ const MessageModal = React.createClass({
                                     });
                                 }}>立即跟进</Button> :
                                 record.noticeType === 14 || record.noticeType === 40 ?
-                                    <Button disabled={!contractNo} type="primary" onClick={(e)=>{
+                                    <Button disabled={!contractNo} type="primary" onClick={(e) => {
                                         e.stopPropagation();
                                         let input = document.getElementById("copyText1");
                                         input.value = contractNo;
@@ -107,7 +107,7 @@ const MessageModal = React.createClass({
                                         message.success('复制成功')
                                     }}>
                                         复制合同号
-                                    </Button> :  null
+                                    </Button> : null
                         )
                     }
                 }
@@ -136,9 +136,9 @@ const MessageModal = React.createClass({
                     title: '内容',
                     dataIndex: 'content',
                     key: 'content',
-                    width:610,
+                    width: 610,
                     render: (text, record) => {
-                        return(
+                        return (
                             <Tooltip placement="topLeft" title={text}>
                                 <div style={{
                                     width: 610,
@@ -156,16 +156,16 @@ const MessageModal = React.createClass({
                     title: "操作",
                     dataIndex: "abc",
                     key: "abc",
-                    width:150,
+                    width: 150,
                     render: (text, record) => {
                         let contractNo = '';
-                        if((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1){
+                        if ((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1) {
                             let arr = record.content.split('合同编号-');
                             contractNo = arr[1].match(/(\S*), 订单编号/)[1];
                         }
                         return (
                             record.noticeType === 48 || record.noticeType === 49 ?
-                                <Button type="primary" onClick={()=>{
+                                <Button type="primary" onClick={() => {
                                     this.category();
                                     record.id = record.uid;
                                     this.setState({
@@ -174,7 +174,7 @@ const MessageModal = React.createClass({
                                     });
                                 }}>立即跟进</Button> :
                                 record.noticeType === 14 || record.noticeType === 40 ?
-                                    <Button disabled={!contractNo} type="primary" onClick={(e)=>{
+                                    <Button disabled={!contractNo} type="primary" onClick={(e) => {
                                         e.stopPropagation();
                                         let input = document.getElementById("copyText1");
                                         input.value = contractNo;
@@ -183,7 +183,7 @@ const MessageModal = React.createClass({
                                         message.success('复制成功')
                                     }}>
                                         复制合同号
-                                    </Button> :  null
+                                    </Button> : null
                         )
                     }
                 }
@@ -200,12 +200,12 @@ const MessageModal = React.createClass({
             data: []
         };
     },
-    closeDesc(){
+    closeDesc() {
         this.setState({
-            categoryArr:[],
-            followData:'',
-            visitModul:false
-        },()=>{
+            categoryArr: [],
+            followData: '',
+            visitModul: false
+        }, () => {
             this.loadReaded(this.state.pagination.current);
         })
     },
@@ -239,166 +239,166 @@ const MessageModal = React.createClass({
         });
     },
     //主菜单请求
-    mainMenu(){
-    	this.setState({
-    		loading:true
-    	});
-    	$.ajax({
-    		method: "get",
+    mainMenu() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
             dataType: "json",
             crossDomain: false,
             url: globalConfig.context + "/api/admin/selectNavList",
             data: {
 
             },
-            success:function(data){
-            	if (!data.data) {
-	                if (data.error && data.error.length) {
-	                    message.warning(data.error[0].message);
-	                    return;
-	                };
-	            };
-	           this.setState({
-	           		menu:data.data
-	           });
+            success: function (data) {
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                        return;
+                    };
+                };
+                this.setState({
+                    menu: data.data
+                });
             }.bind(this),
-    	}).always(function(data){
-    		this.setState({
-    			loading:false
-    		})
-    	}.bind(this))
+        }).always(function (data) {
+            this.setState({
+                loading: false
+            })
+        }.bind(this))
     },
-    finId(text){
-    	var data=this.state.menu||[];
-    	var rid='';
-	  	switch(text) {
-			case 1:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('demand') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			case 2:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('demand') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			case 3:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('achievement') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			case 4:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('achievement') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			case 5:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('order') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			case 6:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('order') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			case 7:
-				data.map(function(nub, index) {
-					if(nub.url.indexOf('servicesManage') != -1) {
-						rid = nub.id;
-					}
-				});
-				break;
-			default:
-				rid='';
-		}
-    	return rid;
+    finId(text) {
+        var data = this.state.menu || [];
+        var rid = '';
+        switch (text) {
+            case 1:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('demand') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            case 2:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('demand') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            case 3:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('achievement') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            case 4:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('achievement') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            case 5:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('order') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            case 6:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('order') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            case 7:
+                data.map(function (nub, index) {
+                    if (nub.url.indexOf('servicesManage') != -1) {
+                        rid = nub.id;
+                    }
+                });
+                break;
+            default:
+                rid = '';
+        }
+        return rid;
     },
     //跳转详情
-    setStore(record){
-    	localStorage.setItem('newData',{});
-    	let ids = record.noticeType;
-    	let rid = this.finId(ids) || "";
-    	var urls='',
-    	    dataJson={};
-    	switch (ids) {
+    setStore(record) {
+        localStorage.setItem('newData', {});
+        let ids = record.noticeType;
+        let rid = this.finId(ids) || "";
+        var urls = '',
+            dataJson = {};
+        switch (ids) {
             case 1:
-                urls = "/admin/demand.html?rid=" + rid +"#techDemandAudit";
+                urls = "/admin/demand.html?rid=" + rid + "#techDemandAudit";
                 dataJson = {
-                	"id":record.uid,
-                	//"id":"3f93588b-332e-4353-bbfd-f1451b4b390c",
-                	"dataCategory":"0"
+                    "id": record.uid,
+                    //"id":"3f93588b-332e-4353-bbfd-f1451b4b390c",
+                    "dataCategory": "0"
                 };
                 break;
             case 2:
-                urls = "/admin/demand.html?rid=" + rid+ "#techDemandPublish";
+                urls = "/admin/demand.html?rid=" + rid + "#techDemandPublish";
                 dataJson = {
-                	"id":record.uid,
-                	//"id":"40f77e32-29fa-4a85-a6f0-7c4986bdc5e3",
-                	"dataCategory":'1'
+                    "id": record.uid,
+                    //"id":"40f77e32-29fa-4a85-a6f0-7c4986bdc5e3",
+                    "dataCategory": '1'
                 };
-                break ;
+                break;
             case 3:
-                urls =  "/admin/achievement.html?rid=" + rid +"#techAchievementAudit";
-           		dataJson = {
-           			"id":record.uid,
-           			//"id":"f09d5c08-4a8b-48a6-9753-86006f1a53cb",
-           			"ownerType":'1'
-           		};
-           		break ;
+                urls = "/admin/achievement.html?rid=" + rid + "#techAchievementAudit";
+                dataJson = {
+                    "id": record.uid,
+                    //"id":"f09d5c08-4a8b-48a6-9753-86006f1a53cb",
+                    "ownerType": '1'
+                };
+                break;
             case 4:
                 urls = "/admin/achievement.html?rid=" + rid + "#techAchievementPublish";
                 dataJson = {
-           			"id":record.uid,
-           			//"id":"953c9ef7-6cf6-4ab7-af89-c01521998fed",
-                	"ownerType":'1'
-           		};
-           		break ;
+                    "id": record.uid,
+                    //"id":"953c9ef7-6cf6-4ab7-af89-c01521998fed",
+                    "ownerType": '1'
+                };
+                break;
             case 5:
                 urls = "/admin/order.html?rid=" + rid + "#myService";
-            	dataJson = {
-            		"orderNo":record.orderNo
-           			//"orderNo":"175557414077480960"
-           		};
-           		break ;
+                dataJson = {
+                    "orderNo": record.orderNo
+                    //"orderNo":"175557414077480960"
+                };
+                break;
             case 6:
                 urls = "/admin/order.html?rid=" + rid + "#mySettlement";
-            	dataJson = {
-           			"orderNo":record.orderNo
-           			//"orderNo":"180714111314051072"
-           		};
-           		break ;
+                dataJson = {
+                    "orderNo": record.orderNo
+                    //"orderNo":"180714111314051072"
+                };
+                break;
             case 7:
                 urls = "/admin/servicesManage/projectOrder.html?rid=" + rid + "#projectManage";
-           		dataJson = {
-           			//"id":record.id,
-           			"id":"69e2d8ca984240a4b9c90daac69fe5e3",
-           			"buyerType":"1"
-           		};
-           		break ;
-           	default :
-           	    urls:'#';
-           	    dataJson = {};
-          };
-          console.log(rid);
-          if(rid){
-	    	  var data = dataJson;
-	    	  var newData = JSON.stringify(data);
-	    	  localStorage.setItem('newData',newData);
-	    	  window.location.href = globalConfig.context +urls;
-          }
+                dataJson = {
+                    //"id":record.id,
+                    "id": "69e2d8ca984240a4b9c90daac69fe5e3",
+                    "buyerType": "1"
+                };
+                break;
+            default:
+                urls: '#';
+                dataJson = {};
+        };
+        console.log(rid);
+        if (rid) {
+            var data = dataJson;
+            var newData = JSON.stringify(data);
+            localStorage.setItem('newData', newData);
+            window.location.href = globalConfig.context + urls;
+        }
     },
     loadReaded(pageNo) {
         this.state.data = [];
@@ -413,7 +413,7 @@ const MessageModal = React.createClass({
             data: {
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
-                type:this.state.unreadDataType,
+                type: this.state.unreadDataType,
             }
         }).done((data) => {
             if (!data.data) {
@@ -470,24 +470,24 @@ const MessageModal = React.createClass({
             if (data.error && data.error.length) {
                 message.warning(data.error[0].message);
                 return;
-            }else{
-                let arr = data.data.filter(v=>v.list.length > 0)
-                if(arr.length) {
+            } else {
+                let arr = data.data.filter(v => v.list.length > 0)
+                if (arr.length) {
                     this.setState({
                         newVisible: true
                     });
                 }
-                let index = data.data.findIndex(v=>v.list.length > 0);
-                if(index >= 0){
+                let index = data.data.findIndex(v => v.list.length > 0);
+                if (index >= 0) {
                     data.data[index].isRead = true;
                     this.setState({
-                        unreadDataType: index ? data.data[index]['id']+'' : '0',
-                        unreadDataIndex:index,
+                        unreadDataType: data.data[index]['id'] + '',
+                        unreadDataIndex: index,
                     });
-                }else{
+                } else {
                     this.setState({
-                        unreadDataType: data.data[0]['id']+'',
-                        unreadDataIndex:'0',
+                        unreadDataType: data.data[0]['id'] + '',
+                        unreadDataIndex: '0',
                     });
                 }
                 this.setState({
@@ -506,11 +506,11 @@ const MessageModal = React.createClass({
         this.mainMenu();
     },
     handleOk() {
-        let arr = this.state.unreadData.filter(v=>v.list.length > 0 && !v.isRead);
-        if(arr.length > 0){
+        let arr = this.state.unreadData.filter(v => v.list.length > 0 && !v.isRead);
+        if (arr.length > 0) {
             message.warning('还存在未读消息,请查看后再关闭当前页面!');
             return;
-        }else{
+        } else {
             this.loadUnread();
             this.setState({
                 newVisible: false
@@ -519,121 +519,124 @@ const MessageModal = React.createClass({
     },
     render() {
         return (
-          <div className="set-content">
-            <div className="set-title" style={{ marginBottom: 10 }}>
-              <span style={{ fontWeight: 900, fontSize: 16 }}>信息中心</span>
-            </div>
-            <Spin spinning={this.state.loading} className="spin-box">
-              <Tabs defaultActiveKey={this.state.unreadDataType} activeKey={this.state.unreadDataType} onChange={v=>{
-                  let index = this.state.unreadData.findIndex(d=>d.id == v);
-                  this.state.unreadData[index].isRead = true;
-                  this.setState({
-                      unreadDataIndex:index,
-                      unreadData:this.state.unreadData,
-                      unreadDataType:v
-                  },()=>{
-                      if(this.state.dataSourceType === '2'){
-                          this.loadReaded()
-                      }
-                  })
-              }}>
-                  {
-                      this.state.unreadData.map((v)=>(
-                          <Tabs.TabPane
-                              key={v.id+''}
-                              tab={<div>
-                                  {v.list.length === 0 || v.isRead ? null : <div style={{width:'8px',height:"8px",borderRadius:'8px',background:'#f00',position: 'absolute',right: '5px', top: '2px'}}/>}
-                                  {v.name}
-                              </div>
-                              }/>
-                      ))
-                  }
-              </Tabs>
-                <Tabs defaultActiveKey="1" type="card" tabPosition='left' value={this.state.dataSourceType} onChange={(v)=>{
-                    this.setState({
-                        dataSourceType:v
-                    })
-                    if(v === '2'){
-                        this.loadReaded()
-                    }
-                }}>
-                    <Tabs.TabPane tab={'未读'} key="1">
-                        <Table
-                            bordered
-                            columns={this.state.columns}
-                            dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
-                            pagination={false}
-                        />
-                    </Tabs.TabPane>
-                    <Tabs.TabPane tab="已读" key="2">
-                        <Table
-                            bordered
-                            columns={this.state.columns}
-                            dataSource={this.state.dataSource}
-                            pagination={this.state.pagination}
-                        />
-                    </Tabs.TabPane>
-                </Tabs>
-            </Spin>
-            <Modal
-              maskClosable={false}
-              style={{ position: "relative" }}
-              title="消息提醒"
-              visible={this.state.newVisible}
-              width={1400}
-              closable={false}
-              footer={null}
-            >
+            <div className="set-content">
+                <div className="set-title" style={{ marginBottom: 10 }}>
+                    <span style={{ fontWeight: 900, fontSize: 16 }}>信息中心</span>
+                </div>
                 <Spin spinning={this.state.loading} className="spin-box">
-                    <Tabs defaultActiveKey={this.state.unreadDataType} activeKey={this.state.unreadDataType} onChange={v=>{
-                        let index = this.state.unreadData.findIndex(d=>d.id == v);
+                    <Tabs defaultActiveKey={this.state.unreadDataType} activeKey={this.state.unreadDataType} onChange={v => {
+                        let index = this.state.unreadData.findIndex(d => d.id == v);
                         this.state.unreadData[index].isRead = true;
                         this.setState({
-                            unreadDataIndex:index,
-                            unreadData:this.state.unreadData,
-                            unreadDataType:v
+                            unreadDataIndex: index,
+                            unreadData: this.state.unreadData,
+                            unreadDataType: v
+                        }, () => {
+                            if (this.state.dataSourceType === '2') {
+                                this.loadReaded()
+                            }
                         })
                     }}>
                         {
-                            this.state.unreadData.map((v)=>(
+                            this.state.unreadData.map((v) => (
                                 <Tabs.TabPane
-                                    key={v.id+''}
+                                    key={v.id + ''}
                                     tab={<div>
-                                        {v.list.length === 0 || v.isRead ? null : <div style={{width:'8px',height:"8px",borderRadius:'8px',background:'#f00',position: 'absolute',right: '5px', top: '2px'}}/>}
+                                        {v.list.length === 0 || v.isRead ? null : <div style={{ width: '8px', height: "8px", borderRadius: '8px', background: '#f00', position: 'absolute', right: '5px', top: '2px' }} />}
                                         {v.name}
                                     </div>
-                                    }/>
+                                    } />
                             ))
                         }
                     </Tabs>
-                    <Table
-                        columns={this.state.columns1}
-                        dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
-                        pagination={false}
-                        scroll={{ y: 600, x: 1000 }}
-                    />
+                    <Tabs defaultActiveKey="1" type="card" tabPosition='left' value={this.state.dataSourceType} onChange={(v) => {
+                        this.setState({
+                            dataSourceType: v
+                        })
+                        if (v === '2') {
+                            this.loadReaded()
+                        }
+                    }}>
+                        <Tabs.TabPane tab={'未读'} key="1">
+                            <Table
+                                bordered
+                                columns={this.state.columns}
+                                dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
+                                pagination={false}
+                            />
+                        </Tabs.TabPane>
+                        <Tabs.TabPane tab="已读" key="2">
+                            <Table
+                                bordered
+                                columns={this.state.columns}
+                                dataSource={this.state.dataSource}
+                                pagination={this.state.pagination}
+                            />
+                        </Tabs.TabPane>
+                    </Tabs>
                 </Spin>
-              <Button
-                onClick={this.handleOk}
-                type={"primary"}
-                style={{
-                  position: "relative",
-                  left: "50%",
-                  transform: "translateX(-50%)",
-                  bottom: -10
-                }}
-              >
-                我已阅读以上信息
-              </Button>
-            </Modal>
-              <FollowDetail
-                  categoryArr={this.state.categoryArr}
-                  followData={this.state.followData}
-                  visitModul={this.state.visitModul}
-                  closeDesc={this.closeDesc}
-              />
-              <textarea id='copyText1' style={{opacity:0}}/>
-          </div>
+                <Modal
+                    maskClosable={false}
+                    style={{ position: "relative" }}
+                    title="消息提醒"
+                    visible={this.state.newVisible}
+                    width={1400}
+                    closable={false}
+                    footer={null}
+                >
+                    <Spin spinning={this.state.loading} className="spin-box">
+                        <Tabs
+                            defaultActiveKey={this.state.unreadDataType}
+                            activeKey={this.state.unreadDataType}
+                            onChange={v => {
+                                let index = this.state.unreadData.findIndex(d => d.id == v);
+                                this.state.unreadData[index].isRead = true;
+                                this.setState({
+                                    unreadDataIndex: index,
+                                    unreadData: this.state.unreadData,
+                                    unreadDataType: v
+                                })
+                            }}>
+                            {
+                                this.state.unreadData.map((v) => (
+                                    <Tabs.TabPane
+                                        key={v.id + ''}
+                                        tab={<div>
+                                            {v.list.length === 0 || v.isRead ? null : <div style={{ width: '8px', height: "8px", borderRadius: '8px', background: '#f00', position: 'absolute', right: '5px', top: '2px' }} />}
+                                            {v.name}
+                                        </div>
+                                        } />
+                                ))
+                            }
+                        </Tabs>
+                        <Table
+                            columns={this.state.columns1}
+                            dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
+                            pagination={false}
+                            scroll={{ y: 600, x: 1000 }}
+                        />
+                    </Spin>
+                    <Button
+                        onClick={this.handleOk}
+                        type={"primary"}
+                        style={{
+                            position: "relative",
+                            left: "50%",
+                            transform: "translateX(-50%)",
+                            bottom: -10
+                        }}
+                    >
+                        我已阅读以上信息
+                    </Button>
+                </Modal>
+                <FollowDetail
+                    categoryArr={this.state.categoryArr}
+                    followData={this.state.followData}
+                    visitModul={this.state.visitModul}
+                    closeDesc={this.closeDesc}
+                />
+                <textarea id='copyText1' style={{ opacity: 0 }} />
+            </div>
         );
     }
 });
@@ -642,35 +645,35 @@ const Content = React.createClass({
     getInitialState() {
         return {
             loading: false,
-            component:'<div></div>'
+            component: '<div></div>'
         };
     },
-    getKey(key){
-        switch(key){
+    getKey(key) {
+        switch (key) {
             case 'normal':
                 require.ensure([], () => {
                     this.setState({
                         component: <MessageModal />,
                     });
                 });
-            break;
+                break;
             case "contacts":
-              let Module = require('./contacts/index').default;
+                let Module = require('./contacts/index').default;
                 require.ensure([], () => {
                     this.setState({
                         component: <Module />,
                     });
                 });
-            break;
+                break;
             default:
-            require.ensure([], () => {
-                let Module = require('../module').default;
-                this.setState({
-                    component:<Module />
-                	});
-            });
+                require.ensure([], () => {
+                    let Module = require('../module').default;
+                    this.setState({
+                        component: <Module />
+                    });
+                });
         }
-        window.location.hash=key;
+        window.location.hash = key;
     },
     componentWillMount() {
         if (window.location.hash) {

+ 9 - 0
js/component/manageCenter/order/content.jsx

@@ -142,6 +142,15 @@ class Content extends Component {
           });
         });
         break;
+      // 特批会员项目
+      case "approvedvipproject":
+        require.ensure([], () => {
+          const Approveds = require("./orderNew/approvedvipproject").default;
+          this.setState({
+            component: <Approveds />,
+          });
+        });
+        break;
       //合同变更审核
       case "contractChangeYxy":
         require.ensure([], () => {

+ 91 - 11
js/component/manageCenter/order/orderNew/addService.jsx

@@ -60,6 +60,7 @@ import ImgList from "../../../common/imgList";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import ProjectOperation from ".././../../common/projectOperation";
+import ProjectOperationVip from ".././../../common/projectOperation/vip";
 import { instanceOf } from "prop-types";
 import UpdateSales from './updatesales';
 const Option = AutoComplete.Option;
@@ -336,6 +337,7 @@ const NewService = Form.create()(
             title: "项目数量",
             dataIndex: "commodityQuantity",
             key: "commodityQuantity",
+            width: 50,
             render: (text, record) => {
               if (record.splitStatus == 1) {
                 return (
@@ -361,6 +363,7 @@ const NewService = Form.create()(
             title: "金额(万元)",
             dataIndex: "commodityPrice",
             key: "commodityPrice",
+            width: 50,
           },
           {
             title: "负责人",
@@ -376,6 +379,7 @@ const NewService = Form.create()(
             title: "项目状态",
             dataIndex: "projectStatus",
             key: "projectStatus",
+            width: 60,
             render: (text) => {
               return getProjectName(text);
             },
@@ -384,6 +388,7 @@ const NewService = Form.create()(
             title: "主要项目",
             dataIndex: "main",
             key: "main",
+            width: 50,
             render: (text) => {
               return text ? "是" : "否";
             },
@@ -392,8 +397,17 @@ const NewService = Form.create()(
             title: "项目说明",
             dataIndex: "taskComment",
             key: "taskComment",
+            width: 180,
             render: (text) => {
-              return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
+              return (
+                <Tooltip
+                  title={text}
+                >
+                  <div>
+                    {text && text.length > 12 ? text.substr(0, 12) + "…" : text}
+                  </div>
+                </Tooltip>
+              )
             },
           },
           {
@@ -2499,6 +2513,7 @@ const NewService = Form.create()(
         });
       }
     },
+    // 
     handleOk() {
       this.setState({
         visible: false,
@@ -2506,6 +2521,7 @@ const NewService = Form.create()(
       });
       this.props.closeDesc(false, true);
     },
+    // 
     handleCancel() {
       if (this.state.orderType == undefined) {
         return false;
@@ -2519,6 +2535,7 @@ const NewService = Form.create()(
       });
       this.props.closeDesc(false);
     },
+    // 
     handleCancelclose() {
       this.setState(
         {
@@ -2580,11 +2597,13 @@ const NewService = Form.create()(
         }.bind(this)
       );
     },
+    // 
     nextCancel() {
       this.setState(
         {
           changeVisible: false,
           projectOperationVisible: false,
+          vipVisible: false,
           gid: "",
           dataInfor: {},
         },
@@ -2593,6 +2612,7 @@ const NewService = Form.create()(
         }
       );
     },
+    // 
     rizhi() {
       this.setState({
         loading: true,
@@ -2643,11 +2663,13 @@ const NewService = Form.create()(
       });
       this.rizhi();
     },
+    // 
     closeOrderLog() {
       this.setState({
         rizhivisible: false,
       });
     },
+    // 
     callback(key) {
       this.setState({
         activeKey: key,
@@ -2776,6 +2798,7 @@ const NewService = Form.create()(
         });
       }
     },
+    // 
     cuiList(id) {
       this.setState({
         loadData: true,
@@ -2813,6 +2836,7 @@ const NewService = Form.create()(
         }.bind(this),
       });
     },
+    // 
     proList(id) {
       this.setState({
         loadData: true,
@@ -2850,6 +2874,7 @@ const NewService = Form.create()(
         }.bind(this),
       });
     },
+    // 
     logList(id) {
       this.setState({
         loading: true,
@@ -3119,6 +3144,12 @@ const NewService = Form.create()(
         projectOperationVisible: true,
       });
     },
+    //点击添加会员项目明细
+    addVip() {
+      this.setState({
+        vipVisible: true,
+      });
+    },
     //点击打卡项目详情
     tableRowClick(record) {
       this.setState({
@@ -4556,7 +4587,15 @@ const NewService = Form.create()(
               dataIndex: "taskComment",
               key: "taskComment",
               render: (text) => {
-                return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
+                return (
+                  <Tooltip
+                    title={text}
+                  >
+                    <div>
+                      {text && text.length > 8 ? text.substr(0, 8) + "…" : text}
+                    </div>
+                  </Tooltip>
+                )
               },
             },
             {
@@ -4686,11 +4725,13 @@ const NewService = Form.create()(
               title: "项目数量",
               dataIndex: "commodityQuantity",
               key: "commodityQuantity",
+              width: 50,
             },
             {
               title: "金额(万元)",
               dataIndex: "commodityPrice",
               key: "commodityPrice",
+              width: 50,
               render: (text, record) => {
                 if (record.splitStatus == 2) {
                   return "/";
@@ -4703,6 +4744,7 @@ const NewService = Form.create()(
               title: "主要项目",
               dataIndex: "main",
               key: "main",
+              width: 50,
               render: (text) => {
                 return text ? "是" : "否";
               },
@@ -4717,7 +4759,15 @@ const NewService = Form.create()(
               dataIndex: "taskComment",
               key: "taskComment",
               render: (text) => {
-                return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
+                return (
+                  <Tooltip
+                    title={text}
+                  >
+                    <div>
+                      {text && text.length > 8 ? text.substr(0, 8) + "…" : text}
+                    </div>
+                  </Tooltip>
+                )
               },
             },
           ];
@@ -5999,7 +6049,7 @@ const NewService = Form.create()(
                               <div>
                                 <Button
                                   type="primary"
-                                  style={{ marginRight: "5px" }}
+                                  style={{ marginBottom: 15 }}
                                   onClick={() => {
                                     this.publicByOrder();
                                     this.setState({
@@ -6010,7 +6060,7 @@ const NewService = Form.create()(
                                   查看上门记录
                                 </Button>
                                 <Button
-                                  style={{ display: this.state.disabledView }}
+                                  style={{ marginLeft: 5, display: this.state.disabledView }}
                                   type="primary"
                                   onClick={() => {
                                     this.setState({
@@ -6200,7 +6250,8 @@ const NewService = Form.create()(
                             >
                               项目业务
                             </span>
-                            {this.state.processStatus == 0 ? (
+                            {
+                              this.state.processStatus == 0 &&
                               <Button
                                 type="primary"
                                 onClick={this.addDetailed}
@@ -6212,9 +6263,21 @@ const NewService = Form.create()(
                               >
                                 添加项目明细
                               </Button>
-                            ) : (
-                              ""
-                            )}
+                            }
+                            {
+                              this.props.datauser.projectType == 1 && this.state.processStatus > 1 &&
+                              <Button
+                                type="primary"
+                                onClick={this.addVip}
+                                style={{
+                                  float: "right",
+                                  marginRight: "50px",
+                                  marginBottom: "15px",
+                                }}
+                              >
+                                添加会员项目
+                              </Button>
+                            }
                           </div>
                           <div
                             className="patent-table"
@@ -7633,7 +7696,9 @@ const NewService = Form.create()(
             visible={this.state.rizhivisible}
             loading={this.state.loading}
           />
-          {this.state.projectOperationVisible ? (
+          {
+            // 项目任务添加编辑
+            this.state.projectOperationVisible &&
             <ProjectOperation
               readOnly={
                 this.state.dataInfor &&
@@ -7645,7 +7710,22 @@ const NewService = Form.create()(
               dataInfor={this.state.dataInfor}
               onCancel={this.nextCancel}
             />
-          ) : null}
+          }
+          {
+            // 会员项目添加编辑
+            this.state.vipVisible &&
+            <ProjectOperationVip
+              readOnly={
+                this.state.dataInfor &&
+                Object.keys(this.state.dataInfor).length > 0 &&
+                this.state.processStatus !== 0
+              }
+              orderNo={this.props.datauser.orderNo}
+              visible={this.state.vipVisible}
+              dataInfor={this.state.dataInfor}
+              onCancel={this.nextCancel}
+            />
+          }
         </div>
       );
     },

+ 833 - 0
js/component/manageCenter/order/orderNew/approvedvipproject.jsx

@@ -0,0 +1,833 @@
+import React from "react";
+import $ from "jquery/src/ajax";
+import { AutoComplete, Button, Input, Spin, Table, Select, message, Tabs, Tag, Tooltip, Modal } from "antd";
+// import OrderDesc from "../orderDetail/orderDesc";
+import ResolutionDetail from "@/resolutionDetail";
+import { ChooseList } from "../../order/orderNew/chooseList"
+import ReactToPrint from "react-to-print";
+import OrderItemStatus from "../../../common/orderItemStatus";
+const { TabPane } = Tabs;
+
+const ApprovedVipProject = React.createClass({
+
+  //
+  getInitialState() {
+    return {
+      dvisible: false,
+      pageNo: 1,
+      totalPage: 0,
+      searchValues: {
+        status: "2"
+      },//查询条件
+      loading: false,
+      changeList: undefined,// 子组件改变的表格title数组
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.setState({
+            pageNo: page,
+          });
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      columns: [
+        // {
+        //   title: "销售类型",
+        //   dataIndex: "salesType",
+        //   key: "salesType",
+        //   render: (text, record) => {
+        //     return (
+        //       <Tooltip
+        //         title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
+        //       >
+        //         <span>
+        //           {salesList[text]}
+        //         </span>
+        //       </Tooltip>
+        //     );
+        //   },
+        // },
+        {
+          title: "合同编号",
+          dataIndex: "contractNo",
+          key: "contractNo",
+          width: 160,
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success("复制成功");
+                    }}
+                  >
+                    复制
+                  </Button>
+                }
+              >
+                <div>
+                  {text}
+                  <div style={{ display: "flex" }}>
+                    {/* <OrderItemStatus deleteSign={record.deleteSign} /> */}
+                    {
+                      record.approval == 1
+                        ? <Tag color="#faa755">特批待审</Tag> :
+                        record.approval == 2 && <Tag color="#ff0000">特批通过</Tag>
+                    }
+                  </div>
+                </div>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "客户名称",
+          dataIndex: "userName",
+          key: "userName",
+          width: 200,
+          render: text => {
+            return (
+              <Tooltip title={text}>
+                <div>{text}</div>
+              </Tooltip>
+            )
+          }
+        },
+        {
+          title: "订单编号",
+          dataIndex: "orderNo",
+          key: "orderNo",
+          width: 140,
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success("复制成功");
+                    }}
+                  >
+                    复制
+                  </Button>
+                }
+              >
+                <div>
+                  {text}
+                  <div>
+                    {record.signTotalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
+                    {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
+                  </div>
+                </div>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "订单部门",
+          dataIndex: "depName",
+          key: "depName",
+          className: "title-table",
+        },
+        {
+          title: "订单负责人",
+          dataIndex: "salesmanName",
+          key: "salesmanName",
+          className: "title-table",
+        },
+        {
+          title: "财务负责人",
+          dataIndex: "financeName",
+          key: "financeName",
+          className: "title-table",
+        },
+        {
+          title: "会员项目",
+          dataIndex: "projectName",
+          key: "projectName",
+          className: "title-table",
+        },
+        {
+          title: "项目说明",
+          dataIndex: "projectComment",
+          key: "projectComment",
+          className: "title-table",
+          width: 200,
+        },
+        {
+          title: "状态",
+          dataIndex: "status",
+          key: "status",
+          className: "title-table",
+          render: (text) => {
+            return (
+              <div>
+                {["", "财务审核", "特批审核", "通过", "驳回"][text]}
+              </div>
+            );
+          }
+        },
+        {
+          title: "操作",
+          dataIndex: "caozuo",
+          key: "caouzo",
+          className: "title-table",
+          width: 150,
+          render: (text, recard) => {
+            return (
+              <div>
+                {
+                  recard.status == 1 &&
+                  <Button
+                    type="primary"
+                    onClick={(e) => {
+                      e.stopPropagation(),
+                        this.checkRemark(recard, 1);
+                    }}
+                  >
+                    通过
+                  </Button>
+                }
+                {
+                  recard.status == 1 &&
+                  <Button
+                    type="danger"
+                    style={{ marginLeft: "5px", }}
+                    onClick={(e) => {
+                      e.stopPropagation(),
+                        this.checkRemark(recard, 0);
+                    }}
+                  >
+                    驳回
+                  </Button>
+                }
+              </div>
+            );
+          },
+        },
+      ],
+      dataSource: [],
+      fjlist: [],// 营销员列表
+      checkOrderNo: "",//操作订单编号
+      checkData: "",//操作描述
+      checkVisible: "",//审核弹窗开关
+      checkId: "",//会员项目编号
+      result: -1,//1同意 0驳回
+    };
+  },
+
+  componentWillMount() {
+    this.loadData();
+    this.departmentList();
+  },
+  // 获取订单部门
+  departmentList() {
+    $.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 () {
+
+      }.bind(this)
+    );
+  },
+  // 列表数据
+  loadData(pageNo, pageSize) {
+    const { searchValues, pagination } = this.state
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchValues, {
+      pageNo: pageNo || 1,
+      pageSize: pageSize || 10,
+      shiroType: 3, //特批审核
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/memberList",
+      data: datas,
+      success: function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+              totalPage: data.data.totalPage,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 点击行
+  tableRowClick(record) {
+    this.state.RowData = record;
+    this.setState({
+      showDesc: true,
+    });
+  },
+  // 关闭
+  closeDesc(e, s) {
+    this.state.showDesc = e;
+    if (s) {
+      this.loadData(this.state.page);
+    }
+  },
+  // 搜索
+  search() {
+    this.setState({
+      selectedRowKeys: []
+    })
+    this.loadData();
+  },
+  // 重置
+  reset() {
+    this.setState({
+      searchValues: JSON.parse(JSON.stringify({})),
+    }, () => {
+      this.loadData();
+    })
+  },
+  // 点击审核
+  checkRemark(record, nmb) {
+    this.setState({
+      checkVisible: true,
+      checkId: record.id,
+      result: nmb
+    });
+  },
+  // 审核
+  toExamine() {
+    if (!this.state.content) {
+      message.warning("请填写审核说明~");
+      return;
+    }
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      method: "POST",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/orderProject/examineMemberProject",
+      data: {
+        id: this.state.checkId,
+        remarks: this.state.content,
+        result: this.state.result, //1同意 0驳回
+        type: 0, //0财务审核  1特批审核
+      },
+    }).done(
+      function (data) {
+        if (!data.error.length) {
+          message.success("审核成功!");
+          this.setState({
+            loading: false,
+          });
+          this.loadData()
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  },
+  // 更改表格显示数据
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  },
+  // 导出当前列表
+  exportAll() {
+    message.config({
+      duration: 20,
+    });
+    let loading = message.loading("下载中...");
+    this.setState({
+      exportPendingLoading: true,
+    });
+    let data = {
+      shiroType: 3, //特批审核
+    };
+    let obj1 = JSON.parse(JSON.stringify(this.state.searchValues));
+    data = Object.assign(data, obj1);
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: "/api/admin/orderProject/memberList/export",
+      data,
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.download(data.data);
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        loading();
+        this.setState({
+          exportPendingLoading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 打印
+  printAll() {
+    this.setState({
+      dvisible: true,
+    });
+    this.loadData(1, 9999999);
+  },
+  // 下载
+  download(fileName) {
+    window.location.href =
+      globalConfig.context + "/open/download?fileName=" + fileName;
+  },
+  // 查询订单负责人列表
+  followUp(e) {
+    const { searchValues } = this.state;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        aname: e,
+      }),
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+      },
+      success: function (data) {
+        let thedata = data.data;
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          fjlist: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+  // 选中订单负责人
+  selectF(value) {
+    const { searchValues, fjlist } = this.state;
+    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
+    this.setState({
+      searchValues: Object.assign(searchValues, {
+        salesmanId: newdataSources.find((item) => item.name == value).id,
+      }),
+    });
+  },
+  // 失去焦点
+  blurChange(e) {
+    let theType = "";
+    let contactLists = this.state.customerArr || [];
+    if (e) {
+      contactLists.map(function (item) {
+        if (item.name == e.toString()) {
+          theType = item.id;
+        }
+      });
+    }
+    this.setState({
+      theTypes: theType,
+    });
+  },
+  // 删除数组最后一项(删除操作列)
+  truncate(arr) {
+    return arr.filter(function (v, i, ar) {
+      return i !== ar.length - 1
+    })
+  },
+
+  render() {
+    const { TextArea } = Input
+    const { searchValues, departmentArr = [] } = this.state
+    const dataSources = this.state.fjlist || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    return (
+      <div className="user-content">
+        <div className="content-title" style={{ marginBottom: 10 }}>
+          <span style={{ fontWeight: 900, fontSize: 16 }}>会员项目审核</span>
+        </div>
+        <Tabs defaultActiveKey="2" onChange={this.callback} className="test">
+          <TabPane tab="更改表格显示数据" key="1">
+            <div style={{ marginLeft: 10 }}>
+              <ChooseList
+                columns={this.state.columns}
+                changeFn={this.changeList}
+                changeList={this.state.changeList}
+                top={55}
+                margin={11}
+              />
+            </div>
+          </TabPane>
+          <TabPane tab="搜索" key="2">
+            <div className="user-search" style={{ marginLeft: 10 }}>
+              <Input
+                placeholder="订单编号"
+                value={searchValues["orderNo"]
+                  ? searchValues["orderNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["orderNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Input
+                placeholder="客户名称"
+                value={searchValues["userName"]
+                  ? searchValues["userName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["userName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                placeholder="订单部门"
+                style={{ width: 190, marginRight: 10 }}
+                value={searchValues["depId"]
+                  ? searchValues["depId"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["depId"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                {departmentArr.map(function (item) {
+                  return (
+                    <Select.Option key={item.id}>{item.name}</Select.Option>
+                  );
+                })}
+              </Select>
+              <Input
+                placeholder="合同编号"
+                value={searchValues["contractNo"]
+                  ? searchValues["contractNo"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["contractNo"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <AutoComplete
+                className="certain-category-search"
+                dropdownClassName="certain-category-search-dropdown"
+                dropdownMatchSelectWidth={false}
+                style={{ width: "120px" }}
+                dataSource={options}
+                placeholder="订单负责人"
+                value={searchValues.aname || undefined}
+                onChange={this.followUp.bind(this)}
+                filterOption={true}
+                onSelect={this.selectF.bind(this)}
+              >
+                <Input />
+              </AutoComplete>
+              <Input
+                placeholder="项目名称"
+                value={searchValues["projectName"]
+                  ? searchValues["projectName"]
+                  : ""}
+                onChange={(e) => {
+                  searchValues["projectName"] = e.target.value;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              />
+              <Select
+                style={{ width: 120 }}
+                placeholder="签单金额"
+                value={searchValues["amountStatus"]
+                  ? searchValues["amountStatus"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["amountStatus"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">10万元以下</Option>
+                <Option value="1">10~20万元</Option>
+                <Option value="2">20~30万元</Option>
+                <Option value="3">30~40万元</Option>
+                <Option value="4">40万元以上</Option>
+              </Select>
+              <Select
+                style={{ width: 120 }}
+                placeholder="特批状态"
+                value={searchValues["approval"]
+                  ? searchValues["approval"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["approval"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="0">非特批</Option>
+                <Option value="1">特批待审</Option>
+                <Option value="2">特批通过</Option>
+                <Option value="4">全部特批</Option>
+              </Select>
+              <Select
+                style={{ width: 120 }}
+                placeholder="审核状态"
+                value={searchValues["status"]
+                  ? searchValues["status"]
+                  : undefined}
+                onChange={(e) => {
+                  searchValues["status"] = e;
+                  this.setState({
+                    searchValues: searchValues,
+                  });
+                }}
+              >
+                <Option value="1">财务审核</Option>
+                <Option value="2">特批审核</Option>
+                <Option value="3">通过</Option>
+                <Option value="4">全部</Option>
+              </Select>
+              <Button
+                type="primary"
+                onClick={this.search}
+                style={{ marginLeft: 10 }}
+                disabled={this.state.loading ? true : false}
+              >
+                搜索
+              </Button>
+              <Button onClick={this.reset}>重置</Button>
+            </div>
+          </TabPane>
+          <TabPane tab="打印" key="3">
+            <Button
+              type="primary"
+              style={{ margin: "11px 0px 10px 10px" }}
+              onClick={this.printAll}
+            >
+              打印当前列表
+            </Button>
+          </TabPane>
+          <TabPane tab="导出Excel" key="4">
+            <Button
+              type="primary"
+              style={{ margin: "11px 0px 10px 10px" }}
+              onClick={this.exportAll}
+            >
+              导出当前列表
+            </Button>
+          </TabPane>
+        </Tabs>
+        <div className="patent-table">
+          <Spin spinning={this.state.loading}>
+            <Table
+              bordered
+              columns={
+                this.state.changeList == undefined
+                  ? this.state.columns
+                  : this.state.changeList
+              }
+              dataSource={this.state.dataSource}
+              pagination={this.state.pagination}
+              onRowDoubleClick={this.tableRowClick.bind(this)}
+              size="small"
+            />
+          </Spin>
+        </div>
+        {/* 订单详情 */}
+        {/* <OrderDesc
+          data={this.state.RowData}
+          showDesc={this.state.showDesc}
+          closeDesc={this.closeDesc.bind(this)}
+        /> */}
+        {
+          //打印预览
+          this.state.dvisible &&
+          <Modal
+            visible={this.state.dvisible}
+            footer=""
+            title="所有列表信息"
+            className="admin-desc-content"
+            width="1300px"
+            onCancel={() => {
+              this.loadData();
+              this.setState({
+                dvisible: false,
+              });
+            }}
+          >
+            <Spin spinning={this.state.loading}>
+              <div
+                className="patent-table"
+                style={{
+                  padding: "25px 0 30px 30px",
+                }}
+                ref={(e) => {
+                  this.refs.all = e;
+                }}
+              >
+                <Table
+                  columns={this.truncate(this.state.columns)}
+                  dataSource={this.state.dataSource}
+                  pagination={false}
+                  bordered
+                  size="small"
+                />
+              </div>
+            </Spin>
+
+            <ReactToPrint
+              trigger={() => (
+                <Button
+                  type="primary"
+                  style={{
+                    float: "right",
+                    marginTop: 10,
+                    position: "absolute",
+                    top: 0,
+                    right: 30,
+                  }}
+                >
+                  打印
+                </Button>
+              )}
+              content={() => this.refs.all}
+            />
+          </Modal>
+        }
+        {
+          //审核弹窗
+          this.state.checkVisible &&
+          <Modal
+            maskClosable={false}
+            title="审核订单"
+            confirmLoading={this.state.loading}
+            visible={this.state.checkVisible}
+            onOk={this.toExamine}
+            okText={this.state.result == 1 ? "通过" : this.state.result == 0 && "驳回"}
+            onCancel={() => {
+              this.loadData()
+              this.setState({
+                checkVisible: false,
+                checkData: '',
+              })
+            }}
+          >
+            <TextArea
+              value={this.state.checkData}
+              onChange={(e) => {
+                this.setState({
+                  checkData: e.target.value,
+                })
+              }}
+              placeholder="请填写审核内容"
+            />
+          </Modal>
+        }
+      </div>
+    );
+  },
+});
+
+export default ApprovedVipProject;

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

@@ -11,6 +11,7 @@ import {
   Modal,
   Tabs,
   Tooltip,
+  Tag,
 } from "antd";
 import $ from "jquery/src/ajax";
 import moment from "moment";
@@ -23,6 +24,7 @@ import {
 import "./customer.less";
 import { ChooseList } from "./chooseList";
 import { getProjectName } from "../../../tools";
+import { salesList } from "@/dataDic.js"
 import DepartmentList from "../../../common/departmentList";
 
 const IntentionCustomer = Form.create()(
@@ -80,7 +82,10 @@ const IntentionCustomer = Form.create()(
                 startDate: thisdata.startDate, //催收启动时间
                 depName: thisdata.depName, //部门名称
                 dunStatus: thisdata.dunStatus == 0 ? "未触发" : "已触发",
-                commodityName:thisdata.commodityName,
+                commodityName: thisdata.commodityName,
+                salesType:thisdata.salesType, // 销售类型
+                approval:thisdata.approval, //特批状态
+                projectType:thisdata.projectType, //会员状态
               });
             }
             this.state.pagination.total = data.data.totalCount;
@@ -174,14 +179,92 @@ const IntentionCustomer = Form.create()(
             key: "key",
           },
           {
+            title: "销售类型",
+            dataIndex: "salesType",
+            key: "salesType",
+            render: (text, record) => {
+              return (
+                <Tooltip
+                  title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
+                >
+                  <span>
+                    {salesList[text]}
+                  </span>
+                </Tooltip>
+              );
+            },
+          },
+          {
             title: "合同编号",
             dataIndex: "contractNo",
             key: "contractNo",
+            render: (text, record) => {
+              return (
+                <Tooltip
+                  title={
+                    <Button
+                      type="primary"
+                      onClick={(e) => {
+                        e.stopPropagation();
+                        let input = document.getElementById("copyText");
+                        input.value = text;
+                        input.select();
+                        document.execCommand("copy");
+                        message.success("复制成功");
+                      }}
+                    >
+                      复制
+                    </Button>
+                  }
+                >
+                  <div>
+                    {text}
+                    <div style={{ display: "flex" }}>
+                      {/* <OrderItemStatus deleteSign={record.deleteSign} /> */}
+                      {
+                        record.approval == 1
+                          ? <Tag color="#faa755">特批待审</Tag> :
+                          record.approval == 2 && <Tag color="#ff0000">特批通过</Tag>
+                      }
+                    </div>
+                  </div>
+                </Tooltip>
+              );
+            },
           },
           {
             title: "订单编号",
             dataIndex: "orderNo",
             key: "orderNo",
+            render: (text, record) => {
+              return (
+                <Tooltip
+                  title={
+                    <Button
+                      type="primary"
+                      onClick={(e) => {
+                        e.stopPropagation();
+                        let input = document.getElementById("copyText");
+                        input.value = text;
+                        input.select();
+                        document.execCommand("copy");
+                        message.success("复制成功");
+                      }}
+                    >
+                      复制
+                    </Button>
+                  }
+                >
+                  <div>
+                    {text}
+                    <div>
+                      {record.totalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
+                      {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
+                    </div>
+                  </div>
+                </Tooltip>
+              );
+            },
           },
           {
             title: "客户名称",
@@ -517,9 +600,9 @@ const IntentionCustomer = Form.create()(
       const { TabPane } = Tabs;
       return (
         <div className="user-content">
-        <div className="content-title" style={{ marginBottom: 10 }}>
-          <span style={{ fontWeight: 900, fontSize: 16 }}>催款节点统计</span>
-        </div>
+          <div className="content-title" style={{ marginBottom: 10 }}>
+            <span style={{ fontWeight: 900, fontSize: 16 }}>催款节点统计</span>
+          </div>
           <div className="user-search">
             <Tabs
               defaultActiveKey="1"
@@ -694,7 +777,7 @@ const IntentionCustomer = Form.create()(
                           }}
                           showTime
                           format="YYYY-MM-DD"
-                          onOk={() => {}}
+                          onOk={() => { }}
                           value={
                             this.state.dumTime
                               ? moment(this.state.dumTime)
@@ -764,7 +847,7 @@ const IntentionCustomer = Form.create()(
                       dataSource={this.state.dataSources}
                       rowSelection={rowSelection}
                       pagination={this.state.paginations}
-                      // onRowClick={this.tableRowClick}
+                    // onRowClick={this.tableRowClick}
                     />
                   </Spin>
                 </div>

+ 7 - 7
js/component/manageCenter/topTab.jsx

@@ -237,7 +237,7 @@ const MessageModal = React.createClass({
           if (index >= 0) {
             data.data[index].isRead = true;
             this.setState({
-              unreadDataType: index ? data.data[index]["id"] + "" : "0",
+              unreadDataType: data.data[index]["id"] + "",
               unreadDataIndex: index,
             });
           } else {
@@ -599,8 +599,8 @@ const UserModal = React.createClass({
                           " " +
                           (item.city
                             ? item.city.map((c) => {
-                                return getProvince(c) + " ";
-                              })
+                              return getProvince(c) + " ";
+                            })
                             : "")}
                       </Tag>
                     );
@@ -804,11 +804,11 @@ const TopTab = React.createClass({
               activeKey={this.state.defaultActiveKey}
               tabPosition="top"
               onTabClick={(v) => {
-                window.location.href=globalConfig.context + this.state.htmlMenus[parseInt(v)].url+'?rid='+this.state.htmlMenus[parseInt(v)].id;
+                window.location.href = globalConfig.context + this.state.htmlMenus[parseInt(v)].url + '?rid=' + this.state.htmlMenus[parseInt(v)].id;
               }}
-              // onChange={v=>{
-              //     window.location.href=globalConfig.context + this.state.htmlMenus[parseInt(v)].url+'?rid='+this.state.htmlMenus[parseInt(v)].id;
-              // }}
+            // onChange={v=>{
+            //     window.location.href=globalConfig.context + this.state.htmlMenus[parseInt(v)].url+'?rid='+this.state.htmlMenus[parseInt(v)].id;
+            // }}
             >
               {this.state.htmlMenus.map((v, k) => (
                 <TabPane key={k} tab={v.name} />