代码提交
This commit is contained in:
parent
b421a1f4c3
commit
e5fa6ae335
|
@ -8,7 +8,7 @@ const requestInterceptor = (chain: Taro.Chain) => {
|
|||
if (token) {
|
||||
requestParams.header = {
|
||||
...requestParams.header,
|
||||
token:token.value
|
||||
token: token.value
|
||||
}
|
||||
}
|
||||
return chain.proceed(requestParams)
|
||||
|
@ -30,7 +30,6 @@ class CustomRequest {
|
|||
}).then()
|
||||
}
|
||||
|
||||
console.log(params,method)
|
||||
Taro.request<JsonResult<T>, object>({
|
||||
url: this.BASE_API + url,
|
||||
data: params,
|
||||
|
@ -62,7 +61,7 @@ class CustomRequest {
|
|||
duration: 2000
|
||||
}).then()
|
||||
reject(res.errMsg);
|
||||
console.log(res.errMsg,'000')
|
||||
console.log(res.errMsg, '000')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,75 +1,79 @@
|
|||
<template>
|
||||
<view class="form">
|
||||
<nut-form ref="formRef" :model-value="formData" :rules="rules">
|
||||
<nut-form-item label="姓名" prop="name">
|
||||
<nut-input v-model="formData.name" placeholder="请输入姓名" type="text" />
|
||||
</nut-form-item>
|
||||
<nut-form-item label="性别" prop="sex" >
|
||||
<nut-radio-group v-model="formData.sex" direction="horizontal">
|
||||
<nut-radio v-for="item in SEX" :key="item.value" :label="item.value"
|
||||
>{{ item.label }}
|
||||
</nut-radio>
|
||||
</nut-radio-group>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="身份证" prop="idCard">
|
||||
<nut-input v-model="formData.idCard" placeholder="请填写身份证" type="text" @blur="idCardBlur"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="出生日期" prop="dateOfBirth" >
|
||||
{{formData.dateOfBirth || "请填写出生年月"}}
|
||||
<!-- <nut-input @click="openDate" :disabled="true" placeholder="请填写出生年月" type="text">{{formData.dateOfBirth}}</nut-input>-->
|
||||
</nut-form-item>
|
||||
<nut-form-item label="工作岗位" prop="workPost">
|
||||
<nut-input v-model="formData.workPost" placeholder="请输入工作岗位" type="text" />
|
||||
</nut-form-item>
|
||||
<nut-form-item label="籍贯" prop="nativePlace">
|
||||
<nut-input v-model="formData.nativePlace" placeholder="请输入籍贯" type="text" />
|
||||
</nut-form-item>
|
||||
<nut-form-item label="地址" prop="homeAddress">
|
||||
<nut-input v-model="formData.homeAddress" placeholder="请输入地址" type="text"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="保安证号" prop="securityNumber">
|
||||
<nut-input v-model="formData.securityNumber" placeholder="请输入保安证号" type="text" />
|
||||
</nut-form-item>
|
||||
<nut-form-item label="备注" prop="remark">
|
||||
<nut-input v-model="formData.remark" placeholder="请填写备注" type="text" />
|
||||
</nut-form-item>
|
||||
</nut-form>
|
||||
<view class="formButton">
|
||||
<nut-button style="width: 45%" type="success" size="small" @click="submit">提交</nut-button>
|
||||
<nut-button style="width: 45%" size="small" @click="reset">重置提示状态</nut-button>
|
||||
</view>
|
||||
<nut-popup v-model:visible="showPicker" position="bottom">
|
||||
<nut-date-picker
|
||||
v-model="pickerValue"
|
||||
:three-dimensional="false"
|
||||
:min-date="new Date(1900,1,1)"
|
||||
:max-date="new Date(2100,1,1)"
|
||||
@confirm="confirm"
|
||||
@cancel="showPicker = false"
|
||||
></nut-date-picker>
|
||||
</nut-popup>
|
||||
</view>
|
||||
<view class="form">
|
||||
{{ formData }}
|
||||
<nut-form ref="formRef" :model-value="formData" :rules="rules">
|
||||
<nut-form-item label="姓名" prop="name">
|
||||
<nut-input v-model="formData.name" placeholder="请输入姓名" type="text"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="性别" prop="sex">
|
||||
<nut-radio-group v-model="formData.sex" direction="horizontal">
|
||||
<nut-radio v-for="item in SEX" :key="item.value" :label="item.value"
|
||||
>{{ item.label }}
|
||||
</nut-radio>
|
||||
</nut-radio-group>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="身份证" prop="idCard">
|
||||
<nut-input v-model="formData.idCard" placeholder="请填写身份证" type="text" @blur="idCardBlur"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="出生日期" prop="dateOfBirth">
|
||||
<view @click="showPicker = true">
|
||||
{{
|
||||
dayjs(formData.dateOfBirth).isValid() ? dayjs(formData.dateOfBirth).format('YYYY-MM-DD') : '请选择出生年月'
|
||||
}}
|
||||
</view>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="工作岗位" prop="workPost">
|
||||
<nut-input v-model="formData.workPost" placeholder="请输入工作岗位" type="text"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="籍贯" prop="nativePlace">
|
||||
<nut-input v-model="formData.nativePlace" placeholder="请输入籍贯" type="text"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="地址" prop="homeAddress">
|
||||
<nut-input v-model="formData.homeAddress" placeholder="请输入地址" type="text"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="保安证号" prop="securityNumber">
|
||||
<nut-input v-model="formData.securityNumber" placeholder="请输入保安证号" type="text"/>
|
||||
</nut-form-item>
|
||||
<nut-form-item label="备注" prop="remark">
|
||||
<nut-input v-model="formData.remark" placeholder="请填写备注" type="text"/>
|
||||
</nut-form-item>
|
||||
</nut-form>
|
||||
<view class="formButton">
|
||||
<nut-button style="width: 45%" type="success" size="small" @click="submit">提交</nut-button>
|
||||
<nut-button style="width: 45%" size="small" @click="formRef.value?.reset()">重置表单</nut-button>
|
||||
</view>
|
||||
<nut-popup v-model:visible="showPicker" position="bottom">
|
||||
<nut-date-picker
|
||||
v-model="formData.dateOfBirth"
|
||||
:three-dimensional="false"
|
||||
:min-date="new Date(1900,1,1)"
|
||||
:max-date="new Date(2100,1,1)"
|
||||
@confirm="showPicker = false"
|
||||
@cancel="showPicker = false"
|
||||
></nut-date-picker>
|
||||
</nut-popup>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {ref} from "vue";
|
||||
import {SEX} from "@/enums";
|
||||
import {FormRules} from "@nutui/nutui-taro/dist/types/__VUE/form/types";
|
||||
import api from "@/request";
|
||||
import './form.scss'
|
||||
import './form.scss'
|
||||
import Taro, {useLoad} from "@tarojs/taro";
|
||||
import {formDate} from "../../../../types/pages/form";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
const showPicker = ref(false)
|
||||
const formData = ref<formDate>(null!)
|
||||
const pickerValue = ref(new Date())
|
||||
|
||||
const formData = ref<formDate>({} as any)
|
||||
const formRef = ref(null)
|
||||
|
||||
const rules: FormRules = {
|
||||
name: [
|
||||
{ required: true, message: "请输入姓名" },
|
||||
|
||||
{required: true, message: "请输入姓名"},
|
||||
],
|
||||
sex: [{ required: true, message: "请选择性别" }],
|
||||
idCard:[
|
||||
sex: [{required: true, message: "请选择性别"}],
|
||||
idCard: [
|
||||
{required: true, message: "请输入身份证号"},
|
||||
{
|
||||
regex: /^(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))((0[1-9])|([12][0-9])|(30|31))\d{3}(\d|X)$)/,
|
||||
|
@ -78,63 +82,47 @@ const rules: FormRules = {
|
|||
]
|
||||
};
|
||||
|
||||
useLoad((options)=>{
|
||||
useLoad((options) => {
|
||||
formData.value = JSON.parse(options.item)
|
||||
console.log(formData.value,'888')
|
||||
})
|
||||
const openDate = ()=>{
|
||||
showPicker.value = true
|
||||
}
|
||||
const confirm = ({selectedValue })=>{
|
||||
showPicker.value = false
|
||||
formData.value.dateOfBirth = selectedValue[0] + '年' + selectedValue[1] +'月' + selectedValue[2] + ' 日'
|
||||
}
|
||||
const reset = () => {
|
||||
formRef.value?.reset()
|
||||
}
|
||||
const idCardBlur = (e:string)=>{
|
||||
|
||||
const idCardBlur = (e: any) => {
|
||||
const value = e.detail.value
|
||||
if (!value?.length || value.length < 18) {
|
||||
formData.value.dateOfBirth = null;
|
||||
return
|
||||
}
|
||||
const birthDate = value.substring(6, 14);
|
||||
const year = birthDate.substring(0, 4);
|
||||
const month = birthDate.substring(4, 6);
|
||||
const day = birthDate.substring(6, 8);
|
||||
// 格式化为 “某年某月某日”
|
||||
formData.value.dateOfBirth = new Date(parseInt(year),parseInt(month) - 1,parseInt(day))
|
||||
|
||||
formData.value.dateOfBirth = new Date(parseInt(year), parseInt(month) - 1, parseInt(day))
|
||||
}
|
||||
|
||||
const snowFlakeId = ref<string>('')
|
||||
const submit = () => {
|
||||
formRef.value?.validate().then(({valid, errors}) => {
|
||||
formRef.value?.validate().then(async ({valid}) => {
|
||||
if (valid) {
|
||||
if(formData.value.snowFlakeId === ''){
|
||||
snowFlakeId.value = ''
|
||||
}else{
|
||||
snowFlakeId.value = formData.value.snowFlakeId as any
|
||||
}
|
||||
const resp = api.post('/projectManageIndex/saveOrUpdateSecurityUser',formData.value)
|
||||
const resp = await api.post('/projectManageIndex/saveOrUpdateSecurityUser', formData.value)
|
||||
Taro.showToast({
|
||||
title: '项目人员录入成功',
|
||||
title: resp.message,
|
||||
icon: 'success',
|
||||
duration: 2000,
|
||||
mask: true,
|
||||
}).then()
|
||||
formData.value = {
|
||||
snowFlakeId:'',
|
||||
serviceProjectId:formData.value.serviceProjectId,
|
||||
name: '',
|
||||
workPost:'',
|
||||
telephone:'',
|
||||
sex:0,
|
||||
nativePlace:'',
|
||||
idCard:'',
|
||||
dateOfBirth:'',
|
||||
securityNumber:'',
|
||||
remark:'',
|
||||
homeAddress: ''
|
||||
}
|
||||
} else {
|
||||
console.warn('error:', errors)
|
||||
formData.value = {
|
||||
snowFlakeId: undefined,
|
||||
serviceProjectId: formData.value.serviceProjectId,
|
||||
name: '',
|
||||
workPost: '',
|
||||
telephone: '',
|
||||
sex: 0,
|
||||
nativePlace: '',
|
||||
idCard: '',
|
||||
dateOfBirth: null,
|
||||
securityNumber: '',
|
||||
remark: '',
|
||||
homeAddress: ''
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -2,14 +2,19 @@
|
|||
<view class="projectDetails">
|
||||
<view class="projectDetailsItem" style="line-height: 50rpx">
|
||||
<view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text style="font-size: 18px">{{ nameValue ? nameValue : '' }}{{ '-----' + serviceProjectDetails?.name }}项目</text>
|
||||
<text>进行中</text>
|
||||
</view>
|
||||
<view>
|
||||
<view style="float: left;width: 50%;" class="content">经理名称:{{ serviceProjectDetails?.projectManagerMiniProgramUserInfo.name }}</view>
|
||||
<view class="content">手机号:{{ serviceProjectDetails?.projectManagerMiniProgramUserInfo.telephone }}</view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text style="font-size: 18px">{{ nameValue ? nameValue : '' }}{{
|
||||
'-----' + serviceProjectDetails?.name
|
||||
}}项目
|
||||
</text>
|
||||
<text>进行中</text>
|
||||
</view>
|
||||
<view>
|
||||
<view style="float: left;width: 50%;" class="content">
|
||||
经理名称:{{ serviceProjectDetails?.projectManagerMiniProgramUserInfo.name }}
|
||||
</view>
|
||||
<view class="content">手机号:{{ serviceProjectDetails?.projectManagerMiniProgramUserInfo.telephone }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="projectDetailsItem">
|
||||
|
@ -44,34 +49,34 @@
|
|||
</view>
|
||||
<!--表格-->
|
||||
<view class="projectDetailsTableDrop">
|
||||
<view style="padding: 0 12px">项目人员({{total}})</view>
|
||||
<scroll-view :scroll-y="true" style="height: 80%;" @scrolltolower="lower"
|
||||
:scroll-into-view="toView" :scroll-top="scrollTop" :refresherEnabled="true"
|
||||
<view style="padding: 0 12px">项目人员({{ total }})</view>
|
||||
<scroll-view :scroll-y="true" style="height: 80%;" @scrolltolower="lower"
|
||||
:scroll-into-view="toView" :scroll-top="scrollTop" :refresherEnabled="true"
|
||||
@refresherrefresh="onRefresherRefresh" :refresher-triggered="isRefresher"
|
||||
>
|
||||
<view class="projectDetailsTable" v-for="(item,index) in projectData" :key="index">
|
||||
<view>
|
||||
<view class="projectDetailsTableItem">
|
||||
<view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text>姓名:{{ item?.name?item?.name:'创建者' }}</text>
|
||||
<text>性别:{{ item.sex?.label?item.sex?.label:' 隐藏' }}</text>
|
||||
<text>职位:{{ item.workPost?item.workPost:'无' }}</text>
|
||||
</view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text>保安证件:{{ item.securityNumber?item.securityNumber:'125241256451' }}</text>
|
||||
<text>出生年月:{{ dayjs(item.dateOfBirth).format('YYYY-MM-DD')}}</text>
|
||||
</view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text>创建时间:{{ item.createTime }}</text>
|
||||
<text>身份证:{{ item.idCard }}</text>
|
||||
</view>
|
||||
<view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text>姓名:{{ item?.name ? item?.name : '创建者' }}</text>
|
||||
<text>性别:{{ item.sex?.label ? item.sex?.label : ' 隐藏' }}</text>
|
||||
<text>职位:{{ item.workPost ? item.workPost : '无' }}</text>
|
||||
</view>
|
||||
<view class="projectDetailsTableIndex" >
|
||||
<view style="color: #3a6bbe" @click="detail(item)">详情</view>
|
||||
<view style="color: #ffa60d" @click="projectEdit(item)">编辑</view>
|
||||
<view style="color: red" @click="deleteUssrID(item.snowFlakeId)">删除</view>
|
||||
</view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text>保安证件:{{ item.securityNumber ? item.securityNumber : '125241256451' }}</text>
|
||||
<text>出生年月:{{ dayjs(item.dateOfBirth).format('YYYY-MM-DD') }}</text>
|
||||
</view>
|
||||
<view style="display: flex;justify-content: space-between">
|
||||
<text>创建时间:{{ item.createTime }}</text>
|
||||
<text>身份证:{{ item.idCard }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="projectDetailsTableIndex">
|
||||
<view style="color: #3a6bbe" @click="detail(item)">详情</view>
|
||||
<view style="color: #ffa60d" @click="projectEdit(item)">编辑</view>
|
||||
<view style="color: red" @click="deleteUssrID(item.snowFlakeId)">删除</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
@ -83,33 +88,34 @@
|
|||
<nut-button style="width: 45%" type="info">二维码录入</nut-button>
|
||||
</view>
|
||||
|
||||
<view>
|
||||
<nut-dialog
|
||||
content="是否确认删除该用户?"
|
||||
:onOk="dialogOk"
|
||||
v-model:visible="confirmVisible"
|
||||
/>
|
||||
</view>
|
||||
<view>
|
||||
<nut-dialog no-cancel-btn content="详情" v-model:visible="detailVisible">
|
||||
<slot>
|
||||
<view style="margin-bottom: 5px">
|
||||
<view>籍贯:{{content.nativePlace}}</view>
|
||||
<view>公司:{{content.securityUnitName}}</view>
|
||||
<view>家庭地址:{{content.homeAddress}}</view>
|
||||
<view>备注:{{content.remark}}</view>
|
||||
</view>
|
||||
</slot>
|
||||
</nut-dialog>
|
||||
<nut-dialog
|
||||
content="是否确认删除该用户?"
|
||||
:onOk="dialogOk"
|
||||
v-model:visible="confirmVisible"
|
||||
/>
|
||||
</view>
|
||||
<view>
|
||||
<nut-dialog no-cancel-btn content="详情" v-model:visible="detailVisible">
|
||||
<slot>
|
||||
<view style="margin-bottom: 5px">
|
||||
<view>籍贯:{{ content.nativePlace }}</view>
|
||||
<view>公司:{{ content.securityUnitName }}</view>
|
||||
<view>家庭地址:{{ content.homeAddress }}</view>
|
||||
<view>备注:{{ content.remark }}</view>
|
||||
</view>
|
||||
</slot>
|
||||
</nut-dialog>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import Taro, {useLoad,useDidShow} from "@tarojs/taro";
|
||||
import Taro, {useLoad, useDidShow} from "@tarojs/taro";
|
||||
import './projectDetails.scss'
|
||||
import {ref} from "vue";
|
||||
import api from "@/request/index";
|
||||
import * as dayjs from 'dayjs'
|
||||
|
||||
const serviceProjectDetails = ref()
|
||||
const nameValue = ref('')
|
||||
const projectData = ref<Records[]>([])
|
||||
|
@ -127,7 +133,7 @@ useDidShow(async () => {
|
|||
initServiceProjectSecurityUserList()
|
||||
})
|
||||
const projectDetailsTable = async () => {
|
||||
await Taro.showLoading({
|
||||
await Taro.showLoading({
|
||||
title: '加载中',
|
||||
})
|
||||
const queryParams = {
|
||||
|
@ -147,16 +153,16 @@ const projectDetailsTable = async () => {
|
|||
}
|
||||
const formAdd = () => {
|
||||
const params = {
|
||||
serviceProjectId:serviceProjectDetails.value.snowFlakeId,
|
||||
snowFlakeId:'',
|
||||
serviceProjectId: serviceProjectDetails.value.snowFlakeId,
|
||||
snowFlakeId: undefined,
|
||||
name: '',
|
||||
workPost:'',
|
||||
sex:0,
|
||||
nativePlace:'',
|
||||
idCard:'',
|
||||
dateOfBirth:'',
|
||||
securityNumber:'',
|
||||
remark:'',
|
||||
workPost: '',
|
||||
sex: 0,
|
||||
nativePlace: '',
|
||||
idCard: '',
|
||||
dateOfBirth: null,
|
||||
securityNumber: '',
|
||||
remark: '',
|
||||
homeAddress: ''
|
||||
}
|
||||
Taro.navigateTo({url: `/subPages/pages/form/form?item=${JSON.stringify(params)}`})
|
||||
|
@ -190,27 +196,27 @@ const onRefresherRefresh = (e) => {
|
|||
const securityUserId = ref<string>('')
|
||||
|
||||
// 删除
|
||||
const deleteUssrID = (snowFlakeId:string)=>{
|
||||
const deleteUssrID = (snowFlakeId: string) => {
|
||||
confirmVisible.value = true
|
||||
securityUserId.value = snowFlakeId
|
||||
securityUserId.value = snowFlakeId
|
||||
}
|
||||
// 二次删除
|
||||
const dialogOk = async ()=>{
|
||||
await api.delete(`/projectManageIndex/deleteSecurityUserByServiceProjectId`,{securityUserId:securityUserId.value},{
|
||||
header:{
|
||||
"content-type":'application/x-www-form-urlencoded'
|
||||
}
|
||||
const dialogOk = async () => {
|
||||
await api.delete(`/projectManageIndex/deleteSecurityUserByServiceProjectId`, {securityUserId: securityUserId.value}, {
|
||||
header: {
|
||||
"content-type": 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
initServiceProjectSecurityUserList()
|
||||
initServiceProjectSecurityUserList()
|
||||
}
|
||||
|
||||
// 详情
|
||||
const detail = (item)=>{
|
||||
const detail = (item) => {
|
||||
detailVisible.value = true
|
||||
content.value = item
|
||||
}
|
||||
const projectEdit = (item)=>{
|
||||
const params = {...item,sex:item.sex.value}
|
||||
const projectEdit = (item) => {
|
||||
const params = {...item, sex: item.sex.value}
|
||||
Taro.navigateTo({url: `/subPages/pages/form/form?item=${JSON.stringify(params)}`})
|
||||
}
|
||||
|
||||
|
|
|
@ -11,17 +11,25 @@
|
|||
"outDir": "lib",
|
||||
"noUnusedLocals": false,
|
||||
"noUnusedParameters": false,
|
||||
"strictNullChecks": true,
|
||||
"strictNullChecks": false,
|
||||
"sourceMap": true,
|
||||
"rootDir": ".",
|
||||
"jsx": "preserve",
|
||||
"allowJs": true,
|
||||
"resolveJsonModule": true,
|
||||
"typeRoots": ["node_modules/@types"],
|
||||
"typeRoots": [
|
||||
"node_modules/@types"
|
||||
],
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"include": ["./src", "./types", "./config"],
|
||||
"include": [
|
||||
"./src",
|
||||
"./types",
|
||||
"./config"
|
||||
],
|
||||
"compileOnSave": false
|
||||
}
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
import {Dayjs} from "dayjs";
|
||||
|
||||
export interface formDate {
|
||||
snowFlakeId?: string;
|
||||
serviceProjectId: string;
|
||||
name?: string;
|
||||
workPost?:string;
|
||||
telephone?: string;
|
||||
sex:number;
|
||||
nativePlace?:string;
|
||||
idCard:string;
|
||||
dateOfBirth?:Dayjs;
|
||||
securityNumber?:string;
|
||||
remark?:string;
|
||||
homeAddress?: string
|
||||
interface formDate {
|
||||
snowFlakeId?: string;
|
||||
serviceProjectId: string;
|
||||
name?: string;
|
||||
workPost?: string;
|
||||
telephone?: string;
|
||||
sex: number;
|
||||
nativePlace?: string;
|
||||
idCard: string;
|
||||
dateOfBirth?: Date;
|
||||
securityNumber?: string;
|
||||
remark?: string;
|
||||
homeAddress?: string
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue