Conflicts:
	jeecgboot-vue3/.env.production
master
喻忠伟 2 weeks ago
commit c5ca2ac63d
  1. 1
      jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 41
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java
  3. 9
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/ExpDepVos.java
  4. 9
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expproject/controller/ExpprojectController.java
  5. 5
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java
  6. 17
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  7. 3
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
  8. 2
      jeecgboot-vue3/.env.production
  9. 6
      jeecgboot-vue3/src/api/sys/user.ts
  10. 4
      jeecgboot-vue3/src/views/declarantUnit/declarantUnitList.vue
  11. 4
      jeecgboot-vue3/src/views/declarantUnit/depart.user.data.ts
  12. 6
      jeecgboot-vue3/src/views/demo/main-home/components/NewsList/index.vue
  13. 13
      jeecgboot-vue3/src/views/demo/main-home/components/articleManagement/index.vue
  14. 20
      jeecgboot-vue3/src/views/demo/main-home/components/columnManagement/index.vue
  15. 21
      jeecgboot-vue3/src/views/demo/main-home/components/homePage/index.vue
  16. 4
      jeecgboot-vue3/src/views/demo/main-home/components/instrumentInfo/index.vue
  17. 10
      jeecgboot-vue3/src/views/demo/main-home/components/newsInfo/index.vue
  18. 2
      jeecgboot-vue3/src/views/demo/main-home/components/projectDeclaration/index.vue
  19. 5
      jeecgboot-vue3/src/views/expert/selfback/Expert.data.ts
  20. 6
      jeecgboot-vue3/src/views/expproject/admin/ExpprojectList.vue
  21. 6
      jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue
  22. 13
      jeecgboot-vue3/src/views/system/depart/components/DepartLeftTree.vue
  23. 2
      jeecgboot-vue3/src/views/system/loginmini/MiniRegister4shenbaoren.vue
  24. 43
      jeecgboot-vue3/src/views/system/loginmini/MiniRegisterexp.vue

@ -84,6 +84,7 @@ public class ShiroConfig {
}
// 配置不会被拦截的链接 顺序判断
filterChainDefinitionMap.put("/expert/expert/getdepdata", "anon"); //注册的时候查询部门
filterChainDefinitionMap.put("/instrument/instrument/listcms", "anon"); //cms仪器资源接口
filterChainDefinitionMap.put("/instrument/instrument/queryByIdCms", "anon"); //cms仪器资源接口
filterChainDefinitionMap.put("/disciplinefieid/disciplineFieid/listcms", "anon"); //cms学科领域接口

@ -2,9 +2,6 @@ package org.jeecg.modules.demo.expert.controller;
import java.util.*;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -13,13 +10,13 @@ import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.disciplinefieid.entity.DisciplineFieid;
import org.jeecg.modules.demo.disciplinefieid.service.IDisciplineFieidService;
import org.jeecg.modules.demo.expert.entity.ExpCmsVo;
import org.jeecg.modules.demo.expert.entity.ExpDepVos;
import org.jeecg.modules.demo.expert.entity.ExpdefVo;
import org.jeecg.modules.demo.expert.entity.Expert;
import org.jeecg.modules.demo.expert.service.IExpertService;
@ -38,22 +35,13 @@ import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysDepartService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: 专家管理
@ -632,7 +620,7 @@ public class ExpertController extends JeecgController<Expert, IExpertService> {
if (expert.getCompopen().equals("1")) {
//修改提交审核状态
expertService.handlebackbackfirm(id);
str ="驳回审核!请到编辑页面确定问题数据并填写驳回原因";
str ="驳回审核!";
} else if (expert.getCompopen().equals("3") || expert.getCompopen().equals("2") ) {
str ="已驳回或者是已通过审核";
}
@ -928,14 +916,23 @@ public class ExpertController extends JeecgController<Expert, IExpertService> {
expertService.updateById(expert);
return Result.OK("驳回成功,已责令专家重新编辑!");
}
@AutoLog(value = "专家管理-公司驳回")
@ApiOperation(value="专家管理-公司驳回", notes="专家管理-公司驳回")
@RequestMapping(value = "/saveOrUpdatefimebh", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> saveOrUpdatefimebh(@RequestBody Expert expert) {
expert.setCompopen("3");
expertService.updateById(expert);
return Result.OK("编辑成功!");
@AutoLog(value = "查找法人部门")
@ApiOperation(value="查找法人部门", notes="查找法人部门")
@GetMapping(value = "/getdepdata")
public Result< List<ExpDepVos>> getdepdata() {
List<SysDepart> departs = sysDepartService.list();
List<SysDepart> departstemp = departs.stream()
.filter(depart -> depart.getDepartNameAbbr() != null && !depart.getDepartNameAbbr().isEmpty())
.collect(Collectors.toList());
List<ExpDepVos> expDepVos =new ArrayList<>();
for (SysDepart depart : departstemp) {
ExpDepVos expDepVo =new ExpDepVos();
expDepVo.setDepid(depart.getId());
expDepVo.setDepname(depart.getDepartName());
expDepVos.add(expDepVo);
}
return Result.OK(expDepVos);
}
}

@ -0,0 +1,9 @@
package org.jeecg.modules.demo.expert.entity;
import lombok.Data;
@Data
public class ExpDepVos {
private String depid;
private String depname;
}

@ -172,7 +172,14 @@ public class ExpprojectController {
if(expprojectEntity==null) {
return Result.error("未找到对应数据");
}
if (expproject.getNeedexp()>=expprojectPage.getExpandproList().size()) {
int a=0;
if ( expprojectPage.getExpandproList() != null && !expprojectPage.getExpandproList().isEmpty()) {
a=expprojectPage.getExpandproList().size();
}else {
a=0;
}
if (expproject.getNeedexp()>=a) {
expprojectService.updateMain(expproject, expprojectPage.getExpandproList());
return Result.OK("编辑成功!");
}else {

@ -244,8 +244,11 @@ public class SysDepartController {
//单位法人角色时,只查询自己部门
if ("faren_admin".equals(user.getRoleCode())) {
queryWrapper.eq("id", user.getOrgId());
} else { // 查询下级部门
} else if ("quxian_admin".equals(user.getRoleCode())) {
queryWrapper.eq("parent_id", user.getOrgId());
} else if ("kejiju_admin".equals(user.getRoleCode())) {// 查询所有法人级部门
queryWrapper.ne("depart_name_abbr","null");
queryWrapper.ne("depart_name_abbr","");
}
return sysDepartService.queryPageList(req, queryWrapper, pageSize, pageNo);

@ -8,7 +8,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -194,19 +193,15 @@ public class SysUserController {
public Result<IPage<SysUser>> getDeclarantList(SysUser user, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
user.setUserType("shenbaoren");
String roleCode = loginUser.getRoleCode();
List<String> userIds = new LinkedList<>();
// List<String> userIds = new LinkedList<>();
//申报人是只查询自己
if (StringUtils.equals(roleCode, "shenbaoren_role")) {
userIds.add(loginUser.getId());
} else if (StringUtils.equals(roleCode, "faren_admin")) {
List<SysUserDepart> departList = sysUserDepartService.list(new LambdaQueryWrapper<SysUserDepart>().eq(SysUserDepart::getDepId, loginUser.getOrgId()));
userIds = Optional.ofNullable(departList).orElse(new LinkedList<>()).stream().map(u -> u.getUserId()).collect(Collectors.toList());
}
user.setUserType("shenbaoren");
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap());
if (ObjectUtil.isNotEmpty(userIds)) {
queryWrapper.in("id", userIds);
if (StringUtils.equals(roleCode, "shenbaoren_role")) {
queryWrapper.eq("org_code", loginUser.getOrgCode());
} else {
queryWrapper.likeRight("org_code", loginUser.getOrgCode());
}
return sysUserService.queryPageList(req, queryWrapper, pageSize, pageNo);
}

@ -211,7 +211,8 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
if (oConvertUtils.isEmpty(sysDepart.getParentId())) {
sysDepart.setOrgCategory("1");
} else {
sysDepart.setOrgCategory("2");
//sysDepart.setOrgCategory("2");原来设置为2,暂时设置3
sysDepart.setOrgCategory("3");
}
}
this.save(sysDepart);

@ -14,6 +14,8 @@ VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
#后台接口父地址(必填)
VITE_GLOB_API_URL=/kejiju
VITE_GLOB_API_URL=/kjj
VITE_GLOB_API_URL_CXQ=http://localhost:18088/jeecg-boot
#后台接口全路径地址(必填)
VITE_GLOB_DOMAIN_URL=http://182.92.169.222:18090/jeecg-boot

@ -49,6 +49,7 @@ enum Api {
getLoginQrcode = '/sys/getLoginQrcode',
//
getQrcodeToken = '/sys/getQrcodeToken',
getdepdataapi= '/expert/expert/getdepdata',
}
/**
@ -239,3 +240,8 @@ export async function validateCasLogin(params) {
let url = Api.validateCasLogin;
return defHttp.get({ url: url, params });
}
export async function getdepdata(params) {
let url = Api.getdepdataapi;
return defHttp.get({ url: url, params });
}

@ -182,7 +182,7 @@ function getTableAction(record) {
// },
{
label: '驳回',
ifShow: userStore.getUserInfo.roleCode !='faren_admin' && record.status == 1,
ifShow: userStore.getUserInfo.roleCode =='quxian_admin' && record.status == 1,
popConfirm: {
title: '确定驳回吗?',
confirm: handleFrozen.bind(null, record, 0),
@ -190,7 +190,7 @@ function getTableAction(record) {
},
{
label: '通过',
ifShow: userStore.getUserInfo.roleCode !='faren_admin' && record.status == 0,
ifShow: userStore.getUserInfo.roleCode =='quxian_admin' && record.status == 0,
popConfirm: {
title: '确定通过吗?',
confirm: handleFrozen.bind(null, record, 1),

@ -15,11 +15,11 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'departNameAbbr',
},
{
/* {
title: '编码',
align:"center",
dataIndex: 'orgCode'
},
},*/
{
title: '手机号',
align:"center",

@ -20,7 +20,7 @@
<div class="column-list">
<div class="title">栏目列表</div>
<div class="list">
<div class="item" @click="getindexallarticleEvent">全部</div>
<div :class="columnId === '0' ? 'item active' : 'item'" @click="getindexallarticleEvent">全部</div>
<div :class="columnId === i.id ? 'item active' : 'item'" v-for="i in newColumnList" :key="i.id" @click="getMyNewsList(i)">{{ i.name }}</div>
<!-- <div class="item">项目申报</div>
<div class="item">新闻列表</div> -->
@ -84,6 +84,9 @@
}
};
const getindexallarticleEvent = async () => {
columnId.value = '0';
console.log( columnId.value);
const res = await getindexallarticle();
console.log(res);
newList.value = res.records;
@ -97,6 +100,7 @@
path: '/main-home/newsInfo',
query: {
id: item.id,
type:1
},
});
};

@ -20,8 +20,8 @@
<div class="column-list">
<div class="title">栏目列表</div>
<div class="list">
<div class="item" @click="getindexallarticleEvent">全部</div>
<div class="item" v-for="i in newColumnList" :key="i.id" @click="getMyNewsList(i)">{{ i.name }}</div>
<div :class="columnId === '0' ? 'item active' : 'item'" @click="getindexallarticleEvent">全部</div>
<div :class="columnId === i.id ? 'item active' : 'item'" v-for="i in newColumnList" :key="i.id" @click="getMyNewsList(i)">{{ i.name }}</div>
<!-- <div class="item">项目申报</div>
<div class="item">新闻列表</div> -->
</div>
@ -43,6 +43,8 @@
pageSize: 10,
pageNo: 1,
});
const columnId = ref('');
const newColumnList = ref([]);
const getindexcolumnEvent = async () => {
const res = await getindexcolumn();
@ -63,7 +65,6 @@
newList.value = res.records;
total.value = res.total;
};
const columnId = ref('');
const onChange = (page) => {
console.log(page);
page.pageNo = page;
@ -74,6 +75,7 @@
}
};
const getindexallarticleEvent = async () => {
columnId.value = '0';
const res = await getindexgzdt();
console.log(res);
newList.value = res.records;
@ -88,6 +90,7 @@
path: '/main-home/newsInfo',
query: {
id: item.id,
type:3
},
})
}
@ -192,8 +195,8 @@
border-bottom: 1px solid #d9d9d9;
cursor: pointer;
}
.item:hover {
color: #002e97;
.active{
color: #002e97 !important;
}
}
}

@ -20,8 +20,9 @@
<div class="column-list">
<div class="title">栏目列表</div>
<div class="list">
<div class="item" @click="getindexallarticleEvent">全部</div>
<div class="item" v-for="i in newColumnList" :key="i.id" @click="getMyNewsList(i)">{{ i.name }}</div>
<div :class="columnId === '0' ? 'item active' : 'item'" @click="getindexallarticleEvent">全部</div>
<div :class="columnId === i.id ? 'item active' : 'item'" v-for="i in newColumnList" :key="i.id" @click="getMyNewsList(i)">{{ i.name }}</div>
<!-- <div class="item">项目申报</div>
<div class="item">新闻列表</div> -->
</div>
@ -43,6 +44,8 @@
pageSize: 10,
pageNo: 1,
});
const columnId = ref('');
const newColumnList = ref([]);
const getindexcolumnEvent = async () => {
const res = await getindexcolumn();
@ -63,7 +66,6 @@
newList.value = res.records;
total.value = res.total;
};
const columnId = ref('');
const onChange = (page) => {
console.log(page);
page.pageNo = page;
@ -74,6 +76,7 @@
}
};
const getindexallarticleEvent = async () => {
columnId.value = '0'
const res = await getindexnotice();
console.log(res);
newList.value = res.records;
@ -88,6 +91,7 @@
path: '/main-home/newsInfo',
query: {
id: item.id,
type:2
},
})
}
@ -112,6 +116,7 @@
border-bottom: 2px solid #ccc;
padding-bottom: 45px;
margin-top: 40px;
.left {
width: 100px;
height: 100px;
@ -192,9 +197,9 @@
border-bottom: 1px solid #d9d9d9;
cursor: pointer;
}
.item:hover {
color: #002e97;
}
// .item:hover {
// color: #002e97;
// }
}
}
}
@ -209,4 +214,7 @@
display: flex;
justify-content: center;
}
.active{
color: #002e97 !important;
}
</style>

@ -41,7 +41,7 @@
</div>
<div class="inner">
<ul>
<li v-for="item in noticeList" :key="item.id" @click="goToNewInfo(item)">{{ item.title }}</li>
<li v-for="item in noticeList" :key="item.id" @click="goToNewInfo(item,2)">{{ item.title }}</li>
</ul>
</div>
</div>
@ -57,7 +57,7 @@
</div>
<div class="inner">
<ul>
<li v-for="item in newList" :key="item.id" @click="goToNewInfo(item)">{{ item.title }}</li>
<li v-for="item in newList" :key="item.id" @click="goToNewInfo(item,1)">{{ item.title }}</li>
</ul>
</div>
</div>
@ -68,7 +68,7 @@
</div>
<div class="inner">
<ul>
<li v-for="item in gzdtList" :key="item.id" @click="goToNewInfo(item)">{{ item.title }}</li>
<li v-for="item in gzdtList" :key="item.id" @click="goToNewInfo(item,3)">{{ item.title }}</li>
</ul>
</div>
</div>
@ -150,11 +150,12 @@
const goToNewList = () => {
router.push('/main-home/newsList');
};
const goToNewInfo = (item) => {
const goToNewInfo = (item,type=1) => {
router.push({
path: '/main-home/newsInfo',
query: {
id: item.id,
type:type
},
});
};
@ -525,13 +526,13 @@
color: #fff;
}
:deep(:where(.css-dev-only-do-not-override-1hajlzy).ant-carousel .slick-dots) {
justify-content: end;
bottom: 4px;
right: 5px;
justify-content: end !important;
bottom: 4px !important;
right: 5px !important;
}
:deep(:where(.css-dev-only-do-not-override-1hajlzy).ant-carousel .slick-dots li button) {
width: 8px;
height: 8px;
border-radius: 50%;
width: 8px !important;
height: 8px !important;
border-radius: 50% !important;
}
</style>

@ -1,13 +1,13 @@
<template>
<div class="container">
<div class="small">
<ul>
<!-- <ul>
<li>首页</li>
<li>|</li>
<li>仪器共享</li>
<li>|</li>
<li>科研校园</li>
</ul>
</ul> -->
</div>
<div class="header">
<div class="headerLeft">

@ -28,6 +28,8 @@
import {getindexarticleitem} from '@/api/mainHome'
import { useRoute,useRouter } from 'vue-router';
import { ref } from 'vue';
import { useSettingStore } from '/@/store/modules/setting';
const settingStore = useSettingStore();
const route = useRoute()
const router = useRouter()
const id = route.query.id
@ -43,6 +45,14 @@ const getInfo = async () => {
info.value = res[0]
}
getInfo()
if(Object.keys(route.query).length > 1 && route.query.type == 2) {
console.log('设置');
settingStore.serIndex(5)
}else if(Object.keys(route.query).length > 1 && route.query.type == 3) {
settingStore.serIndex(6)
}
</script>
<style scoped lang="less">

@ -5,7 +5,7 @@
<div class="resultShow">
<div class="top">
<div class="a">项目咨询</div>
<div class="aa">更多</div>
<div style="cursor: pointer;"class="aa" @click="router.push('/main-home/newsList')">更多</div>
</div>
<div class="buttom">
<ul>

@ -66,6 +66,11 @@ export const columns: BasicColumn[] = [
return render.renderSwitch(text, [{text:'正常',value:'N'},{text:'异常',value:'Y'}]);
},
},
{
title: '异常原因',
align: "center",
dataIndex: 'errinfo_dictText'
},
];
//

@ -100,7 +100,7 @@
canResize:false,
useSearchForm: false,
actionColumn: {
width: 120,
width: 320,
fixed:'right'
},
beforeFetch: async (params) => {
@ -294,12 +294,12 @@
}
:deep(.ant-table-wrapper .ant-table-tbody >tr >td){
/* :deep(.ant-table-wrapper .ant-table-tbody >tr >td){
height: 140px;
}
:deep(.jeecg-basic-table-action){
height: 140px;
flex-wrap: wrap;
justify-content: center;
}
}*/
</style>

@ -5,7 +5,7 @@
<!--插槽:table标题-->
<template #tableTitle>
<!-- <a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>-->
<!-- <a-button type="primary" @click="go_xinjianshenbao" preIcon="ant-design:plus-outlined"> 新建报书</a-button>-->
<!-- <a-button type="primary" @click="go_xinjianshenbao" preIcon="ant-design:plus-outlined"> 新建报书</a-button>-->
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<!-- <j-upload-button type="primary" v-auth="'project:project:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>-->
<a-dropdown>
@ -24,7 +24,7 @@
</a-menu-item>-->
</a-menu>
</template>
<a-button type="primary">新建
<a-button type="primary">新建
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
@ -91,7 +91,7 @@ const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
],
},
actionColumn: {
width: 320,
width: 380,
fixed:'right'
},
beforeFetch: (params) => {

@ -92,11 +92,10 @@
import { useModal } from '/@/components/Modal';
import { useMessage } from '/@/hooks/web/useMessage';
import { useMethods } from '/@/hooks/system/useMethods';
import { Api, deleteBatchDepart, queryDepartTreeSync4ZhuGuanBuMen } from '../depart.api';
import { Api, deleteBatchDepart, queryDepartTreeSync } from '../depart.api';
import { searchByKeywords } from '/@/views/system/departUser/depart.user.api';
import DepartFormModal from '/@/views/system/depart/components/DepartFormModal.vue';
import { Popconfirm } from 'ant-design-vue';
import {useUserStore} from "@/store/modules/user";
const prefixCls = inject('prefixCls');
const emit = defineEmits(['select', 'rootTreeData']);
@ -125,16 +124,13 @@
// modal
const [registerModal, { openModal }] = useModal();
const userStore = useUserStore();
//
async function loadRootTreeData() {
try {
loading.value = true;
treeData.value = [];
const result = await queryDepartTreeSync4ZhuGuanBuMen({
parentOrgCode: userStore.getUserInfo.orgCode,
});
const result = await queryDepartTreeSync();
if (Array.isArray(result)) {
treeData.value = result;
}
@ -162,9 +158,8 @@
//
async function loadChildrenTreeData(treeNode) {
try {
const result = await queryDepartTreeSync4ZhuGuanBuMen({
// pid: treeNode.dataRef.id,
parentOrgCode: treeNode.dataRef.orgCode,
const result = await queryDepartTreeSync({
pid: treeNode.dataRef.id,
});
if (result.length == 0) {
treeNode.dataRef.isLeaf = true;

@ -246,7 +246,7 @@
return;
}
// 8
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&+=!])(?=.{8,})$/;
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])[A-Za-z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{8,}$/;
if (!passwordRegex.test(formData.password)) {
createMessage.warn(t('sys.login.passwordPlaceholderNotReg'));
return;

@ -66,8 +66,28 @@
<a-form-item>
<div class="aui-input-line">
<JSelectDept :placeholder="t('sys.login.selectorgPlaceholder')" v-model:value="formData.ssdep" :multiple="false" />
<!-- <JSelectDept :placeholder="t('sys.login.selectorgPlaceholder')" v-model:value="formData.ssdep" :multiple="false" />-->
<j-search-select
placeholder="选择所属单位"
v-model:value="formData.ssdep"
:dictOptions="dictOptions">
</j-search-select>
{{ selectValue }}
</div>
</a-form-item>
<a-form-item>
<div class="aui-input-line">
@ -115,7 +135,7 @@
<script lang="ts" setup name="mini-register">
import { ref, reactive, unref, toRaw,onMounted } from 'vue';
import { getCaptcha, registerFaren, registerexp,getCodeInfo } from '/@/api/sys/user';
import { getCaptcha, registerFaren, registerexp,getCodeInfo,getdepdata } from '/@/api/sys/user';
import { SmsEnum } from '/@/views/sys/login/useLogin';
import { useMessage } from '/@/hooks/web/useMessage';
import logoImg from '/@/assets/loginmini/icon/jeecg_logo.png';
@ -125,7 +145,12 @@
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import { useI18n } from '/@/hooks/web/useI18n';
import codeImg from '/@/assets/images/checkcode.png';
import {findprojectandnumber} from "@/views/dashboard/workbench/components/api";
import JSearchSelect from '/@/components/Form/src/jeecg/components/JSearchSelect.vue';
const selectValue=ref('');
const dictOptions=ref([]);
const { t } = useI18n();
const { notification, createErrorModal, createMessage } = useMessage();
const emit = defineEmits(['go-back', 'success', 'register']);
@ -164,6 +189,20 @@
//
const confirmPwdIndex = ref<string>('close');
function item03(){
getdepdata().then(res => {
console.log(res,"res")
dictOptions.value = res.map(item => {
return {text:item.depname,value:item.depid}
})
// res.forEach(item => {
// dictOptions.value.push(item);
// });
console.log(dictOptions.value,"dictOptions")
})}
item03();
/**
* 返回
*/

Loading…
Cancel
Save