完善成长经历阅历,解决折叠面板文字重叠,自传的新增样式已修改,自传已可以成功修改内容
| | |
| | | |
| | | /** |
| | | * 业务 服务层实现 |
| | | * |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @Service |
| | |
| | | |
| | | /** |
| | | * 查询业务信息 |
| | | * |
| | | * |
| | | * @param id 业务ID |
| | | * @return 业务信息 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询业务列表 |
| | | * |
| | | * |
| | | * @param genTable 业务信息 |
| | | * @return 业务集合 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询据库列表 |
| | | * |
| | | * |
| | | * @param genTable 业务信息 |
| | | * @return 数据库表集合 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询据库列表 |
| | | * |
| | | * |
| | | * @param tableNames 表名称组 |
| | | * @return 数据库表集合 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询所有表信息 |
| | | * |
| | | * |
| | | * @return 表信息集合 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 修改业务 |
| | | * |
| | | * |
| | | * @param genTable 业务信息 |
| | | * @return 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 删除业务对象 |
| | | * |
| | | * |
| | | * @param tableIds 需要删除的数据ID |
| | | * @return 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 导入表结构 |
| | | * |
| | | * |
| | | * @param tableList 导入表列表 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 预览代码 |
| | | * |
| | | * |
| | | * @param tableId 表编号 |
| | | * @return 预览数据列表 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 生成代码(下载方式) |
| | | * |
| | | * |
| | | * @param tableName 表名称 |
| | | * @return 数据 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 生成代码(自定义路径) |
| | | * |
| | | * |
| | | * @param tableName 表名称 |
| | | */ |
| | | @Override |
| | |
| | | List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); |
| | | for (String template : templates) |
| | | { |
| | | if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) |
| | | if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "shouye.vue.vm", "index-tree.vue.vm")) |
| | | { |
| | | // 渲染模板 |
| | | StringWriter sw = new StringWriter(); |
| | |
| | | |
| | | /** |
| | | * 同步数据库 |
| | | * |
| | | * |
| | | * @param tableName 表名称 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 批量生成代码(下载方式) |
| | | * |
| | | * |
| | | * @param tableNames 表数组 |
| | | * @return 数据 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 修改保存参数校验 |
| | | * |
| | | * |
| | | * @param genTable 业务信息 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 设置主键列信息 |
| | | * |
| | | * |
| | | * @param table 业务表信息 |
| | | */ |
| | | public void setPkColumn(GenTable table) |
| | |
| | | |
| | | /** |
| | | * 设置主子表信息 |
| | | * |
| | | * |
| | | * @param table 业务表信息 |
| | | */ |
| | | public void setSubTable(GenTable table) |
| | |
| | | |
| | | /** |
| | | * 设置代码生成其他选项值 |
| | | * |
| | | * |
| | | * @param genTable 设置后的生成对象 |
| | | */ |
| | | public void setTableFromOptions(GenTable genTable) |
| | |
| | | |
| | | /** |
| | | * 获取代码生成地址 |
| | | * |
| | | * |
| | | * @param table 业务表信息 |
| | | * @param template 模板文件路径 |
| | | * @return 生成地址 |
| | |
| | | } |
| | | return genPath + File.separator + VelocityUtils.getFileName(template, table); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | /** |
| | | * 模板处理工具类 |
| | | * |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | public class VelocityUtils |
| | |
| | | templates.add("vm/js/api.js.vm"); |
| | | if (GenConstants.TPL_CRUD.equals(tplCategory)) |
| | | { |
| | | templates.add("vm/vue/index.vue.vm"); |
| | | templates.add("vm/vue/shouye.vue.vm"); |
| | | } |
| | | else if (GenConstants.TPL_TREE.equals(tplCategory)) |
| | | { |
| | |
| | | } |
| | | else if (GenConstants.TPL_SUB.equals(tplCategory)) |
| | | { |
| | | templates.add("vm/vue/index.vue.vm"); |
| | | templates.add("vm/vue/shouye.vue.vm"); |
| | | templates.add("vm/java/sub-domain.java.vm"); |
| | | } |
| | | return templates; |
| | |
| | | { |
| | | fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); |
| | | } |
| | | else if (template.contains("index.vue.vm")) |
| | | else if (template.contains("shouye.vue.vm")) |
| | | { |
| | | fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); |
| | | fileName = StringUtils.format("{}/views/{}/{}/shouye.vue", vuePath, moduleName, businessName); |
| | | } |
| | | else if (template.contains("index-tree.vue.vm")) |
| | | { |
| | | fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); |
| | | fileName = StringUtils.format("{}/views/{}/{}/shouye.vue", vuePath, moduleName, businessName); |
| | | } |
| | | return fileName; |
| | | } |
| | |
| | | |
| | | /** |
| | | * 根据列类型获取导入包 |
| | | * |
| | | * |
| | | * @param genTable 业务表对象 |
| | | * @return 返回需要导入的包列表 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 根据列类型获取字典组 |
| | | * |
| | | * |
| | | * @param genTable 业务表对象 |
| | | * @return 返回字典组 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 添加字典列表 |
| | | * |
| | | * |
| | | * @param dicts 字典列表 |
| | | * @param columns 列集合 |
| | | */ |
New file |
| | |
| | | import request from '@/utils/request' |
| | |
| | | import Vue from 'vue' |
| | | import Router from 'vue-router' |
| | | import Index from '@/views/index'; // 首页组件 |
| | | import OtherPage from '@/views/shouye/shouye'; // 要跳转的页面组件 |
| | | |
| | | Vue.use(Router) |
| | | |
| | |
| | | component: () => import('@/views/index'), |
| | | name: 'Index', |
| | | meta: { title: '首页', icon: 'dashboard', affix: true } |
| | | } |
| | | }, |
| | | |
| | | ] |
| | | }, |
| | |
| | | meta: { title: '个人中心', icon: 'user' } |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | |
| | | ] |
| | | |
| | | // 动态路由,基于用户权限动态去加载 |
| | |
| | | } |
| | | ] |
| | | }, |
| | | //首页通知详情 |
| | | { |
| | | path:'/dashboard', |
| | | component:Layout, |
| | | hidden: true, |
| | | permissions: ['familymodel:property:info'], |
| | | |
| | | children: [ |
| | | { |
| | | path: 'shouye/:id(\\d+)', |
| | | component: () => import('@/views/shouye/shouye'), |
| | | name: 'shouye', |
| | | meta: { title: '通知详情' } |
| | | } |
| | | ] |
| | | }, |
| | | //家庭资产管理 |
| | | { |
| | | path: '/familymodel/Property', |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="生日" prop="birth"> |
| | | <el-form-item label="生日" prop="birth deadDay"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 197px; |
| | |
| | | range-separator="-" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | @keyup.enter.native="handleQuery" |
| | | ></el-date-picker> |
| | | |
| | | </el-form-item> |
| | |
| | | <div class="app-container"> |
| | | <div class="image-container"> |
| | | <img class="bottom-image" src="../assets/images/shouye.png" alt="Bottom Image"> |
| | | <div class="notification-box" :class="{ 'has-new-message': hasNewMessage }"> |
| | | <div class="left-section">消息通知</div> |
| | | <el-button class="right-section " type="text" @click="handleClick">点击进入</el-button> |
| | | <div class="new-message-dot" v-if="hasNewMessage"></div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | dicts: ['sys_normal_disable'], |
| | | data(){ |
| | | return { |
| | | |
| | | hasNewMessage:false, |
| | | }; |
| | | }, |
| | | created() {}, |
| | | methods:{ |
| | | handleClick(){ |
| | | this.$router.push("/shouye/shouye" ); |
| | | } |
| | | } |
| | | |
| | | }; |
| | | </script> |
| | | |
| | |
| | | height: 100%; |
| | | } |
| | | .bottom-image { |
| | | z-index: -1; /* 设置底层图片的层级为1 */ |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | /*position: absolute;*/ |
| | | top: 0; |
| | | z-index: 1; |
| | | } |
| | | .text-box1 { |
| | | position: absolute; |
| | | top: 17.5%; |
| | | left: 47.5%; |
| | | transform: translate(-50%, -50%); |
| | | width: 320px; |
| | | |
| | | } |
| | | .text-box1 ::placeholder{ |
| | | color:#000000; |
| | | font-size: 15px; |
| | | font-family: Microsoft YaHei UI-Light, Microsoft YaHei UI; |
| | | } |
| | | .text-box2 { |
| | | .notification-box { |
| | | position: absolute; |
| | | top: 51%; |
| | | left: 80%; |
| | | transform: translate(-50%, -50%); |
| | | width: 345px; |
| | | top: 500px; |
| | | left: 150px; |
| | | display: flex; |
| | | align-items: center; |
| | | width: 20%; |
| | | height: 8%; |
| | | background-color: rgba(227, 219, 219, 0.51); |
| | | padding: 10px; |
| | | /*color: white;*/ |
| | | z-index: 2; /* 设置通知框层级为2,比图片高 */ |
| | | } |
| | | .text-box2 ::placeholder{ |
| | | color:#000000; |
| | | font-size: 15px; |
| | | font-family: Microsoft YaHei UI-Light, Microsoft YaHei UI; |
| | | |
| | | .left-section { |
| | | flex-grow: 1; |
| | | } |
| | | |
| | | .right-section { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .new-message-dot { |
| | | position: absolute; |
| | | top: 10px; |
| | | right: 10px; |
| | | width: 8px; |
| | | height: 8px; |
| | | background-color: red; |
| | | border-radius: 50%; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> |
| | | <el-form-item label="" prop="phone wx qq twitter isAlways remark" > |
| | | <el-input |
| | | v-model:phone="queryParams.phone" |
| | | v-model:wx="queryParams.wx" |
| | | v-model:qq="queryParams.qq" |
| | | v-model:twitter="queryParams.twitter" |
| | | v-model:isAlways="queryParams.isAlways" |
| | | v-model:remark="queryParams.remark" |
| | | placeholder=" " |
| | | clearable |
| | | style="width: 240px" |
| | | @keyup.enter.native="handleQuery"> |
| | | <i slot="prefix" class="el-input__icon el-icon-search"></i> |
| | | </el-input> |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="时间" prop="happenTime"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 197px; |
| | | height: 30px; |
| | | background: #FFFFFF; |
| | | border-radius: 14px 14px 14px 14px; |
| | | opacity: 0.5; |
| | | border: 1px solid rgba(0,0,0,0.25);" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button size="mini" @click="handleQuery" style=" width: 67px;height: 27px;background: #FFDDE3; |
| | | border-radius: 7px 7px 7px 7px;opacity: 1; " >搜索</el-button> |
| | | <el-button size="mini" @click="resetQuery" style=" width: 67px;height: 27px;background: #FFDDE3; |
| | | border-radius: 7px 7px 7px 7px;opacity: 1; ">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span style="font-size:16px">搜索结果如下:</span> |
| | | <el-divider /> |
| | | |
| | | <el-table v-loading="loading" :data="searchList" :row-key="getRowId" ref="multipleTable" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" style="background: #FFEFF2; border-radius: 14px 14px 14px 14px;"> |
| | | <!-- <el-table-column type="selection" :reserve-selection="true" width="55" align="center" />--> |
| | | <el-table-column fixed label="序号" sortable type="index" align="center" :index="(queryParams.pageNum-1)*queryParams.pageSize+1" width="60"/> |
| | | <el-table-column label="标识" prop="type" sortable :show-overflow-tooltip="true" width="120" align="center" > |
| | | <template slot-scope="scope">{{scope.row.type? scope.row.type: '————'}}</template> |
| | | <!-- <template slot-scope="scope">{{ getSrc1(scope.row.type) }}</template>--> |
| | | </el-table-column> |
| | | <el-table-column label="字段" prop="name" sortable width="120" align="center" > |
| | | <template slot-scope="scope">{{scope.row.name? scope.row.name: '————'}}</template> |
| | | </el-table-column> |
| | | <el-table-column label="时间" prop="getDate" sortable width="170" align="center" > |
| | | <template slot-scope="scope">{{scope.row.getDate? scope.row.getDate: '————'}}</template> |
| | | </el-table-column> |
| | | <el-table-column label="位置" prop="location" sortable width="170" align="center" > |
| | | <template slot-scope="scope">{{scope.row.location? scope.row.location: '————'}}</template> |
| | | </el-table-column> |
| | | |
| | | <!-- </el-table-column>--> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
| | | <template slot-scope="scope" v-if="scope.row.roleId !== 1"> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="handleUpdate(scope.row)" |
| | | v-hasPermi="['system:role:edit']" |
| | | >修改</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | @click="handleDelete(scope.row)" |
| | | v-hasPermi="['system:role:remove']" |
| | | >删除</el-button> |
| | | |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-d-arrow-right" |
| | | @click="handleCheck(scope.row)"> |
| | | 查看详情</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | style="background: #FEF7FC;" |
| | | @pagination="getList" |
| | | /> |
| | | |
| | | |
| | | |
| | | <!-- 分配角色数据权限对话框 --> |
| | | <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body> |
| | | |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role"; |
| | | import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu"; |
| | | |
| | | |
| | | |
| | | //导入接口函数 |
| | | import {listHonor,listType,enload, addHonor,updateHonor, delHonor,uploadPic,getCategory} from "@/api/honor/index"; |
| | | |
| | | import { Notification, MessageBox, Message, Loading } from 'element-ui' |
| | | export default { |
| | | name: "index", |
| | | dicts: ['sys_normal_disable'], |
| | | data() { |
| | | return { |
| | | // 遮罩层 |
| | | disabled: false, |
| | | |
| | | loading: true, |
| | | formData:[], |
| | | // 选中数组 |
| | | ids: [], |
| | | // 非单个禁用 |
| | | single: true, |
| | | // 非多个禁用 |
| | | multiple: true, |
| | | // 显示搜索条件 |
| | | showSearch: true, |
| | | // 总条数 |
| | | total: 0, |
| | | // 荣誉表格数据 |
| | | searchList: [], |
| | | typeList:[], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 是否显示弹出层 |
| | | open: false, |
| | | // 是否显示弹出层(数据权限) |
| | | openDataScope: false, |
| | | menuExpand: false, |
| | | menuNodeAll: false, |
| | | deptExpand: true, |
| | | deptNodeAll: false, |
| | | // 日期范围 |
| | | dateRange: [], |
| | | // 数据范围选项 |
| | | fot:['.bmp','.jpg','.jpeg','.png','.tif','.gif','.pcx','.tga','.exif','.fpx', |
| | | '.svg','.psd','.cdr','.pcd','.dxf','.ufo','.eps','.ai','.aw','.WMF','.webp','.apng'], |
| | | fileList:[], |
| | | fileListOther:[], |
| | | dsb:true, |
| | | btn:false, |
| | | fit:['fill'], |
| | | uploading: false, |
| | | formDat: { |
| | | //荣誉证书记录 |
| | | id:undefined, |
| | | type:undefined, |
| | | createTime:undefined, |
| | | name:undefined, |
| | | idNo:undefined, |
| | | grade:undefined, |
| | | validityDate:undefined, |
| | | getDate:undefined, |
| | | location:undefined, |
| | | remark:undefined, |
| | | url: undefined, |
| | | |
| | | }, |
| | | // 菜单列表 |
| | | menuOptions: [], |
| | | // 部门列表 |
| | | deptOptions: [], |
| | | // 查询参数 |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | type:undefined, |
| | | grade:undefined, |
| | | name:undefined, |
| | | }, |
| | | // searchVal:"", |
| | | |
| | | // 表单参数 |
| | | form: {}, |
| | | defaultProps: { |
| | | children: "children", |
| | | label: "label" |
| | | }, |
| | | // 表单校验 |
| | | rules: { |
| | | createTime: [{ |
| | | required: true, |
| | | message: '请输入创建时间', |
| | | trigger: 'blur' |
| | | }], |
| | | type: [{ |
| | | required: true, |
| | | message: '请输入类型', |
| | | trigger: 'blur' |
| | | }], |
| | | name: [{ |
| | | // required: true, |
| | | message: '请输入名称', |
| | | trigger: 'blur' |
| | | }], |
| | | grade: [{ |
| | | required: true, |
| | | message: '请输入级别', |
| | | trigger: 'blur' |
| | | }], |
| | | idNo: [{ |
| | | required: true, |
| | | message: '请输入证件号/专业', |
| | | trigger: 'blur' |
| | | }], |
| | | validityDate: [{ |
| | | // required: true, |
| | | message: '请输入有效时间', |
| | | trigger: 'blur' |
| | | }], |
| | | getDate: [{ |
| | | // required: true, |
| | | message: '请输入获得时间', |
| | | trigger: 'blur' |
| | | }], |
| | | location: [{ |
| | | // required: true, |
| | | message: '请输入存放位置', |
| | | trigger: 'blur' |
| | | }], |
| | | remark: [{ |
| | | // required: true, |
| | | message: '请输入备注', |
| | | trigger: 'blur' |
| | | }], |
| | | }, |
| | | selected:'', |
| | | typeOptions: [], |
| | | newOption: undefined, |
| | | showInput: true, |
| | | typeOption:[ |
| | | {value:'证件',label:'证件'}, |
| | | {value:'荣誉',label:'荣誉'}, |
| | | {value:'资质',label:'资质'},] |
| | | |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getList(); |
| | | this.getTypeOptions(); |
| | | }, |
| | | methods: { |
| | | // 取消按钮 |
| | | cancelData() { |
| | | this.open = false; |
| | | this.reset(); |
| | | }, |
| | | |
| | | //隔行变色 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (rowIndex % 2 == 0) { |
| | | return "statistics-warning-row1"; |
| | | } else { |
| | | return "statistics-warning-row"; |
| | | } |
| | | }, |
| | | //名称 |
| | | addNewOption() { |
| | | const newOption = this.newOption.trim(); |
| | | if (newOption && !this.typeOptions.includes(newOption)) { |
| | | this.typeOptions.push(newOption); |
| | | this.$set(this.formDat, 'name', newOption); // 更新formDat.type的值为新的选项 |
| | | } |
| | | }, |
| | | /** 查询记录列表 */ |
| | | getList() { |
| | | this.loading = true; |
| | | console.log(this.queryParams) |
| | | this.queryParams.happenStartTime = this.dateRange.length > 0 && this.dateRange[0] |
| | | this.queryParams.happenEndTime = this.dateRange.length > 0 && this.dateRange[1] |
| | | // listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => { |
| | | listHonor(this.queryParams).then(response => { |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.honorList = response.data.data; |
| | | |
| | | this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | listType(this.queryParams).then(response => { |
| | | this.typeList = response.data; |
| | | this.total = response.data.total; |
| | | // console.log( this.typeList ) |
| | | // 在回调函数中调用 getTypeOptions() |
| | | this.getTypeOptions(); |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | }, |
| | | getTypeOptions() { |
| | | const filteredOptions = this.typeList.filter(item => typeof item === 'string' && item !== ''); |
| | | |
| | | const uniqueOptions = {}; |
| | | |
| | | this.typeOptions = filteredOptions.reduce((options, option) => { |
| | | if (!uniqueOptions[option]) { |
| | | uniqueOptions[option] = true; |
| | | options.push({ |
| | | label: option, |
| | | value: option |
| | | }); |
| | | } |
| | | return options; |
| | | }, []); |
| | | |
| | | }, |
| | | /** 查询类别信息 */ |
| | | // getCateInfor() |
| | | // { |
| | | // let _this = this |
| | | // getCategory().then(response=>{ |
| | | // |
| | | // // response.data.itemValues.replace("{","").replace("}","").split(",").map(elem=>{ |
| | | // // _this.typeOptions.push({"label":elem.split(":")[0], "value":elem.split(":")[0]}) |
| | | // response.data.itemValues.replace("{", "").replace("}", "").split(",").map(elem => { |
| | | // const label = elem.split(":")[0].trim(); |
| | | // const value = parseInt(elem.split(":")[1].trim()); |
| | | // _this.typeOptions.push({ "label": label, "value": value }); |
| | | // }) |
| | | // }) |
| | | // }, |
| | | //类别选择 |
| | | getSrc1(type){ |
| | | if(type===0){ |
| | | return '证件' |
| | | }else if(type===1){ |
| | | return '荣誉' |
| | | }else if(type===2){ |
| | | return '资质' |
| | | } |
| | | }, |
| | | //名称选择 |
| | | getSrc(name) { |
| | | if (name === 1){ |
| | | return '出生证' |
| | | }else if(name === 2){ |
| | | return '学生证' |
| | | }else if(name === 3){ |
| | | return '毕业证' |
| | | }else if(name === 4){ |
| | | return '结婚证' |
| | | }else if(name === 5){ |
| | | return '户口簿' |
| | | }else if(name === 6){ |
| | | return '独生子女证' |
| | | }else if(name === 7){ |
| | | return '高级职称' |
| | | }else if(name === 8){ |
| | | return '护照' |
| | | }else if(name === 9){ |
| | | return '通行证' |
| | | }else { |
| | | return '其它' |
| | | } |
| | | }, |
| | | |
| | | handleRemove(file) { |
| | | for(let i = 0; i < this.fileList.length; i++) |
| | | { |
| | | if(this.fileList[i].url==file.url) |
| | | this.$delete(this.fileList,i); |
| | | } |
| | | }, |
| | | handleRemoveFile(file) { |
| | | for(let i = 0; i < this.fileListOther.length; i++) |
| | | { |
| | | if(this.fileListOther[i].url==file.url) |
| | | this.$delete(this.fileListOther,i); |
| | | } |
| | | }, |
| | | // 取消按钮 |
| | | cancel() { |
| | | this.open = false; |
| | | this.reset(); |
| | | }, |
| | | getRowId(row) |
| | | { |
| | | return row.id |
| | | }, |
| | | // 取消按钮(数据权限) |
| | | cancelDataScope() { |
| | | this.openDataScope = false; |
| | | this.reset(); |
| | | }, |
| | | // 表单重置 |
| | | reset() { |
| | | if (this.$refs.menu != undefined) { |
| | | this.$refs.menu.setCheckedKeys([]); |
| | | } |
| | | this.menuExpand = false, |
| | | this.menuNodeAll = false, |
| | | this.deptExpand = true, |
| | | this.deptNodeAll = false, |
| | | this.form = { |
| | | roleId: undefined, |
| | | roleName: undefined, |
| | | roleKey: undefined, |
| | | roleSort: 0, |
| | | status: "0", |
| | | menuIds: [], |
| | | deptIds: [], |
| | | menuCheckStrictly: true, |
| | | deptCheckStrictly: true, |
| | | remark: undefined |
| | | }; |
| | | this.resetForm("form"); |
| | | }, |
| | | /** 搜索按钮操作 */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | |
| | | this.getList(); |
| | | }, |
| | | /** 重置按钮操作 */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.resetForm("queryForm"); |
| | | this.handleQuery(); |
| | | }, |
| | | // 多选框选中数据 |
| | | handleSelectionChange(selection) { |
| | | this.ids = selection.map(item => item.id) |
| | | console.log(this.ids) |
| | | this.single = selection.length!=1 |
| | | this.multiple = !selection.length |
| | | }, |
| | | // //每次改变input框值时就改变this.myTableData的值 |
| | | // inputChange() { //循环每一项 只要content的值含有输入的searchVal值,就加进newList;反之,就无东西加进newList |
| | | // let newlist = this.formDat.filter( |
| | | // (item) => item.content.indexOf(this.searchVal) > -1 |
| | | // ); |
| | | // this.contactList = newlist; |
| | | // }, |
| | | |
| | | |
| | | /** 新增按钮操作 */ |
| | | handleAdd() { |
| | | this.reset(); |
| | | this.open = true; |
| | | this.title = "添加证件/荣誉/资质信息"; |
| | | }, |
| | | /** 查看详细信息 */ |
| | | handleCheck(row){ |
| | | const id = row.id; |
| | | this.$router.push("/self/Honor/honorInfo/" + id); |
| | | }, |
| | | /** 修改按钮操作 */ |
| | | handleUpdate(row) { |
| | | const id = row.id; |
| | | let jd = true |
| | | |
| | | this.$router.push({ |
| | | path:"/self/Honor/honorInfo/" + id, |
| | | query:{ |
| | | detail:jd |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | |
| | | handlePictureCardPreview(file) { |
| | | this.dialogImageUrl = file.url; |
| | | this.dialogVisible = true; |
| | | }, |
| | | /** 提交按钮(数据权限) */ |
| | | submitDataScope: function() { |
| | | |
| | | |
| | | let ul = this.fileList.map(function (elem){ |
| | | return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") |
| | | }).join(",") |
| | | let uls = this.fileListOther.map(function (elem){ |
| | | return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") |
| | | }).join(",") |
| | | this.formDat.url = ul+","+uls |
| | | this.$refs["elForm"].validate(valid => { |
| | | if (valid) { |
| | | |
| | | addHonor(this.formDat).then(response => { |
| | | this.$modal.msgSuccess("新增成功"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | | } |
| | | }); |
| | | // 清空formDat对象的数据 |
| | | Object.keys(this.formDat).forEach(key => { |
| | | this.formDat[key] = ''; |
| | | }); |
| | | for(let i = 0; i <= this.fileList.length; i++) |
| | | { |
| | | this.handleRemove(this.fileList[0]); |
| | | } |
| | | for(let i = 0; i < this.fileListOther.length; i++){ |
| | | this.handleRemoveFile(this.fileListOther[0]); |
| | | } |
| | | }, |
| | | requestUpload(params) |
| | | { |
| | | var file = params.file; |
| | | var formData = new FormData(); |
| | | formData.append('uploadFile', file); |
| | | let _this = this |
| | | this.uploading = true; |
| | | uploadPic(formData).then(response => { |
| | | let pth = response.data.originalFilename.substr(response.data.originalFilename.length-4, response.data.originalFilename.length) |
| | | this.uploading = false; |
| | | this.$modal.msgSuccess("上传成功"); |
| | | if(_this.fot.includes(pth) === true) |
| | | { |
| | | _this.fileList.push({name:response.data.fileName, "url":response.data.url}) |
| | | |
| | | } |
| | | |
| | | else{ |
| | | _this.fileListOther.push({name:response.data.fileName, url:response.data.url}) |
| | | |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | const Ids = row.id || this.ids; |
| | | this.$modal.confirm('是否确认删除数据项?').then(function() { |
| | | return delHonor(Ids); |
| | | }).then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }).catch(() => {}); |
| | | }, |
| | | /** 导出按钮操作 */ |
| | | handleExport() { |
| | | const Ids = this.ids; |
| | | |
| | | if(Ids.length==0) |
| | | { |
| | | this.download('/zHonor/export', { |
| | | ...this.queryParams |
| | | }, `zHonor_${new Date().getTime()}.xlsx`) |
| | | }else{ |
| | | this.download('/zHonor/export1/'+Ids, { |
| | | |
| | | }, `zHonor_${new Date().getTime()}.xlsx`) |
| | | } |
| | | }, |
| | | |
| | | handleExportTemplate(){ |
| | | this.download('/zHonor/model', { |
| | | |
| | | }, `zHonor_${new Date().getTime()}.xlsx`) |
| | | }, |
| | | /** 导入操作*/ |
| | | handleEnport(params){ |
| | | var file = params.file; |
| | | var formData = new FormData(); |
| | | formData.append('excelImport', file); |
| | | let _this = this |
| | | |
| | | enload(formData).then(response => { |
| | | _this.getList(); |
| | | Message({ message: "导入成功", type: 'warning' }) |
| | | |
| | | }).catch(() => { Message({ message: "导入失败", type: 'error' })}); |
| | | |
| | | } |
| | | }, |
| | | watch: { |
| | | type(value) { |
| | | if (value === '') { |
| | | this.showInput = true; |
| | | } else { |
| | | this.showInput = false; |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | <style> |
| | | .app-container{ |
| | | background-color: #FEF7FC; |
| | | } |
| | | .el-table__row.statistics-warning-row { |
| | | background: #E0EEFE; |
| | | |
| | | } |
| | | .el-table__row.statistics-warning-row1 { |
| | | background: #FFEFF2; |
| | | |
| | | } |
| | | |
| | | |
| | | </style> |
| | | |
| | |
| | | <el-collapse-item name="1" > |
| | | <template v-slot:title> |
| | | <div class="title-wrapper"> |
| | | 主要学习及工作经历 |
| | | <div class="left-content">主要学习及工作经历</div> |
| | | <div> |
| | | <el-button class="button" size="mini" type="text" @click="showDialog('open')" > |
| | | <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn></el-button> |
| | |
| | | <el-collapse-item name="2" > |
| | | <template v-slot:title> |
| | | <div class="title-wrapper"> |
| | | 家庭成员及主要社会关系情况 |
| | | <div class="left-content">家庭成员及主要社会关系情况</div> |
| | | <div> |
| | | <el-button class="button2" size="mini" type="text" @click="showDialog('relation1')"> |
| | | <el-button class="button" size="mini" type="text" @click="showDialog('relation1')"> |
| | | <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn></el-button> |
| | | </div> |
| | | </div> |
| | |
| | | <el-collapse-item name="4"> |
| | | <template v-slot:title> |
| | | <div class="title-wrapper"> |
| | | 持有证件情况 |
| | | <el-button class="button4" size="mini" type="text" @click="showDialog('certificate')"> |
| | | <div class="left-content">持有证件情况</div> |
| | | <el-button class="button" size="mini" type="text" @click="showDialog('certificate')"> |
| | | <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn></el-button> |
| | | </div> |
| | | </template> |
| | |
| | | <el-collapse-item name="5"> |
| | | <template v-slot:title> |
| | | <div class="title-wrapper"> |
| | | 出国(境)情况 |
| | | <el-button class="button5" size="mini" type="text" @click="showDialog('abroad')"> |
| | | <div class="left-content">出国(境)情况</div> |
| | | <el-button class="button" size="mini" type="text" @click="showDialog('abroad')"> |
| | | <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn></el-button> |
| | | </div> |
| | | </template> |
| | |
| | | <el-collapse-item name="6"> |
| | | <template v-slot:title> |
| | | <div class="title-wrapper"> |
| | | 自传 |
| | | <div class="left-content">自传</div> |
| | | <div> |
| | | <el-button size='mini' type="text" class="btn_autobiography" @click="showDialog('autobiography')" > |
| | | <el-button size='mini' type="text" class="button" @click="showDialog('autobiography')" > |
| | | <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn> |
| | | </el-button> |
| | | </div> |
| | |
| | | v-loading="loading" :data="AutobiographyList" > |
| | | <el-tab-pane v-for="(item, index) in AutobiographyList" |
| | | :key='item.id' :label="item.ageBegin+'~'+item.ageEnd+'岁'+'('+item.term+')'"> |
| | | <div v-if="item.term === '婴儿'"> {{item.content}}</div> |
| | | <div v-if="item.term === '幼儿'"> {{item.content}}</div> |
| | | <div v-if="item.term === '小学'"> {{item.content}}</div> |
| | | <div v-if="item.term === '初中'"> {{item.content}}</div> |
| | | <div v-if="item.term === '高中'"> {{item.content}}</div> |
| | | <div v-if="item.term === '大学'"> {{item.content}}</div> |
| | | <div v-if="item.term === '研究生'"> {{item.content}}</div> |
| | | <div v-if="item.term === '工作'"> {{item.content}}</div> |
| | | <div v-if="item.term === '结婚后'"> {{item.content}}</div> |
| | | <el-button size='mini' type="text" class="btn_edit" @click="editData(item)" style='position: absolute;right:10px;top:5px;'> |
| | | <div>{{ item.content }}</div> |
| | | <!-- <div v-if="item.term === '婴儿'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '幼儿'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '小学'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '初中'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '高中'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '大学'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '研究生'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '工作'"> {{item.content}}</div>--> |
| | | <!-- <div v-if="item.term === '结婚后'"> {{item.content}}</div>--> |
| | | <el-button size='mini' type="text" class="btn_edit" @click="editAutobiography(item)" style='position: absolute;right:10px;top:5px;'> |
| | | <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn> |
| | | </el-button> |
| | | </el-tab-pane> |
| | |
| | | <span> 岁 </span> |
| | | </el-form-item> |
| | | <el-form-item label="时期:" prop="term"> |
| | | <el-select v-model="formDat.term" placeholder="请选择时期" clearable :style="{width: '50%'}" > |
| | | <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | <!-- <el-select v-model="formDat.term" placeholder="请选择时期" clearable :style="{width: '50%'}" >--> |
| | | <!-- <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input v-model="formDat.term" placeholder="请输入时期" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="内容编辑:" prop="content"> |
| | | <el-input v-model="formDat.content" type="textarea" :rows="5" placeholder="" clearable :style="{width: '100%'}" > |
| | |
| | | //自传 |
| | | term: [{ |
| | | required: true, |
| | | message: '请选择时期', |
| | | message: '请输入时期', |
| | | trigger: 'blur' |
| | | }], |
| | | ageBegin: [{ |
| | |
| | | // 打开弹窗 |
| | | this.dialogVisible.autobiography = true; |
| | | }, |
| | | editAutobiography(item) { |
| | | this.isEdit1 = true; |
| | | this.dialogVisible.autobiography = true; |
| | | this.formDat = { ...item }; |
| | | }, |
| | | |
| | | //隔行变色 |
| | | tableRowClassName({ row, rowIndex }) { |
| | |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.experienceList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.relationList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.individualList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.certificateList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.AbroadList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.AutobiographyList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | this.loading = false; |
| | | |
| | | }); |
| | |
| | | // }); |
| | | listType(this.queryParams).then(response => { |
| | | this.typeList = response.data; |
| | | this.total = response.data.total; |
| | | // this.total = response.data.total; |
| | | // console.log( this.typeList ) |
| | | // 在回调函数中调用 getTypeOptions() |
| | | this.getTypeOptions(); |
| | |
| | | this.$refs["elForm"].validate(valid => { |
| | | if (valid) { |
| | | // 根据值找到选中的选项对象 |
| | | const selectedOption = this.typeOptions.find(option => option.value === this.formDat.term); |
| | | // const selectedOption = this.typeOptions.find(option => option.value === this.formDat.term); |
| | | |
| | | if (this.isEdit1) { |
| | | // 执行修改操作 |
| | | updateAutobiography(this.formDat).then(response => { |
| | | // 将选中选项的文本设置为"term"字段的值 |
| | | this.formDat.term = selectedOption.label; |
| | | this.formDat.id = selectedOption.id; |
| | | // this.formDat.term = selectedOption.value; |
| | | // this.formDat.id = selectedOption.id; |
| | | console.log("1") |
| | | this.$modal.msgSuccess("修改成功"); |
| | | this.dialogVisible.autobiography = false; |
| | |
| | | } else { |
| | | // 执行新增操作 |
| | | addAutobiography(this.formDat).then(response => { |
| | | this.formDat.term = selectedOption.label; |
| | | // this.formDat.term = selectedOption.label; |
| | | this.$modal.msgSuccess("新增成功"); |
| | | this.dialogVisible.autobiography = false; |
| | | this.getList(); |
| | |
| | | |
| | | .el-collapse-item__header { |
| | | background-color:#FEF7FC; |
| | | width: 100%; |
| | | } |
| | | .title-wrapper { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | width: calc(100% - 50px); |
| | | } |
| | | .left-content { |
| | | |
| | | width: 100%; |
| | | } |
| | | .btn_autobiography{ |
| | | background:center no-repeat url('../../assets/icons/add1.png') ; |
| | |
| | | } |
| | | .button { |
| | | background:center no-repeat url('../../assets/icons/add1.png') ; |
| | | margin-left: 69.5vw; |
| | | |
| | | /*margin-right: -10px ;*/ |
| | | flex-shrink: 0; |
| | | width: 30px; |
| | | height: 28px; |
| | | } |
| | | .button2 { |
| | | background: center no-repeat url('../../assets/icons/add1.png') ; |
New file |
| | |
| | | <template> |
| | | <div> |
| | | xiugaixiangqing |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: "index" |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | // 日期范围 |
| | | dateRange: [], |
| | | // 数据范围选项 |
| | | fot:['.bmp','.jpg','.jpeg','.png','.tif','.gif','.pcx','.tga','.exif','.fpx', |
| | | '.svg','.psd','.cdr','.pcd','.dxf','.ufo','.eps','.ai','.aw','.WMF','.webp','.apng'], |
| | | fot:[".jpg",".jif"], |
| | | fileList:[], |
| | | fileListOther:[], |
| | | dsb:true, |