Преглед изворни кода

机构添加站点判断,站点添加人员判断

liao-sea пре 1 година
родитељ
комит
b5a62283c5

+ 6 - 0
src/main/java/com/hz/employmentsite/controller/baseSettings/UserInfoController.java

@@ -40,6 +40,12 @@ public class UserInfoController {
         return RespGenerstor.success(result);
     }
 
+    @PostMapping("getListBySiteID")
+    public BaseResponse<Integer> getListBySiteID(@RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,@RequestParam(required = false) String siteID) {
+        return RespGenerstor.success(userInfoService.getListBySiteID(pageIndex,pageSize, siteID));
+    }
+
+
     @GetMapping("get")
     public BaseResponse<UserInfoVo> get(@RequestParam(required = false) String siteUserID) {
         UserInfoVo dataModel = new UserInfoVo();

+ 2 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/UserInfoCQuery.java

@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 public interface UserInfoCQuery {
+
     List<UserInfoVo> getList(@Param("primaryKey") String primaryKey, @Param("userName") String userName);
 
+    List<UserInfoVo> getListBySiteID(@Param("siteID") String siteID);
 }

+ 1 - 1
src/main/java/com/hz/employmentsite/services/impl/baseSettings/InstitutionImpl.java

@@ -105,7 +105,7 @@ public class InstitutionImpl implements InstitutionService {
             result = pcInstitutionMapper.updateByPrimaryKey(dbData);
         }
         /*先删除所有关联数据,再添加*/
-        var allExistData = siteInstitutionCQuery.getListBySiteID(data.getInstitutionID());
+        var allExistData = siteInstitutionCQuery.getListByInstitutionID(data.getInstitutionID());
         if (allExistData != null && allExistData.size() > 0){
             for(PcSiteInstitution curLinkData : allExistData) {
                 var siteInstitutionID = curLinkData.getSiteInstitutionID();

+ 20 - 3
src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteInfoImpl.java

@@ -4,14 +4,18 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.mapper.PcSiteMapper;
 import com.hz.employmentsite.mapper.PcSiteInstitutionMapper;
+import com.hz.employmentsite.mapper.PcSiteUserMapper;
 import com.hz.employmentsite.mapper.cquery.SiteInfoCQuery;
 import com.hz.employmentsite.mapper.cquery.SiteInstitutionCQuery;
 import com.hz.employmentsite.model.PcSite;
 import com.hz.employmentsite.model.PcSiteExample;
 import com.hz.employmentsite.model.PcSiteInstitution;
+import com.hz.employmentsite.model.PcSiteUser;
 import com.hz.employmentsite.services.service.baseSettings.SiteInfoService;
 import com.hz.employmentsite.util.StringUtils;
 import com.hz.employmentsite.vo.baseSettings.SiteInfoVo;
+import com.hz.employmentsite.vo.baseSettings.UserInfoVo;
+import com.hz.employmentsite.vo.taskAndLog.SiteUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -35,6 +39,9 @@ public class SiteInfoImpl implements SiteInfoService {
     @Autowired
     private PcSiteMapper pcSiteMapper;
 
+    @Autowired
+    private PcSiteUserMapper pcSiteUserMapper;
+
     @Autowired
     private PcSiteInstitutionMapper pcSiteInstitutionMapper;
 
@@ -101,7 +108,7 @@ public class SiteInfoImpl implements SiteInfoService {
             dbData.setModifyTime(new Date());
             result = pcSiteMapper.updateByPrimaryKey(dbData);
         }
-        /*先删除所有关联数据,再添加*/
+        /*修改驿站站点信息:先删除所有关联数据,再添加*/
         var allExistData = siteInstitutionCQuery.getListBySiteID(data.getSiteID());
         if (allExistData != null && allExistData.size() > 0){
             for(PcSiteInstitution curLinkData : allExistData) {
@@ -109,8 +116,7 @@ public class SiteInfoImpl implements SiteInfoService {
                 result += pcSiteInstitutionMapper.deleteByPrimaryKey(siteInstitutionID);
             }
         }
-        /*链接表数据添加*/
-        if (data.institutionID != null || data.institutionID !=""){
+        if (!stringUtils.IsNullOrEmpty(data.institutionID)){
             PcSiteInstitution insertLinkData =  new PcSiteInstitution();
             insertLinkData.setSiteInstitutionID(UUID.randomUUID().toString());
             insertLinkData.setSiteID(data.getSiteID());
@@ -119,6 +125,17 @@ public class SiteInfoImpl implements SiteInfoService {
             insertLinkData.setCreateUserID(userId);
             result += pcSiteInstitutionMapper.insert(insertLinkData);
         }
+        /*修改站点人员信息*/
+        if(data.manageUsers.size() > 0){
+            List<UserInfoVo> manageUsers = data.manageUsers.stream().toList();
+            for (var curData: manageUsers) {
+                PcSiteUser curUserData = pcSiteUserMapper.selectByPrimaryKey(curData.getSiteUserID());
+                curUserData.setSiteID(curData.getSiteID());
+                curUserData.setUpdateBy(userId);
+                curUserData.setUpdateTime(new Date());
+                result +=  pcSiteUserMapper.updateByPrimaryKey(curUserData);
+            }
+        }
         return result;
     }
 

+ 9 - 0
src/main/java/com/hz/employmentsite/services/impl/baseSettings/UserInfoImpl.java

@@ -9,6 +9,7 @@ import com.hz.employmentsite.model.PcSiteUserExample;
 import com.hz.employmentsite.model.SelectProps;
 import com.hz.employmentsite.services.service.baseSettings.UserInfoService;
 import com.hz.employmentsite.util.StringUtils;
+import com.hz.employmentsite.vo.baseSettings.SiteInfoVo;
 import com.hz.employmentsite.vo.baseSettings.UserInfoVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,6 +37,14 @@ public class UserInfoImpl implements UserInfoService {
         return result;
     }
 
+    @Override
+    public PageInfo<UserInfoVo> getListBySiteID(int pageIndex, int pageSize, String siteID) {
+        PageHelper.startPage(pageIndex, pageSize);
+        List<UserInfoVo> dataList = userInfoCQuery.getListBySiteID(siteID);
+        PageInfo<UserInfoVo> result = new PageInfo(dataList);
+        return result;
+    }
+
     @Override
     public UserInfoVo get(String siteUserID) {
         List<String> ids = new ArrayList<>();

+ 2 - 0
src/main/java/com/hz/employmentsite/services/service/baseSettings/UserInfoService.java

@@ -11,6 +11,8 @@ public interface UserInfoService {
 
     PageInfo<UserInfoVo> getList(int pageIndex, int pageSize, String primaryKey, String userName);
 
+    PageInfo<UserInfoVo> getListBySiteID(int pageIndex, int pageSize, String siteID);
+
     UserInfoVo get(String siteUserID);
 
     List<SelectProps> getDataList();

+ 9 - 0
src/main/resources/mapping/cquery/UserInfoCQuery.xml

@@ -15,4 +15,13 @@
 
     </select>
 
+    <select id="getListBySiteID" resultType="com.hz.employmentsite.vo.baseSettings.UserInfoVo">
+        select siteUser.*,dic_userRole.Name as RoleName,dic_gender.Name as GenderName from pc_site_user siteUser
+        left join (select * from sys_dictionary_item where DictionaryCode ='SiteUserRole' ) dic_userRole  on siteUser.RoleID = dic_userRole.Value
+        left join (select * from sys_dictionary_item where DictionaryCode ='Gender' ) dic_gender  on siteUser.Gender = dic_gender.Value
+        where 1=1
+        <if test="siteID!='' and siteID!=null">
+            and siteID = #{siteID}
+        </if>
+    </select>
 </mapper>

+ 13 - 0
vue/src/api/baseSettings/userInfo.ts

@@ -27,6 +27,19 @@ export function getSiteUserDataList(){
   );
 }
 
+export function getListBySiteID(params: any) {
+  return request<object>(
+    {
+      url: "userInfo/getListBySiteID",
+      method: 'post',
+      params: params,
+    },
+    {
+      isNew: true,
+    },
+  );
+}
+
 export function getSiteUserByID(siteUserID: string) {
   return request<object>(
     {

+ 33 - 31
vue/src/views/baseSettings/institution/edit.vue

@@ -148,13 +148,13 @@ export default defineComponent({
   setup(props) {
     /*const feedbackDateDetail = ref();
     const resolveDateDetail = ref();*/
-    const formData = reactive<InstitutionModel>({ dataModel:{}});
-    const visible = ref<boolean>(false);
-    const confirmLoading = ref<boolean>(false);
     const title = ref();
     const opCategory = ref<any>();
+    const visible = ref<boolean>(false);
     const isAllowAdd = ref<boolean>(true);
     const isAllowCommit = ref<boolean>(false);
+    const confirmLoading = ref<boolean>(false);
+    const formData = reactive<InstitutionModel>({ dataModel:{}});
     const pageParams = reactive({
       pageIndex: 1,
       pageSize: 10,
@@ -173,11 +173,19 @@ export default defineComponent({
       showSizeChanger: true,
       showTotal: total => getPaginationTotalTitle(total)
     }));
+    const onSelectChange = (selectedRowKeys: any) => {
+      formState.selectedRowKeys = selectedRowKeys;
+    };
+    const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
+      pageParams.pageIndex = pag.current;
+      pageParams.pageSize = pag.pageSize;
+    };
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
       loading: false
     });
+
     const allSites = ref<any>([]);
     const manageSites = ref<any>([]);
 
@@ -217,7 +225,7 @@ export default defineComponent({
       if(allSites.value.length >0){
         const newSite = allSites.value[0];
         (manageSites.value as any[]).push({siteID:newSite.siteID,siteName:newSite.siteName,detailAddress:newSite.detailAddress});
-        isAllowAdd.value = false;
+        validateSameSite();
       }else{
         message.error("未查询到站点信息!");
       }
@@ -227,36 +235,31 @@ export default defineComponent({
       validateSameSite();
     }
 
-    const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
-      pageParams.pageIndex = pag.current;
-      pageParams.pageSize = pag.pageSize;
-    };
-
-    const onSelectChange = (selectedRowKeys: any) => {
-      formState.selectedRowKeys = selectedRowKeys;
-    };
-
     const manageSitesChange = (index:any,siteID:any) =>{
-      isAllowAdd.value = true
-      console.log('manageSite',manageSites.value);
       getSiteByID(siteID).then((result :any)=> {
         manageSites.value[index]= result;
+        console.log("result",result);
+        console.log("manageSites",manageSites.value);
+        validateSameSite();
       });
-      /*validateSameSite();*/
     }
 
     const validateSameSite = ()=>{
-      console.log("manageSites",manageSites.value);
-      manageSites.value.forEach(item=>{
-        const sameData = manageSites.value.filter(x => x.siteID == item.siteID);
-        console.log("sameData",sameData);
-        if (sameData.value.length >1){
-          isAllowAdd.value = false;
-        }
-      });
+      isAllowCommit.value = false;
+      isAllowAdd.value = true;
+      if(manageSites.value.length>1){
+        manageSites.value.forEach(item=>{
+          const sameData = manageSites.value.filter(x => x.siteID == item.siteID);
+          console.log("sameData",sameData);
+          if (sameData.length >1){
+            isAllowAdd.value = false;
+          }
+        });
+      }
     }
 
     const validateCommit = ()  =>{
+        validateSameSite();
         if (!isAllowAdd.value){
           message.error("不允许添加相同的站点!");
           return;
@@ -304,8 +307,12 @@ export default defineComponent({
 
     return {
       ...toRefs(formData),
-      pageParams,
+      title,
+      visible,
+      opCategory,
+      confirmLoading,
       columns,
+      pageParams,
       pagination,
       formState,
       allSites,
@@ -314,10 +321,6 @@ export default defineComponent({
       resolveDateDetail,*/
       isAllowCommit,
       isAllowAdd,
-      opCategory,
-      visible,
-      title,
-      confirmLoading,
       show,
       getAllSites,
       GetManageSites,
@@ -328,8 +331,7 @@ export default defineComponent({
       manageSitesChange,
       handleOk,
       handleCancel,
-      validateCommit,
-      validateSameSite
+      validateCommit
     };
   },
   created() {

+ 165 - 24
vue/src/views/baseSettings/site/edit.vue

@@ -76,6 +76,52 @@
           </a-form-item>
         </a-col>
       </a-row>
+      <a-divider orientation="left">管理人员 共计:{{manageUsers.length}}</a-divider>
+      <a-row>
+        <a-col :span="24" style="text-align: right; margin-top: 20px; margin-right: 20px">
+          <Space>
+            <a-button @click="addSiteUser">
+              <template #icon>
+                <plus-circle-outlined/>
+              </template>
+              新增
+            </a-button>
+          </Space>
+        </a-col>
+      </a-row>
+      <a-row>
+        <a-col style="margin-bottom: 20px;">
+          <a-table :columns="columns" :data-source="manageUsers" :pagination="pagination"
+                   :loading="formState.loading"
+                   @change="handleTableChange"
+                   :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
+                   :row-key="record=>record.siteId"
+                   bordered>
+            <template #bodyCell="{ column ,index}">
+              <template v-if="column.key === 'name'">
+                <div>
+                  <a-select
+                    ref="select"
+                    v-model:value="manageUsers[index][column.key]"
+                    :options="allUsers"
+                    @change="manageUsersChange(index,manageUsers[index][column.key])"
+                    :field-names="{ label: 'name', value: 'siteUserID' }" style="width: 200px" >
+                  </a-select>
+                </div>
+              </template>
+              <template v-if="column.key === 'genderName'">
+                {{manageUsers[index][column.key]}}
+              </template>
+              <template v-if="column.key === 'roleName'">
+                {{manageUsers[index][column.key]}}
+              </template>
+              <template v-if="column.key === 'operation'">
+                <a-button type="link" size="small" @click="delSiteUser(index)">删除</a-button>
+              </template>
+            </template>
+          </a-table>
+        </a-col>
+      </a-row>
       <a-divider orientation="left">其他信息</a-divider>
       <a-row>
         <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.remark"  :disabled="opCategory==3"
@@ -85,13 +131,14 @@
   </a-modal>
 </template>
 <script lang="ts">
-import {defineComponent, reactive, ref, toRefs} from "vue";
+import {computed, defineComponent, reactive, ref, toRefs} from "vue";
 import {getSiteByID, saveSite} from "@/api/baseSettings/siteInfo";
 import BUploadFile from "@/components/file/uploadFile.vue";
-import {message, SelectProps} from "ant-design-vue";
+import {message, SelectProps, TableColumnsType, TableProps} from "ant-design-vue";
 import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
-import {getSiteUserDataList} from "@/api/baseSettings/userInfo";
+import {getSiteUserList,getSiteUserDataList,getListBySiteID, getSiteUserByID} from "@/api/baseSettings/userInfo";
 import {getInstitutionDataList} from "@/api/baseSettings/institution";
+import {getPaginationTotalTitle} from "@/utils/common";
 
 interface siteModel {
   dataModel: any;
@@ -106,23 +153,53 @@ export default defineComponent({
     }
   },
   setup(props) {
-    const formData = reactive<siteModel>({ dataModel:{}});
     const visible = ref<boolean>(false);
+    const isAllowAdd = ref<boolean>(false);
+    const isAllowCommit = ref<boolean>(false);
     const confirmLoading = ref<boolean>(false);
     const title = ref();
-    const isAllowCommit = ref<boolean>(false);
     const opCategory = ref<any>();
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
       loading: false
     });
+    const formData = reactive<siteModel>({ dataModel:{}});
+    const pageParams = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      siteID:''
+    });
+    const columns: TableColumnsType = [
+      {title: '序号', align: "center",key: 'siteUserID',customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`},
+      {title: '姓名', dataIndex: 'name', key: 'name', align: "center"},
+      {title: '性别', dataIndex: 'genderName', key: 'genderName', align: "center"},
+      {title: '角色', dataIndex: 'roleName', key: 'roleName', align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right',width:170, align: "center"},
+    ];
+    const pagination = computed(() => ({
+      total: formState.total,
+      current: pageParams.pageIndex,
+      pageSize: pageParams.pageSize,
+      showSizeChanger: true,
+      showTotal: total => getPaginationTotalTitle(total)
+    }));
+    const onSelectChange = (selectedRowKeys: any) => {
+      formState.selectedRowKeys = selectedRowKeys;
+    };
+    const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
+      pageParams.pageIndex = pag.current;
+      pageParams.pageSize = pag.pageSize;
+    };
 
     const regionList = ref<SelectProps['options']>();
     const streetList = ref<SelectProps['options']>();
     const siteUserList = ref<SelectProps['options']>();
     const institutionList = ref<SelectProps["options"]>();
 
+    const manageUsers = ref<any>([]);
+    const allUsers = ref<any>([]);
+
     const getRegionList = async function(){
       const regionResult: any = await getRegionCodeList();
       regionList.value = regionResult;
@@ -131,7 +208,7 @@ export default defineComponent({
       const streetResult: any = await getStreetCodeList(formData.dataModel.regionCode);
       streetList.value = streetResult;
     }
-    const getSiteUserList = async function(){
+    const getUserDataList = async function(){
       const siteUserResult :any = await getSiteUserDataList();
       console.log('siteUserResult',siteUserResult);
       siteUserList.value = siteUserResult;
@@ -146,6 +223,7 @@ export default defineComponent({
       getSiteByID(siteID).then((result: any) => {
         formData.dataModel = result;
         console.log("dataModel",formData.dataModel);
+        getManageUsers(formData.dataModel.siteID);
         if (formData.dataModel.regionCode != null){
           getStreetList();
         }
@@ -154,21 +232,75 @@ export default defineComponent({
         }
       });
     }
-
     const show = (id: any,method:string,category:any) => {
       title.value ="驿站站点管理-"+method;
       opCategory.value = category;
+      getAllUsers();
+      getRegionList();
+      getInstitutionList();
+      getUserDataList();
       loadData(id);
       visible.value = true;
     };
 
-    const onSelectChange = (selectedRowKeys: any) => {
-      formState.selectedRowKeys = selectedRowKeys;
-    };
+    const getAllUsers = () => {
+      pageParams.siteID = '';
+      getSiteUserList(pageParams).then((result :any) => {
+        allUsers.value = result.list;
+        console.log('allUsers',allUsers);
+      })
+    }
+    const getManageUsers = (id: string) => {
+      pageParams.siteID = id;
+      getListBySiteID(pageParams).then((result :any)=> {
+        manageUsers.value = result.list;
+      });
+    }
 
-    const validate = () => {
+    const addSiteUser = () => {
+      if(allUsers.value.length >0){
+        const newUser = allUsers.value[0];
+        (manageUsers.value as any[]).push({siteUserID:newUser.siteUserID,siteID:formData.dataModel.siteID,name:newUser.name,genderName:newUser.genderName,roleName:newUser.roleName});
+        validateSameUser();
+      }else{
+        message.error("未查询到站点信息!");
+      }
+    }
+    const delSiteUser = (site) =>{
+      (manageUsers.value as any[]).splice(site, 1);
+      validateSameUser();
+    }
+    const manageUsersChange = (index:any,siteUserID:any) =>{
+      console.log('siteUserID',siteUserID);
+      getSiteUserByID(siteUserID).then((result :any)=> {
+        result.siteID = formData.dataModel.siteID;
+        manageUsers.value[index]= result;
+        console.log('manageUsers',manageUsers.value);
+        validateSameUser();
+      });
+    }
+
+    const validateSameUser = ()=>{
+      isAllowCommit.value = false;
+      isAllowAdd.value = true;
+      if (manageUsers.value.length>1){
+        manageUsers.value.forEach(item=>{
+          const sameData = manageUsers.value.filter(x => x.siteUserID == item.siteUserID);
+          console.log("sameData",sameData);
+          if (sameData.length >1){
+            isAllowAdd.value = false;
+          }
+        });
+      }
+    }
+
+    const validateCommit = () => {
+      validateSameUser();
       console.log(formData.dataModel);
-      if (formData.dataModel.siteCode==null) {
+      if (!isAllowAdd.value){
+        message.error("不允许添加相同的人员!");
+        return;
+      }else if (formData.dataModel.siteCode==null) {
         message.error("请输入驿站编号!");
         return;
       }else if (formData.dataModel.detailAddress==null) {
@@ -179,8 +311,9 @@ export default defineComponent({
     };
 
     const handleOk = () => {
-      validate();
+      validateCommit();
       if (isAllowCommit.value){
+        formData.dataModel.manageUsers = manageUsers.value;
         saveSite(formData.dataModel).then(result => {
           if (result) {
             visible.value = false;
@@ -196,31 +329,39 @@ export default defineComponent({
 
     return {
       ...toRefs(formData),
+      title,
+      opCategory,
+      visible,
       formState,
+      isAllowAdd,
+      isAllowCommit,
+      confirmLoading,
+      columns,
+      pageParams,
+      pagination,
       regionList,
       streetList,
       siteUserList,
       institutionList,
-      isAllowCommit,
-      opCategory,
-      visible,
-      title,
-      confirmLoading,
+      allUsers,
+      manageUsers,
       show,
+      onSelectChange,
+      handleTableChange,
       getRegionList,
       getStreetList,
-      getSiteUserList,
+      getUserDataList,
       getInstitutionList,
-      onSelectChange,
+      getAllUsers,
+      addSiteUser,
+      delSiteUser,
+      manageUsersChange,
       handleOk,
       handleCancel,
-      validate
+      validateCommit
     };
   },
   created() {
-    this.getRegionList();
-    this.getInstitutionList();
-    this.getSiteUserList();
   },
 })
 </script>