瀏覽代碼

编辑页面搭建

liao-sea 1 年之前
父節點
當前提交
ee0217fd53

+ 3 - 0
src/main/java/com/hz/employmentsite/vo/baseSettings/SiteInfoVo.java

@@ -9,7 +9,9 @@ public class SiteInfoVo {
     public String siteID;
     public String siteCode;
     public String regionCode;
+    public String regionName;
     public String streetCode;
+    public String streetName;
     public String detailAddress;
 
     public String siteX;
@@ -20,6 +22,7 @@ public class SiteInfoVo {
     public String fzrMobile;
 
     public String institutionName;
+    public Integer userCount;
 
     public String createUserID;
     public Time createTime;

+ 7 - 7
src/main/java/com/hz/employmentsite/vo/baseSettings/UserInfoVo.java

@@ -5,14 +5,14 @@ import java.sql.Time;
 @Data
 public class UserInfoVo {
 
-    public String userID;
-    public Integer userTypeID;
-    public String userTypeName;
-    public String loginID;
-    public String password;
+    public String siteUserID;
+    public String siteID;
     public String name;
-
-    public Integer recordStatus;
+    public Integer gender;
+    public String genderName;
+    public String mobile;
+    public Integer roleID;
+    public String userTypeName;
 
     public String createBy;
     public Time createTime;

+ 2 - 2
src/main/java/com/hz/employmentsite/vo/taskAndLog/DoWorkVo.java

@@ -25,7 +25,7 @@ public class DoWorkVo {
     public String modifyUserID;
     public Time modifyTime;
 
-    public String regionCode;
+    public String regionName;
 
-    public String streetCode;
+    public String streetName;
 }

+ 10 - 6
src/main/resources/mapping/cquery/DoWorkCQuery.xml

@@ -2,27 +2,31 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.hz.employmentsite.mapper.cquery.DoWorkCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.taskAndLog.DoWorkVo">
-        select A.*,C.Name as userName from pc_dowork A,pc_site B,pc_site_user C where A.SiteID = B.SiteID and  A.SiteUserID = C.SiteUserID and 1=1
+        select workLog.*,siteUser.Name as UserName,region.name as RegionName,street.name as StreetName from pc_dowork workLog
+        left join area_code region on workLog.RegionCode = region.code
+        left join area_code street on workLog.StreetCode = street.code
+        left join pc_site site on workLog.SiteID = site.SiteID
+        left join pc_site_user siteUser on workLog.SiteUserID = siteUser.SiteUserID where 1=1
         <if test="primaryKey!='' and primaryKey!=null">
             and doworkID in (${primaryKey})
         </if>
         <if test="userName!='' and userName!=null">
-            and Name like Concat('%',#{userName},'%')
+            and siteUser.Name like Concat('%',#{userName},'%')
         </if>
         <if test="workStartDate!='' and workStartDate!=null">
-            and A.workTime  <![CDATA[ >= ]]> #{workStartDate}
+            and workLog.workTime  <![CDATA[ >= ]]> #{workStartDate}
         </if>
         <if test="workEndDate!='' and workEndDate!=null">
-            and A.workTime   <![CDATA[ <= ]]>  #{workEndDate}
+            and workLog.workTime   <![CDATA[ <= ]]>  #{workEndDate}
         </if>
         <if test="doTypeID!='' and doTypeID!=null">
             and doTypeID = #{doTypeID}
         </if>
         <if test="regionCode!='' and regionCode!=null">
-            and A.regionCode = #{regionCode}
+            and region.code = #{regionCode}
         </if>
         <if test="streetCode!='' and streetCode!=null">
-            and A.streetCode = #{streetCode}
+            and street.code = #{streetCode}
         </if>
     </select>
 </mapper>

+ 5 - 4
src/main/resources/mapping/cquery/InstitutionCQuery.xml

@@ -2,10 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.cquery.InstitutionCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.baseSettings.InstitutionVo">
-        select  B.*,Count(A.siteInstitutionID)as siteCount from pc_site_institution  A left join  pc_institution B on
-        A.institutionID = B.institutionID  where 1=1
+        select institution.*,COUNT(inSites.siteInstitutionID)as siteCount from  pc_institution  institution
+        left join pc_site_institution inSites on institution.institutionID = inSites.institutionID
+        where 1 = 1
         <if test="primaryKey!='' and primaryKey!=null">
-            and B.institutionID in (${primaryKey})
+            and institution.institutionID in (${primaryKey})
         </if>
         <if test="companyName!='' and companyName!=null">
             and companyName like Concat('%',#{companyName},'%')
@@ -16,7 +17,7 @@
         <if test="dutyUserName!='' and dutyUserName!=null">
             and fzrName like Concat('%',#{dutyUserName},'%')
         </if>
-        group by B.institutionID
+        group by institution.institutionID
     </select>
 
 </mapper>

+ 11 - 4
src/main/resources/mapping/cquery/SiteInfoCQuery.xml

@@ -2,10 +2,16 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.cquery.SiteInfoCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.baseSettings.SiteInfoVo">
-        select  A.*,C.companyName as institutionName from pc_site A,pc_site_institution B,pc_institution C
-        where A.SiteID = B.SiteID and B.institutionID = C.institutionID and 1=1
+        select site.*,institution.companyName as InstitutionName,COUNT(siteUser.SiteUserID)as userCount,
+               region.name as RegionName,street.name as StreetName from pc_site site
+        left join pc_site_institution inSites on site.SiteID = inSites.SiteID
+        left join pc_institution institution on inSites.institutionID = institution.InstitutionID
+        left join pc_site_user siteUser on site.SiteID = siteUser.SiteID
+        left join area_code region on site.RegionCode = region.code
+        left join area_code street on site.StreetCode = street.code
+        where 1=1
         <if test="primaryKey!='' and primaryKey!=null">
-            and A.siteID in (${primaryKey})
+            and site.siteID in (${primaryKey})
         </if>
         <if test="siteCode!='' and siteCode!=null">
             and siteCode like Concat('%',#{siteCode},'%')
@@ -14,7 +20,7 @@
             and siteName like Concat('%',#{siteName},'%')
         </if>
         <if test="institutionName!='' and institutionName!=null">
-            and C.companyName like Concat('%',#{institutionName},'%')
+            and institution.companyName  like Concat('%',#{institutionName},'%')
         </if>
         <if test="regionCode!='' and regionCode!=null">
             and regionCode like Concat('%',#{regionCode},'%')
@@ -22,6 +28,7 @@
         <if test="streetCode!='' and streetCode!=null">
             and streetCode like Concat('%',#{streetCode},'%')
         </if>
+        group by site.SiteID
     </select>
 
     <select id="getListByInstitutionID" resultType="com.hz.employmentsite.vo.baseSettings.SiteInfoVo">

+ 6 - 4
src/main/resources/mapping/cquery/UserInfoCQuery.xml

@@ -2,13 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.cquery.UserInfoCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.baseSettings.UserInfoVo">
-        select A.*,B.name as userTypeName from sys_user A,(select * from  sys_dictionary_item where dictionaryCode ='UserType') B
-        where A.userTypeID = B.value and 1=1
+        select siteUser.*,dic_userRole.Name as userTypeName,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.RoleID = dic_gender.Value
+        where 1=1
         <if test="primaryKey!='' and primaryKey!=null">
-            and userID in (${primaryKey})
+            and siteUserID in (${primaryKey})
         </if>
         <if test="userName!='' and userName!=null">
-            and A.name like Concat('%',#{userName},'%')
+            and siteUser.name like Concat('%',#{userName},'%')
         </if>
 
     </select>

+ 2 - 0
vue/src/router/asyncModules/basesettings.ts

@@ -2,5 +2,7 @@ export default {
   'baseSettings/institution/index': () => import('@/views/baseSettings/institution/index.vue'),
   'baseSettings/institution/edit': () => import('@/views/baseSettings/institution/edit.vue'),
   'baseSettings/site/index': () => import('@/views/baseSettings/site/index.vue'),
+  'baseSettings/site/edit': () => import('@/views/baseSettings/site/edit.vue'),
   'baseSettings/user/index': () => import('@/views/baseSettings/user/index.vue'),
+  'baseSettings/user/edit': () => import('@/views/baseSettings/user/edit.vue'),
 };

+ 1 - 0
vue/src/router/asyncModules/taskAndLog.ts

@@ -3,4 +3,5 @@ export default {
   'taskAndLog/dotask/add': () => import('@/views/taskAndLog/dotask/edit.vue'),
   'taskAndLog/dotask/edit': () => import('@/views/taskAndLog/dotask/edit.vue'),
   'taskAndLog/workLog/index': () => import('@/views/taskAndLog/dowork/index.vue'),
+  'taskAndLog/workLog/edit': () => import('@/views/taskAndLog/dowork/edit.vue'),
 };

+ 4 - 4
vue/src/views/baseSettings/institution/edit.vue

@@ -40,19 +40,19 @@
       </a-row>
       <a-row type="flex">
         <a-col :span="7">
-          <a-form-item label="负责人电话:"  name="DutyUserMobile" :label-col="{span:7}">
+          <a-form-item label="负责人电话"  name="DutyUserMobile" :label-col="{span:7}">
             <label v-if="isDetail">{{dataModel.fzrMobile }}</label>
             <a-input v-model:value="dataModel.fzrMobile" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="7">
-          <a-form-item label="法人姓名:"  name="LegalerName" :label-col="{span:7}">
+          <a-form-item label="法人姓名"  name="LegalerName" :label-col="{span:7}">
             <label v-if="isDetail">{{dataModel.frName }}</label>
             <a-input v-model:value="dataModel.frName" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="10">
-          <a-form-item label="法人电话:"  name="LegalerMobile" :label-col="{span:10}">
+          <a-form-item label="法人电话"  name="LegalerMobile" :label-col="{span:10}">
             <label v-if="isDetail">{{dataModel.frMobile }}</label>
             <a-input v-model:value="dataModel.frMobile" placeholder=""/>
           </a-form-item>
@@ -60,7 +60,7 @@
       </a-row>
       <a-row type="flex">
         <a-col :span="7">
-          <a-form-item label="企业机构代码:"  name="CompanyCode" :label-col="{span:7}">
+          <a-form-item label="企业机构代码"  name="CompanyCode" :label-col="{span:7}">
             <label v-if="isDetail">{{dataModel.companyCode }}</label>
             <a-input v-model:value="dataModel.companyCode" placeholder=""/>
           </a-form-item>

+ 1 - 1
vue/src/views/baseSettings/institution/index.vue

@@ -180,7 +180,7 @@ export default defineComponent({
 
     const onDel= (item: any) => {
       if (item) {
-        formState.selectedRowKeys.push(item.InstitutionID as never)
+        formState.selectedRowKeys.push(item.institutionID as never)
       }
 
       if (formState.selectedRowKeys.length <= 0) {

+ 240 - 0
vue/src/views/baseSettings/site/edit.vue

@@ -0,0 +1,240 @@
+<template>
+  <a-modal
+    :width="1200"
+    v-model:visible="visible"
+    :title="title"
+    :confirm-loading="confirmLoading"
+    @ok="handleOk"
+    ok-text="提交"
+    @cancel="handleCancel"
+    cancel-text="取消"
+    :keyboard="false"
+    :mask-closable="false"  >
+    <a-form  autocomplete="off" >
+      <a-divider orientation="left">基础信息管理</a-divider>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="驿站编号" name="SiteID" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.siteID}}</label>
+            <a-input v-model:value="dataModel.siteID" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="7">
+          <a-form-item label="站点名称" name="SiteName" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.siteName }}</label>
+            <a-input v-model:value="dataModel.siteName" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="10">
+          <a-form-item label="所属机构" name="InstitutionName" :label-col="{span:10}" >
+            <label v-if="isDetail">{{dataModel.institutionName}}</label>
+            <a-input v-model:value="dataModel.institutionName" placeholder=""/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="所属县区"  name="RegionCode" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.regionCode }}</label>
+            <a-select
+              v-if ="!isDetail"
+              ref="select"
+              v-model:value="dataModel.regionCode"
+              :options="regionList"
+              :field-names="{ label: 'name', value: 'code' }"
+              :allow-clear="true"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="7">
+          <a-form-item label="所属街道"  name="StreetCode" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.streetCode }}</label>
+            <a-select
+              v-if ="!isDetail"
+              ref="select"
+              v-model:value="dataModel.streetCode"
+              :options="streetList"
+              :field-names="{ label: 'name', value: 'code' }"
+              :allow-clear="true"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="10">
+          <a-form-item label="详细地址"  name="DetailAddress" :label-col="{span:10}">
+            <label v-if="isDetail">{{dataModel.detailAddress }}</label>
+            <a-input v-model:value="dataModel.detailAddress" placeholder=""/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="站点负责人"  name="FzrName" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.fzrName }}</label>
+            <a-input v-model:value="dataModel.fzrName" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="7">
+          <a-form-item label="联系电话"  name="Mobile" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.mobile }}</label>
+            <a-input v-model:value="dataModel.mobile" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="10">
+          <a-form-item label="驿站坐标"  name="SiteXY" :label-col="{span:10}">
+            <label v-if="isDetail">{{dataModel.siteXY }}</label>
+            <a-input v-model:value="dataModel.siteXY" placeholder=""/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-divider orientation="left">其他信息</a-divider>
+      <a-row>
+        <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.remarkDesc"  :disabled="isDetail"
+                    placeholder="备注" style="text-align: center;" />
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+<script lang="ts">
+import {computed, defineComponent, reactive, ref, toRefs} from "vue";
+import {get, save} from "@/api/baseSettings/institution";
+import BUploadFile from "@/components/file/uploadFile.vue";
+import {message, TableColumnsType, TableProps} from "ant-design-vue";
+import {getPaginationTotalTitle} from "@/utils/common";
+
+interface InstitutionModel {
+  dataModel: any;
+}
+export default defineComponent({
+  name:'SiteInfoEditForm',
+  components: {BUploadFile},
+  props: {
+    loadData: {
+      type: Function,
+      default: null
+    }
+  },
+  setup(props) {
+    const formData = reactive<InstitutionModel>({ dataModel:{}});
+    const visible = ref<boolean>(false);
+    const confirmLoading = ref<boolean>(false);
+    const title = ref();
+    const isAllowCommit = ref<boolean>(false);
+    const isDetail = ref<boolean>(false);
+    const pageParams = reactive({
+      pageIndex: 1,
+      pageSize: 20,
+      institutionID:''
+    });
+    const columns: TableColumnsType = [
+      {title: '序号', align: "center",key: 'siteID',customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`},
+      {title: '驿站名称', dataIndex: 'siteName', key: 'siteName', align: "center"},
+      {title: '驿站地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"}
+    ];
+    const pagination = computed(() => ({
+      total: formState.total,
+      current: pageParams.pageIndex,
+      pageSize: pageParams.pageSize,
+      showSizeChanger: true,
+      showTotal: total => getPaginationTotalTitle(total)
+    }));
+    const formState = reactive({
+      total: 0,
+      selectedRowKeys: [],
+      loading: false
+    });
+
+    const loadData = (id: string) => {
+      pageParams.institutionID = id;
+      get(pageParams).then((result: any) => {
+        formData.dataModel = result;
+        console.log(formData.dataModel);
+      });
+    }
+
+    const show = (id: any,method:string,ifDetail:boolean) => {
+      isDetail.value = ifDetail;
+      loadData(id);
+      title.value ="驿站站点管理-"+method;
+      visible.value = true;
+    };
+
+    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 validate = ()  =>{
+      console.log(formData.dataModel);
+      if (formData.dataModel.companyName==null) {
+        message.error("请输入企业名称!");
+        return;
+      }else if (formData.dataModel.companyAddress==null) {
+        message.error("请输入企业地址!");
+        return;
+      }else if (formData.dataModel.fzrName==null) {
+        message.error("请输入负责人名称!");
+        return;
+      }else if (formData.dataModel.fzrMobile==null) {
+        message.error("请填写负责人电话!");
+        return;
+      }else if (formData.dataModel.frName==null) {
+        message.error("请填写法人姓名!");
+        return;
+      }else if (formData.dataModel.frMobile==null) {
+        message.error("请填写法人电话!");
+        return;
+      }else if (formData.dataModel.companyCode==null) {
+        message.error("请填写企业机构代码!");
+        return;
+      }
+      isAllowCommit.value = true;
+    };
+
+    const handleOk = () => {
+      validate();
+      if (isAllowCommit.value){
+        save(formData.dataModel).then(result => {
+          if (result) {
+            visible.value = false;
+            props.loadData();
+          }
+        });
+      }
+    };
+
+    const handleCancel = () => {
+      visible.value = false;
+    };
+
+
+
+    return {
+      ...toRefs(formData),
+      pageParams,
+      columns,
+      pagination,
+      formState,
+      isAllowCommit,
+      isDetail,
+      visible,
+      title,
+      confirmLoading,
+      show,
+      handleTableChange,
+      onSelectChange,
+      handleOk,
+      handleCancel,
+      validate
+    };
+  },
+  created() {
+  },
+})
+</script>
+

+ 52 - 12
vue/src/views/baseSettings/site/index.vue

@@ -24,12 +24,28 @@
       <a-row :gutter="24">
         <a-col :span="6">
           <a-form-item label="所属县区" :label-col="{span:6}" name="RegionCode">
-            <a-input v-model:value="searchParams.regionCode" placeholder=""/>
+            <a-select
+              ref="select"
+              v-model:value="searchParams.regionCode"
+              :options="regionList"
+              :field-names="{ label: 'name', value: 'code' }"
+              :allow-clear="true"
+              @change="changeRegion"
+            >
+            </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="7">
           <a-form-item label="所属街道" :label-col="{span:7}" name="StreetCode">
-            <a-input v-model:value="searchParams.streetCode" placeholder=""/>
+            <a-select
+              ref="select"
+              v-model:value="searchParams.streetCode"
+              :options="streetList"
+              :field-names="{ label: 'name', value: 'code' }"
+              :allow-clear="true"
+              @change="onSearch"
+            >
+            </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="6">
@@ -62,6 +78,7 @@
         </template>
       </a-table>
     </div>
+    <SiteInfoEditForm ref="siteInfoEditModelRef" :loadData="loadData"></SiteInfoEditForm>
   </div>
 </template>
 
@@ -71,13 +88,15 @@ import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/i
 import type {FormInstance} from 'ant-design-vue';
 import type {TableColumnsType, TableProps} from 'ant-design-vue';
 import {getList} from '@/api/baseSettings/siteInfo';
+import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
+import SiteInfoEditForm from "@/views/baseSettings/site/edit.vue";
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
-import {message, Modal} from "ant-design-vue";
+import {message, Modal, SelectProps} from "ant-design-vue";
 
 export default defineComponent({
   name: 'SiteList',
-  components: {DownOutlined, UpOutlined, BExportExcel},
+  components: {DownOutlined, UpOutlined, BExportExcel,SiteInfoEditForm},
   setup() {
     const formRef = ref<FormInstance>();
     const searchParams = reactive({
@@ -101,11 +120,11 @@ export default defineComponent({
       {title: '站点名称', dataIndex: 'siteName', key: 'siteName',width:120, align: "center"},
       {title: '站点负责人', dataIndex: 'fzrName', key: 'fzrName', align: "center"},
       {title: '联系电话', dataIndex: 'fzrMobile', key: 'fzrMobile', align: "center"},
-      {title: '所属县区', dataIndex: 'regionCode', key: 'regionCode', align: "center"},
-      {title: '所属街道', dataIndex: 'streetCode', key: 'streetCode', align: "center"},
+      {title: '所属县区', dataIndex: 'regionName', key: 'regionName', align: "center"},
+      {title: '所属街道', dataIndex: 'streetName', key: 'streetName', align: "center"},
       {title: '详细地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"},
       {title: '所属机构', dataIndex: 'institutionName', key: 'institutionName', align: "center"},
-      {title: '驿站人员数量',  dataIndex: 'userNumber',key: 'userNumber', fixed: 'right',width:170, align: "center"},
+      {title: '驿站人员数量',  dataIndex: 'userCount',key: 'userCount', fixed: 'right',width:170, align: "center"},
       {title: '操作', key: 'operation', fixed: 'right',width:170, align: "center"},
     ];
     const pagination = computed(() => ({
@@ -116,8 +135,10 @@ export default defineComponent({
       showTotal: total => getPaginationTotalTitle(total)
     }));
 
+    const regionList = ref<SelectProps['options']>();
+    const streetList = ref<SelectProps['options']>();
     const dataList = ref([]);
-    const SiteEditModelRef = ref();
+    const siteInfoEditModelRef = ref();
 
     const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
       searchParams.pageIndex = pag.current;
@@ -125,6 +146,19 @@ export default defineComponent({
       loadData();
     };
 
+    const getRegionList = async function(){
+      const regionResult: any = await getRegionCodeList();
+      console.log('regionResult',regionResult);
+      regionList.value = regionResult;
+    }
+
+    const changeRegion = async function(){
+      const streetResult: any = await getStreetCodeList(searchParams.regionCode);
+      console.log('streetResult',streetResult);
+      streetList.value = streetResult;
+      onSearch();
+    }
+
     const onSelectChange = (selectedRowKeys: any) => {
       formState.selectedRowKeys = selectedRowKeys;
     };
@@ -135,7 +169,7 @@ export default defineComponent({
 
     const onDel= (item: any) => {
       if (item) {
-        formState.selectedRowKeys.push(item.szkey as never)
+        formState.selectedRowKeys.push(item.siteID as never)
       }
 
       if (formState.selectedRowKeys.length <= 0) {
@@ -161,7 +195,7 @@ export default defineComponent({
     };
 
     const onOperates = (id: string,operation:string,isDetail:boolean) => {
-      SiteEditModelRef.value.show(id,operation,isDetail);
+      siteInfoEditModelRef.value.show(id,operation,isDetail);
     };
     const loadData = async function () {
       formState.loading = true;
@@ -179,21 +213,27 @@ export default defineComponent({
       formState,
       columns,
       pagination,
+      streetList,
+      regionList,
       dataList,
-      SiteEditModelRef,
+      siteInfoEditModelRef,
       handleTableChange,
       onSelectChange,
       onSearch,
       onOperates,
       onDel,
-      loadData
+      loadData,
+      getRegionList,
+      changeRegion
     };
   },
   created() {
+    this.getRegionList();
     this.loadData();
   },
   activated() {
     if (history.state.params?.reload)
+      this.getRegionList();
       this.loadData();
   }
 });

+ 194 - 0
vue/src/views/baseSettings/user/edit.vue

@@ -0,0 +1,194 @@
+<template>
+  <a-modal
+    :width="1200"
+    v-model:visible="visible"
+    :title="title"
+    :confirm-loading="confirmLoading"
+    @ok="handleOk"
+    ok-text="提交"
+    @cancel="handleCancel"
+    cancel-text="取消"
+    :keyboard="false"
+    :mask-closable="false"  >
+    <a-form  autocomplete="off" >
+      <a-divider orientation="left">基础信息</a-divider>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="姓名" name="Name" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.name}}</label>
+            <a-input v-model:value="dataModel.name" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="7">
+          <a-form-item label="性别" name="Gender" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.gender }}</label>
+            <a-input v-model:value="dataModel.gender" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="10">
+          <a-form-item label="联系电话" name="Mobile" :label-col="{span:10}" >
+            <label v-if="isDetail">{{dataModel.mobile}}</label>
+            <a-input v-model:value="dataModel.mobile" placeholder=""/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="角色"  name="RoleID" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.roleID }}</label>
+            <a-input v-model:value="dataModel.roleID" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="7">
+
+        </a-col>
+        <a-col :span="10">
+
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+<script lang="ts">
+import {computed, defineComponent, reactive, ref, toRefs} from "vue";
+import {get, save} from "@/api/baseSettings/institution";
+import BUploadFile from "@/components/file/uploadFile.vue";
+/*import dayjs from "dayjs";*/
+import {message, TableColumnsType, TableProps} from "ant-design-vue";
+import {getPaginationTotalTitle} from "@/utils/common";
+
+interface InstitutionModel {
+  dataModel: any;
+}
+export default defineComponent({
+  name:'UserInfoEditForm',
+  components: {BUploadFile},
+  props: {
+    loadData: {
+      type: Function,
+      default: null
+    }
+  },
+  setup(props) {
+    const formData = reactive<InstitutionModel>({ dataModel:{}});
+    const visible = ref<boolean>(false);
+    const confirmLoading = ref<boolean>(false);
+    const title = ref();
+    const isAllowCommit = ref<boolean>(false);
+    const isDetail = ref<boolean>(false);
+    const pageParams = reactive({
+      pageIndex: 1,
+      pageSize: 20,
+      institutionID:''
+    });
+    const columns: TableColumnsType = [
+      {title: '序号', align: "center",key: 'siteID',customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`},
+      {title: '驿站名称', dataIndex: 'siteName', key: 'siteName', align: "center"},
+      {title: '驿站地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"}
+    ];
+    const pagination = computed(() => ({
+      total: formState.total,
+      current: pageParams.pageIndex,
+      pageSize: pageParams.pageSize,
+      showSizeChanger: true,
+      showTotal: total => getPaginationTotalTitle(total)
+    }));
+    const formState = reactive({
+      total: 0,
+      selectedRowKeys: [],
+      loading: false
+    });
+
+    const loadData = (id: string) => {
+      pageParams.institutionID = id;
+      get(pageParams).then((result: any) => {
+        formData.dataModel = result;
+        console.log(formData.dataModel);
+      });
+    }
+
+    const show = (id: any,method:string,ifDetail:boolean) => {
+      isDetail.value = ifDetail;
+      loadData(id);
+      title.value ="人员管理-"+method;
+      visible.value = true;
+    };
+
+    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 validate = ()  =>{
+      console.log(formData.dataModel);
+      if (formData.dataModel.companyName==null) {
+        message.error("请输入企业名称!");
+        return;
+      }else if (formData.dataModel.companyAddress==null) {
+        message.error("请输入企业地址!");
+        return;
+      }else if (formData.dataModel.fzrName==null) {
+        message.error("请输入负责人名称!");
+        return;
+      }else if (formData.dataModel.fzrMobile==null) {
+        message.error("请填写负责人电话!");
+        return;
+      }else if (formData.dataModel.frName==null) {
+        message.error("请填写法人姓名!");
+        return;
+      }else if (formData.dataModel.frMobile==null) {
+        message.error("请填写法人电话!");
+        return;
+      }else if (formData.dataModel.companyCode==null) {
+        message.error("请填写企业机构代码!");
+        return;
+      }
+      isAllowCommit.value = true;
+    };
+
+    const handleOk = () => {
+      validate();
+      if (isAllowCommit.value){
+        save(formData.dataModel).then(result => {
+          if (result) {
+            visible.value = false;
+            props.loadData();
+          }
+        });
+      }
+    };
+
+    const handleCancel = () => {
+      visible.value = false;
+    };
+
+
+
+    return {
+      ...toRefs(formData),
+      pageParams,
+      columns,
+      pagination,
+      formState,
+      isAllowCommit,
+      isDetail,
+      visible,
+      title,
+      confirmLoading,
+      show,
+      handleTableChange,
+      onSelectChange,
+      handleOk,
+      handleCancel,
+      validate
+    };
+  },
+  created() {
+  },
+})
+</script>
+

+ 14 - 12
vue/src/views/baseSettings/user/index.vue

@@ -29,18 +29,19 @@
                :loading="formState.loading"
                @change="handleTableChange"
                :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
-               :row-key="record=>record.szkey"
+               :row-key="record=>record.siteUserID"
                bordered>
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
-              <a-button type="link" size="small" @click='onOperates(record.szkey.toString(),"修改",false)' >编辑</a-button>
+              <a-button type="link" size="small" @click='onOperates(record.siteUserID.toString(),"修改",false)' >编辑</a-button>
               <a-button type="link" size="small" @click="onDel(record)" >删除</a-button>
             </div>
           </template>
         </template>
       </a-table>
     </div>
+    <UserInfoEditForm ref="userInfoEditModelRef" :loadData="loadData"></UserInfoEditForm>
   </div>
 </template>
 
@@ -50,13 +51,14 @@ import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/i
 import type {FormInstance} from 'ant-design-vue';
 import type {TableColumnsType, TableProps} from 'ant-design-vue';
 import {getList} from '@/api/baseSettings/userInfo';
+import UserInfoEditForm from "@/views/baseSettings/user/edit.vue";
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
 import {message, Modal} from "ant-design-vue";
 
 export default defineComponent({
   name: 'UserInfoList',
-  components: {DownOutlined, UpOutlined, BExportExcel},
+  components: {DownOutlined, UpOutlined, BExportExcel,UserInfoEditForm},
   setup() {
     const formRef = ref<FormInstance>();
     const searchParams = reactive({
@@ -71,11 +73,11 @@ export default defineComponent({
       loading: false
     });
     const columns: TableColumnsType = [
-      {title: '序号', align: "center",key: 'szkey',customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`},
-      {title: '人员名称', dataIndex: 'Name', key: 'Name', align: "center"},
-      {title: '角色', dataIndex: 'UserTypeName', key: 'UserTypeName',width:120, align: "center"},
-      {title: '性别', dataIndex: 'UserSex', key: 'UserSex', align: "center"},
-      {title: '联系电话', dataIndex: 'UserMobile', key: 'UserMobile', align: "center"},
+      {title: '序号', align: "center",key: 'siteUserID',customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`},
+      {title: '人员名称', dataIndex: 'name', key: 'name', align: "center"},
+      {title: '角色', dataIndex: 'userTypeName', key: 'userTypeName',width:120, align: "center"},
+      {title: '性别', dataIndex: 'genderName', key: 'genderName', align: "center"},
+      {title: '联系电话', dataIndex: 'mobile', key: 'mobile', align: "center"},
       {title: '操作', key: 'operation', fixed: 'right',width:170, align: "center"},
     ];
     const pagination = computed(() => ({
@@ -87,7 +89,7 @@ export default defineComponent({
     }));
 
     const dataList = ref([]);
-    const UserInfoEditModelRef = ref();
+    const userInfoEditModelRef = ref();
 
     const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
       searchParams.pageIndex = pag.current;
@@ -105,7 +107,7 @@ export default defineComponent({
 
     const onDel= (item: any) => {
       if (item) {
-        formState.selectedRowKeys.push(item.szkey as never)
+        formState.selectedRowKeys.push(item.siteUserID as never)
       }
 
       if (formState.selectedRowKeys.length <= 0) {
@@ -131,7 +133,7 @@ export default defineComponent({
     };
 
     const onOperates = (id: string,operation:string,isDetail:boolean) => {
-      UserInfoEditModelRef.value.show(id,operation,isDetail);
+      userInfoEditModelRef.value.show(id,operation,isDetail);
     };
     const loadData = async function () {
       formState.loading = true;
@@ -150,7 +152,7 @@ export default defineComponent({
       columns,
       pagination,
       dataList,
-      UserInfoEditModelRef,
+      userInfoEditModelRef,
       handleTableChange,
       onSelectChange,
       onSearch,

+ 187 - 0
vue/src/views/taskAndLog/dowork/edit.vue

@@ -0,0 +1,187 @@
+<template>
+  <a-modal
+    :width="1200"
+    v-model:visible="visible"
+    :title="title"
+    :confirm-loading="confirmLoading"
+    @ok="handleOk"
+    ok-text="提交"
+    @cancel="handleCancel"
+    cancel-text="取消"
+    :keyboard="false"
+    :mask-closable="false"  >
+    <a-form  autocomplete="off" >
+      <a-divider orientation="left">基础信息管理</a-divider>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="姓名" name="Name" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.name}}</label>
+            <a-input v-model:value="dataModel.name" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="7">
+            <a-form-item label="日志类型" name="WorkType" :label-col="{span:7}">
+            <label v-if="isDetail">{{dataModel.doWorkType }}</label>
+            <a-input v-model:value="dataModel.doWorkType" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="10">
+          <a-form-item label="完成时间" name="WorkTime" :label-col="{span:10}" >
+            <label v-if="isDetail">{{dataModel.workTime}}</label>
+            <a-input v-model:value="dataModel.workTime" placeholder=""/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row>
+        <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.remarkDesc"  :disabled="isDetail"
+                    placeholder="完成情况" style="text-align: center;" />
+      </a-row>
+      <a-divider orientation="left">其他信息</a-divider>
+      <a-row>
+
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+<script lang="ts">
+import {computed, defineComponent, reactive, ref, toRefs} from "vue";
+import {get, save} from "@/api/baseSettings/institution";
+import BUploadFile from "@/components/file/uploadFile.vue";
+import {message, TableColumnsType, TableProps} from "ant-design-vue";
+import {getPaginationTotalTitle} from "@/utils/common";
+
+interface InstitutionModel {
+  dataModel: any;
+}
+export default defineComponent({
+  name:'DoWorkEditForm',
+  components: {BUploadFile},
+  props: {
+    loadData: {
+      type: Function,
+      default: null
+    }
+  },
+  setup(props) {
+    const formData = reactive<InstitutionModel>({ dataModel:{}});
+    const visible = ref<boolean>(false);
+    const confirmLoading = ref<boolean>(false);
+    const title = ref();
+    const isAllowCommit = ref<boolean>(false);
+    const isDetail = ref<boolean>(false);
+    const pageParams = reactive({
+      pageIndex: 1,
+      pageSize: 20,
+      institutionID:''
+    });
+    const columns: TableColumnsType = [
+      {title: '序号', align: "center",key: 'siteID',customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`},
+      {title: '驿站名称', dataIndex: 'siteName', key: 'siteName', align: "center"},
+      {title: '驿站地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"}
+    ];
+    const pagination = computed(() => ({
+      total: formState.total,
+      current: pageParams.pageIndex,
+      pageSize: pageParams.pageSize,
+      showSizeChanger: true,
+      showTotal: total => getPaginationTotalTitle(total)
+    }));
+    const formState = reactive({
+      total: 0,
+      selectedRowKeys: [],
+      loading: false
+    });
+
+    const loadData = (id: string) => {
+      pageParams.institutionID = id;
+      get(pageParams).then((result: any) => {
+        formData.dataModel = result;
+        console.log(formData.dataModel);
+      });
+    }
+
+    const show = (id: any,method:string,ifDetail:boolean) => {
+      isDetail.value = ifDetail;
+      loadData(id);
+      title.value ="工作日志管理-"+method;
+      visible.value = true;
+    };
+
+    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 validate = ()  =>{
+      console.log(formData.dataModel);
+      if (formData.dataModel.companyName==null) {
+        message.error("请输入企业名称!");
+        return;
+      }else if (formData.dataModel.companyAddress==null) {
+        message.error("请输入企业地址!");
+        return;
+      }else if (formData.dataModel.fzrName==null) {
+        message.error("请输入负责人名称!");
+        return;
+      }else if (formData.dataModel.fzrMobile==null) {
+        message.error("请填写负责人电话!");
+        return;
+      }else if (formData.dataModel.frName==null) {
+        message.error("请填写法人姓名!");
+        return;
+      }else if (formData.dataModel.frMobile==null) {
+        message.error("请填写法人电话!");
+        return;
+      }else if (formData.dataModel.companyCode==null) {
+        message.error("请填写企业机构代码!");
+        return;
+      }
+      isAllowCommit.value = true;
+    };
+
+    const handleOk = () => {
+      validate();
+      if (isAllowCommit.value){
+        save(formData.dataModel).then(result => {
+          if (result) {
+            visible.value = false;
+            props.loadData();
+          }
+        });
+      }
+    };
+
+    const handleCancel = () => {
+      visible.value = false;
+    };
+
+
+
+    return {
+      ...toRefs(formData),
+      pageParams,
+      columns,
+      pagination,
+      formState,
+      isAllowCommit,
+      isDetail,
+      visible,
+      title,
+      confirmLoading,
+      show,
+      handleTableChange,
+      onSelectChange,
+      handleOk,
+      handleCancel,
+      validate
+    };
+  },
+  created() {
+  },
+})
+</script>
+

+ 10 - 5
vue/src/views/taskAndLog/dowork/index.vue

@@ -75,6 +75,7 @@
         </template>
       </a-table>
     </div>
+    <DoWorkEditForm ref="doWorkEditModelRef" :loadData="loadData"></DoWorkEditForm>
   </div>
 </template>
 
@@ -85,13 +86,14 @@ import type {FormInstance,SelectProps} from 'ant-design-vue';
 import type {TableColumnsType, TableProps} from 'ant-design-vue';
 import {getList} from '@/api/taskAndLog/dowork';
 import {getRegionCodeList,getStreetCodeList} from '@/api/system/area/index';
+import DoWorkEditForm from "@/views/taskAndLog/dowork/edit.vue";
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
 import {message} from "ant-design-vue";
 import dayjs from 'dayjs';
 export default defineComponent({
   name: 'doTaskList',
-  components: { DownOutlined, UpOutlined, BExportExcel},
+  components: { DownOutlined, UpOutlined, BExportExcel,DoWorkEditForm},
   setup() {
     const formRef = ref<FormInstance>();
     const searchParams = reactive({
@@ -126,8 +128,8 @@ export default defineComponent({
       },
       {title: '日志类型', dataIndex: 'doTypeID', key: 'doTypeID', align: "center"},
       {title: '工作情况', dataIndex: 'workContent', key: 'workContent', align: "center"},
-      {title: '所属县区', dataIndex: 'regionCode', key: 'regionCode', align: "center"},
-      {title: '所属街道', dataIndex: 'streetCode', key: 'streetCode', align: "center"},
+      {title: '所属县区', dataIndex: 'regionName', key: 'regionName', align: "center"},
+      {title: '所属街道', dataIndex: 'streetName', key: 'streetName', align: "center"},
       {title: '操作', key: 'operation', fixed: 'right', width: 170, align: "center"},
     ];
     const pagination = computed(() => ({
@@ -141,6 +143,7 @@ export default defineComponent({
     const regionList = ref<SelectProps['options']>();
     const streetList = ref<SelectProps['options']>();
     const dataList = ref([]);
+    const doWorkEditModelRef = ref();
 
     const getRegionList = async function(){
       const regionResult: any = await getRegionCodeList();
@@ -152,6 +155,7 @@ export default defineComponent({
       const streetResult: any = await getStreetCodeList(searchParams.regionCode);
       console.log('streetResult',streetResult);
       streetList.value = streetResult;
+      onSearch();
     }
 
     const loadData = async function () {
@@ -202,8 +206,8 @@ export default defineComponent({
     const exportPost = () => {
       console.log('导出');
     }
-    const onOperates = () => {
-      console.log('新增');
+    const onOperates = (id: string,operation:string,isDetail:boolean) => {
+      doWorkEditModelRef.value.show(id,operation,isDetail);
     };
 
     return {
@@ -215,6 +219,7 @@ export default defineComponent({
       columns,
       pagination,
       dataList,
+      doWorkEditModelRef,
       handleTableChange,
       onSelectChange,
       onSearch,