• wangxl's avatar
    7777 · 09a707b4
    wangxl authored
    09a707b4
projectMemberEdit.vue 9.58 KB
<template>
  <div>
    <a-row>
      <a-col :span="24">
        <div class="tb-title">
          <span>项目组成员 <strong>(注:项目负责人填写到第一行)</strong></span>
        </div>
      </a-col>
    </a-row>
    <a-row type="flex" class="row_center">
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>序号</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>姓名</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>性别</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>出生年月</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>证件类型</div>
        </div>
      </a-col>
      <a-col :span="2" class="bg-gray">
        <div class="special-middle">
          <div>证件号码</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>民族</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>国别或地区</div>
        </div>
      </a-col>
      <a-col :span="2" class="bg-gray">
        <div class="special-middle">
          <div>工作单位</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>职称</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>最高学位</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>电子邮箱</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div>手机</div>
        </div>
      </a-col>
      <!-- <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div >电话</div>
        </div>
      </a-col>
      <a-col :span="1" class="bg-gray">
        <div class="special-middle">
          <div >传真</div>
        </div>
      </a-col> -->
      <a-col :span="2" class="bg-gray">
        <div class="special-middle">
          <div>项目分工</div>
        </div>
      </a-col>
      <a-col :span="2" class="bg-gray">
        <div class="special-middle">
          <div>每年工作(月)</div>
        </div>
      </a-col>
      <a-col :span="2" class="bg-gray">
        <div class="special-middle">
          <div>从事专业</div>
        </div>
      </a-col>
      <a-col :span="3" class="bg-gray">
        <div class="special-middle">
          <div>操作</div>
        </div>
      </a-col>
    </a-row>
    <div>
      <a-row v-for="(item, index) in dataList" :key="'memberEdit'+index" type="flex" class="row_center">
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ index + 1 }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.name }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.sex }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ moment(item.birthday).format('YYYY-MM-DD') }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.certificateTypeName }}
            </div>
          </div>
        </a-col>
        <a-col :span="2">
          <div class="special-middle">
            <div>
              {{ item.certId }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.nationName }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.country }}
            </div>
          </div>
        </a-col>
        <a-col :span="2">
          <div class="special-middle">
            <div>
              {{ item.workUnit }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.titleName }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.degreeName }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.email }}
            </div>
          </div>
        </a-col>
        <a-col :span="1">
          <div class="special-middle">
            <div>
              {{ item.mobile }}
            </div>
          </div>
        </a-col>
        <!-- <a-col :span="1">
        <div class="special-middle">
          <div>
            {{ item.telephone }}
          </div>
        </div>
      </a-col>
      <a-col :span="1">
        <div class="special-middle">
          <div>
            {{ item.fax }}
          </div>
        </div>
      </a-col> -->
        <a-col :span="2">
          <div class="special-middle">
            <div>
              {{ item.projWork }}
            </div>
          </div>
        </a-col>
        <a-col :span="2">
          <div class="special-middle">
            <div>
              {{ item.forMonths }}
            </div>
          </div>
        </a-col>
        <a-col :span="2">
          <div class="special-middle">
            <div>
              {{ item.specName }}
            </div>
          </div>
        </a-col>
        <a-col :span="3">
          <div class="special-middle">
            <div>
              <a-button icon="arrow-up" type="primary" shape="circle" size="small" :disabled="index == 0" @click="memberUp(index)"></a-button>
              <a-button icon="arrow-down" type="primary" shape="circle" size="small" style="margin-left:5px;" :disabled="dataList.length == index + 1" @click="menberDown(index)"></a-button>
              <a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removeMembers(item)">
                <a-button type="link" size="small">删除</a-button>
              </a-popconfirm>
              <a-button type="link" size="small" @click="editMember(item,index)">修改</a-button>
            </div>
          </div>
        </a-col>
      </a-row>
      <a-row type="flex">
        <a-col :span="24" style="text-align: center;">
          <div class="special-middle">
            <a-button type="dashed" style="width: 30%;background: #40a9ff;" @click="addMember">
              <a-icon type="plus" /> 添加项目组成员
            </a-button>
          </div>
        </a-col>
      </a-row>
    </div>

    <a-modal v-model="visibleEdit" v-if="visibleEdit" title="项目组成员(添加/修改)" width="60%" :footer="null" :dialog-style="{ top: '20%' }" destroyOnClose :maskClosable="false">
      <member-edit :memObject.sync="memObject" @close="closeWindow" />
    </a-modal>
  </div>
</template>

<script>
//用法 <proj-group-member :members.sync="formData.members" />

import memberEdit from '@/views/report/project/components/memberEdit'
import moment from 'moment'

const Member = {
  name: null,
  sex: null,
  birthday: null,
  certificateType: null,
  certificateTypeName: null,
  certId: null,
  nation: null,
  nationName: null,
  country: null,
  workUnit: null,
  title: null,
  titleName: null,
  degree: null,
  degreeName: null,
  email: null,
  mobile: null,
  telephone: null,
  fax: null,
  projWork: null,
  forMonths: null,
  spec: null,
  specName: null
}

export default {
  name: 'projectMemberEdit',
  data () {
    return {
      memObject: {},
      isEdit: false,
      memIndex: 0,
      visibleEdit: false,
    }
  },
  props: {
    dataList: {
      type: Array,
      default: () => {
        return []
      }
    },
  },
  components: {
    memberEdit
  },
  created () {
  },
  methods: {
    moment,
    closeWindow (value) {
      if (!this.isEdit) {
        this.memObject = {}
        this.dataList.push(value)
        this.visibleEdit = false
      } else {
        this.dataList.splice(this.memIndex, 1, value);
        this.memObject = {}
        this.memIndex = 0
        this.isEdit = false
        this.visibleEdit = false
      }
    },
    editMember (obj, index) {
      this.memObject = obj
      this.isEdit = true
      this.memIndex = index
      this.visibleEdit = true
    },
    addMember () {//添加成员
      this.memObject = { ...Member }
      this.visibleEdit = true
    },
    removeMembers (item) {//移除成员
      let index = this.dataList.indexOf(item)
      if (index !== -1) {
        this.dataList.splice(index, 1)
      }
    },
    memberToTop (item) {//成员置顶
      let index = this.dataList.indexOf(item)
      if (index !== -1) {
        this.dataList.splice(index, 1)
        this.dataList.unshift({ ...item })
      }
    },
    memberUp (index) {
      let arr = this.dataList
      arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
    },
    menberDown (index) {
      let arr = this.dataList
      arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
    }
  }
}
</script>
<style scoped lang="less">
</style>