Kaynağa Gözat

销售线索模块新增/编辑页面调整

qymljy 2 yıl önce
ebeveyn
işleme
ae3ea52830

+ 8 - 0
src/Form/projectChange/add.vue

@@ -146,14 +146,22 @@ export default {
       if (this.form.enddate_due !== ''){
         if (value > this.form.enddate_due){
           callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
         }
+      } else {
+        callback();
       }
     }
     var enddateTime = (rule,value,callback) =>{
       if (this.form.begdate_due !== ''){
         if (value < this.form.begdate_due){
           callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
         }
+      }else {
+        callback();
       }
     }
     return {

+ 121 - 18
src/HManagement/clueManage/clue_private/modules/add.vue

@@ -1,14 +1,14 @@
 <template>
   <div>
     <el-button size="small" type="primary" @click="onShow">新 建</el-button>
-    <el-drawer title="新建线索" :visible.sync="drawer" size="600px" direction="rtl" :show-close="false" append-to-body @close="onClose">
+    <el-drawer title="新建线索" :visible.sync="drawer" size="800px" direction="rtl" :show-close="false" append-to-body @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="10">
-        <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm"
+        <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm"
                  label-position="right">
           <el-col :span="20">
-            <el-form-item label="客户名称" prop="enterprisename">
-              <el-input v-model="param.content.enterprisename" size="small"></el-input>
+            <el-form-item label="客户名称:" prop="enterprisename">
+              <el-input v-model="param.content.enterprisename" size="small" placeholder="请填写客户名称"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="4">
@@ -18,47 +18,91 @@
 <!--            <businessMessage :keyWord="param.content.enterprisename" @businessData="businessData"></businessMessage>-->
           </el-col>
           <el-col :span="24">
-            <el-form-item label="联系人" prop="name">
-              <el-input v-model="param.content.name" size="small"></el-input>
+            <el-form-item label="联系人:" prop="name">
+              <el-input v-model="param.content.name" size="small" placeholder="请填写联系人"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="手机号" prop="phonenumber">
-              <el-input v-model="param.content.phonenumber" size="small"></el-input>
+            <el-form-item label="联系方式:" prop="phonenumber">
+              <el-input v-model="param.content.phonenumber" size="small" placeholder="请填写手机号"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="省市县" prop="province">
+            <el-form-item label="省市县:" prop="province">
               <el-cascader size="small" class="width-240" v-model="param.content.province" :options="_arealist"
                            @change="cascaderChange" ref="cascader">
               </el-cascader>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="地址" prop="address">
-              <el-input v-model="param.content.address" size="small"></el-input>
+            <el-form-item label="地址:" prop="address">
+              <el-input v-model="param.content.address" size="small" placeholder="请填写地址"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="市场活动" prop="campaign_name">
+            <el-form-item label="项目名称:" prop="projectname">
+              <el-input v-model="param.content.projectname" placeholder="请填写项目名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="项目规模:" prop="scale">
+              <el-input v-model="param.content.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="总投资额(百万):" prop="totalinvestment">
+              <el-input v-model="param.content.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="造价(百万):" prop="costofconstruction">
+              <el-input v-model="param.content.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="预计开工时间:" prop="begdate_due">
+              <el-date-picker
+                  style="width: 100%"
+                  v-model="param.content.begdate_due"
+                  type="month"
+                  placeholder="选择月"
+                  :picker-options="pickerOptions"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="预计完工时间:" prop="enddate_due">
+              <el-date-picker
+                  style="width: 100%"
+                  v-model="param.content.enddate_due"
+                  type="month"
+                  placeholder="选择月"
+                  :picker-options="pickerOptions"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="市场活动:" prop="campaign_name">
               <el-popover
                   placement="bottom"
                   trigger="manual"
                   v-model="activityVisible"
                   width="400">
                 <selectActivity ref="member" :radio="true" @onSelect="centerChange" @onCancel="activityVisible = false"></selectActivity>
-                <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.content.campaign_name"></el-input>
+                <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.content.campaign_name" placeholder="请选择市场活动"></el-input>
               </el-popover>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="来源" prop="cluesource">
-              <el-input v-model="param.content.cluesource" size="small"></el-input>
+            <el-form-item label="来源:" prop="cluesource">
+              <el-input v-model="param.content.cluesource" size="small" placeholder="请填写来源"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="备注" prop="notes">
-              <el-input type="textarea" v-model="param.content.notes" size="small"></el-input>
+            <el-form-item label="线索概况:" prop="notes">
+              <el-input type="textarea" v-model="param.content.notes" size="small" placeholder="请填写线索概况"></el-input>
             </el-form-item>
           </el-col>
         </el-form>
@@ -78,7 +122,34 @@ import businessMessage from "@/components/businessMessage";
 export default {
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      if (this.param.content.enddate_due !== ''){
+        if (value > this.param.content.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.param.content.begdate_due !== ''){
+        if (value < this.param.content.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       drawer: false,
       activityVisible:false,
       param: {
@@ -95,7 +166,13 @@ export default {
             "notes": "",
             "cluesource": "",
             "sat_campaignid":0,//活动id,当活动id大于0是默认业务员创建
-            "isprivate":0//0表示公海,1表示私域
+            "isprivate":0,//0表示公海,1表示私域
+            "projectname": "",
+            "scale": "",
+            "costofconstruction": '', //造价(百万)
+            "totalinvestment": '', //总投资额(百万)
+            "begdate_due": "", //预计开工时间
+            "enddate_due": "" //预计完工时间
           }
       },
       rules: {
@@ -103,6 +180,12 @@ export default {
           {required:true,message:'请输入手机号',trigger:'blur'},
           { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       areaSelectResult:'',
       options: []
@@ -129,6 +212,26 @@ export default {
       this.drawer = true
     },
     addOrdercule() {
+      if (this.param.content.begdate_due !== ''){
+        const data = new Date(this.param.content.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.content.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.content.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.content.begdate_due = ''
+      }
+      if (this.param.content.enddate_due !== ''){
+        const data = new Date(this.param.content.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.content.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.content.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.content.enddate_due = ''
+      }
       this.$refs.ruleForm.validate( async val => {
           if( !val ) return this.$notify({
             title:'提示',

+ 69 - 32
src/HManagement/clueManage/clue_private/modules/detail.vue

@@ -190,7 +190,7 @@ export default {
           value:this.mainData.allocationstatus === '已分配'?this.mainData.leader[0].name:'--'
         },
         {
-          label:'所属经销商',
+          label:'所属业务员',
           value:this.mainData.enterprisename
         },
         {
@@ -244,7 +244,11 @@ export default {
       this.detailInfo = {
         baseInfo: [
           {
-            label:'客户名称',
+            label:'客户',
+            value:this.mainData.enterprisename_customer
+          },
+          {
+            label:'联系人',
             value:this.mainData.name
           },
           {
@@ -259,21 +263,68 @@ export default {
             label:'地址',
             value:this.mainData.address
           },
+          {
+            label:'项目名称',
+            value:this.mainData.projectname
+          },
+          {
+            label:'项目规模',
+            value:this.mainData.scale
+          },
+          {
+            label:'总投资额(百万)',
+            value:this.mainData.totalinvestment
+          },
+          {
+            label:'造价(百万)',
+            value:this.mainData.costofconstruction
+          },
+          {
+            label:'预计开工时间',
+            value:this.mainData.begdate_due
+          },
+          {
+            label:'预计完工时间',
+            value:this.mainData.enddate_due
+          },
+          {
+            label:'市场活动',
+            value:this.mainData.campaign_name
+          },
           {
             label:'来源',
             value:this.mainData.cluesource
           },
           {
-            label:'负责人',
-            value:this.mainData.allocationstatus === '已分配'?this.mainData.leader[0].name:'--'
+            label:'线索概况',
+            value:this.mainData.notes
           },
           {
-            label:'备注',
-            value:this.mainData.notes
+            label:'所属业务员',
+            value:this.mainData.salename
           },
           {
-            label:'所属经销商',
-            value:this.mainData.enterprisename
+            label:'负责人',
+            value:this.mainData.allocationstatus === '已分配'?this.mainData.leader[0].name:'--'
+          },
+          {
+            label:'分配状态',
+            value:this.mainData.allocationstatus,
+            style:function () {
+              let style = {}
+              switch (that.mainData.allocationstatus) {
+                case '已分配':
+                  style = {color:'#333333'}
+                  break;
+                case '待分配':
+                  style = {color:'#3874f6'}
+                  break;
+                default:
+                  break;
+              }
+              return style
+            }
+
           },
           {
             label:'跟进状态',
@@ -303,38 +354,24 @@ export default {
 
             }
           },
-          {
-            label:'分配状态',
-            value:this.mainData.allocationstatus,
-            style:function () {
-              let style = {}
-              switch (that.mainData.allocationstatus) {
-                case '已分配':
-                  style = {color:'#333333'}
-                  break;
-                case '待分配':
-                  style = {color:'#3874f6'}
-                  break;
-                default:
-                  break;
-              }
-              return style
-            }
 
-          },
 
         ],
         systemInfo: [
           {label:'创建人',value:this.mainData.createBy},
-          {label:'分配人',value:this.mainData.assignedBy},
-          {label:'最近跟进人',value:this.mainData.followBy},
-          {label:'转移人',value:this.mainData.changeBy},
-          {label:'最近编辑人',value:this.mainData.editBy},
           {label:'创建时间',value:this.mainData.createDate},
+         /* {label:'导入人',value:this.mainData.createBy},
+          {label:'导入时间',value:this.mainData.createDate},*/
+          {label:'分配人',value:this.mainData.assignedBy},
           {label:'分配时间',value:this.mainData.assignedDate},
-          {label:'最近跟进时间',value:this.mainData.followDate},
-          {label:'最近转移时间',value:this.mainData.changeDate},
+          {label:'最近编辑人',value:this.mainData.editBy},
           {label:'最近编辑时间',value:this.mainData.editDate},
+          {label:'最近跟进人',value:this.mainData.followBy},
+          {label:'最近跟进时间',value:this.mainData.followDate},
+          {label:'无效原因',value:this.mainData.invalidreason},
+          {label:'作废原因',value:this.mainData.deletereason},
+          {label:'跟进次数',value:this.mainData.followcount === 0?'0':this.mainData.followcount},
+         /* {label:'最近转移时间',value:this.mainData.changeDate},*/
           {
             label:'转手次数',
             value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'

+ 115 - 17
src/HManagement/clueManage/clue_private/modules/edit.vue

@@ -1,30 +1,30 @@
 <template>
   <div>
     <el-button size="mini" type="primary" @click="onShow">编 辑</el-button>
-    <el-drawer title="编辑线索" :show-close="false" append-to-body :visible.sync="dialogFormVisible" size="600px" @close="onClose">
+    <el-drawer title="编辑线索" :show-close="false" append-to-body :visible.sync="dialogFormVisible" size="800px" @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="10">
-          <el-form :model="form" :rules="rules" label-position="right" label-width="80px" size="small">
+          <el-form :model="form" :rules="rules" label-position="right" label-width="120px" size="small">
             <el-col :span="20">
-              <el-form-item label="客户名称" prop="enterprisename">
-                <el-input v-model="form.enterprisename" size="small"></el-input>
+              <el-form-item label="客户名称:" prop="enterprisename">
+                <el-input v-model="form.enterprisename" size="small" placeholder="请填写客户名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="4">
               <businessMessage ref="businessMessage" :keyWord="form.enterprisename" @businessData="businessData"></businessMessage>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="联系人" prop="name">
-                <el-input v-model="form.name" size="small"></el-input>
+              <el-form-item label="联系人:" prop="name">
+                <el-input v-model="form.name" size="small" placeholder="请填写联系人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号" prop="phonenumber">
-                <el-input v-model="form.phonenumber" size="small"></el-input>
+              <el-form-item label="联系方式:" prop="phonenumber">
+                <el-input v-model="form.phonenumber" size="small" placeholder="请填写手机号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="省市县" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader
                     style="width:100%"
                     class="width-240"
@@ -35,30 +35,74 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="地址">
-                <el-input v-model="form.address" autocomplete="off"></el-input>
+              <el-form-item label="地址:">
+                <el-input v-model="form.address" autocomplete="off" placeholder="请填写地址"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="市场活动" prop="sat_campaignid">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="form.projectname" placeholder="请填写项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="form.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="totalinvestment">
+                <el-input v-model="form.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="costofconstruction">
+                <el-input v-model="form.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="市场活动:" prop="sat_campaignid">
                 <el-popover
                     placement="bottom"
                     trigger="manual"
                     v-model="activityVisible"
                     width="400">
                   <selectActivity ref="member" :radio="true" @onSelect="centerChange" @onCancel="activityVisible = false"></selectActivity>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="form.campaign_name"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="form.campaign_name" placeholder="请填写市场活动"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="来源">
-                <el-input v-model="form.cluesource" autocomplete="off"></el-input>
+              <el-form-item label="来源:">
+                <el-input v-model="form.cluesource" autocomplete="off" placeholder="请填写来源"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="备注">
-                <el-input v-model="form.notes" type="textarea" :rows="4" autocomplete="off"></el-input>
+              <el-form-item label="线索概况:">
+                <el-input v-model="form.notes" type="textarea" :rows="4" autocomplete="off" placeholder="请填写线索概况"></el-input>
               </el-form-item>
             </el-col>
           </el-form>
@@ -79,7 +123,35 @@ export default {
   props:['data'],
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      console.log(value,this.form.enddate_due)
+      if (this.form.enddate_due !== ''){
+        if (value > this.form.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.form.begdate_due !== ''){
+        if (value < this.form.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       activityVisible:false,
       dialogFormVisible:false,
       form:{
@@ -102,6 +174,12 @@ export default {
           {required:true,message:'请输入手机号',trigger:'blur'},
           { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
     }
   },
@@ -115,6 +193,26 @@ export default {
       
     },
     async onSubmit () {
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
+      }
       this.form.city = this.form.province[1]
       this.form.county = this.form.province[2]
       this.form.province = this.form.province[0]

+ 131 - 28
src/HManagement/clueManage/clue_public/modules/add.vue

@@ -1,14 +1,14 @@
 <template>
   <div>
     <el-button size="small" type="primary" @click="onShow">新 建</el-button>
-    <el-drawer title="新建线索" :visible.sync="drawer" size="600px" direction="rtl" :show-close="false" append-to-body @close="onClose">
+    <el-drawer title="新建线索" :visible.sync="drawer" size="800px" direction="rtl" :show-close="false" append-to-body @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="10">
-          <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm"
+          <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm"
                    label-position="right">
             <el-col :span="20">
-              <el-form-item label="客户名称" prop="enterprisename">
-                <el-input v-model="param.content.enterprisename" size="small"></el-input>
+              <el-form-item label="客户名称:" prop="enterprisename">
+                <el-input v-model="param.content.enterprisename" size="small" placeholder="请填写客户名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="4">
@@ -17,47 +17,91 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="联系人" prop="name">
-                <el-input v-model="param.content.name" size="small"></el-input>
+              <el-form-item label="联系人:" prop="name">
+                <el-input v-model="param.content.name" size="small" placeholder="请填写联系人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号" prop="phonenumber">
-                <el-input v-model="param.content.phonenumber" size="small"></el-input>
+              <el-form-item label="联系方式:" prop="phonenumber">
+                <el-input v-model="param.content.phonenumber" size="small" placeholder="请填写手机号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="省市县" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader size="small" class="width-240" v-model="param.content.province" :options="basicData.data().areaData"
                              @change="cascaderChange" ref="cascader">
                 </el-cascader>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="地址" prop="address">
-                <el-input v-model="param.content.address" size="small"></el-input>
+              <el-form-item label="地址:" prop="address">
+                <el-input v-model="param.content.address" size="small" placeholder="请填写地址"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="市场活动" prop="campaign_name">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="param.content.projectname" placeholder="请填写项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="param.content.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="totalinvestment">
+                <el-input v-model="param.content.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="costofconstruction">
+                <el-input v-model="param.content.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="param.content.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="param.content.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="市场活动:" prop="campaign_name">
                 <el-popover
                     placement="bottom"
                     trigger="manual"
                     v-model="activityVisible"
                     width="400">
                   <selectActivity ref="member" :radio="true" @onSelect="centerChange" @onCancel="activityVisible = false"></selectActivity>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.content.campaign_name"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.content.campaign_name" placeholder="请填写市场活动"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="来源" prop="cluesource">
-                <el-input v-model="param.content.cluesource" size="small"></el-input>
+              <el-form-item label="来源:" prop="cluesource">
+                <el-input v-model="param.content.cluesource" size="small" placeholder="请填写来源"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="备注" prop="notes">
-                <el-input type="textarea" v-model="param.content.notes" size="small"></el-input>
+              <el-form-item label="线索概况:" prop="notes">
+                <el-input type="textarea" v-model="param.content.notes" size="small" placeholder="请填写线索概况"></el-input>
               </el-form-item>
             </el-col>
           </el-form>
@@ -77,23 +121,56 @@ import businessMessage from "@/components/businessMessage";
 export default {
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      if (this.param.content.enddate_due !== ''){
+        if (value > this.param.content.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.param.content.begdate_due !== ''){
+        if (value < this.param.content.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       drawer: false,
       activityVisible:false,
       param: {
         "id":20221205162402,
         "content": {
-            "sat_orderclueid": 0,
-            "enterprisename":'',
-            "name": "",
-            "phonenumber": "",
-            "province": "",
-            "city": "",
-            "county": "",
-            "address": "",
-            "notes": "",
-            "cluesource": "",
-            "isprivate":0
+          "sat_orderclueid": 0,
+          "enterprisename":'',
+          "name": "",
+          "phonenumber": "",
+          "province": "",
+          "city": "",
+          "county": "",
+          "address": "",
+          "notes": "",
+          "cluesource": "",
+          "isprivate":0,
+          "projectname": "",
+          "scale": "",
+          "costofconstruction": '', //造价(百万)
+          "totalinvestment": '', //总投资额(百万)
+          "begdate_due": "", //预计开工时间
+          "enddate_due": "" //预计完工时间
         }
       },
       rules: {
@@ -101,6 +178,12 @@ export default {
           {required:true,message:'请输入手机号',trigger:'blur'},
           { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       areaSelectResult:'',
       options: []
@@ -116,6 +199,26 @@ export default {
       this.drawer = true
     },
     addOrdercule() {
+      if (this.param.content.begdate_due !== ''){
+        const data = new Date(this.param.content.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.content.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.content.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.content.begdate_due = ''
+      }
+      if (this.param.content.enddate_due !== ''){
+        const data = new Date(this.param.content.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.content.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.content.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.content.enddate_due = ''
+      }
       this.$refs.ruleForm.validate( async val => {
           if( !val ) return this.$notify({
             title:'提示',

+ 56 - 11
src/HManagement/clueManage/clue_public/modules/detail.vue

@@ -197,18 +197,33 @@ export default {
           value:this.mainData.campaign_name
         },
         {
-          label:'所属经销商',
+          label:'所属业务员',
           value:this.mainData.enterprisename
         },
         {
           label:'负责人',
           value:this.mainData.leader && this.mainData.leader.length > 0 ? this.mainData.leader[0].name : ''
         },
+        {
+          label:'分配状态',
+          value:this.mainData.allocationstatus,
+          style:function () {
+            let style = {}
+            switch (that.mainData.allocationstatus) {
+              case '待分配':
+                style = {color:'#3874f6'}
+                break;
+              default:
+                break;
+            }
+            return style
+          }
+        },
       ]
       this.detailInfo = {
         baseInfo: [
           {
-            label:'客户名称',
+            label:'客户',
             value:this.mainData.enterprisename_customer
           },
           {
@@ -227,21 +242,49 @@ export default {
             label:'地址',
             value:this.mainData.address
           },
+          {
+            label:'项目名称',
+            value:this.mainData.projectname
+          },
+          {
+            label:'项目规模',
+            value:this.mainData.scale
+          },
+          {
+            label:'总投资额(百万)',
+            value:this.mainData.totalinvestment
+          },
+          {
+            label:'造价(百万)',
+            value:this.mainData.costofconstruction
+          },
+          {
+            label:'预计开工时间',
+            value:this.mainData.begdate_due
+          },
+          {
+            label:'预计完工时间',
+            value:this.mainData.enddate_due
+          },
+          {
+            label:'市场活动',
+            value:this.mainData.campaign_name
+          },
           {
             label:'来源',
             value:this.mainData.cluesource
           },
           {
-            label:'负责人',
-            value:this.mainData.leader && this.mainData.leader.length > 0 ? this.mainData.leader[0].name : ''
+            label:'线索概况',
+            value:this.mainData.notes
           },
           {
-            label:'备注',
-            value:this.mainData.notes
+            label:'所属业务员',
+            value:this.mainData.salename
           },
           {
-            label:'所属经销商',
-            value:this.mainData.enterprisename
+            label:'负责人',
+            value:this.mainData.leader && this.mainData.leader.length > 0 ? this.mainData.leader[0].name : ''
           },
           {
           label:'分配状态',
@@ -268,13 +311,15 @@ export default {
           {label:'创建时间',value:this.mainData.createDate},
           {label:'分配人',value:this.mainData.assignedBy},
           {label:'分配时间',value:this.mainData.assignedDate},
-          {label:'最近跟进人',value:this.mainData.followBy},
-          {label:'最近跟进时间',value:this.mainData.followDate},
           {label:'最近编辑人',value:this.mainData.editBy},
           {label:'最近编辑时间',value:this.mainData.editDate},
-          {label:'转化次数',value:this.mainData.isproject === 0 && this.mainData.iscustomer === 0?'0':this.mainData.isproject + this.mainData.iscustomer },
+          {label:'最近跟进人',value:this.mainData.followBy},
+          {label:'最近跟进时间',value:this.mainData.followDate},
           {label:'无效原因',value:this.mainData.invalidreason},
           {label:'作废原因',value:this.mainData.deletereason},
+          {label:'跟进次数',value:this.mainData.followcount === 0?'0':this.mainData.followcount},
+          /*{label:'转化次数',value:this.mainData.isproject === 0 && this.mainData.iscustomer === 0?'0':this.mainData.isproject + this.mainData.iscustomer },*/
+
           {
             label:'转手次数',
             value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'

+ 115 - 18
src/HManagement/clueManage/clue_public/modules/edit.vue

@@ -1,13 +1,13 @@
 <template>
   <div>
     <el-button size="mini" type="primary" @click="onShow">编 辑</el-button>
-    <el-drawer title="编辑线索" append-to-body :visible.sync="dialogFormVisible" :show-close="false" size="600px" @close="onClose">
+    <el-drawer title="编辑线索" append-to-body :visible.sync="dialogFormVisible" :show-close="false" size="800px" @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="10">
-          <el-form :model="form" :rules="rule" ref="form" label-position="right" label-width="80px" size="small">
+          <el-form :model="form" :rules="rule" ref="form" label-position="right" label-width="120px" size="small">
             <el-col :span="20">
-              <el-form-item label="客户名称" prop="enterprisename">
-                <el-input v-model="form.enterprisename" size="small"></el-input>
+              <el-form-item label="客户名称:" prop="enterprisename">
+                <el-input v-model="form.enterprisename" size="small" placeholder="请填写客户名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="4">
@@ -16,17 +16,17 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="联系人" prop="name">
-                <el-input v-model="form.name" size="small"></el-input>
+              <el-form-item label="联系人:" prop="name">
+                <el-input v-model="form.name" size="small" placeholder="请填写联系人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号" prop="phonenumber">
-                <el-input v-model="form.phonenumber" autocomplete="off"></el-input>
+              <el-form-item label="联系方式:" prop="phonenumber">
+                <el-input v-model="form.phonenumber" autocomplete="off" placeholder="请填写手机号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="省市县" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader
                     style="width:100%"
                     class="width-240"
@@ -37,30 +37,74 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="地址">
-                <el-input v-model="form.address" autocomplete="off"></el-input>
+              <el-form-item label="地址:">
+                <el-input v-model="form.address" autocomplete="off" placeholder="请填写地址"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="市场活动" prop="sat_campaignid">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="form.projectname" placeholder="请填写项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="form.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="totalinvestment">
+                <el-input v-model="form.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="costofconstruction">
+                <el-input v-model="form.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="市场活动:" prop="sat_campaignid">
                 <el-popover
                     placement="bottom"
                     trigger="manual"
                     v-model="activityVisible"
                     width="400">
                   <selectActivity ref="member" :radio="true" @onSelect="centerChange" @onCancel="activityVisible = false"></selectActivity>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="form.campaign_name"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="form.campaign_name" placeholder="请填写市场活动"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="来源" prop="cluesource">
-                <el-input v-model="form.cluesource" autocomplete="off"></el-input>
+              <el-form-item label="来源:" prop="cluesource">
+                <el-input v-model="form.cluesource" autocomplete="off" placeholder="请填写来源"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="备注">
-                <el-input v-model="form.notes" type="textarea" :rows="4" autocomplete="off"></el-input>
+              <el-form-item label="线索概况:">
+                <el-input v-model="form.notes" type="textarea" :rows="4" autocomplete="off" placeholder="请填写线索概况"></el-input>
               </el-form-item>
             </el-col>
           </el-form>
@@ -82,7 +126,35 @@ export default {
   components: {selectActivity,businessMessage},
   props:['data','type'],
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      console.log(value,this.form.enddate_due)
+      if (this.form.enddate_due !== ''){
+        if (value > this.form.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.form.begdate_due !== ''){
+        if (value < this.form.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       activityVisible:false,
       dialogFormVisible:false,
       rule:{
@@ -90,6 +162,12 @@ export default {
           { required: true, message: '请输入联系人手机号', trigger: 'blur' },
           { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       form:{},
       arealist:[]
@@ -103,7 +181,26 @@ export default {
       this.form.enterprisename = this.data.enterprisename_customer
     },
     async onSubmit () {
-      
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
+      }
       this.$refs['form'].validate(async (valid) => {
         if (!valid) return false;
         this.form.city = this.form.province[1]

+ 130 - 23
src/HManagement/clueManage/m_activity/modules/addClue.vue

@@ -10,27 +10,27 @@
       append-to-body>
       <div class="drawer__panel">
         <el-row :gutter="20">
-          <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+          <el-form :model="form" :rules="rules" ref="form" label-width="120px" label-position="right" size="mini">
             <el-col :span="20">
-              <el-form-item label="客户名称" prop="enterprisename">
-                <el-input v-model="form.enterprisename" placeholder="请输入客户名称"></el-input>
+              <el-form-item label="客户名称:" prop="enterprisename">
+                <el-input v-model="form.enterprisename" placeholder="请填写客户名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="4">
               <businessMessage :keyWord="form.enterprisename" @businessData="businessData"></businessMessage>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="联系人" prop="name">
-                <el-input v-model="form.name" placeholder="请输入联系人"></el-input>
+              <el-form-item label="联系人:" prop="name">
+                <el-input v-model="form.name" placeholder="请填写联系人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号" prop="phonenumber">
-                <el-input v-model="form.phonenumber" placeholder="请输入手机号"></el-input>
+              <el-form-item label="联系方式:" prop="phonenumber">
+                <el-input v-model="form.phonenumber" placeholder="请填写手机号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="省市县" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader
                     style="width:100%"
                     class="width-240"
@@ -41,23 +41,69 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="地址" prop="address">
-                <el-input v-model="form.address" placeholder="请输入地址"></el-input>
+              <el-form-item label="地址:" prop="address">
+                <el-input v-model="form.address" placeholder="请填写地址"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="form.projectname" placeholder="请填写项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="form.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="totalinvestment">
+                <el-input v-model="form.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="costofconstruction">
+                <el-input v-model="form.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="市场活动">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="市场活动:" prop="cluesource">
                 <el-input disabled type="text" size="small" v-model="activityName"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="来源" prop="cluesource">
-                <el-input v-model="form.cluesource" placeholder="请输入来源"></el-input>
+              <el-form-item label="来源:" prop="cluesource">
+                <el-input v-model="form.cluesource" placeholder="请填写来源"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="备注" prop="notes">
-                <el-input v-model="form.notes" placeholder="请输入备注"></el-input>
+              <el-form-item label="线索概况:" prop="notes">
+                <el-input v-model="form.notes" placeholder="请填写线索概况"></el-input>
               </el-form-item>
             </el-col>
           </el-form>
@@ -65,7 +111,7 @@
       </div>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="drawer = false,$refs.form.resetFields()" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary" @click="add()" class="normal-btn-width">确 定</el-button>
+        <el-button size="small" type="primary" @click="add" class="normal-btn-width">确 定</el-button>
       </div>
     </el-drawer>
   </div>
@@ -79,7 +125,35 @@ export default {
   props:['disabled','data'],
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      console.log(value,this.form.enddate_due)
+      if (this.form.enddate_due !== ''){
+        if (value > this.form.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.form.begdate_due !== ''){
+        if (value < this.form.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       drawer:false,
       activityVisible:false,
       activityName:'',
@@ -95,7 +169,13 @@ export default {
         "notes": "",
         "cluesource": "",
         "sat_campaignid":0,//活动id,当活动id大于0是默认业务员创建
-        "isprivate":0//0表示公海,1表示私域
+        "isprivate":0,//0表示公海,1表示私域,
+        "projectname": "",
+        "scale": "",
+        "costofconstruction": '', //造价(百万)
+        "totalinvestment": '', //总投资额(百万)
+        "begdate_due": "", //预计开工时间
+        "enddate_due": "" //预计完工时间
       },
       rules:{
         phonenumber:[
@@ -103,6 +183,12 @@ export default {
           { required: true, message: '请输入手机号', trigger: 'blur' },
 
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       options:[]
     }
@@ -113,14 +199,35 @@ export default {
       this.activityName = this.data.name
     },
     add () {
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
+      }
+      this.form.sat_campaignid = this.$route.query.id
+      if(this.form.province.length > 0) {
+        this.form.city = this.form.province[1]
+        this.form.county = this.form.province[2]
+        this.form.province = this.form.province[0]
+      }
       this.$refs['form'].validate(async (valid) => {
+        console.log(valid)
         if (!valid) return false
-        this.form.sat_campaignid = this.$route.query.id
-        if(this.form.province.length > 0) {
-          this.form.city = this.form.province[1]
-          this.form.county = this.form.province[2]
-          this.form.province = this.form.province[0]
-        }
         const res = await this.$api.requested({
           "id": 20221205162402,
           "content": this.form

+ 101 - 4
src/HManagement/clueManage/m_activity/modules/editClue.vue

@@ -10,7 +10,7 @@
       append-to-body
       @close="onClose">
       <div class="drawer__panel">
-        <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+        <el-form :model="form" :rules="rules" ref="form" label-width="120px" label-position="right" size="mini">
           <el-col :span="20">
             <el-form-item label="客户名称" prop="enterprisename">
               <el-input v-model="form.enterprisename" placeholder="请输入客户名称"></el-input>
@@ -25,7 +25,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="手机号" prop="phonenumber">
+            <el-form-item label="联系方式" prop="phonenumber">
               <el-input v-model="form.phonenumber" placeholder="请输入手机号"></el-input>
             </el-form-item>
           </el-col>
@@ -45,6 +45,50 @@
               <el-input v-model="form.address" placeholder="请输入地址"></el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="24">
+            <el-form-item label="项目名称:" prop="projectname">
+              <el-input v-model="form.projectname" placeholder="请填写项目名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="项目规模:" prop="scale">
+              <el-input v-model="form.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="总投资额(百万):" prop="totalinvestment">
+              <el-input v-model="form.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="造价(百万):" prop="costofconstruction">
+              <el-input v-model="form.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="预计开工时间:" prop="begdate_due">
+              <el-date-picker
+                  style="width: 100%"
+                  v-model="form.begdate_due"
+                  type="month"
+                  placeholder="选择月"
+                  :picker-options="pickerOptions"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="预计完工时间:" prop="enddate_due">
+              <el-date-picker
+                  style="width: 100%"
+                  v-model="form.enddate_due"
+                  type="month"
+                  placeholder="选择月"
+                  :picker-options="pickerOptions"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
           <el-col :span="24">
             <el-form-item label="市场活动" prop="sat_campaignid">
               <el-input disabled type="text" size="small" v-model="form.campaign_name"></el-input>
@@ -56,7 +100,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="备注" prop="notes">
+            <el-form-item label="线索概况" prop="notes">
               <el-input v-model="form.notes" placeholder="请输入备注"></el-input>
             </el-form-item>
           </el-col>
@@ -64,7 +108,7 @@
       </div>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary" @click="add()" class="normal-btn-width">确 定</el-button>
+        <el-button size="small" type="primary" @click="add" class="normal-btn-width">确 定</el-button>
       </div>
     </el-drawer>
   </div>
@@ -76,7 +120,34 @@ import businessMessage from '@/components/businessMessage/index'
 export default {
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      if (this.form.enddate_due !== ''){
+        if (value > this.form.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.form.begdate_due !== ''){
+        if (value < this.form.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       drawer:false,
       activityVisible:false,
       form:{
@@ -99,6 +170,12 @@ export default {
           { required: true, message: '请输入手机号', trigger: 'blur' },
 
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       options:[]
     }
@@ -115,6 +192,26 @@ export default {
       
     },
     add () {
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
+      }
       this.$refs['form'].validate(async (valid) => {
         if (!valid) return false
         if(this.form.province.length > 0) {

+ 132 - 29
src/SManagement/orderclue/components/add.vue

@@ -1,14 +1,14 @@
 <template>
   <div>
     <el-button size="small" type="primary" @click="onShow">新 建</el-button>
-    <el-drawer title="新建线索" :visible.sync="drawer" size="600px" direction="rtl" :show-close="false" append-to-body @close="onClose">
+    <el-drawer title="新建线索" :visible.sync="drawer" size="800px" direction="rtl" :show-close="false" append-to-body @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="10">
-          <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm"
+          <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm"
                    label-position="right">
             <el-col :span="20">
-              <el-form-item label="客户名称" prop="enterprisename">
-                <el-input v-model="param.content.enterprisename" size="small"></el-input>
+              <el-form-item label="客户名称:" prop="enterprisename">
+                <el-input v-model="param.content.enterprisename" size="small" placeholder="请填写客户名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="4">
@@ -17,17 +17,17 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="联系人" prop="name">
-                <el-input v-model="param.content.name" size="small"></el-input>
+              <el-form-item label="联系人:" prop="name">
+                <el-input v-model="param.content.name" size="small" placeholder="请填写联系人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号" prop="phonenumber">
-                <el-input v-model="param.content.phonenumber" size="small"></el-input>
+              <el-form-item label="联系方式:" prop="phonenumber">
+                <el-input v-model="param.content.phonenumber" size="small" placeholder="请填写手机号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="省市县" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader size="small" class="width-240" v-model="param.content.province" :options="_arealist"
                              @change="cascaderChange" ref="cascader">
                 </el-cascader>
@@ -35,29 +35,73 @@
             </el-col>
             <el-col :span="24">
               <el-form-item label="地址" prop="address">
-                <el-input v-model="param.content.address" size="small"></el-input>
+                <el-input v-model="param.content.address" size="small" placeholder="请填写地址"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="市场活动" prop="sat_campaignid">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="param.content.projectname" placeholder="请填写项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="param.content.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="totalinvestment">
+                <el-input v-model="param.content.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="costofconstruction">
+                <el-input v-model="param.content.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="param.content.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="param.content.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="市场活动:" prop="sat_campaignid">
                 <el-popover
                     placement="bottom"
                     trigger="manual"
                     v-model="activityVisible"
                     width="400">
                   <selectActivity ref="member" :radio="true" @onSelect="centerChange" @onCancel="activityVisible = false"></selectActivity>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.content.campaign_name"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.content.campaign_name" placeholder="请选择市场活动"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="来源" prop="cluesource">
-                <el-input v-model="param.content.cluesource" size="small"></el-input>
+              <el-form-item label="来源:" prop="cluesource">
+                <el-input v-model="param.content.cluesource" size="small" placeholder="请填写来源"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="备注" prop="notes">
-                <el-input type="textarea" v-model="param.content.notes" size="small"></el-input>
+              <el-form-item label="线索概况:" prop="notes">
+                <el-input type="textarea" v-model="param.content.notes" size="small" placeholder="请填写线索概况"></el-input>
               </el-form-item>
             </el-col>
           </el-form>
@@ -77,25 +121,58 @@ import businessMessage from "@/components/businessMessage";
 export default {
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      if (this.param.content.enddate_due !== ''){
+        if (value > this.param.content.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.param.content.begdate_due !== ''){
+        if (value < this.param.content.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       activityVisible:false,
       drawer: false,
       param: {
         "id":20221205162402,
         "content": {
-            "sat_orderclueid": 0,
-            "enterprisename":"",
-            "name": "",
-            "phonenumber": "",
-            "province": "",
-            "city": "",
-            "county": "",
-            "address": "",
-            "notes": "",
-            "cluesource": "",
-            "sat_campaignid":0,
-            "isprivate":1,
-            "campaign_name":''
+          "sat_orderclueid": 0,
+          "enterprisename":"",
+          "name": "",
+          "phonenumber": "",
+          "province": "",
+          "city": "",
+          "county": "",
+          "address": "",
+          "notes": "",
+          "cluesource": "",
+          "sat_campaignid":0,
+          "isprivate":1,
+          "campaign_name":'',
+          "projectname": "",
+          "scale": "",
+          "costofconstruction": '', //造价(百万)
+          "totalinvestment": '', //总投资额(百万)
+          "begdate_due": "", //预计开工时间
+          "enddate_due": "" //预计完工时间
         }
       },
       rules: {
@@ -103,6 +180,12 @@ export default {
           {required:true,message:'请输入手机号',trigger:'blur'},
           { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       areaSelectResult:'',
       options: []
@@ -129,6 +212,26 @@ export default {
       this.drawer = true
     },
     addOrdercule() {
+      if (this.param.content.begdate_due !== ''){
+        const data = new Date(this.param.content.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.content.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.content.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.content.begdate_due = ''
+      }
+      if (this.param.content.enddate_due !== ''){
+        const data = new Date(this.param.content.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.content.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.content.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.content.enddate_due = ''
+      }
       this.$refs.ruleForm.validate( async val => {
           if( !val ) return this.$notify({
             title:'提示',

+ 120 - 17
src/SManagement/orderclue/components/edit.vue

@@ -1,14 +1,14 @@
 <template>
   <div class="edit">
     <el-button size="mini" :type="disabled || data.status === '已无效' ? 'defalt':'primary'" :disabled="disabled || data.status === '已无效'" @click="editBtn">编 辑</el-button>
-    <el-drawer title="编辑线索" :visible.sync="drawer" size="600px" direction="rtl" append-to-body :show-close="false" @close="onClose">
+    <el-drawer title="编辑线索" :visible.sync="drawer" size="800px" direction="rtl" append-to-body :show-close="false" @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="10">
-          <el-form :model="param" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm"
+          <el-form :model="param" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm"
                    label-position="right">
             <el-col :span="20">
-              <el-form-item label="客户名称" prop="enterprisename">
-                <el-input v-model="param.enterprisename" size="small"></el-input>
+              <el-form-item label="客户名称:" prop="enterprisename">
+                <el-input v-model="param.enterprisename" size="small" placeholder="请填写客户名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="4">
@@ -17,47 +17,91 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="联系人" prop="name">
-                <el-input v-model="param.name" size="small"></el-input>
+              <el-form-item label="联系人:" prop="name">
+                <el-input v-model="param.name" size="small" placeholder="请填写联系人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号" prop="phonenumber">
-                <el-input v-model="param.phonenumber" size="small"></el-input>
+              <el-form-item label="联系方式:" prop="phonenumber">
+                <el-input v-model="param.phonenumber" size="small" placeholder="请填写手机号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="省市县" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader size="mini" class="width-240" v-model="param.province" :options="arealist()"
                              @change="cascaderChange">
                 </el-cascader>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="地址" prop="address">
-                <el-input v-model="param.address" size="mini"></el-input>
+              <el-form-item label="地址:" prop="address">
+                <el-input v-model="param.address" size="mini" placeholder="请填写地址"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="市场活动" prop="sat_campaignid">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="param.projectname" placeholder="请填写项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="param.scale" placeholder="请填写建筑面积(㎡)或者吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="totalinvestment">
+                <el-input v-model="param.totalinvestment" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="costofconstruction">
+                <el-input v-model="param.costofconstruction" placeholder="请填写金额(百万)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="param.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="param.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="市场活动:" prop="sat_campaignid">
                 <el-popover
                     placement="bottom"
                     trigger="manual"
                     v-model="activityVisible"
                     width="400">
                   <selectActivity ref="member" :radio="true" @onSelect="centerChange" @onCancel="activityVisible = false"></selectActivity>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.campaign_name"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="activityVisible=true" v-model="param.campaign_name" placeholder="请选择市场活动"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="来源" prop="cluesource">
-                <el-input v-model="param.cluesource" size="mini"></el-input>
+              <el-form-item label="来源:" prop="cluesource">
+                <el-input v-model="param.cluesource" size="mini" placeholder="请填写来源"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="备注" prop="notes">
-                <el-input type="textarea" v-model="param.notes" size="mini"></el-input>
+              <el-form-item label="线索概况:" prop="notes">
+                <el-input type="textarea" v-model="param.notes" size="mini" placeholder="请填写线索概况"></el-input>
               </el-form-item>
             </el-col>
           </el-form>
@@ -78,7 +122,34 @@ import businessMessage from "@/components/businessMessage";
 export default {
   components: {selectActivity,businessMessage},
   data () {
+    var begdateTime = (rule,value,callback) =>{
+      if (this.param.enddate_due !== ''){
+        if (value > this.param.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.param.begdate_due !== ''){
+        if (value < this.param.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }  else {
+        callback();
+      }
+    }
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       drawer: false,
       activityVisible:false,
       param: {
@@ -93,12 +164,24 @@ export default {
         "notes": "",
         "cluesource": "",
         "isprivate":1,
+        "projectname": "",
+        "scale": "",
+        "costofconstruction": '', //造价(百万)
+        "totalinvestment": '', //总投资额(百万)
+        "begdate_due": "", //预计开工时间
+        "enddate_due": "" //预计完工时间
       },
       rules: {
         phonenumber: [
           { required: true, message: '请输入手机号', trigger: 'blur' },
           { pattern: /^1[3-9]\d{9}$/, message: '请输入正确手机号码', trigger: 'blur' }
         ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       },
       areaSelectResult: '',
       options: [],
@@ -144,6 +227,26 @@ export default {
       this.drawer = false
     },
     addOrdercule () {
+      if (this.param.begdate_due !== ''){
+        const data = new Date(this.param.begdate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.begdate_due = ''
+      }
+      if (this.param.enddate_due !== ''){
+        const data = new Date(this.param.enddate_due)
+        if (data.getMonth() +1 < 10){
+          this.param.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.param.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.param.enddate_due = ''
+      }
       if (this.areaSelectResult.length > 1) {
         this.param.province = this.areaSelectResult[0]
         this.param.city = this.areaSelectResult[1]

+ 2 - 0
src/SManagement/orderclue_detail/components/changeCustomer.vue

@@ -241,6 +241,8 @@ export default {
       console.log(this.data,"转化客户信息")
       this.drawer = true
       this.form = Object.assign({},this.form,this.data)
+      this.form.source = this.form.cluesource
+      this.value = [this.form.province,this.form.city,this.form.county]
       console.log(this.form,"获取的表单数据")
       this.gradeList()
       this.industryList()

+ 444 - 0
src/SManagement/orderclue_detail/components/changeProject.vue

@@ -0,0 +1,444 @@
+<template>
+  <div>
+    <el-button size="mini" :type="disabled || data.status === '已无效'?'':'primary'" @click="onShow" :disabled="disabled || data.status === '已无效'" >转化项目</el-button>
+    <el-drawer
+        title="新建项目商机"
+        :visible.sync="dialogFormVisible"
+        size="700px"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="125px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="项目名称:" prop="projectname">
+                <el-input v-model="form.projectname" placeholder="请输入项目名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目类型:" prop="projecttype">
+                <el-select v-model="form.projecttype" placeholder="请选择项目类型" size="mini" style="width: 100%">
+                  <el-option
+                      v-for="(item,index) in projectType"
+                      :key="index"
+                      :label="item.value"
+                      :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目等级:" prop="grade">
+                <el-select v-model="form.grade" placeholder="请选择项目等级" size="mini" style="width: 100%">
+                  <el-option
+                      v-for="item in projectGrade"
+                      :key="item.value"
+                      :label="item.value"
+                      :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="省市县:" prop="province">
+                <el-cascader
+                    style="width:100%"
+                    v-model="value"
+                    :options="basicData.data().areaData"
+                    @change="cascaderChange" clearable>
+                </el-cascader>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="详细地址:" prop="address">
+                <el-input v-model="form.address" placeholder="请输入详细地址"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="form.scale" placeholder="请输入建筑面积(㎡)/吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目预算(万元):" prop="budgetary">
+                <el-input v-model="form.budgetary" placeholder="项目预算"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="budgetary">
+                <el-input v-model="form.totalinvestment" placeholder="总投资额"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="budgetary">
+                <el-input v-model="form.costofconstruction" placeholder="造价"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计签约时间:" prop="signdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.signdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计签约金额(元):" prop="signamount_due">
+                <el-input v-model="form.signamount_due" placeholder="请输入预计签约金额" disabled></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button  size="small" @click="onClose" class="normal-btn-width inline-16">取 消</el-button>
+        <duplicateCheck :data="form"></duplicateCheck>
+        <el-button size="small" type="primary" @click="onSave" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import duplicateCheck from "@/HDrpManagement/projectChange/components/duplicateCheck";
+export default {
+  props:["disabled","data"],
+  name: "changeProject",
+  components:{duplicateCheck},
+  data(){
+    var begdateTime = (rule,value,callback) =>{
+      console.log(value,this.form.enddate_due)
+      if (this.form.enddate_due !== ''){
+        if (value > this.form.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }else {
+          callback();
+        }
+      } else {
+        callback();
+      }
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.form.begdate_due !== ''){
+        if (value < this.form.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }else {
+          callback();
+        }
+      }else {
+        callback();
+      }
+    }
+    return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
+      dialogFormVisible:false,
+      form:{
+        sat_orderclueid: '',
+        projectname:"",
+        projectnum:"",
+        address:"",//可选
+        grade:"",//可选
+        budgetary:"",//可选
+        remarks:"",//可选
+        projecttype:"",//可选
+        sa_projstagetempid:"",//可选
+        signdate_due:"",//可选
+        scale:"",//可选
+        signamount_due:"",//可选
+        province:"",
+        city:"",
+        county:"",
+        totalinvestment:'', //总投资额
+        costofconstruction:'', //造价
+        begdate_due:'', //预计开工时间
+        enddate_due:''  //预计完工时间
+      },
+      value:'',
+      projectGrade:[],
+      projectType:[],
+      rules:{
+        projectname:[
+          { required: true, message: '输入项目名称', trigger: 'blur'},
+        ],
+        /*projectnum:[
+          { required: true, message: '输入项目编号', trigger: 'blur'}
+        ],*/
+        projecttype:[
+          { required: true, message: '请选择项目类型', trigger: 'blur'}
+        ],
+        sys_enterpriseid:[
+          { required: true, message: '请选择企业', trigger: 'blur'},
+        ],
+        /*sa_projstagetempid:[
+          { required: true, message: '请选择当前项目模板', trigger: 'blur'}
+        ],*/
+        province:[
+          { required: true, message: '请选择项目地址', trigger: 'blur'}
+        ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
+      }
+    }
+  },
+  mounted() {
+    this.$store.dispatch('optiontypeselect','projectgrade').then(res =>{
+      console.log(res)
+      this.projectGrade = res.data
+    })
+    this.$store.dispatch('optiontypeselect','projecttype').then(res =>{
+      console.log(res)
+      this.projectType = res.data
+    })
+  },
+  methods:{
+    onShow(){
+      this.dialogFormVisible = true
+      console.log(this.data)
+      this.form = Object.assign({},this.form,this.data)
+      this.value = [this.form.province,this.form.city,this.form.county]
+    },
+    /*省市县*/
+    cascaderChange (val) {
+      /*console.log(val)
+      this.form = Object.assign({},this.form,{province:val[0],city:val[1],county:val[2]})
+      console.log(this.form)*/
+      if (val.length === 1)
+        return this.form = Object.assign({},this.form,{province:val[0],city:'',county:''})
+
+      this.form = Object.assign({},this.form,{province:val[0],city:val[1],county:val[2]})
+
+    },
+    /*自动查重判断*/
+    duplicateCheck(){
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20221208184202,
+          "content": {
+            "projectname":this.form.projectname,
+            "address":this.form.address,
+            "sa_projectid":this.form.sa_projectid
+          },
+        })
+        console.log(res,"查重结果")
+        if (res.data.length !== 0){
+          console.log("重复")
+        }
+        this.checkResults = res.data.length
+        this.onSave()
+      })
+    },
+    onSave(){
+      if (this.checkResults === ''){
+        this.duplicateCheck()
+      }else {
+        if (this.checkResults !== 0){
+          this.$confirm('该项目疑似重复,是否确认创建项目?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            this.onSubmit()
+          }).catch(() => {
+            this.$message({
+              type: 'info',
+              message: '已取消创建'
+            });
+          });
+        }else {
+          this.onSubmit()
+        }
+      }
+    },
+    onSubmit(){
+      console.log(this.form)
+      if (this.form.signdate_due !== ''){
+        const data = new Date(this.form.signdate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.signdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.signdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.signdate_due = ''
+      }
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
+      }
+      this.form.sat_orderclueid = this.$route.query.id
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20221124154902",
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          if (this.checkResults === 0){
+            this.$emit('onChangeProject')
+            this.$refs['form'].resetFields();
+            this.value = ''
+            this.form={
+              sat_orderclueid: '',
+              projectname:"",
+              projectnum:"",
+              address:"",//可选
+              grade:"",//可选
+              budgetary:"",//可选
+              remarks:"",//可选
+              projecttype:"",//可选
+              sa_projstagetempid:"",//可选
+              signdate_due:"",//可选
+              scale:"",//可选
+              signamount_due:"",//可选
+              province:"",
+              city:"",
+              county:"",
+              totalinvestment:'', //总投资额
+              costofconstruction:'', //造价
+              begdate_due:'', //预计开工时间
+              enddate_due:''  //预计完工时间
+            }
+            this.dialogFormVisible = false
+            this.checkResults = ''
+          }else {
+            this.setTag(res.data.sa_projectid)
+          }
+
+        })
+      })
+    },
+    async setTag(id){
+      const res = await this.$api.requested({
+        "id": 20220929090901,
+        "content": {
+          "ownertable":"sa_project",
+          "ownerid":id,
+          "datatag":[
+            "疑似重复",
+          ]
+        }
+      })
+      this.$emit('onChangeProject')
+      this.$refs['form'].resetFields();
+      this.value = ''
+      this.form={
+        sat_orderclueid: '',
+        projectname:"",
+        projectnum:"",
+        address:"",//可选
+        grade:"",//可选
+        budgetary:"",//可选
+        remarks:"",//可选
+        projecttype:"",//可选
+        sa_projstagetempid:"",//可选
+        signdate_due:"",//可选
+        scale:"",//可选
+        signamount_due:"",//可选
+        province:"",
+        city:"",
+        county:"",
+        totalinvestment:'', //总投资额
+        costofconstruction:'', //造价
+        begdate_due:'', //预计开工时间
+        enddate_due:''  //预计完工时间
+      }
+      this.dialogFormVisible = false
+      this.checkResults = ''
+    },
+    onClose(){
+      this.$refs['form'].resetFields()
+      this.value = ''
+      this.form={
+        sat_orderclueid: '',
+        projectname:"",
+        projectnum:"",
+        address:"",//可选
+        grade:"",//可选
+        budgetary:"",//可选
+        remarks:"",//可选
+        projecttype:"",//可选
+        sa_projstagetempid:"",//可选
+        signdate_due:"",//可选
+        scale:"",//可选
+        signamount_due:"",//可选
+        province:"",
+        city:"",
+        county:"",
+        totalinvestment:'', //总投资额
+        costofconstruction:'', //造价
+        begdate_due:'', //预计开工时间
+        enddate_due:''  //预计完工时间
+      }
+      this.dialogFormVisible = false
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 64 - 37
src/SManagement/orderclue_detail/index.vue

@@ -23,7 +23,7 @@
           @updataList="queryMainData" 
           :teamList="teamList()"  
           v-if="userInfo.isAuth == 1 ? mainData.status == '待跟进' || mainData.status == '跟进中' : ''"></move> -->
-        <changeProject v-if="mainData.isproject == 0 && tool.checkAuth($route.name,'changeProject')" :data="mainData" :disabled="!isHandle" class="inline-16"/>
+        <changeProject v-if="mainData.isproject == 0 && tool.checkAuth($route.name,'changeProject')" :data="mainData" :disabled="!isHandle" class="inline-16" @onChangeProject="queryMainData($route.query.id)"/>
         <changeCustomer v-if="mainData.iscustomer == 0 && tool.checkAuth($route.name,'changeCutomer')" :data="mainData" :disabled="!isHandle" class="inline-16" @onChangeCustomer="onChangeCustomer"></changeCustomer>
         <el-button :type="!isHandle || mainData.status === '已无效'?'':'primary'" v-if="tool.checkAuth($route.name,'goBack') && mainData.status != '已转化' && mainData.isprivate !== 1" :disabled="!isHandle || mainData.status === '已无效'" class="inline-16" size="mini" @click="goBack">退 回</el-button>
         <noNull v-if="tool.checkAuth($route.name,'noNull') && mainData.status != '已转化' " class="inline-16" :data="mainData" :disabled="!isHandle" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid"/>
@@ -47,7 +47,7 @@ import move from '@/SManagement/orderclue/components/move'
 import edit from '@/SManagement/orderclue/components/edit'
 import Del from './components/delete'
 import noNull from './components/noNull'
-import changeProject from './components/changeData'
+import changeProject from './components/changeProject'
 import changeCustomer from './components/changeCustomer'
 export default {
   name: "detail",
@@ -178,7 +178,11 @@ export default {
       this.detailInfo = {
         baseInfo: [
           {
-            label:'客户名称',
+            label:'客户',
+            value:this.mainData.enterprisename_customer
+          },
+          {
+            label:'联系人',
             value:this.mainData.name
           },
           {
@@ -189,14 +193,34 @@ export default {
             label:'省市县',
             value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`
           },
-          {
-            label:'联系人',
-            value:this.mainData.name
-          },  
           {
             label:'地址',
             value:this.mainData.address
           },
+          {
+            label:'项目名称',
+            value:this.mainData.projectname
+          },
+          {
+            label:'项目规模',
+            value:this.mainData.scale
+          },
+          {
+            label:'总投资额(百万)',
+            value:this.mainData.totalinvestment
+          },
+          {
+            label:'造价(百万)',
+            value:this.mainData.costofconstruction
+          },
+          {
+            label:'预计开工时间',
+            value:this.mainData.begdate_due
+          },
+          {
+            label:'预计完工时间',
+            value:this.mainData.enddate_due
+          },
           {
             label:'市场活动',
             value:this.mainData.campaign_name
@@ -205,10 +229,37 @@ export default {
             label:'来源',
             value:this.mainData.cluesource
           },
+          {
+            label:'线索概况',
+            value:this.mainData.notes
+          },
+          {
+            label:'所属业务员',
+            value:this.mainData.salename
+          },
           {
             label:'负责人',
             value:this.mainData.leader.length > 0 && this.mainData.leader[0].name
           },
+          {
+            label:'分配状态',
+            value:this.mainData.allocationstatus,
+            style:function () {
+              let style = {}
+              switch (that.mainData.status) {
+                case '已分配':
+                  style = {color:'#333333'}
+                  break;
+                case '待分配':
+                  style = {color:'#3874f6'}
+                  break;
+                default:
+                  break;
+              }
+              return style
+
+            }
+          },
           // {
           //   label:'负责人',
           //   value:this.mainData.leader[0].name
@@ -242,47 +293,23 @@ export default {
 
             }
           },
-          {
-            label:'分配状态',
-            value:this.mainData.allocationstatus,
-            style:function () {
-              let style = {}
-              switch (that.mainData.status) {
-                case '已分配':
-                  style = {color:'#333333'}
-                  break;
-                case '待分配':
-                  style = {color:'#3874f6'}
-                  break;
-                default:
-                  break;
-              }
-              return style
 
-            }
-          },
-          {
-            label:'备注',
-            value:this.mainData.notes
-          },
-          {
-            label:'跟进次数',
-            value:this.mainData.followcount
-          }
         ],
         systemInfo: [
           {label:'创建人',value:this.mainData.createBy},
           {label:'创建时间',value:this.mainData.createDate},
           {label:'分配人',value:this.mainData.assignedBy},
           {label:'分配时间',value:this.mainData.assignedDate},
-          {label:'最近跟进人',value:this.mainData.followBy},
-          {label:'最近跟进时间',value:this.mainData.followDate},
           {label:'最近编辑人',value:this.mainData.editBy},
           {label:'最近编辑时间',value:this.mainData.editDate},
-          {label:'转化次数',value:this.mainData.isproject === 0 && this.mainData.iscustomer === 0?'0':this.mainData.isproject + this.mainData.iscustomer },
-          {label:'转手次数', value:this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum},
+          {label:'最近跟进人',value:this.mainData.followBy},
+          {label:'最近跟进时间',value:this.mainData.followDate},
           {label:'无效原因',value:this.mainData.invalidreason},
           {label:'作废原因',value:this.mainData.deletereason},
+          {label:'跟进次数',value:this.mainData.followcount === 0?'0':this.mainData.followcount},
+          /*{label:'转化次数',value:this.mainData.isproject === 0 && this.mainData.iscustomer === 0?'0':this.mainData.isproject + this.mainData.iscustomer },*/
+          {label:'转手次数', value:this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum},
+
         ]
       }
     },

+ 8 - 1
src/components/newLayout/modules/header.vue

@@ -29,7 +29,7 @@
           <div class="flex-align-center flex-between">
             <p><span class="avatar-mini">{{item.enterprisename?item.enterprisename.substr(0, 1):item.sitename.substr(0, 1)}}</span><span>{{item.enterprisename?item.enterprisename:item.sitename}}</span></p>
             <small>{{item.name}}</small>
-        </div>
+          </div>
         </el-dropdown-item>
         <el-dropdown-item divided @click.native="loginOut()">退出登录</el-dropdown-item>
       </el-dropdown-menu>
@@ -65,6 +65,7 @@ export default {
   methods:{
     // 选择登录账号
     selectAccount (item) {
+
       let arr = ['module_info','activeApp','active_modules','folderid']
       arr.forEach(key=>{
         sessionStorage.removeItem(key)
@@ -75,6 +76,12 @@ export default {
       this.basicData.query_userauth().then(()=>{
         this.basicData.querySite_Parameter()
         this.$router.replace({path:'/home'})
+        /*this.accountInfo = item*/
+        this.siteInfos()
+        this.accountInfo = JSON.parse(sessionStorage.getItem('active_account'))
+        this.accountList = JSON.parse(sessionStorage.getItem('account_list')).filter(e=>{
+          return e.siteid !== this.accountInfo.siteid
+        })
       })
     },
     async getWeather () {