jiangping
2024-02-02 5eb40c731da8ccf235ba557f97a5e05a70a75308
company/src/views/business/member.vue
@@ -2,39 +2,35 @@
    <TableLayout :permissions="['business:member:query']">
        <!-- 搜索表单 -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="员工姓名" prop="duId">
                <el-input v-model="searchForm.duId" placeholder="请输入" @keypress.enter.native="search"></el-input>
            <el-form-item label="员工姓名" prop="name">
                <el-input v-model="searchForm.name" placeholder="请输入" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="身份证号" prop="duId">
                <el-input v-model="searchForm.duId" placeholder="请输入" @keypress.enter.native="search"></el-input>
            <el-form-item label="身份证号" prop="idcardNo">
                <el-input v-model="searchForm.idcardNo" placeholder="请输入" maxlength="18" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="保险方案" prop="duId">
                <el-select v-model="searchForm.duId" placeholder="请选择">
            <el-form-item label="保险方案" prop="solutionId">
                <el-select v-model="searchForm.solutionId" placeholder="请选择" @change="search">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                        v-for="item in solutions"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="保险状态" prop="duId">
                <el-select v-model="searchForm.duId" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
            <el-form-item label="保险状态" prop="solutionsStatus">
                <el-select v-model="searchForm.solutionsStatus" placeholder="请选择" @change="search">
                    <el-option label="保障中" value="1"></el-option>
                    <el-option label="不在保" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="派遣单位" prop="duId">
                <el-select v-model="searchForm.duId" placeholder="请选择">
                <el-select v-model="searchForm.duId" placeholder="请选择" @change="search">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                        v-for="(item, index) in options"
                        :key="index"
                        :label="item.name"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
@@ -45,8 +41,8 @@
        </el-form>
        <!-- 表格和分页 -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create']">
                <li><el-button type="primary" @click="$refs.operaMemberWindow.open('投保记录')">导入人员名单</el-button></li>
            <ul class="toolbar">
                <li><el-button type="primary" @click="expr">导出人员名单</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -58,24 +54,36 @@
                        <span>{{scope.$index + 1}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="companyId" label="保险状态" min-width="100px"></el-table-column>
                <el-table-column prop="companyId" label="所属企业" min-width="100px"></el-table-column>
                <el-table-column prop="companyId" label="员工姓名" min-width="100px"></el-table-column>
                <el-table-column label="保险状态" min-width="100px">
                    <template slot-scope="{row}">
                        <span style="color: green;" v-if="row.solutionsStatus === 1">保障中</span>
                        <span v-else-if="row.solutionsStatus === 2">不在保</span>
                    </template>
                </el-table-column>
                <el-table-column prop="companyName" label="所属企业" min-width="100px" v-if="userInfo.type === 0"></el-table-column>
                <el-table-column prop="name" label="员工姓名" min-width="100px"></el-table-column>
                <el-table-column label="性别" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.sex === 0">男</span>
                        <span v-else>女</span>
                    </template>
                </el-table-column>
                <el-table-column prop="companyId" label="年龄" min-width="100px"></el-table-column>
                <el-table-column prop="companyId" label="保险方案" min-width="100px"></el-table-column>
                <el-table-column prop="duId" label="派遣单位" min-width="100px"></el-table-column>
                <el-table-column prop="worktypeId" label="所属工种" min-width="100px"></el-table-column>
                <el-table-column prop="idcardNo" label="身份证号码" min-width="100px"></el-table-column>
                <el-table-column label="年龄" min-width="100px">
                    <template slot-scope="{row}">
                        {{ calculateAge(row.idcardNo) }}
                    </template>
                </el-table-column>
                <el-table-column prop="solutionName" label="保险方案" min-width="100px"></el-table-column>
                <el-table-column prop="duName" label="派遣单位" min-width="100px"></el-table-column>
                <el-table-column prop="workTypeName" label="所属工种" min-width="100px"></el-table-column>
                <el-table-column prop="startTime" label="实际保险生效起期" min-width="100px"></el-table-column>
                <el-table-column prop="endTime" label="实际保险生效止期" min-width="100px"></el-table-column>
                <el-table-column label="操作" min-width="100px">
                <el-table-column label="操作"
                     fixed="right"
                     min-width="120px">
                    <template slot-scope="{row}">
                        <el-button type="text">投保记录</el-button>
                        <el-button type="text" @click="$refs.insuranceRecords.open('投保记录', row)">投保记录</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -87,7 +95,9 @@
            </pagination>
        </template>
        <!-- 新建/修改 -->
        <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
        <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange" />
        <!--    投保记录    -->
        <insuranceRecords ref="insuranceRecords" @success="handlePageChange" />
    </TableLayout>
</template>
@@ -96,18 +106,30 @@
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import OperaMemberWindow from '@/components/business/OperaMemberWindow'
    import insuranceRecords from '@/components/enterprise/insuranceRecords'
    import { all } from '@/api/business/solutions'
    import { findListByDTO } from '@/api/business/dispatchUnit'
    import { mapState } from 'vuex'
    export default {
        name: 'Member',
        extends: BaseTable,
        components: { TableLayout, Pagination, OperaMemberWindow },
        components: { TableLayout, Pagination, OperaMemberWindow, insuranceRecords },
        data () {
            return {
                // 搜索
                searchForm: {
                    duId: ''
                    duId: '',
                    name: '',
                    idcardNo: '',
                    solutionsStatus: '',
                    solutionId: ''
                },
                options: []
                options: [],
                solutions: []
            }
        },
        computed: {
            ...mapState(['userInfo'])
        },
        created () {
            this.config({
@@ -117,6 +139,29 @@
                'field.main': 'id'
            })
            this.search()
            this.getSolutions()
        },
        methods: {
            expr() {
            },
            getSolutions() {
                all()
                    .then(res => {
                        this.solutions = res
                    })
                findListByDTO({ dataType: 2 })
                    .then(res => {
                        this.options = res
                    })
            },
            calculateAge(idNumber) {
                if (!idNumber) return
                let birthYear = parseInt(idNumber.substr(6, 4)); // 提取生日年份部分
                let currentYear = new Date().getFullYear(); // 获取当前年份
                return currentYear - birthYear; // 返回年龄
            }
        }
    }
</script>