Browse Source

Merge remote-tracking branch 'origin/mergeBranch' into mergeBranch

qymljy 2 years ago
parent
commit
6fe99aa7a5

+ 0 - 434
src/Form/projectTask/add copy 2.vue

@@ -1,434 +0,0 @@
-<template>
-  <div>
-    <el-button size="small" type="primary"  @click="onShow">新 建</el-button>
-    <el-drawer
-        title="新建工作任务"
-        :visible.sync="drawer"
-        size="45%"
-        direction="rtl"
-        append-to-body
-        :show-close="false"
-        @close="onClose">
-      <div class="drawer__panel" style="margin-bottom: 0px;padding-bottom: 0px">
-        <el-row>
-          <el-form :model="form" :rules="rules" ref="formData"  size="mini" label-position="right">
-            <el-col :span="20">
-              <el-form-item label="工作任务:" label-width="85px" prop="taskname">
-                <el-input v-model="form.taskname" autocomplete="off" placeholder="输入工作任务"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="4">
-              <el-form-item label="顺序:" label-width="80px">
-                <el-input  v-model="form.sequence" autocomplete="off" placeholder="输入顺序"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="关键任务:" label-width="85px">
-                <el-radio v-model="form.important" label="1">是</el-radio>
-                <el-radio v-model="form.important" label="0">否</el-radio>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item >
-                <el-checkbox v-model="form.onparties" @change="onPartiesChange">关联客户对象</el-checkbox>
-                <AssociateCustomerObject ref="onparties" :data="form" class="inline-16" style="margin-left: 10px" @selectObject="selectObject"></AssociateCustomerObject>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item >
-                <el-checkbox v-model="form.onstage" style="font-size: 14px" @change="onOnstageChange">关联项目阶段</el-checkbox>
-                <AssociatedProjectPhases ref="onstage" :data="form" class="inline-16" style="margin-left: 10px" @selectStage="selectStage"></AssociatedProjectPhases>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
-      </div>
-      <div class="drawer__panel">
-        <el-row>
-          <el-form ref="form"  size="mini" label-position="right">
-            <el-col :span="22">
-              <el-form-item label="评估项:" label-width="60px" >
-              </el-form-item>
-            </el-col>
-            <el-col :span="2">
-              <el-form-item  style="float: right;width: 100%;">
-                <el-button size="small" type="primary" plain style="width: 100%" @click="addOptions">添加</el-button>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24" >
-              <el-form-item  style="float: right;width: 100%;text-align: center">
-                <el-table
-                    :data="form.projtaskmag_options"
-                    ref="refTable"
-                    style="width: 100%"
-                    @row-click="rowClick">
-                  <el-table-column
-                      prop="optionname"
-                      label="任务内容"
-                      width="360">
-                    <template slot-scope="scope">
-                      <el-input @change="inputChange(scope.$index)" v-model="scope.row.optionname" placeholder=""></el-input>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      prop="remarks"
-                      label="描述"
-                      width="0">
-                    <template slot-scope="scope">
-                      <el-input v-model="scope.row.remarks" placeholder=""></el-input>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      prop="score"
-                      width="160"
-                      label="独立项分值">
-                    <template slot-scope="scope">
-                      <el-input v-model="scope.row.score" placeholder=""></el-input>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      prop="operation"
-                      width="100"
-                      label="操作">
-                    <template slot-scope="scope">
-                      <el-button type="text" size="mini" :disabled="form.projtaskmag_options.length === 1">删除</el-button>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
-      </div>
-      <div class="drawer__panel">
-        <el-row>
-          <el-form ref="form"  size="mini" label-position="right">
-            <el-col :span="22">
-              <el-form-item label="关联信息:" label-width="75px" >
-              </el-form-item>
-            </el-col>
-            <el-col :span="24" >
-              <el-form-item  style="float: right;width: 100%;text-align: center">
-                <el-table
-                  v-if="showChildTable"
-                    :data="form.projtaskmag_options[n_index].projtaskmag_optionscore"
-                    border
-                    style="width: 100%"
-                    :span-method="arraySpanMethod">
-                  <el-table-column
-                      v-if="form.onparties"
-                      prop="partiestype"
-                      label="客户对象"
-                      >
-                  </el-table-column>
-                  <el-table-column
-                      v-if="form.onstage"
-                      prop="stagename"
-                      label="项目阶段"
-                     >
-                  </el-table-column>
-                  <el-table-column
-                      prop="score"
-                      label="分值">
-                      <template slot-scope="scope">
-                        <el-input v-model="scope.row.score" placeholder="" @change="onScoreChange"></el-input>
-                      </template>
-                  </el-table-column>
-                </el-table>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
-      </div>
-      <div class="fixed__btn__panel">
-        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
-      </div>
-    </el-drawer>
-  </div>
-</template>
-
-<script>
-import AssociateCustomerObject from '@/HDrpManagement/projectTask/modules/AssociateCustomerObject.vue'
-import AssociatedProjectPhases from '@/HDrpManagement/projectTask/modules/AssociatedProjectStage.vue'
-export default {
-  name: "add",
-  components:{AssociateCustomerObject,AssociatedProjectPhases},
-  data(){
-    return {
-      drawer:false,
-      input:'',
-      associatedData:[],
-      form:{
-        "sa_projtaskmagid": 0,
-        "taskname": "",
-        "sequence": 0,
-        "important": '0',
-        "onparties": false,
-        "onstage": false,
-        "projtaskmag_options": [
-          {
-            "sa_projtaskmag_optionsid": 0,
-            "optionname": "",
-            "remarks": "",
-            "score": 0,
-            "index":0,
-            "projtaskmag_optionscore": [
-              {
-                "sa_projtaskmag_optionscoreid":0,
-                "partiestype": "业主",
-                "sa_projstagemagid": "",
-                "score": 0
-              }
-            ]
-          },
-        ]
-      },
-      rules:{
-        taskname: [
-          { required: true, message: '请输入工作任务', trigger: 'blur' }
-        ],
-      },
-      oldData:[],
-      oldstage:[],
-      n_index:0,
-      showChildTable:true
-    }
-  },
-  methods:{
-    onShow(){
-      this.drawer = true
-    },
-    selectObject(val){
-      val.length === 0?this.form.onparties = 0:""
-      this.oldData = val
-      if (this.oldstage.length > 0) {
-        this.selectStage(this.oldstage)
-      } else {
-        this.associatedData = this.oldData.sort()
-      }
-      this.refreChildTable()
-    },
-    selectStage(val){
-       val.length === 0?this.form.onstage = 0:""
-      let arr = []
-      this.oldstage = val
-
-      if (this.oldData.length === 0) {
-        this.associatedData = val.map(e=>{
-          return {
-            partiestype:'',
-            stagename:e.stagename,
-            sa_projstagemagid:e.sa_projstagemagid
-          }
-        })
-      } else {
-        if (this.oldstage.length > 0) {
-          this.oldData.forEach(e=>{
-            val.forEach(vl=>{
-              arr.push({
-                partiestype:e.partiestype,
-                stagename:vl.stagename,
-                sa_projstagemagid:vl.sa_projstagemagid
-              })
-            })
-          })
-          this.associatedData = arr.sort()
-        } else {
-          this.associatedData = this.oldData.sort()
-        }
-      }
-      this.refreChildTable()
-    },
-    inputChange (index) {
-      this.n_index = index
-      this.form.projtaskmag_options[index].projtaskmag_optionscore = this.associatedData
-    },
-    onScoreChange (row) {
-      this.form.projtaskmag_options[this.n_index].projtaskmag_optionscore = this.associatedData
-      this.$set(this.form.projtaskmag_options,this.n_index,this.form.projtaskmag_options[this.n_index])
-      console.log(this.form.projtaskmag_options)
-    },
-    onPartiesChange (val) {
-      this.$refs.onparties.drawer = val
-      val?'':this.oldData = []
-      val?'':this.associatedData = []
-      val?'':this.associatedData = this.oldstage.map(e=>{
-        return {
-          partiestype:'',
-          stagename:e.stagename,
-          sa_projstagemagid:e.sa_projstagemagid
-        }
-      })
-      this.refreChildTable()
-    },
-    onOnstageChange (val) {
-      this.$refs.onstage.drawer = val
-      val?'':this.associatedData = this.oldData.map(e=>{
-        return {
-          partiestype:e.partiestype,
-          stagename:'',
-          sa_projstagemagid:e.sa_projstagemagid
-        }
-      })
-      this.refreChildTable()
-    },
-    onSubmit(){
-      if (this.form.onstage){
-        this.form.onstage = 1
-      }else {
-        this.form.onstage = 0
-      }
-      if (this.form.onparties){
-        this.form.onparties = 1
-      }else {
-        this.form.onparties = 0
-      }
-      console.log(this.form.projtaskmag_options)
-      this.form.stage
-      /*this.$refs.formData.validate(async(valid)=>{
-        if (!valid) return false
-        const res = await this.$api.requested({
-          "id": "20221128144204",
-          "content": this.form
-        })
-        this.tool.showMessage(res,()=>{
-          this.drawer = false
-          this.$refs.formData.resetFields()
-          this.form = {
-            "sa_projtaskmagid": 0,
-            "taskname": "",
-            "sequence": 0,
-            "important": '0',
-            "onparties": false,
-            "onstage": false,
-            "parties": [],
-            "stage": [],
-            "projtaskmag_options": [
-              {
-                "sa_projtaskmag_optionsid": 0,
-                "optionname": "",
-                "remarks": "",
-                "score": "",
-                "projtaskmag_optionscore": [
-                  {
-                    "sa_projtaskmag_optionscoreid":0,
-                    "partiestype": "",
-                    "sa_projstagemagid": '',
-                    "score": ''
-                  }
-                ]
-              },
-            ]
-          }
-          this.$emit("onSuccess")
-        })
-      })*/
-    },
-    addOptions(){
-      this.form.projtaskmag_options.push({
-        "sa_projtaskmag_optionsid": 0,
-        "optionname": "",
-        "remarks": "",
-        "score": 0,
-        "index":this.form.projtaskmag_options.length,
-        "projtaskmag_optionscore": this.associatedData.filter(e=>{
-          e.score = 0
-          return e
-        })
-      })
-      console.log(this.form.projtaskmag_options)
-    },
-    onClose(){
-      this.$refs.formData.resetFields()
-      this.form = {
-        "sa_projtaskmagid": 0,
-        "taskname": "",
-        "sequence": 0,
-        "important": '0',
-        "onparties": false,
-        "onstage": false,
-        "parties": [],
-        "stage": [],
-        "projtaskmag_options": [
-          {
-            "sa_projtaskmag_optionsid": 0,
-            "optionname": "",
-            "remarks": "",
-            "score": "",
-            "projtaskmag_optionscore": [
-              {
-                "sa_projtaskmag_optionscoreid":0,
-                "partiestype": "",
-                "sa_projstagemagid": '',
-                "score": ''
-              }
-            ]
-          },
-        ]
-      }
-    },
-    arraySpanMethod({ row, column, rowIndex, columnIndex }) {
-      // 合并行列产品名字相同合并(计算组长度以内的列,需要进行合并操作的列)
-      let mergeLength = 1;//需要进行横纵合并的列
-      if (columnIndex < mergeLength) {
-        let finArray = [1,1];
-        // 处理行数据
-        let cgname = Object.keys(row)[columnIndex]
-        console.log(cgname,'---')
-        // let cgname = 'value'
-        if(rowIndex === 0 || row[cgname] !== this.associatedData[rowIndex-1][cgname]){
-          let rowspan = 1;
-          //计算需要进行合并操作的行
-          for(let i=0; i<this.associatedData.length-1; i++){
-            // 只合并连续的
-            if(this.associatedData[i][cgname] === row[cgname] && this.associatedData[i+1][cgname] === row[cgname]){
-              rowspan ++;
-            }
-          }
-          finArray[0] = rowspan;
-        }else {
-          finArray[0] = 0;
-        }
-
-        // 处理列数据
-        let colkeys = Object.keys(row);
-        let cgvalue = Object.values(row)[columnIndex]
-        if(columnIndex ===0 || row[colkeys[columnIndex-1]] !== row[colkeys[columnIndex]]){
-          let colspan = 1;
-          //计算需要进行合并操作的列
-          for(let i=columnIndex; i<mergeLength; i++) {
-            // 只合并连续的
-            if (row[colkeys[i]]===cgvalue && row[colkeys[i+1]]===cgvalue && i+1<mergeLength) {
-              colspan ++;
-            }
-          }
-          finArray[1] = colspan;
-        } else {
-          finArray[1] = 0;
-        }
-        return finArray
-      }
-    },
-    noop(){},
-    refreChildTable () {
-      this.showChildTable = false
-      setTimeout(() => {
-        this.showChildTable = true
-      }, 100);
-    },
-    cellClick (row, column, cell, event) {
-      console.log(row, column, cell, event)
-    },
-    rowClick (row) {
-      console.log(row)
-    }
-  },
-  mounted() {
-  }
-}
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 386
src/Form/projectTask/add copy.vue

@@ -1,386 +0,0 @@
-<template>
-  <div>
-    <el-button size="small" type="primary"  @click="onShow">新 建</el-button>
-    <el-drawer
-        title="新建工作任务"
-        :visible.sync="drawer"
-        size="45%"
-        direction="rtl"
-        append-to-body
-        :show-close="false"
-        @close="onClose">
-      <div class="drawer__panel" style="margin-bottom: 0px;padding-bottom: 0px">
-        <el-row>
-          <el-form :model="form" :rules="rules" ref="formData"  size="mini" label-position="right">
-            <el-col :span="20">
-              <el-form-item label="工作任务:" label-width="85px" prop="taskname">
-                <el-input v-model="form.taskname" autocomplete="off" placeholder="输入工作任务"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="4">
-              <el-form-item label="顺序:" label-width="80px">
-                <el-input  v-model="form.sequence" autocomplete="off" placeholder="输入顺序"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="关键任务:" label-width="85px">
-                <el-radio v-model="form.important" label="1">是</el-radio>
-                <el-radio v-model="form.important" label="0">否</el-radio>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item >
-                <el-checkbox v-model="form.onparties">关联客户对象</el-checkbox>
-                <AssociateCustomerObject ref="onparties" :data="form" class="inline-16" style="margin-left: 10px" @selectObject="selectObject"></AssociateCustomerObject>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item >
-                <el-checkbox v-model="form.onstage" style="font-size: 14px">关联项目阶段</el-checkbox>
-                <AssociatedProjectPhases ref="onstage" :data="form" class="inline-16" style="margin-left: 10px" @selectStage="selectStage"></AssociatedProjectPhases>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
-      </div>
-      <div class="drawer__panel">
-        <el-row>
-          <el-form ref="form"  size="mini" label-position="right">
-            <el-col :span="22">
-              <el-form-item label="评估项:" label-width="60px" >
-              </el-form-item>
-            </el-col>
-            <el-col :span="2">
-              <el-form-item  style="float: right;width: 100%;">
-                <el-button size="small" type="primary" plain style="width: 100%" @click="addOptions">添加</el-button>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24" >
-              <el-form-item  style="float: right;width: 100%;text-align: center">
-                <el-table
-                    :data="form.projtaskmag_options"
-                    style="width: 100%">
-                  <el-table-column
-                      prop="optionname"
-                      label="任务内容"
-                      width="360">
-                    <template slot-scope="scope">
-                      <el-input @change="inputChange(scope.$index)" v-model="scope.row.optionname" placeholder=""></el-input>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      prop="remarks"
-                      label="描述"
-                      width="0">
-                    <template slot-scope="scope">
-                      <el-input v-model="scope.row.remarks" placeholder=""></el-input>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      prop="score"
-                      width="160"
-                      label="独立项分值">
-                    <template slot-scope="scope">
-                      <el-input v-model="scope.row.score" placeholder=""></el-input>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      prop="operation"
-                      width="100"
-                      label="操作">
-                    <template slot-scope="scope">
-                      <el-button type="text" size="mini" :disabled="form.projtaskmag_options.length === 1">删除</el-button>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
-      </div>
-      <div class="drawer__panel">
-        <el-row>
-          <el-form ref="form"  size="mini" label-position="right">
-            <el-col :span="22">
-              <el-form-item label="关联信息:" label-width="75px" >
-              </el-form-item>
-            </el-col>
-            <el-col :span="24" >
-              <el-form-item  style="float: right;width: 100%;text-align: center">
-                <el-table
-                    :data="associatedData"
-                    border
-                    style="width: 100%">
-                  <el-table-column
-                      v-if="form.onparties"
-                      prop="optionname"
-                      label="客户对象"
-                      >
-                    <template slot-scope="scope">
-                      <span>{{scope.row}}</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      v-if="form.onstage"
-                      prop="remarks"
-                      label="项目阶段"
-                     >
-                    <template slot-scope="scope">
-                      <div v-if="form.onparties">
-                        <div v-for="(item,index) in form.stage" :key="index">
-                          <span>{{item}}</span>
-                        </div>
-                      </div>
-                      <div v-else>
-                        <span>{{scope.row}}</span>
-                      </div>
-
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                      v-if="form.onparties || form.onstage"
-                      prop="score"
-                      label="分值">
-                    <template slot-scope="scope">
-                      <div v-if="form.onparties">
-                        <div v-for="(item,index) in form.parties" :key="index">
-                          <template slot-scope="scope">
-                            <el-input v-model="scope.row" placeholder=""></el-input>
-                          </template>
-                        </div>
-                      </div>
-                      <div v-else-if="form.onstage">
-                        <div v-for="(item,index) in form.stage" :key="index">
-                          <template slot-scope="scope">
-                            <el-input v-model="scope.row" placeholder=""></el-input>
-                          </template>
-                        </div>
-                      </div>
-
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
-      </div>
-      <div class="fixed__btn__panel">
-        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
-      </div>
-    </el-drawer>
-  </div>
-</template>
-
-<script>
-import AssociateCustomerObject from '@/HDrpManagement/projectTask/modules/AssociateCustomerObject'
-import AssociatedProjectPhases from '@/HDrpManagement/projectTask/modules/AssociatedProjectStage'
-export default {
-  name: "add",
-  components:{AssociateCustomerObject,AssociatedProjectPhases},
-  data(){
-    return {
-      drawer:false,
-      input:'',
-      associatedData:[],
-      form:{
-        "sa_projtaskmagid": 0,
-        "taskname": "",
-        "sequence": 0,
-        "important": '0',
-        "onparties": false,
-        "onstage": false,
-        "parties": [],
-        "stage": [],
-        "projtaskmag_options": [
-          {
-            "sa_projtaskmag_optionsid": 0,
-            "optionname": "",
-            "remarks": "",
-            "score": 0,
-            "projtaskmag_optionscore": [
-              {
-                "sa_projtaskmag_optionscoreid":0,
-                "partiestype": "",
-                "sa_projstagemagid": "",
-                "score": 0
-              }
-            ]
-          },
-        ]
-      },
-      rules:{
-        taskname: [
-          { required: true, message: '请输入工作任务', trigger: 'blur' }
-        ],
-      }
-    }
-  },
-  methods:{
-    onShow(){
-      this.drawer = true
-    },
-    selectObject(val){
-      this.form.parties = val
-      if (this.form.onparties && this.form.onstage){
-        this.associatedData = this.form.parties
-      }else if(this.form.onparties){
-        this.associatedData = this.form.parties
-      }else if(this.form.onstage){
-        this.associatedData = this.form.stage
-      }
-    },
-    selectStage(val){
-      this.form.stage = val
-      if (this.form.onparties && this.form.onstage){
-        this.associatedData = this.form.parties
-      }else if(this.form.onparties){
-        this.associatedData = this.form.parties
-      }else if(this.form.onstage){
-        this.associatedData = this.form.stage
-      }
-    },
-    inputChange (index) {
-      this.associatedData[index].partiestype
-      
-    },
-    onSubmit(){
-      if (this.form.onstage){
-        this.form.onstage = 1
-      }else {
-        this.form.onstage = 0
-      }
-      if (this.form.onparties){
-        this.form.onparties = 1
-      }else {
-        this.form.onparties = 0
-      }
-      console.log(this.form.projtaskmag_options)
-      this.form.stage
-      /*this.$refs.formData.validate(async(valid)=>{
-        if (!valid) return false
-        const res = await this.$api.requested({
-          "id": "20221128144204",
-          "content": this.form
-        })
-        this.tool.showMessage(res,()=>{
-          this.drawer = false
-          this.$refs.formData.resetFields()
-          this.form = {
-            "sa_projtaskmagid": 0,
-            "taskname": "",
-            "sequence": 0,
-            "important": '0',
-            "onparties": false,
-            "onstage": false,
-            "parties": [],
-            "stage": [],
-            "projtaskmag_options": [
-              {
-                "sa_projtaskmag_optionsid": 0,
-                "optionname": "",
-                "remarks": "",
-                "score": "",
-                "projtaskmag_optionscore": [
-                  {
-                    "sa_projtaskmag_optionscoreid":0,
-                    "partiestype": "",
-                    "sa_projstagemagid": '',
-                    "score": ''
-                  }
-                ]
-              },
-            ]
-          }
-          this.$emit("onSuccess")
-        })
-      })*/
-    },
-    addOptions(){
-      console.log(this.form.projtaskmag_options)
-      this.form.projtaskmag_options.push({
-        "sa_projtaskmag_optionsid": 0,
-        "optionname": "",
-        "remarks": "",
-        "score": 0,
-        "projtaskmag_optionscore": [
-          {
-            "sa_projtaskmag_optionscoreid":0,
-            "partiestype": "",
-            "sa_projstagemagid": '',
-            "score": ''
-          }
-        ]
-      })
-    },
-    onClose(){
-      this.$refs.formData.resetFields()
-      this.form = {
-        "sa_projtaskmagid": 0,
-        "taskname": "",
-        "sequence": 0,
-        "important": '0',
-        "onparties": false,
-        "onstage": false,
-        "parties": [],
-        "stage": [],
-        "projtaskmag_options": [
-          {
-            "sa_projtaskmag_optionsid": 0,
-            "optionname": "",
-            "remarks": "",
-            "score": "",
-            "projtaskmag_optionscore": [
-              {
-                "sa_projtaskmag_optionscoreid":0,
-                "partiestype": "",
-                "sa_projstagemagid": '',
-                "score": ''
-              }
-            ]
-          },
-        ]
-      }
-    }
-  },
-  mounted() {
-    if (this.form.onparties && this.form.onstage){
-      this.associatedData = this.form.parties
-    }else if(this.form.onparties){
-      this.associatedData = this.form.parties
-    }else if(this.form.onstage){
-      this.associatedData = this.form.stage
-    }
-  },
-  watch:{
-    "form.onparties":function (val){
-      if (!val){
-        this.form.parties = []
-        this.associatedData = this.form.stage
-      }else if (val && this.form.onstage){
-        console.log(this.form)
-        this.associatedData = this.form.parties
-        this.$refs.onparties.drawer = true
-      }else if (val){
-        this.$refs.onparties.drawer = true
-      }
-    },
-    "form.onstage":function (val){
-      if (!val){
-        this.form.stage = []
-        this.associatedData = this.form.parties
-      }else if (val && this.form.onparties){
-        this.associatedData = this.form.parties
-        this.$refs.onstage.drawer = true
-      }else if (val){
-        this.$refs.onstage.drawer = true
-      }
-    }
-  }
-}
-</script>
-
-<style scoped>
-
-</style>

+ 254 - 157
src/Form/projectTask/add.vue

@@ -8,66 +8,94 @@
       append-to-body
       size="80%">
       <div class="drawer__panel">
-        <el-input v-model="form.taskname"></el-input>
-        <div>
-          <el-checkbox v-model="form.onparties" :true-label="1" :false-label="0">关联客户对象</el-checkbox>
-          <AssociateCustomerObject ref="onparties" :data="form" class="inline-16" style="margin-left: 10px" @selectObject="selectObject"></AssociateCustomerObject>
+        <el-row :gutter="20">
+          <el-form :model="form" class="demo-form-inline" size="small" label-position="rigth" label-width="90px">
+            <el-col :span="20">
+              <el-form-item  style="width:100%" label="工作任务">
+                <el-input style="width:100%" v-model="form.taskname" placeholder="输入工作任务"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="排序">
+                <el-input v-model="form.sequence"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="关键任务">
+                <el-radio-group class="inline-16" v-model="form.important">
+                  <el-radio :label="1">是</el-radio>
+                  <el-radio :label="0">否</el-radio>
+                </el-radio-group>
+
+                <div class="inline-16">
+                  <el-checkbox v-model="form.onparties" :true-label="1" :false-label="0" @change="onPartiesChange">关联客户对象</el-checkbox>
+                  <AssociateCustomerObject ref="onparties" :data="form" class="inline-16" style="margin-left: 10px" @selectObject="selectObject"></AssociateCustomerObject>
+                </div>
+                <div class="inline-16">
+                  <el-checkbox v-model="form.onstage" :true-label="1" :false-label="0" style="font-size: 14px" @change="onOnstageChange">关联项目阶段</el-checkbox>
+                  <AssociatedProjectPhases ref="onstage" :data="form" class="inline-16" style="margin-left: 10px" @selectStage="selectStage"></AssociatedProjectPhases>
+                </div>
+              </el-form-item>
+            </el-col>
+            
+          </el-form>
+        </el-row>
+        <div class="normal-margin">
+          <div class="normal-margin flex-align-center flex-between">
+            <p class="normal-title">评估项</p>
+            <el-button type="primary" size="small" @click="addOptions">添加任务</el-button>
+          </div>
+          <el-table
+              :data="form.projtaskmag_options"
+              style="width: 100%"
+              @row-click="rowClick"
+              :row-class-name="tableRowClassName"
+              highlight-current-row
+              border>
+            <el-table-column
+              type="index"
+              width="50">
+            </el-table-column>
+            <el-table-column
+                prop="optionname"
+                label="任务内容"
+                width="360">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.optionname" placeholder=""></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="remarks"
+                label="描述"
+                width="0">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.remarks" placeholder=""></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="score"
+                width="160"
+                label="独立项分值">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.score" placeholder=""></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="operation"
+                width="100"
+                label="操作">
+              <template slot-scope="scope">
+                <el-button type="text" size="mini" :disabled="form.projtaskmag_options.length === 1" @click="deleteOption(scope.$index)">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
         </div>
         <div>
-          <el-checkbox v-model="form.onstage" :true-label="1" :false-label="0" style="font-size: 14px">关联项目阶段</el-checkbox>
-          <AssociatedProjectPhases ref="onstage" :data="form" class="inline-16" style="margin-left: 10px" @selectStage="selectStage"></AssociatedProjectPhases>
-        </div>
-        <el-table
-            v-if="show"
-            :data="form.projtaskmag_options"
-            style="width: 100%"
-            @row-click="rowClick"
-            :row-class-name="tableRowClassName"
-            border>
-          <el-table-column
-            type="index"
-            width="50">
-          </el-table-column>
-          <el-table-column
-              prop="optionname"
-              label="任务内容"
-              width="360">
-            <template slot-scope="scope">
-              <el-input @change="inputChange(scope.$index)" v-model="scope.row.optionname" placeholder=""></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column
-              prop="remarks"
-              label="描述"
-              width="0">
-            <template slot-scope="scope">
-              <el-input v-model="scope.row.remarks" placeholder=""></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column
-              prop="score"
-              width="160"
-              label="独立项分值">
-            <template slot-scope="scope">
-              <el-input v-model="scope.row.score" placeholder=""></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column
-              prop="operation"
-              width="100"
-              label="操作">
-            <template slot-scope="scope">
-              <el-button type="text" size="mini" :disabled="form.projtaskmag_options.length === 1">删除</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <div v-if="show">
+          <p class="normal-title normal-margin">关联设置({{activeOptions}})</p>
           <el-table
-            v-for="item in form.projtaskmag_options"
-            :key="item.index"
-              :data="item.projtaskmag_optionscore"
-              border
-              style="width: 100%">
+            :data="optionscore"
+            border
+            style="width: 100%">
             <el-table-column
                 v-if="form.onparties"
                 prop="partiestype"
@@ -84,12 +112,17 @@
                 prop="score"
                 label="分值">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.score" placeholder="" @change="onScoreChange(item.optionname)"></el-input>
+                  <el-input v-model="scope.row.score" placeholder="" @change="onScoreChange"></el-input>
+                  <!-- <input type="text" v-model="scope.row.score" @input="onScoreChange"> -->
                 </template>
             </el-table-column>
           </el-table>
         </div>
       </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
     </el-drawer>
   </div>
 </template>
@@ -107,126 +140,134 @@
         show:true,
         form:{
           "sa_projtaskmagid": 0,
-          "taskname": "测试111",
+          "taskname": "",
           "sequence": 0,
           "important": 0,
-          "onparties": 1,
-          "onstage": 1,
-          "projtaskmag_options": [
-              {
-                "sa_projtaskmag_optionsid": 20,
-                "optionname": "测试1",
-                "remarks": "测试1",
-                "score": 0,
-                "projtaskmag_optionscore": [
-                    {
-                        "sa_projtaskmag_optionscoreid":13,
-                        "partiestype": "设计院",
-                        "sa_projstagemagid": 1,
-                        "score": 10
-                    }
-                ]
-              },
-              {
-                "sa_projtaskmag_optionsid": 21,
-                "optionname": "测试2",
-                "remarks": "测试2",
-                "score": 0,
-                "projtaskmag_optionscore": [
-                    {
-                        "sa_projtaskmag_optionscoreid":15,
-                        "partiestype": "业主",
-                        "sa_projstagemagid": 1,
-                        "score": 5
-                    }
-                ]
-              }
-          ]
+          "onparties": 0,
+          "onstage": 0,
+          "projtaskmag_options": []
         },
-        optionscore:[]
+        oldData:[],
+        oldStage:[],
+        optionscore:[],
+        optionscoreStr:'',
+        n_index:null,
+        activeOptions:null
       }
     },
     methods:{
       selectObject (val) {
-        // this.form.projtaskmag_options = this.form.projtaskmag_options.forEach(e=>{
-        //   e.projtaskmag_optionscore = val
-        //   return e
-        // })
-        val.forEach(e=>{
-          this.form.projtaskmag_options.forEach(p=>{
-            p.projtaskmag_optionscore.push(e)
-          })
-        })
-        this.refreshTable()
-        console.log(this.form.projtaskmag_options)
+        this.oldData = val
+        if (val.length === 0) {
+          this.form.onparties = 0
+        } else {
+          if (this.oldStage.length > 0) {
+            let arr = []
+            this.oldData.forEach(e=>{
+              this.oldStage.forEach(vl=>{
+                arr.push({
+                  sa_projtaskmag_optionscoreid:0,
+                  partiestype:e.partiestype,
+                  stagename:vl.stagename,
+                  sa_projstagemagid:vl.sa_projstagemagid,
+                  score:0
+                })
+              })
+            })
+            this.optionscore = arr.sort()
+          } else {
+            this.optionscore = val
+          }
+        }
       },
       selectStage (val) {
-        let old = this.form.projtaskmag_options[0].projtaskmag_optionscore
-        console.log(old)
-        let arr = []
-        old.forEach(e=>{
-          val.forEach(vl=>{
-            arr.push({
-              partiestype:e.partiestype,
-              stagename:vl.stagename,
-              sa_projstagemagid:vl.sa_projstagemagid,
-              score:0
-            })
-          })
-        })
-        this.form.projtaskmag_options = this.form.projtaskmag_options.map(e=>{
-          e.projtaskmag_optionscore = arr.sort()
-          return e
-        })
-        this.refreshTable()
+        this.oldStage = val
+        if (val.length === 0) {
+          this.form.onstage = 0
+        } else {
+           if (this.oldData.length > 0) {
+              let arr = []
+              this.oldData.forEach(e=>{
+                this.oldStage.forEach(vl=>{
+                  arr.push({
+                    sa_projtaskmag_optionscoreid:0,
+                    partiestype:e.partiestype,
+                    stagename:vl.stagename,
+                    sa_projstagemagid:vl.sa_projstagemagid,
+                    score:0
+                  })
+                })
+              })
+              this.optionscore = arr.sort()
+            } else {
+              this.optionscore = val
+            }
+        }
       },
       rowClick (row, column, event) {
-        console.log(row, column, event)
-        this.optionscore  = row.projtaskmag_optionscore
+        try {
+          this.n_index = row.index
+          this.activeOptions = this.form.projtaskmag_options[this.n_index].optionname
+          this.optionscore.forEach(e=>{
+            e.score = 0
+          })
+          if (typeof this.form.projtaskmag_options[row.index].projtaskmag_optionscore === 'string') {
+            this.optionscore = JSON.parse(this.form.projtaskmag_options[row.index].projtaskmag_optionscore)
+          }
+        } catch (error) {
+          
+        }
+        
       },
       onScoreChange (row) {
-        console.log(row)
+        if (!this.activeOptions) return this.$message({
+          message:'请先点击要设置的任务行',
+          type:'error'
+        })
+        this.form.projtaskmag_options[this.n_index].projtaskmag_optionscore = JSON.stringify(this.optionscore)
+        console.log(this.form.projtaskmag_options)
       },
       arraySpanMethod({ row, column, rowIndex, columnIndex }) {
-        // 合并行列产品名字相同合并(计算组长度以内的列,需要进行合并操作的列)
-        let mergeLength = 1;//需要进行横纵合并的列
-        if (columnIndex < mergeLength) {
-          let finArray = [1,1];
-          // 处理行数据
-          let cgname = Object.keys(row)[columnIndex]
-          // let cgname = 'value'
-          if(rowIndex === 0 || row[cgname] !== this.optionscore[rowIndex-1][cgname]){
-            let rowspan = 1;
-            //计算需要进行合并操作的行
-            for(let i=0; i<this.optionscore.length-1; i++){
-              // 只合并连续的
-              if(this.optionscore[i][cgname] === row[cgname] && this.optionscore[i+1][cgname] === row[cgname]){
-                rowspan ++;
-              }
+      // 合并行列产品名字相同合并(计算组长度以内的列,需要进行合并操作的列)
+      let mergeLength = 1;//需要进行横纵合并的列
+      if (columnIndex < mergeLength) {
+        let finArray = [1,1];
+        // 处理行数据
+        let cgname = Object.keys(row)[columnIndex]
+        console.log(cgname,'---')
+        // let cgname = 'value'
+        if(rowIndex === 0 || row[cgname] !== this.optionscore[rowIndex-1][cgname]){
+          let rowspan = 1;
+          //计算需要进行合并操作的行
+          for(let i=0; i<this.optionscore.length-1; i++){
+            // 只合并连续的
+            if(this.optionscore[i][cgname] === row[cgname] && this.optionscore[i+1][cgname] === row[cgname]){
+              rowspan ++;
             }
-            finArray[0] = rowspan;
-          }else {
-            finArray[0] = 0;
           }
+          finArray[0] = rowspan;
+        }else {
+          finArray[0] = 0;
+        }
 
-          // 处理列数据
-          let colkeys = Object.keys(row);
-          let cgvalue = Object.values(row)[columnIndex]
-          if(columnIndex ===0 || row[colkeys[columnIndex-1]] !== row[colkeys[columnIndex]]){
-            let colspan = 1;
-            //计算需要进行合并操作的列
-            for(let i=columnIndex; i<mergeLength; i++) {
-              // 只合并连续的
-              if (row[colkeys[i]]===cgvalue && row[colkeys[i+1]]===cgvalue && i+1<mergeLength) {
-                colspan ++;
-              }
+        // 处理列数据
+        let colkeys = Object.keys(row);
+        let cgvalue = Object.values(row)[columnIndex]
+        if(columnIndex ===0 || row[colkeys[columnIndex-1]] !== row[colkeys[columnIndex]]){
+          let colspan = 1;
+          //计算需要进行合并操作的列
+          for(let i=columnIndex; i<mergeLength; i++) {
+            // 只合并连续的
+            if (row[colkeys[i]]===cgvalue && row[colkeys[i+1]]===cgvalue && i+1<mergeLength) {
+              colspan ++;
             }
-            finArray[1] = colspan;
-          } else {
-            finArray[1] = 0;
           }
-          return finArray
+          finArray[1] = colspan;
+        } else {
+          finArray[1] = 0;
         }
+        return finArray
+      }
       },
       refreshTable() {
         this.show = false
@@ -234,8 +275,64 @@
           this.show = true
         }, 1000);
       },
+      onPartiesChange (val) {
+        if (val === 1) {
+          let arr = []
+
+          this.$refs.onparties.drawer = true
+          this.optionscore = arr.sort()
+        } else {
+          this.oldData = []
+          const res = new Map();
+          this.optionscore = this.optionscore.filter((item) => !res.has(item['stagename']) && res.set(item['stagename'], 1));
+          this.form.projtaskmag_options.forEach(e=>{
+            e.projtaskmag_optionscore = this.optionscore
+          })
+        }
+      },
+      onOnstageChange (val) {
+        if (val === 1) {
+          this.$refs.onstage.drawer = true
+        } else {
+          this.oldStage = []
+          const res = new Map();
+          this.optionscore = this.optionscore.filter((item) => !res.has(item['partiestype']) && res.set(item['partiestype'], 1));
+          this.form.projtaskmag_options.forEach(e=>{
+            e.projtaskmag_optionscore = this.optionscore
+          })
+        }
+      },
       tableRowClassName({row,rowIndex}) {
         row.index = rowIndex
+      },
+      addOptions(){
+        this.form.projtaskmag_options.push({
+          "sa_projtaskmag_optionsid": 0,
+          "optionname": "",
+          "remarks": "",
+          "score": 0,
+          "projtaskmag_optionscore": null
+        })
+      },
+      async onSubmit () {
+        this.form.projtaskmag_options.forEach(e=>{
+          e.projtaskmag_optionscore = JSON.parse(e.projtaskmag_optionscore)
+        })
+        const res = await this.$api.requested({
+          "id": "20221128144204",
+          "content":this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.drawer = false
+        })
+      },
+      deleteOption (index) {
+        this.form.projtaskmag_options = this.form.projtaskmag_options.filter((e,idx)=>{
+          if (index !== idx) return e
+        })
+        this.activeOptions = ''
+        console.log(this.form.projtaskmag_options)
       }
     }
   }

+ 340 - 8
src/Form/projectTask/edit.vue

@@ -1,15 +1,347 @@
 <template>
   <div>
-    <el-button size="mini" type="primary"  >编 辑</el-button>
+    <el-button size="mini" type="primary" @click="onShow(drawer = true)">编 辑</el-button>
+    <el-drawer
+      title="我是标题"
+      :visible.sync="drawer"
+      direction="rtl"
+      append-to-body
+      size="80%">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" class="demo-form-inline" size="small" label-position="rigth" label-width="90px">
+            <el-col :span="20">
+              <el-form-item  style="width:100%" label="工作任务">
+                <el-input style="width:100%" v-model="form.taskname" placeholder="输入工作任务"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="排序">
+                <el-input v-model="form.sequence"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="关键任务">
+                <el-radio-group class="inline-16" v-model="form.important">
+                  <el-radio :label="1">是</el-radio>
+                  <el-radio :label="0">否</el-radio>
+                </el-radio-group>
+
+                <div class="inline-16">
+                  <el-checkbox disabled v-model="form.onparties" :true-label="1" :false-label="0" @change="onPartiesChange">关联客户对象</el-checkbox>
+                  <!-- <AssociateCustomerObject ref="onparties" :data="form" class="inline-16" style="margin-left: 10px" @selectObject="selectObject"></AssociateCustomerObject> -->
+                </div>
+                <div class="inline-16">
+                  <el-checkbox disabled v-model="form.onstage" :true-label="1" :false-label="0" style="font-size: 14px" @change="onOnstageChange">关联项目阶段</el-checkbox>
+                  <!-- <AssociatedProjectPhases ref="onstage" :data="form" class="inline-16" style="margin-left: 10px" @selectStage="selectStage"></AssociatedProjectPhases> -->
+                </div>
+              </el-form-item>
+            </el-col>
+            
+          </el-form>
+        </el-row>
+        <div class="normal-margin">
+          <div class="normal-margin flex-align-center flex-between">
+            <p class="normal-title">评估项</p>
+            <!-- <el-button type="primary" size="small" @click="addOptions">添加任务</el-button> -->
+          </div>
+          <el-table
+              :data="form.projtaskmag_options"
+              style="width: 100%"
+              @row-click="rowClick"
+              :row-class-name="tableRowClassName"
+              highlight-current-row
+              border>
+            <el-table-column
+              type="index"
+              width="50">
+            </el-table-column>
+            <el-table-column
+                prop="optionname"
+                label="任务内容"
+                width="360">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.optionname" placeholder=""></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="remarks"
+                label="描述"
+                width="0">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.remarks" placeholder=""></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="score"
+                width="160"
+                label="独立项分值">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.score" placeholder=""></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="operation"
+                width="100"
+                label="操作">
+              <template slot-scope="scope">
+                <el-button type="text" size="mini" :disabled="form.projtaskmag_options.length === 1" @click="deleteOption(scope.$index)">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div>
+          <p class="normal-title normal-margin">关联设置({{activeOptions}})</p>
+          <el-table
+            :data="optionscore"
+            border
+            style="width: 100%">
+            <el-table-column
+                v-if="form.onparties"
+                prop="partiestype"
+                label="客户对象"
+                >
+            </el-table-column>
+            <el-table-column
+                v-if="form.onstage"
+                prop="stagename"
+                label="项目阶段"
+                >
+            </el-table-column>
+            <el-table-column
+                prop="score"
+                label="分值">
+                <template slot-scope="scope">
+                  <el-input v-model="scope.row.score" placeholder="" @change="onScoreChange"></el-input>
+                  <!-- <input type="text" v-model="scope.row.score" @input="onScoreChange"> -->
+                </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
   </div>
 </template>
-
 <script>
-export default {
-  name: "edit"
-}
-</script>
+  import AssociateCustomerObject from '@/HDrpManagement/projectTask/modules/AssociateCustomerObject.vue'
+  import AssociatedProjectPhases from '@/HDrpManagement/projectTask/modules/AssociatedProjectStage.vue'
+  export default {
+    components:{
+      AssociateCustomerObject,
+      AssociatedProjectPhases
+    },
+    data () {
+      return {
+        drawer:false,
+        show:true,
+        form:{
+          "sa_projtaskmagid": 0,
+          "taskname": "",
+          "sequence": 0,
+          "important": 0,
+          "onparties": 0,
+          "onstage": 0,
+          "projtaskmag_options": []
+        },
+        oldData:[],
+        oldStage:[],
+        optionscore:[],
+        optionscoreStr:'',
+        n_index:null,
+        activeOptions:null
+      }
+    },
+    methods:{
+      onShow () {
+        this.queryData()
+      },
+      async queryData () {
+        const res = await this.$api.requested({
+          "id": 20221128144104,
+          "content": {
+            "sa_projtaskmagid":this.$route.query.id
+          }
+        })
+        this.form = res.data
+      },
+      selectObject (val) {
+        this.oldData = val
+        if (val.length === 0) {
+          this.form.onparties = 0
+        } else {
+          if (this.oldStage.length > 0) {
+            let arr = []
+            this.oldData.forEach(e=>{
+              this.oldStage.forEach(vl=>{
+                arr.push({
+                  sa_projtaskmag_optionscoreid:0,
+                  partiestype:e.partiestype,
+                  stagename:vl.stagename,
+                  sa_projstagemagid:vl.sa_projstagemagid,
+                  score:0
+                })
+              })
+            })
+            this.optionscore = arr.sort()
+          } else {
+            this.optionscore = val
+          }
+        }
+      },
+      selectStage (val) {
+        this.oldStage = val
+        if (val.length === 0) {
+          this.form.onstage = 0
+        } else {
+           if (this.oldData.length > 0) {
+              let arr = []
+              this.oldData.forEach(e=>{
+                this.oldStage.forEach(vl=>{
+                  arr.push({
+                    sa_projtaskmag_optionscoreid:0,
+                    partiestype:e.partiestype,
+                    stagename:vl.stagename,
+                    sa_projstagemagid:vl.sa_projstagemagid,
+                    score:0
+                  })
+                })
+              })
+              this.optionscore = arr.sort()
+            } else {
+              this.optionscore = val
+            }
+        }
+      },
+      rowClick (row, column, event) {
+        try {
+          this.n_index = row.index
+          this.activeOptions = this.form.projtaskmag_options[this.n_index].optionname
+          this.optionscore = this.form.projtaskmag_options[row.index].projtaskmag_optionscore
+        } catch (error) {
+          
+        }
+        
+      },
+      onScoreChange (row) {
+        if (!this.activeOptions) return this.$message({
+          message:'请先点击要设置的任务行',
+          type:'error'
+        })
+        this.form.projtaskmag_options[this.n_index].projtaskmag_optionscore = this.optionscore
+      },
+      arraySpanMethod({ row, column, rowIndex, columnIndex }) {
+      // 合并行列产品名字相同合并(计算组长度以内的列,需要进行合并操作的列)
+      let mergeLength = 1;//需要进行横纵合并的列
+      if (columnIndex < mergeLength) {
+        let finArray = [1,1];
+        // 处理行数据
+        let cgname = Object.keys(row)[columnIndex]
+        console.log(cgname,'---')
+        // let cgname = 'value'
+        if(rowIndex === 0 || row[cgname] !== this.optionscore[rowIndex-1][cgname]){
+          let rowspan = 1;
+          //计算需要进行合并操作的行
+          for(let i=0; i<this.optionscore.length-1; i++){
+            // 只合并连续的
+            if(this.optionscore[i][cgname] === row[cgname] && this.optionscore[i+1][cgname] === row[cgname]){
+              rowspan ++;
+            }
+          }
+          finArray[0] = rowspan;
+        }else {
+          finArray[0] = 0;
+        }
 
-<style scoped>
+        // 处理列数据
+        let colkeys = Object.keys(row);
+        let cgvalue = Object.values(row)[columnIndex]
+        if(columnIndex ===0 || row[colkeys[columnIndex-1]] !== row[colkeys[columnIndex]]){
+          let colspan = 1;
+          //计算需要进行合并操作的列
+          for(let i=columnIndex; i<mergeLength; i++) {
+            // 只合并连续的
+            if (row[colkeys[i]]===cgvalue && row[colkeys[i+1]]===cgvalue && i+1<mergeLength) {
+              colspan ++;
+            }
+          }
+          finArray[1] = colspan;
+        } else {
+          finArray[1] = 0;
+        }
+        return finArray
+      }
+      },
+      refreshTable() {
+        this.show = false
+        setTimeout(() => {
+          this.show = true
+        }, 1000);
+      },
+      onPartiesChange (val) {
+        if (val === 1) {
+          let arr = []
 
-</style>
+          this.$refs.onparties.drawer = true
+          this.optionscore = arr.sort()
+        } else {
+          this.oldData = []
+          const res = new Map();
+          this.optionscore = this.optionscore.filter((item) => !res.has(item['stagename']) && res.set(item['stagename'], 1));
+          this.form.projtaskmag_options.forEach(e=>{
+            e.projtaskmag_optionscore = this.optionscore
+          })
+        }
+      },
+      onOnstageChange (val) {
+        if (val === 1) {
+          this.$refs.onstage.drawer = true
+        } else {
+          this.oldStage = []
+          const res = new Map();
+          this.optionscore = this.optionscore.filter((item) => !res.has(item['partiestype']) && res.set(item['partiestype'], 1));
+          this.form.projtaskmag_options.forEach(e=>{
+            e.projtaskmag_optionscore = this.optionscore
+          })
+        }
+      },
+      tableRowClassName({row,rowIndex}) {
+        row.index = rowIndex
+      },
+      addOptions(){
+        this.form.projtaskmag_options.push({
+          "sa_projtaskmag_optionsid": 0,
+          "optionname": "",
+          "remarks": "",
+          "score": 0,
+          "projtaskmag_optionscore": {
+            "sa_projtaskmag_optionscoreid":0,
+            "partiestype": "",
+            "sa_projstagemagid": "",
+            "score": 0
+          }
+        })
+      },
+      async onSubmit () {
+        const res = await this.$api.requested({
+          "id": "20221128144204",
+          "content":this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.drawer = false
+        })
+      },
+      deleteOption (index) {
+        this.form.projtaskmag_options = this.form.projtaskmag_options.filter((e,idx)=>{
+          if (index !== idx) return e
+        })
+        this.activeOptions = ''
+        console.log(this.form.projtaskmag_options)
+      }
+    }
+  }
+</script>

+ 10 - 0
src/HDrpManagement/projectTask/index.vue

@@ -17,6 +17,16 @@
         <div v-if="scope.data.column.columnname === 'important'">
           {{scope.data.column.columnname === 1?'是':'否'}}
         </div>
+        <div v-else-if="scope.data.column.columnname === 'partiestype'">
+          <span v-for="item in scope.data.column.data.partiestype" :key="item.index">
+            {{item}},
+          </span>
+        </div>
+        <div v-else-if="scope.data.column.columnname === 'stage'">
+          <span v-for="item in scope.data.column.data.stage" :key="item.index">
+            {{item}},
+          </span>
+        </div>
         <div v-else-if="scope.data.column.columnname === 'projtaskmag_options'" >
           <div v-for="(item,index) in scope.data.column.data.projtaskmag_options" :key="index" >
             <div v-if="index === 0 && scope.data.column.data.projtaskmag_options.length -1  === index" style="height: 40px;line-height: 40px;vertical-align: center;margin-top:-5px;margin-bottom: -5px">

+ 1 - 0
src/HDrpManagement/projectTask/modules/AssociatedProjectStage.vue

@@ -85,6 +85,7 @@ export default {
     },
     onClose(){
       this.drawer = false
+      this.$emit("selectStage",this.selectStage)
     },
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);

+ 2 - 2
src/HManagement/clueManage/m_activity/index.vue

@@ -29,10 +29,10 @@
       <div class="label_center">
         <p class="search__label">活动状态:</p>
         <el-select v-model="search.status" style="margin-right:10px" size="small" placeholder="请选择活动状态" @change="statusChange" clearable>
-          <el-option label="发布" value="发布">
-          </el-option>
           <el-option label="新建" value="新建">
           </el-option>
+          <el-option label="发布" value="发布">
+          </el-option>
           <el-option label="结束" value="结束">
           </el-option>
         </el-select>

+ 1 - 1
src/SManagement/orderclue_detail/components/delete.vue

@@ -2,7 +2,7 @@
   <div>
     <el-button size="mini" @click="dialog=true" :disabled="disabled">作 废</el-button>
     <el-dialog append-to-body width="30%" title="作废" :visible.sync="dialog">
-      <el-input type="textarea" v-model="deletereason" size="small" placeholder="作废原因"></el-input>
+      <el-input type="textarea" v-model="deletereason" size="small" :autosize="{minRows:6}" placeholder="作废原因"></el-input>
       <div class="dialog-footer">
         <el-button size="small" @click="dialog = false" class="normal-btn-width">取 消</el-button>
         <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>

+ 3 - 3
src/components/normal-basic-layout/details/modules/followUp/addLog.vue

@@ -4,7 +4,7 @@
     <el-dialog title="创建跟进动态" width="600px" append-to-body :visible.sync="dialogFormVisible">
       <el-form :model="form" ref="form" label-position="top" label-width="80px">
         <el-form-item label="跟进动态" prop="content">
-          <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进\动态" autocomplete="off"></el-input>
+          <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item>
           <upload
@@ -49,7 +49,7 @@ export default {
   
   methods:{
     onSuccess(res) {
-      this.attachmentids = [...this.attachmentids,...res.data.attachmentids]
+      this.attachmentids = res.data.attachmentids
     },
     async submitLog () {
       const res = await this.$api.requested({
@@ -68,10 +68,10 @@ export default {
           "ownerid": res.data.sys_datafollowupid,
           "usetype": 'default',
         }
+        this.dialogFormVisible = false
         this.$refs['form'].resetFields();
           
         this.$refs['upload'].toUpload()
-
         this.$emit('onSuccess')
       })
     },

+ 1 - 0
src/components/normal-basic-layout/details/modules/followUp/editLog.vue

@@ -76,6 +76,7 @@ export default {
       })
       this.tool.showMessage(res,()=>{
         this.form.content = ''
+        this.dialogFormVisible = false
         this.$store.dispatch('bindFileToData',{
           "ownertable": 'sys_datafollowup',
           "ownerid": res.data.sys_datafollowupid,

+ 4 - 6
src/components/normal-basic-layout/index.vue

@@ -32,7 +32,7 @@
         </div>
         <div class="flex-align-stretch" style="min-width:800px">
           <slot name="custom"></slot>
-          <el-input style="width:200px;" placeholder="请输入搜索内容" @input="searchChange" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+          <el-input style="width:200px;" placeholder="搜索" suffix-icon="el-icon-search" @input="searchChange" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
           </el-input>
         </div>
       </div>
@@ -251,9 +251,7 @@ export default {
 </script>
 <style>
 .layout_search__panel{
-  display: flex;
   align-items: center;
-  /* margin-top:10px; */
 }
 .layout-header-panel .el-input-group__append, .el-input-group__prepend{
   background-color: #fff !important;
@@ -261,9 +259,9 @@ export default {
   border: 1px solid #dcdfe6 !important;
   cursor: pointer;
 }
-/* .layout_search__panel .el-input__suffix{
-  margin-top:-4px
-} */
+.layout-header-panel .el-input--small .el-input__icon{
+  height: 32px !important;
+}
 </style>
 <style scoped>
 

+ 6 - 2
src/components/upload/preview_upload.vue

@@ -11,6 +11,7 @@
         <i style="color:red;" class="el-icon-delete" @click="handleRemove(index)"></i>
       </div>
       <el-upload
+        ref="upload"
         action="#"
         :on-change="onChange"
         :show-file-list="false"
@@ -65,7 +66,6 @@ export default {
       this.beforeUpload(file.raw)
     },
     beforeUpload (file) {
-      console.log(file)
       var that = this
 
       var fileReader = new FileReader();
@@ -91,6 +91,7 @@ export default {
       })
     },
     toUpload () {
+      console.log(this.fileList)
       this.fileList.forEach(file=>{
         let index = file.name.lastIndexOf(".");
         let ext = file.name.substr(index + 1);
@@ -135,9 +136,12 @@ export default {
       const res = await this.$api.requested(param)
       if (res.code ===  1) {
         this.$emit('onSuccess',res)
-        this.fileList = []
+        // this.fileList = []
         this.fileLinkList = []
+        this.$refs.upload.clearFiles()
       }
+      console.log(this.fileList)
+      
     },
   }
 }

+ 3 - 0
src/style/style.css

@@ -225,4 +225,7 @@ ul{
 }
 .mt-10{
   margin-bottom: 10px;
+}
+.el-dialog__body{
+  padding: 20px !important;
 }

+ 0 - 1
src/utils/basic-data.js

@@ -27,7 +27,6 @@ function getEnterpriseList () {
         }
     },
   }).then(res=>{
-    console.log(res.data);
     
     enterpriseList = res.data
   })