Browse Source

代码上传

zhangqiOMG 2 years ago
parent
commit
248a1cfa9b

+ 58 - 299
src/HDrpManagement/projectChange/modules/modules/stageTask/index.vue

@@ -1,330 +1,89 @@
 <template>
   <div>
-    <el-steps v-if="stageList" :active="calcIndex + 1" align-center>
-      <el-step v-for="(item,index) in stageList" :key="item.sa_projstagetemp_stageid">
-        <div slot="description" class="item" @click="stageClick(index,item)">
-          <div :class="[
-          'content',
-          {'enterStatus':item.active == 1},
-          {'active':clickCurrent == index}
-          ]">
-            <span class="title">{{item.stagename}}</span>
-            <span>{{calcTaskNumber(item)}}/{{item.work.length}}</span>
-          </div>
-        </div>
-      </el-step>  
-    </el-steps>
-    <el-card class="box-card" v-if="stageList">
-      <div slot="header" class="clearfix">
-        <span style="font-weight:bold">阶段任务</span>
-        <el-button 
-          style="border:1px solid #3874F6;color:#3874F6" 
-          :disabled="currentData.active != 0" 
-          size="mini"
-          @click="enterStage"
-        >进入当前阶段</el-button>
-      </div>
-      <div class="task" v-for="(item,index) in currentData.work" :key="index">
-        <div class="task-header">
-          <span class="task-header-title">任务{{index+1}}</span>
-          <span class="task-header-status" v-if="item.finished" style="color:#3874F6">已完成</span>
-          <span class="task-header-status" style="color:#52C41A" v-else-if="item.isfollow">跟进中</span>
-          <span class="task-header-status" v-else>未开始</span>
-        </div>
-        <div class="content">
-          <el-descriptions :column="2">
-            <el-descriptions-item label="任务名称">{{ item.workname ? item.workname:'' }}</el-descriptions-item>
-            <el-descriptions-item label="任务分值">{{ item.score ? item.score:'' }}</el-descriptions-item>
-            <el-descriptions-item label="任务描述">{{ item.remarks ? item.remarks:'' }}</el-descriptions-item>
-            <el-descriptions-item label="用户提交内容">{{ item.notes ? item.notes:'' }}</el-descriptions-item>
-          </el-descriptions>
-          <div class="file">
-            <file-item :isDownLoad="true" :isDelete="false" :itemStyle="itemDrawerStyle" :fileData="fileType.fileList(item.attinfos)"></file-item>
-          </div>
-        </div>
-        <div class="task-footer">
-          <div class="btn">
-            <el-button size="mini" :disabled="!currentData.active || item.finished != 0" @click="editBtn(item)">编辑</el-button>
-            <el-button size="mini" type="primary" v-if="item.finished == 0" :disabled="!currentData.active" @click="taskSuccess(item)">完成</el-button>
-            <el-button size="mini" type="info" v-else disabled>已完成</el-button>
-          </div>
-        </div>
-      </div>
-    </el-card>
-    <el-empty v-else description="暂无数据" size="small"></el-empty>
-
-    <el-drawer
-      title="我是标题"
-      append-to-body
-      :visible.sync="dialogFormVisible"
-      direction="rtl"
-      :modal="true"
-      :show-close="false"
-      :withHeader="false"
-      size="30%">
-      <div class="flex-align-center flex-between container" style="border-bottom:1px solid #f1f2f3">
-        <div style="font-size:20px">编辑任务信息</div>
-        <div>
-          <el-button type="primary" @click="saveEditInfo(dialogFormVisible = false)" size="small">提 交</el-button>
-        </div>
-      </div>
-      <div class="container">
-        <el-descriptions title="任务信息" :column="1">
-          <el-descriptions-item label="任务名称">{{ editData.workname }}</el-descriptions-item>
-          <el-descriptions-item label="任务分值">{{ editData.score }}</el-descriptions-item>
-          <el-descriptions-item label="任务描述">{{ editData.remarks }}</el-descriptions-item>
-        </el-descriptions>
-        <el-divider></el-divider>
-        <el-descriptions title="提交内容" />
-        <el-input type="textarea" v-model="param.content.notes" placeholder="请填写完成的具体情况"></el-input>
-        <Editor :data="editData" @deleteSuccess="deleteSuccess" @onSuccess="upLoad"/>
-      </div>
-    </el-drawer>
+    <div class="top_style">
+      <span style="color: #000000 !important;margin-left: 10px">工作任务(总分值:)</span>
+    </div>
+    <el-table
+        :data="workData"
+        style="width: 100%">
+      <el-table-column
+          prop="rowindex"
+          label="序号"
+          width="180">
+      </el-table-column>
+      <el-table-column
+          prop="taskname"
+          label="工作任务"
+          >
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.important === 1" size="mini" class="inline-16">关键</el-tag>
+          <span>{{scope.row.taskname}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+          prop="score"
+          label="分值"
+          width="180">
+      </el-table-column>
+      <el-table-column
+          prop="address"
+          label="操作"
+          width="180">
+        <template slot-scope="scope">
+          <edit :data="rowData" :rowData="scope.row"></edit>
+        </template>
+      </el-table-column>
+    </el-table>
   </div>
 </template>
 
 <script>
-import Editor from './components/Editor'
-import { log } from '@antv/g2plot/lib/utils';
-import FileItem from '@/components/file-block/index'
+import edit from './modules/edit'
 export default {
-  components:{Editor,FileItem},
   props:['rowData'],
   name: '',
+  components:{edit},
   data() {
     return {
-      stageList:'',
-      clickCurrent: 0,
-      currentData:'',
-      dialogFormVisible:false,
-      editData:'',
-      param: {
-        "id": 20221024160202,
-        "content": {
-            "sa_project_stageworkid": "",
-            "notes":""
-        }
-      },
-      itemDrawerStyle: {
-        itemWidth:300,
-        margin:10,
-        img: {
-          width: 40,
-          height: 40
-        },
-        title: 12,
-        descript: 10
-      },
+      workData:[],
     };
   },
   computed:{
-    /* 计算当前进入阶段的index */
-    calcIndex () {
-      return this.stageList.indexOf(this.stageList.find(item => item.active == 1))
-    },
-    /* 计算当前阶段完成的任务个数 */
-    calcTaskNumber () {
-      return function (data) {
-        let num = 0
-        data.work.filter(item => {
-          if(item.finished != 0) {
-            num ++
-          }
-        })
-        return num
-      }
-      
-    }
   },
   watch:{
-    rowData () {
-      this.getStageList(true)
-    }
+
   },
   created () {
-    this.getStageList()
+
   },
   methods: {
-    deleteSuccess (data) {
-      let num = this.editData.attinfos.find( item => item.attachmentid == data.attachmentid)
-      this.editData.attinfos.splice(this.editData.attinfos.indexOf(num),1)
-    },
-    upLoad (data) {
-      this.editData.attinfos.push(data)
-    },
-    editBtn (data) {
-      this.dialogFormVisible = true
-      this.editData = data
-    },
-    /* 保存编辑编辑信息 */
-    async saveEditInfo () {
-      this.param.content.sa_project_stageworkid = this.editData.sa_project_stageworkid
-      let res = await this.$api.requested(this.param)
-      this.tool.showMessage(res, () => {
-        this.dialogFormVisible = false
-        this.getStageList()
-      })
-    },
-    /* 获取阶段数据 */
-    async getStageList (no) {
-      let res = await this.$api.requested({
-        "id": 20221024102402,
+    async listData(){
+      const res = await this.$api.requested({
+        "id": 20221201140104,
         "content": {
-            "sa_projectid": this.rowData.sa_projectid,
-            "sa_projstagetempid": this.rowData.sa_projstagetempid
+          "pageNumber": 1,
+          "pageSize": 90,
+          "sa_projectid":this.rowData.sa_projectid,
+          "isAll":0
         }
       })
-      this.stageList = res.data
-      console.log(this.stageList,111111);
-      
-      /* 如果已有阶段 默认id释放 */
-      if(this.calcIndex != -1) {
-        this.clickCurrent = null
-        this.currentData = this.stageList[this.calcIndex]
-      } else {
-        this.currentData = this.stageList[0]
-      }
-    },
-    /* 单击阶段 */
-    stageClick (val,item) {
-      this.clickCurrent = val == this.calcIndex ? null : val
-      console.log(this.clickCurrent);
-      
-      this.currentData = item
-    },
-    /* 进入阶段 */
-    async enterStage () {
-      this.$alert('确定进入当前阶段吗?', '提示', {
-        confirmButtonText: '确定',
-        callback: async action => {
-          if (action == 'confirm') {
-            let res = await this.$api.requested({
-              "id": 20221024160102,
-              "content": {
-                  "sa_projectid": this.currentData.sa_projectid,
-                  "sa_projstagetempid": this.currentData.sa_projstagetempid,
-                  "sa_project_stageid": this.currentData.sa_project_stageid
-              }
-            })
-            console.log(res);
-            this.tool.showMessage(res,() => {
-              this.getStageList(false)
-            })
-          }
-        }
-      });
-    },
-    /* 任务完成 */
-    async taskSuccess (data) {
-      this.$alert('确定完成当前任务吗?无法撤销', '提示', {
-        confirmButtonText: '确定',
-        callback: async action => {
-          if (action == 'confirm') {
-            let res = await this.$api.requested({
-              "id": 20221024160302,
-              "content": {
-                  "sa_project_stageworkid": data.sa_project_stageworkid
-              }
-            })
-            console.log(res);
-            this.tool.showMessage(res,() => {
-              this.getStageList(false)
-            })
-          }
-        }
-      })
-    } 
+      console.log(res,"工作任务详情")
+      this.workData = res.data.rows
+    }
   },
+  mounted() {
+    console.log(this.rowData,"工作任务")
+    this.listData()
+  }
 };
 </script>
 
 <style scoped>
-  .item {
-    cursor: pointer;
-  }
-  .item .content {
-    display: flex;
-    justify-content: space-evenly;
-    align-items: center;
-    transform: skew(-20deg);
-    padding: 5px 10px;
-    background: #EEEEEE;
-    color: #000000;
-    border-radius: 5px;
-  }
-  .item .content span:first-child {
-    transform: skew(20deg);
-  }
-  .item .content span:last-child {
-    display: inline;
-    background: #ffffff;
-    padding: 1px 10px;
-    border-radius: 30%;
-    color: #000000;
-    transform: skew(20deg);
-  }
-  .enterStatus {
-    background: #3874F6 !important;
-    color: #ffffff !important;
-  }
-  .active {
-    background: #F2F5FF !important;
-    color: #3874F6 !important;
-  }
-  .box-card {
-    margin-top: 20px;
-    font-size: 12px;
-  }
-  .box-card .clearfix {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-  }
-  .box-card .clearfix .enter-stage {
-    padding: 4px 10px;
-    color: #3874F6;
-    border-radius: 5px;
-    border: 1px solid #3874F6;
-    cursor: pointer;
-  }
-  .box-card .clearfix .enter-stage:hover {
-    background: #3874F6;
-    color: #ffffff;
-  }
-  /deep/.el-card__body {
-    padding: 0px 0px;
-  }
-  .box-card .task { 
-    border-bottom: 15px solid #F5F5F5;
-  }
-  .box-card .task:last-child {
-    border-bottom: none;
-  }
-  .box-card .task:first-child {
-    border-top: 15px solid #F5F5F5;
-  }
-  .box-card .task .task-header {
-    display: flex;
-    justify-content: space-between;
-    border-bottom: 1px solid #cccccc;
-    padding: 0 20px;
+  .top_style{
+    width: 100%;
     line-height: 35px;
-    margin-bottom: 15px;
-  }
-  .box-card .task .content {
-    padding: 0 20px;
-  }
-  .box-card .task .task-footer {
-    display: flex;
-    flex-direction: row-reverse;
-  }
-  .box-card .task .task-footer .btn {
-    margin:0 10px 10px 0;
-  }
-  .box-card .task .content p {
-    margin-bottom: 10px;
-  }
-  /deep/.el-step__description {
-    padding:0 20% !important;
+    height: 35px;
+    background: rgb(238, 238, 238);
+    vertical-align: center;
   }
 </style>

+ 197 - 0
src/HDrpManagement/projectChange/modules/modules/stageTask/modules/edit.vue

@@ -0,0 +1,197 @@
+<template>
+  <div>
+    <el-button type="text" size="mini" @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">
+        <layoutTable :layout="tablecols" :data="list"  :custom="true" :checkbox="true" @checkboxCallBack="checkboxCallBack">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'province'">
+              {{scope.column.data.province?scope.column.data.province + '-' + scope.column.data.city + '-' + scope.column.data.county:'--'}}
+            </div>
+            <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+          </template>
+        </layoutTable>
+      </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>
+<!-- 编辑操作 -->
+    <el-drawer
+        title="编辑"
+        :visible.sync="drawerEdit"
+        size="45%"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onClose">
+      <div class="drawer__panel" style="margin-bottom: 2px !important;">
+        <el-row>
+          <el-form  size="mini" label-position="right" label-width="75px">
+            <el-col :span="24">
+              <el-form-item label="任务名称:"  >
+<!--                <el-input v-model="data.taskname" autocomplete="off" placeholder="输入阶段名称"></el-input>-->
+                <span>{{rowData.taskname}}</span>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="drawer__panel">
+        <el-row>
+          <el-form :model="formData" :rules="rules" ref="formData"  size="mini" label-position="right" label-width="75px">
+            <el-col :span="24">
+              <el-form-item label="评估内容"  >
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-for="(item,index) in form" :key="index">
+              <el-tag type="warning" size="mini" style="margin-right: 10px">{{item.type}}</el-tag>
+              <span>{{item.enterprisename}}</span>
+              <div style="width: 100%">
+<!--                <el-radio v-model="item.partiestype" :label=item.optionname>{{item.optionname + item.remarks}}</el-radio>-->
+                <el-radio-group v-model="item.checkedscore" v-for="(radio,index) in item.option" :key="index" @change="radioChange(item,radio)">
+                  <el-radio :label="radio">{{radio.optionname + radio.remarks}}</el-radio>
+                </el-radio-group>
+              </div>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="drawer__panel" style="margin-bottom: 2px !important;">
+        <el-row>
+          <el-form  size="mini" label-position="right" label-width="75px">
+            <el-col :span="24">
+              <el-form-item label="评估说明:"  >
+                <el-input v-model="actionnotes" autocomplete="off" placeholder="输入评估内容"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="drawerEdit = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="saveSubmit" class="normal-btn-width">保 存</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import layoutTable from '@/components/table/index2'
+export default {
+  name: "edit",
+  props:["data","rowData"],
+  components:{layoutTable},
+  data(){
+    return {
+      drawer:false,
+      drawerEdit:false,
+      tablecols:[],
+      list:[],
+      selectCustomer:[],
+      selectData:[],
+      listR:'',
+      actionnotes:'',
+      param:{
+        "id": 20221129152204,
+        "content": {
+          "sa_projectid": '',
+          "sa_projtaskmagid": '',
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      form:[],
+      formData:{},
+      rules:{},
+      radioSelect:[]
+    }
+  },
+  methods:{
+    onClose(){
+
+    },
+    onSubmit(){
+      this.drawer = false
+      this.drawerEdit = true
+      this.taskData()
+    },
+    async saveSubmit(){
+      const res = await this.$api.requested({
+        "id": "20221128145004",
+        "content": {
+          "sa_projectid": this.data.sa_projectid,
+          "sa_projtaskmagid": this.rowData.sa_projtaskmagid,
+          "sa_projstagemagid": this.rowData.sa_projstagemagid,
+          "actionnotes":this.actionnotes,
+          "option": this.radioSelect
+        }
+      })
+    },
+    onShow(){
+      this.drawer = true
+      console.log(this.rowData,"列表工作id")
+      console.log(this.form)
+      this.listData()
+    },
+    /*选择关联客户*/
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+    },
+    /*获取工作任务明细*/
+    async taskData(){
+      const res = await this.$api.requested({
+        "id": 20221129152304,
+        "content": {
+          "sa_projtaskmagid": this.rowData.sa_projtaskmagid,
+          "sa_projstagemagid": this.rowData.sa_projstagemagid,
+          "sa_project_partiesids": this.selectData
+        }
+      })
+      console.log(res,"工作任务明细")
+      this.form = res.data
+    },
+    checkboxCallBack(val){
+      console.log(val)
+      this.selectCustomer = val
+      val.forEach((item,index) => {
+        this.selectData[index] = item.sa_project_partiesid
+      })
+    },
+    radioChange(item,radio){
+      this.radioSelect = this.radioSelect.filter(e=>{
+        return e.sa_project_partiesid !== item.sa_project_partiesid
+      })
+
+      this.radioSelect.push({
+        "sa_projtaskmag_optionsid": radio.sa_projtaskmag_optionsid,
+        "sa_project_partiesid": item.sa_project_partiesid,
+        "score":radio.score
+      })
+      console.log(this.radioSelect,"获取单选结果1")
+    },
+  },
+  created() {
+    this.param.content.sa_projectid = this.data.sa_projectid
+    this.param.content.sa_projtaskmagid = this.rowData.sa_projtaskmagid
+    this.tablecols = this.tool.tabelCol(this.$route.name).customerTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/HDrpManagement/projectTask/index.vue

@@ -15,7 +15,7 @@
       </div>
       <template v-slot:tbList="scope">
         <div v-if="scope.data.column.columnname === 'important'">
-          {{scope.data.column.columnname === 1?'是':'否'}}
+          {{scope.data.column.data.important === 1?'是':'否'}}
         </div>
         <div v-else-if="scope.data.column.columnname === 'partiestype'">
           <span v-for="item in scope.data.column.data.partiestype" :key="item.index">