瀏覽代碼

PC端测评

linwu 2 周之前
父節點
當前提交
e8d95c7f45

+ 10 - 1
app/admin/view/officer/index.html

@@ -13,12 +13,19 @@
                 <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="qrcode">
                     <i class="layui-icon layui-icon-picture-fine"></i>评测二维码
                 </a>
+                <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="pc">
+                    <i class="layui-icon layui-icon-edit"></i>复制PC端链接
+                </a>
             </script>
         </div>
     </div>
 </div>
 
+<script src="__COMMON_JS__/copyUrl.js"></script>
 <script>
+    function copyMobileUrl(url) {
+        CopyToClipboard(url);
+    }
     layui.use(['index', 'admin', 'form', 'table'], function () {
         const $ = layui.$;
         const admin = layui.admin;
@@ -33,7 +40,7 @@
                 [
                     {field: 'id', title: 'ID' ,width: 150},
                     {field: 'name', title: '试卷标题'},
-                    {title: '操作', width: 200, align: 'center', fixed: 'right', toolbar: '#setTpl'}
+                    {title: '操作', width: 320, align: 'center', fixed: 'right', toolbar: '#setTpl'}
                 ]
             ],
             page: true,
@@ -77,6 +84,8 @@
                         });
                     }
                 });
+            } else if (obj.event === 'pc') {
+                CopyToClipboard("{:url('home/officer/index')}?id=" + data.id);
             }
         });
     });

+ 16 - 0
app/home/HomeElBaseController.php

@@ -0,0 +1,16 @@
+<?php
+namespace app\home;
+
+use app\BaseController;
+
+/**
+ * 控制器基础类
+ */
+abstract class HomeElBaseController extends BaseController
+{
+    // 初始化
+    protected function initialize()
+    {
+    }
+
+}

+ 87 - 0
app/home/controller/Officer.php

@@ -0,0 +1,87 @@
+<?php
+
+namespace app\home\controller;
+
+use app\common\model\OfficerAnswerDetailModel;
+use app\common\model\OfficerAnswerModel;
+use app\common\model\OfficerReviewModel;
+use app\common\model\OfficerReviewSectionModel;
+use app\common\model\OfficerReviewTitleModel;
+use app\mobile\MobileBaseController;
+
+class Officer extends MobileBaseController
+{
+
+    public function index()
+    {
+        $id = input('id');
+        if (empty($id)) {
+            return '该题库不存在或已删除';
+        }
+
+        $review = OfficerReviewModel::find($id);
+        if (empty($review)) {
+            return '该题库不存在或已删除';
+        }
+
+        return view('', [
+            'review' => $review,
+        ]);
+    }
+
+    public function answer()
+    {
+        $id = input('id');
+        if (empty($id)) {
+            return '该题库不存在或已删除';
+        }
+
+        $section_list = OfficerReviewSectionModel::where('rid', $id)->column('name','id');
+        $list = OfficerReviewTitleModel::where('rid', $id)->order('no', 'asc')->select()->toArray();
+        if (empty($list)) {
+            return '该题库不存在或已删除';
+        }
+
+        foreach ($list as &$v) {
+            $v['section'] = $section_list[$v['rsid']];
+            unset($v);
+        }
+
+        return view('', [
+            'id'   => $id,
+            'list' => json_encode($list),
+        ]);
+    }
+
+    public function answerPost()
+    {
+        sleep(3);
+        $id            = input('id');
+        $answer        = input('answer');
+        $answer_detail = input('answer_detail');
+
+        $officer_answer = OfficerAnswerModel::create($answer);
+        $review_title   = OfficerReviewTitleModel::where('rid', $id)->column('option,title', 'no');
+        $score_sum      = 0;
+        foreach ($answer_detail as $k => $v) {
+            $options = json_decode($review_title[$k]['option'], true);
+            $option  = $options[$v];
+            OfficerAnswerDetailModel::create([
+                'aid'          => $officer_answer['id'],
+                'no'           => $k,
+                'title'        => $review_title[$k]['title'],
+                'score'        => $option['score'],
+                'option_title' => $option['title'],
+            ]);
+            $score_sum += $option['score'];
+        }
+        OfficerAnswerModel::update(['score' => $score_sum], ['id' => $officer_answer['id']]);
+
+        ajax_return();
+    }
+
+    public function finish()
+    {
+        return view();
+    }
+}

+ 198 - 0
app/home/view/officer/answer.html

@@ -0,0 +1,198 @@
+{extend name="public/base_el"/}
+{block name="css"}
+<style>
+    #app {
+        width: 1200px;
+        margin: 0 auto;
+    }
+
+    .step {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+
+    .base-info {
+        margin-top: 50px;
+    }
+
+    .title {
+        text-indent: 2em;
+        background: white;
+        padding-top: 20px;
+        font-size: 14px;
+    }
+
+    .info-btn {
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+    }
+
+    .evaluate .el-radio-group {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: flex-start;
+    }
+
+    .evaluate .el-radio-group .el-radio {
+        margin-top: 20px;
+        width: 500px;
+    }
+
+    .evaluate .content {
+        box-sizing: border-box;
+        width: 1200px;
+        height: 600px;
+        margin-top: 50px;
+    }
+
+    .evaluate .detail-title {
+        padding-top: 50px;
+        padding-right: 50px;
+    }
+
+    .mt-50 {
+        margin-top: 30px;
+    }
+
+    .title-list {
+        padding-top: 10px;
+        overflow-y: auto;
+        overflow-x: hidden;
+        box-sizing: border-box;
+        height: 600px;
+    }
+
+    .title-list ul {
+        width: 100%;
+        box-sizing: border-box;
+        padding: 0;
+        margin: 0;
+        list-style: none;
+    }
+
+    .title-list li {
+        float: left;
+        width: 10%;
+        height: 35px;
+        line-height: 35px;
+        border: 1px solid #999;
+        text-align: center;
+        box-sizing: border-box;
+    }
+
+    .title-list .num.finish {
+        color: white;
+        background: #3da600;
+    }
+
+    .title-list .num.current {
+        color: white;
+        background: #1D6BD0;
+    }
+</style>
+{/block}
+{block name="body"}
+<div class="step">
+    <el-steps style="width: 600px" :active="active" align-center>
+        <el-step title="基础信息"></el-step>
+        <el-step title="测评试卷"></el-step>
+    </el-steps>
+</div>
+
+<div class="base-info" v-show="active == 0">
+    {include file="officer/answer_base"/}
+</div>
+<div class="evaluate" v-show="active == 1">
+    <div class="title">
+        {{list[index].section}}
+    </div>
+    <div class="content">
+        <el-row>
+            <el-col :span="17">
+                <fieldset style="height:600px;box-sizing: border-box;">
+                    <legend>考试题目</legend>
+                    <div class="detail-title">{{list[index].no}}、{{list[index].title}}</div>
+                    <el-radio-group v-model="answer_detail[list[index].no]">
+                        <el-radio
+                                :value="option.score"
+                                size="large"
+                                border
+                                :key="list[index].no + '_' + option.score"
+                                v-for="option in list[index].option"
+                                @change="selectTile"
+                        >{{option.title}}
+                        </el-radio>
+                    </el-radio-group>
+                </fieldset>
+            </el-col>
+            <el-col :span="7" style="height:600px;">
+                <div class="title-list">
+                    <ul>
+                        <li
+                                class="num"
+                                :class="{finish:answer_detail[item.no] > 0,current:i==index}"
+                                :key="item.id"
+                                v-for="(item,i) in list"
+                                @click="changeTitle(i)"
+                        >{{item.no}}
+                        </li>
+                    </ul>
+                </div>
+            </el-col>
+        </el-row>
+    </div>
+    <div class="info-btn mt-50">
+        <el-button type="primary" size="large" @click="onSubmit" v-loading="loading">提交</el-button>
+    </div>
+</div>
+{/block}
+{block name="script"}
+<script>
+    function v_setup() {
+        const base = answer_base();
+
+        base.list = {$list};
+        base.active = Vue.ref(0);
+        base.answer_detail = Vue.ref({});
+        base.index = Vue.ref(0);
+        base.selectTile = () => {
+            if (base.index.value + 1 == base.list.length) {
+                return false;
+            }
+            base.index.value++;
+        }
+        base.changeTitle = (i) => {
+            base.index.value = i;
+        }
+        base.loading = Vue.ref(false);
+        base.onSubmit = () => {
+            if (base.loading.value) {
+                return false;
+            }
+            for (let i = 0; i < base.list.length; i++) {
+                if (base.answer_detail.value[i + 1] === undefined) {
+                    ElementPlus.ElMessage.error(`第${i + 1}题未填写`);
+                    return false;
+                }
+            }
+            base.answer.value.rid = {$id};
+            base.loading.value = true;
+            postJson("{:url('officer/answerPost')}", {
+                id: {$id},
+                answer: base.answer.value,
+                answer_detail: base.answer_detail.value
+            }).then((data) => {
+                base.loading.value = false;
+                ElementPlus.ElMessage.success('提交成功');
+                location.href = "{:url('officer/finish')}";
+            })
+        }
+
+        return base;
+    }
+</script>
+{/block}

+ 281 - 0
app/home/view/officer/answer_base.html

@@ -0,0 +1,281 @@
+<el-form :model="answer" label-width="auto">
+    <el-row :gutter="100">
+        <el-col :span="12">
+            <el-form-item label="姓名" required>
+                <el-input v-model="answer.name" placeholder="请输入姓名"></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="手机号" required>
+                <el-input v-model="answer.mobile" placeholder="请输入手机号"></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="性别" required>
+                <el-radio-group v-model="answer.sex">
+                    <el-radio value="男">男</el-radio>
+                    <el-radio value="女">女</el-radio>
+                </el-radio-group>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="年龄" required>
+                <el-input v-model="answer.age" placeholder="请输入年龄" type="number"></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="婚姻状况" required>
+                <el-select v-model="answer.marry" placeholder="请选择婚姻状况">
+                    <el-option
+                            v-for="item in marry_list"
+                            :key="item.value"
+                            :label="item.text"
+                            :value="item.value"
+                    ></el-option>
+                </el-select>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="学历" required>
+                <el-select v-model="answer.education" placeholder="请选择学历">
+                    <el-option
+                            v-for="item in education_list"
+                            :key="item.value"
+                            :label="item.text"
+                            :value="item.value"
+                    ></el-option>
+                </el-select>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="所修专业" required>
+                <el-input v-model="answer.major" placeholder="若有多个学历,以最高学历专业为准"></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="工龄" required>
+                <el-input v-model="answer.seniority" type="number" placeholder="累计工作年限">
+                    <template #append>年</template>
+                </el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="担任领导" required>
+                <el-input v-model="answer.leader" placeholder="含各类、各级领导职务的累计年限" type="number">
+                    <template #append>年</template>
+                </el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="所在行业" required>
+                <el-input v-model="answer.industry" placeholder="请输入所在行业"></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+            <el-form-item label="单位性质" required>
+                <el-select v-model="answer.company" placeholder="请选择单位性质" @change="companyChange">
+                    <el-option
+                            v-for="item in company_list"
+                            :key="item.value"
+                            :label="item.text"
+                            :value="item.value"
+                    ></el-option>
+                </el-select>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12" v-show="showCompanyText">
+            <el-form-item :label="company_title" required>
+                <el-input v-model="answer.company_text" :placeholder="company_placeholder"></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12" v-show="showJobField">
+            <el-form-item label="职位" required>
+                <el-select v-model="answer.job" placeholder="请选择职位" @change="jobChange">
+                    <el-option
+                            v-for="item in job_list"
+                            :key="item.value"
+                            :label="item.text"
+                            :value="item.value"
+                    ></el-option>
+                </el-select>
+            </el-form-item>
+        </el-col>
+        <el-col :span="12" v-show="showJobText">
+            <el-form-item label="具体职位" required>
+                <el-input v-model="answer.job_text" placeholder="请注明具体职位"></el-input>
+            </el-form-item>
+        </el-col>
+    </el-row>
+    <div class="info-btn">
+        <el-button type="primary" size="large" @click="baseSubmit">下一步</el-button>
+    </div>
+</el-form>
+<script>
+    function answer_base() {
+        let base = {};
+
+        base.answer = Vue.ref({});
+        //婚姻状况
+        base.marry_list = [
+            {text: '单身/未婚', value: '单身/未婚'},
+            {text: '已婚', value: '已婚'},
+            {text: '离婚', value: '离婚'},
+        ];
+
+        //学历
+        base.education_list = [
+            {text: '初中及以下', value: '初中及以下'},
+            {text: '高中/职校/中专', value: '高中/职校/中专'},
+            {text: '大专', value: '大专'},
+            {text: '本科', value: '本科'},
+            {text: '硕士', value: '硕士'},
+            {text: '博士', value: '博士'},
+        ];
+
+        //单位
+        base.company_list = [
+            {text: '党政机关', value: '党政机关'},
+            {text: '事业单位', value: '事业单位'},
+            {text: '国有企业', value: '国有企业'},
+            {text: '民营企业', value: '民营企业'},
+            {text: '外商独资企业', value: '外商独资企业'},
+            {text: '合资/合作企业', value: '合资/合作企业'},
+            {text: '股份制(所有权混合)企业', value: '股份制(所有权混合)企业'},
+            {text: '个体工商户', value: '个体工商户'},
+            {text: '社会团体/行业组织', value: '社会团体/行业组织'},
+            {text: '其他', value: '其他'},
+        ];
+        base.showCompany = Vue.ref(false);
+        base.showCompanyText = Vue.ref(false);
+        base.companyChange = (value) => {
+            if (value == '党政机关') {
+                base.company_title.value = '具体部门'
+                base.company_placeholder.value = '党政机关的具体部门'
+                base.showCompanyText.value = true;
+                base.showJobField.value = true;
+                base.job_list.value = base.job_list_1;
+            } else if (value == '事业单位') {
+                base.company_title.value = '具体领域'
+                base.company_placeholder.value = '事业单位的具体领域'
+                base.showCompanyText.value = true;
+                base.showJobField.value = true;
+                base.job_list.value = base.job_list_1;
+            } else if (value == '其他') {
+                base.company_title.value = '单位补充'
+                base.company_placeholder.value = '请填写单位的性质'
+                base.showCompanyText.value = true;
+                base.showJobField.value = false;
+            } else {
+                base.job_list.value = base.job_list_2;
+                base.showCompanyText.value = false;
+                base.showJobField.value = true;
+            }
+
+            base.answer.value.job = '';
+            base.answer.value.job_text = '';
+            base.showJobText.value = false;
+            base.answer.value.company = value;
+            base.answer.value.company_text = '';
+            base.showCompany.value = false;
+        }
+        base.company_title = Vue.ref('');
+        base.company_placeholder = Vue.ref('');
+
+        //职位
+        base.job_list_1 = [
+            {text: '省/部级(含副省/部级)', value: '省/部级(含副省/部级)'},
+            {text: '厅/局/司级(含副厅/局/司级)', value: '厅/局/司级(含副厅/局/司级)'},
+            {text: '处级(含副处级)', value: '处级(含副处级)'},
+            {text: '科级(含副科级)', value: '科级(含副科级)'},
+            {text: '一般工作人员', value: '一般工作人员'},
+            {text: '其他', value: '其他'},
+        ];
+        base.job_list_2 = [
+            {text: '老总(含董事级成员)', value: '老总(含董事级成员)'},
+            {text: '高层管理者', value: '高层管理者'},
+            {text: '中层管理者', value: '中层管理者'},
+            {text: '一线(基层)管理者', value: '一线(基层)管理者'},
+            {text: '一般职员', value: '一般职员'},
+            {text: '其他', value: '其他'},
+        ];
+        base.job_list = Vue.ref([]);
+        base.showJob = Vue.ref(false);
+        base.showJobField = Vue.ref(false);
+        base.showJobText = Vue.ref(false);
+        base.jobChange = (value) => {
+            base.answer.value.job = value;
+            base.answer.value.job_text = '';
+            base.showJob.value = false;
+            if (value == '其他') {
+                base.showJobText.value = true;
+            } else {
+                base.showJobText.value = false;
+            }
+        }
+
+        base.baseSubmit = () => {
+            const required_field = [
+                {field:'name',tip:'请输入姓名'},
+                {field:'mobile',tip:'请输入手机号'},
+                {field:'sex',tip:'请选择性别'},
+                {field:'age',tip:'请输入年龄'},
+                {field:'marry',tip:'请选择婚姻状况'},
+                {field:'education',tip:'请选择学历'},
+                {field:'major',tip:'请输入所修专业'},
+                {field:'seniority',tip:'请输入工龄'},
+                {field:'leader',tip:'请输入担任领导的累计年限'},
+                {field:'industry',tip:'请输入所在行业'},
+                {field:'company',tip:'请选择单位性质'},
+            ];
+            for (let item of required_field) {
+                if (base.answer.value[item.field] === undefined || base.answer.value[item.field] === '') {
+                    ElementPlus.ElMessage.error(item.tip);
+                    return false;
+                }
+            }
+            if (base.answer.value.company == '党政机关') {
+                if (base.answer.value.company_text === undefined || base.answer.value.company_text === '') {
+                    ElementPlus.ElMessage.error('请输入具体部门');
+                    return false;
+                }
+                if (base.answer.value.job === undefined || base.answer.value.job === '') {
+                    ElementPlus.ElMessage.error('请选择职位');
+                    return false;
+                } else {
+                    if (base.answer.value.job == '其他') {
+                        if (base.answer.value.job_text === undefined || base.answer.value.job_text === '') {
+                            ElementPlus.ElMessage.error('请输入具体职位');
+                            return false;
+                        }
+                    }
+                }
+            }
+            if (base.answer.value.company == '事业单位') {
+                if (base.answer.value.company_text === undefined || base.answer.value.company_text === '') {
+                    ElementPlus.ElMessage.error('请输入具体领域');
+                    return false;
+                }
+                if (base.answer.value.job === undefined || base.answer.value.job === '') {
+                    ElementPlus.ElMessage.error('请选择职位');
+                    return false;
+                } else {
+                    if (base.answer.value.job == '其他') {
+                        if (base.answer.value.job_text === undefined || base.answer.value.job_text === '') {
+                            ElementPlus.ElMessage.error('请输入具体职位');
+                            return false;
+                        }
+                    }
+                }
+            }
+            if (base.answer.value.company == '其他') {
+                if (base.answer.value.company_text === undefined || base.answer.value.company_text === '') {
+                    ElementPlus.ElMessage.error('请输入单位补充');
+                    return false;
+                }
+            }
+            base.active.value = 1;
+        }
+
+        return base;
+    }
+</script>

+ 22 - 0
app/home/view/officer/finish.html

@@ -0,0 +1,22 @@
+{extend name="public/base_el"/}
+{block name="css"}
+<style>
+    .title {margin-top:100px;}
+    .title p{margin:10px auto;padding:0 20px;text-align: center;font-size:24px;font-weight: 700;}
+</style>
+{/block}
+{block name="body"}
+
+<div class="title">
+    <p>测评完成,请关闭此页面</p>
+</div>
+{/block}
+{block name="script"}
+<script>
+    function v_setup() {
+        let base = {};
+
+        return base;
+    }
+</script>
+{/block}

+ 27 - 0
app/home/view/officer/index.html

@@ -0,0 +1,27 @@
+{extend name="public/base_el"/}
+{block name="css"}
+<style>
+    .title {margin-top:100px;}
+    .title p{margin:10px auto;padding:0 20px;text-align: center;font-size:24px;font-weight: 700;}
+</style>
+{/block}
+{block name="body"}
+
+<div class="title">{$review.name}</div>
+<div style="margin: 100px 20px;text-align: center;">
+    <el-button type="primary" size="large" @click="toStart">开始测评</el-button>
+</div>
+{/block}
+{block name="script"}
+<script>
+    function v_setup() {
+        let base = {};
+
+        base.toStart = () => {
+            location.href = "{:url('officer/answer')}?id={$review.id}"
+        }
+
+        return base;
+    }
+</script>
+{/block}

+ 32 - 0
app/home/view/public/base_el.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+    {include file="public/meta_header_el"/}
+    {block name="meta"}{/block}
+    {block name="css"}{/block}
+</head>
+<body>
+<div id="app">
+    {block name="body"}{/block}
+</div>
+{block name="script"}{/block}
+<script>
+    const vue3 = {
+        setup() {
+            return v_setup();
+        }
+    };
+
+    const {createApp} = Vue;
+    const app = createApp(vue3);
+    for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+        app.component(key, component);
+    }
+    app.use(ElementPlus)
+</script>
+{block name="vue"}{/block}
+<script>
+    app.mount('#app');
+</script>
+</body>
+</html>

+ 16 - 0
app/home/view/public/meta_header_el.html

@@ -0,0 +1,16 @@
+<meta charset="utf-8">
+<title>人资测评系统</title>
+<meta name="renderer" content="webkit">
+<meta name="viewport"
+      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover"/>
+<meta name="apple-mobile-web-app-capable" content="yes"/>
+<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
+<link rel="stylesheet" href="/static/home/css/element-plus.min.css">
+<script src="/static/home/js/vue.min.js"></script>
+<script src="/static/home/js/element-plus.min.js"></script>
+<script src="/static/home/js/element-plus-icons.min.js"></script>
+<script src="/static/home/js/axios.min.js"></script>
+<script>
+    const baseUrl = "{:url('/')}";
+</script>
+<script src="/static/home/js/axios_instance.js"></script>

+ 12 - 11
app/mobile/view/officer/answer_base.html

@@ -235,7 +235,6 @@
             base.answer.value.company = selectedValues[0];
             base.answer.value.company_text = '';
             base.showCompany.value = false;
-            console.log(Vue.toRaw(base.answer.value),Vue.toRaw(base.job_list.value));
         };
         base.company_title = Vue.ref('');
         base.company_placeholder = Vue.ref('');
@@ -267,21 +266,23 @@
             base.showJob.value = false;
             if (selectedValues[0] == '其他') {
                 base.showJobText.value = true;
+            } else {
+                base.showJobText.value = false;
             }
         };
 
         base.baseSubmit = () => {
             const required_field = [
-                // {field:'name',tip:'请输入姓名'},
-                // {field:'mobile',tip:'请输入手机号'},
-                // {field:'sex',tip:'请选择性别'},
-                // {field:'age',tip:'请输入年龄'},
-                // {field:'marry',tip:'请选择婚姻状况'},
-                // {field:'education',tip:'请选择学历'},
-                // {field:'major',tip:'请输入所修专业'},
-                // {field:'seniority',tip:'请输入工龄'},
-                // {field:'leader',tip:'请输入担任领导的累计年限'},
-                // {field:'industry',tip:'请输入所在行业'},
+                {field:'name',tip:'请输入姓名'},
+                {field:'mobile',tip:'请输入手机号'},
+                {field:'sex',tip:'请选择性别'},
+                {field:'age',tip:'请输入年龄'},
+                {field:'marry',tip:'请选择婚姻状况'},
+                {field:'education',tip:'请选择学历'},
+                {field:'major',tip:'请输入所修专业'},
+                {field:'seniority',tip:'请输入工龄'},
+                {field:'leader',tip:'请输入担任领导的累计年限'},
+                {field:'industry',tip:'请输入所在行业'},
                 {field:'company',tip:'请选择单位性质'},
             ];
             for (let item of required_field) {

文件差異過大導致無法顯示
+ 1 - 0
public/static/home/js/axios.min.js


+ 46 - 0
public/static/home/js/axios_instance.js

@@ -0,0 +1,46 @@
+const axios_instance = axios.create({
+    baseURL: baseUrl + "home",
+    timeout: 30000,
+    headers: {'X-Requested-With':'XMLHttpRequest'},
+    withCredentials: true,
+});
+
+async function postJson(url,data,error) {
+    return  new Promise((resolve, reject) => {
+        axios_instance.post(url, JSON.stringify(data), {
+            headers: { 'Content-Type': 'application/json;charset=UTF-8' }
+        }).then((result) => {
+            const data = result.data;
+            if (data.code === 1) {
+                if (typeof error === 'function') {
+                    error(data);
+                    return false;
+                } else {
+                    ElementPlus.ElMessage(data.msg);
+                    return false;
+                }
+            }
+            return resolve(data);
+        });
+    });
+}
+
+async function postFile(url,data,error) {
+    return  new Promise((resolve, reject) => {
+        axios_instance.post(url, data, {
+            headers: { 'Content-Type': 'application/form-data' }
+        }).then((result) => {
+            const data = result.data;
+            if (data.code === 1) {
+                if (typeof error === 'function') {
+                    error(data);
+                    return false;
+                } else {
+                    ElementPlus.ElMessage(data.msg);
+                    return false;
+                }
+            }
+            return resolve(data);
+        });
+    });
+}

文件差異過大導致無法顯示
+ 4 - 0
public/static/home/js/vue.min.js


部分文件因文件數量過多而無法顯示