Compare commits

..

No commits in common. "5db5db8778fc1dee360e868cb5c09f38a215b91d" and "b8775ed9fc4f6b8e41a3c0998adf0fd8f6aba439" have entirely different histories.

8 changed files with 92 additions and 72 deletions

View File

@ -2,7 +2,7 @@
<div class="layout-container"> <div class="layout-container">
<StarBackground /> <StarBackground />
<div class="top" @click="handleLogout"> <div class="top" @click="handleLogout">
<div> <div >
<span class="corner corner-top"></span> <span class="corner corner-top"></span>
<span class="corner corner-left"></span> <span class="corner corner-left"></span>
<span class="corner corner-bottom"></span> <span class="corner corner-bottom"></span>
@ -32,7 +32,7 @@
<span>南通市通州区互联网+智慧养老居家上门服务项目</span> <span>南通市通州区互联网+智慧养老居家上门服务项目</span>
</span> </span>
</div> </div>
<div class="paltform_list" v-if="ishow"> <div class="paltform_list" v-if="currentPlatForm !== 'yunying'">
<div value="CALL_CENTER" class="paltform_icon" @click="handleSelect('hujiao')"> <div value="CALL_CENTER" class="paltform_icon" @click="handleSelect('hujiao')">
<div class="paltform_icon_1"> <div class="paltform_icon_1">
<img :src="tel" alt="" srcset="" width="76" height="76" class="img"> <img :src="tel" alt="" srcset="" width="76" height="76" class="img">
@ -55,10 +55,10 @@
<div class="orgManage" v-else> <div class="orgManage" v-else>
<a-card style="width: 600px;margin:0 auto;height: 300px;"> <a-card style="width: 600px;margin:0 auto;height: 300px;">
<div style="margin: 10px 0;color:#1677ff;cursor: pointer;"> <div style="margin: 10px 0;color:#1677ff;cursor: pointer;">
<span @click="ishow = true">{{ '< 返回' }}</span> <span @click="currentPlatForm = 'jianguan'">{{ '< 返回' }}</span>
</div> </div>
<h3>请选择您的管理组织</h3> <h3>请选择您的管理组织</h3>
<ServiceStation @change="handleChange" :defaultOpen="true" /> <ServiceStation @change="handleChange" :defaultOpen="true"/>
</a-card> </a-card>
</div> </div>
</div> </div>
@ -85,7 +85,6 @@ const { locale, t } = useI18n()
defineOptions({ defineOptions({
name: 'PlatForm', name: 'PlatForm',
}) })
const ishow = ref(true)
const appStore = useAppStore() const appStore = useAppStore()
const routerStore = useRouterStore() const routerStore = useRouterStore()
const userStore = useUserStore() const userStore = useUserStore()
@ -98,18 +97,18 @@ onBeforeMount(() => {
document.body.className = 'body-bg' document.body.className = 'body-bg'
}) })
async function handleSelect(type) { async function handleSelect(type) {
// if (type === 'hujiao') { if (type === 'yunying') {
// storage.local.setItem('platform', type) currentPlatForm.value = 'yunying'
// await appStore.init()
// goIndex() } else {
// } else { storage.local.setItem('platform', type)
// currentPlatForm.value = type await appStore.init()
// ishow.value = false goIndex()
// } }
currentPlatForm.value = type
ishow.value = false
} }
async function goIndex() { async function goIndex() {
console.log('goIndex')
const indexRoute = getFirstValidRoute() const indexRoute = getFirstValidRoute()
console.log(indexRoute) console.log(indexRoute)
if (!indexRoute) return if (!indexRoute) return
@ -134,7 +133,7 @@ function getFirstValidRoute() {
return indexRoute return indexRoute
} }
async function handleChange(e) { async function handleChange(e) {
storage.local.setItem('platform',currentPlatForm.value) storage.local.setItem('platform', 'yunying')
storage.local.setItem('stationId', e) storage.local.setItem('stationId', e)
await appStore.init() await appStore.init()
goIndex() goIndex()

View File

@ -145,6 +145,16 @@
{{ formatArea(formData.archive.houseAreaLabels) }} {{ formData.archive.householdDetailAddress || '' }} {{ formatArea(formData.archive.houseAreaLabels) }} {{ formData.archive.householdDetailAddress || '' }}
</div> </div>
</a-col> </a-col>
<!-- 数组类字段 -->
<a-col :span="24" v-if="formData.archive.idCardPhotos && formData.archive.idCardPhotos.length > 0">
<div>
<span class="label">身份证照片:</span>
<div style="margin-top: 8px;">
<a-image v-for="(url, index) in formData.archive.idCardPhotos" :key="index" :src="url" fit="cover"
style="width: 100px; height: 60px; margin-right: 8px;" :preview-src-list="formData.archive.idCardPhotos" />
</div>
</div>
</a-col>
</a-row> </a-row>
</div> </div>
</template> </template>

View File

@ -451,7 +451,8 @@
<!-- 上传资料 --> <!-- 上传资料 -->
<a-col :span="12"> <a-col :span="12">
<a-form-item label="上传资料" name="uploadedDocuments"> <a-form-item label="上传资料" name="uploadedDocuments">
<UploadInput v-model="uploadedDocuments"/> <gx-upload v-model="formData.archive.idCardPhotos"
accept-types=".jpg,.png,.webp,.xlsx,.docx,.doc" :fileNumber="10" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -477,10 +478,9 @@ import dayjs from 'dayjs'
import storage from '@/utils/storage' import storage from '@/utils/storage'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { FastBackwardFilled } from '@ant-design/icons-vue' import { FastBackwardFilled } from '@ant-design/icons-vue'
import UploadInput from '@/components/Upload/UploadInput.vue'
const emit = defineEmits(['ok']) const emit = defineEmits(['ok'])
const activeKey = ref('1') const activeKey = ref('1')
const uploadedDocuments=ref([])
const { modal, showModal, hideModal, showLoading, hideLoading } = useModal() const { modal, showModal, hideModal, showLoading, hideLoading } = useModal()
const { formRecord, formData, formRef, formRules, resetForm } = useForm() const { formRecord, formData, formRef, formRules, resetForm } = useForm()
const areaCascaderRef = ref() const areaCascaderRef = ref()
@ -540,12 +540,11 @@ async function handleEdit(record = {}) {
formData.value = { ...data } formData.value = { ...data }
formData.value.birthDate = dayjs(data.birthDate) formData.value.birthDate = dayjs(data.birthDate)
formData.value.archive.idCardPhotos = data.archive.idCardPhotos ? data.archive.idCardPhotos.map(item => config('http.apiUpload') + item) : [] formData.value.archive.idCardPhotos = data.archive.idCardPhotos ? data.archive.idCardPhotos.map(item => config('http.apiUpload') + item) : []
uploadedDocuments.value = data.archive.uploadedDocuments ? data.archive.uploadedDocuments.map(item => config('http.apiUpload') + item) : [] formData.value.archive.uploadedDocuments = data.archive.uploadedDocuments ? data.archive.uploadedDocuments.map(item => config('http.apiUpload') + item) : []
formData.value.governmentPurchasedServiceStartDate = [dayjs(formData.value.starGovernmentService), dayjs(formData.value.endGovernmentService)] formData.value.governmentPurchasedServiceStartDate = [dayjs(formData.value.starGovernmentService), dayjs(formData.value.endGovernmentService)]
nextTick(() => { nextTick(() => {
areaCascaderRef.value.initData(data.archive.homeAreaCodes||['']) areaCascaderRef.value.initData(data.archive.homeAreaCodes)
houseAreaRef.value.initData(data.archive.houseAreaCodes||['']) houseAreaRef.value.initData(data.archive.houseAreaCodes)
}) })
spining.value = false spining.value = false
} catch (error) { } catch (error) {
@ -620,7 +619,7 @@ function handleOk() {
} }
params.archive.idCardPhotos = formData.value.archive.idCardPhotos && formData.value.archive.idCardPhotos.length > 0 ? formData.value.archive.idCardPhotos.map(item => spliceUrl(item)) : [] params.archive.idCardPhotos = formData.value.archive.idCardPhotos && formData.value.archive.idCardPhotos.length > 0 ? formData.value.archive.idCardPhotos.map(item => spliceUrl(item)) : []
params.archive.uploadedDocuments = uploadedDocuments.value && uploadedDocuments.value.length > 0 ? uploadedDocuments.value.map(item => spliceUrl(item)) : [] params.archive.uploadedDocuments = formData.value.archive.uploadedDocuments && formData.value.archive.uploadedDocuments.length > 0 ? formData.value.archive.uploadedDocuments.map(item => spliceUrl(item)) : []
if (formData.value.governmentPurchasedServiceStartDate && formData.value.governmentPurchasedServiceStartDate.length > 0) { if (formData.value.governmentPurchasedServiceStartDate && formData.value.governmentPurchasedServiceStartDate.length > 0) {
params.archive.starGovernmentService = formData.value.governmentPurchasedServiceStartDate[0] params.archive.starGovernmentService = formData.value.governmentPurchasedServiceStartDate[0]
params.archive.endGovernmentService = formData.value.governmentPurchasedServiceStartDate[1] params.archive.endGovernmentService = formData.value.governmentPurchasedServiceStartDate[1]
@ -695,6 +694,7 @@ function handleCancel() {
*/ */
function onAfterClose() { function onAfterClose() {
activeKey.value='1' activeKey.value='1'
resetForm()
formData.value.archive = {} formData.value.archive = {}
hideLoading() hideLoading()
} }

View File

@ -13,30 +13,30 @@
</a-radio-group> </a-radio-group>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.directionType==='Transfer'"> <a-col :span="24">
<a-form-item label="转出原因" name="reason"> <a-form-item label="转出原因" name="reason">
<a-select v-model:value="formData.reason" placeholder="请选择转出原因" allow-clear> <a-select v-model:value="formData.reason" placeholder="请选择转出原因" allow-clear >
<a-select-option v-for="item in dicsStore.dictOptions.OUT_REASON" :key="item.dval" <a-select-option v-for="item in dicsStore.dictOptions.OUT_REASON"
:value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.directionType==='Transfer'"> <a-col :span="24">
<a-form-item label="转入节点" name="nStationId"> <a-form-item label="转入节点" name="nStationId">
<ServiceStation @change="handleChange" v-model:value="formData.nStationId" /> <ServiceStation @change="handleChange" v-model:value="formData.nStationId"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.directionType === 'Death'"> <a-col :span="24" v-if="formData.directionType==='Death'">
<a-form-item label="去世时间"> <a-form-item label="去世时间">
<a-date-picker v-model:value="formData.passWayAt" style="width: 100%;" /> <a-date-picker v-model:value="formData.passWayAt" style="width: 100%;"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-item label="备注" name="remark"> <a-form-item label="备注" name="remark">
<a-textarea v-model:value="formData.remark" placeholder="请输入备注" :rows="1" <a-textarea v-model:value="formData.remark" placeholder="请输入备注"
:auto-size="{ minRows: 1, maxRows: 2 }" /> :rows="1" :auto-size="{ minRows: 1, maxRows: 2 }" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -63,8 +63,8 @@ const spining = ref(false)
formRules.value = { formRules.value = {
reason: [{ required: true, message: '请选择原因', trigger: 'change' }], reason: [{ required: true, message: '请选择原因', trigger: 'change' }],
directionType: [{ required: true, message: '请选择类型', trigger: 'change' }], directionType: [{ required: true, message: '请选择类型', trigger: 'change' }],
nStationId: [{ required: true, message: '请选择节点', trigger: 'change' }], nStationId:[{ required: true, message: '请选择节点', trigger: 'change' }],
passWayAt: [{ required: true, message: '请选择去世时间', trigger: 'change' }] passWayAt:[{ required: true, message: '请选择去世时间', trigger: 'change' }]
} }
const dicsStore = useDicsStore() const dicsStore = useDicsStore()
@ -74,15 +74,15 @@ formData.value = {}
*/ */
function handleCreate(id) { function handleCreate(id) {
formData.value.directionType = 'Transfer' formData.value.directionType = 'Transfer'
formData.value.direction = 'Out' formData.value.direction='Out'
formData.value.customerId = id formData.value.customerId=storage.local.getItem('stationId'),
formData.value.stationId=id
showModal({ showModal({
type: 'create', type: 'create',
title: '转出', title: '转出',
}) })
} }
function handleChange(e) { function handleChange(e){
console.log(e) console.log(e)
} }
@ -99,10 +99,8 @@ function handleOk() {
let params = { let params = {
...formData.value, ...formData.value,
} }
if (params.directionType === 'Death') { if(params.directionType==='Death'){
params.passWayAt = dayjs(formData.value.passWayAt) params.passWayAt=dayjs(formData.value.passWayAt)
} else {
formData.value.stationId = storage.local.getItem('stationId')
} }
let result = null let result = null
switch (modal.value.type) { switch (modal.value.type) {

View File

@ -5,7 +5,7 @@
<div style="display: flex; justify-content: space-around;flex-direction: column;"> <div style="display: flex; justify-content: space-around;flex-direction: column;">
<!-- 左侧信息栏 --> <!-- 左侧信息栏 -->
<div style="margin-top: 20px;display: flex;align-items: center;margin-left: 20px;"> <div style="margin-top: 20px;display: flex;align-items: center;margin-left: 20px;">
<gx-upload v-model="idCardPhotos" accept-types=".jpg,.png,.webp" :fileNumber="1" /> <gx-upload v-model="formData.imgList" accept-types=".jpg,.png,.webp" :fileNumber="1" />
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<p style="font-weight: bold;"> <p style="font-weight: bold;">
<span>{{ formData.name }}</span> <span>{{ formData.name }}</span>
@ -54,13 +54,12 @@ import {
nextTick nextTick
} from 'vue' } from 'vue'
import { useForm, useModal } from '@/hooks' import { useForm, useModal } from '@/hooks'
import { config } from '@/config'
import apis from '@/apis' import apis from '@/apis'
const childData = ref({}) const childData = ref({})
const emit = defineEmits(['ok']) const emit = defineEmits(['ok'])
// tab key // tab key
const activeKey = ref(1) const activeKey = ref(1)
const idCardPhotos = ref([])
const { modal, showModal, hideModal, showLoading, hideLoading } = useModal() const { modal, showModal, hideModal, showLoading, hideLoading } = useModal()
const { formData, resetForm } = useForm() const { formData, resetForm } = useForm()
@ -107,9 +106,6 @@ const getBasicInfo = async () => {
if (!success) { if (!success) {
return return
} }
idCardPhotos.value = data.archive.idCardPhotos ? data.archive.idCardPhotos.map(item => config('http.apiUpload') + item) : []
console.log('idCardPhotos.value', idCardPhotos.value)
return data; return data;
} }
const getDisabledPersonInfo = async () => { const getDisabledPersonInfo = async () => {
@ -156,7 +152,6 @@ function handleEdit(record = {}) {
}) })
recordId.value = record.id recordId.value = record.id
formData.value = cloneDeep(record) formData.value = cloneDeep(record)
idCardPhotos.value = record.archive.idCardPhotos ? record.archive.idCardPhotos.map(item => config('http.apiUpload') + item) : []
} }
function handleOk() { function handleOk() {

View File

@ -615,21 +615,22 @@ const detailRef = ref()
const lineOrderRef = ref() const lineOrderRef = ref()
onMounted(() => { onMounted(() => {
searchFormData.value.stationId = storage.local.getItem('stationId') || '' searchFormData.value.serviceNodeIds = dicsStore.orgTree[0].value
getCount(searchFormData.value.serviceNodeIds)
}) })
getPageList() getPageList()
// async function getCount(params) { async function getCount(params) {
// try { try {
// const { success, data } = await apis.serverObj.getCount({ serviceNodeCodes: params }) const { success, data } = await apis.serverObj.getCount({ serviceNodeCodes: params })
// if (config('http.code.success') === success) { if (config('http.code.success') === success) {
// totalCount.value = data.count totalCount.value = data.count
// } }
// } catch (error) { } catch (error) {
// } }
// } }
/** /**
* 获取表格数据 * 获取表格数据
* @returns {Promise<void>} * @returns {Promise<void>}
@ -652,7 +653,6 @@ async function getPageList() {
if (config('http.code.success') === success) { if (config('http.code.success') === success) {
listData.value = data listData.value = data
paginationState.total = total paginationState.total = total
totalCount.value = total
} }
} catch (error) { } catch (error) {

View File

@ -259,12 +259,32 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="资质附件" name="qualificationFiles"> <a-form-item label="资质附件" name="qualificationFiles">
<UploadInput v-model="formData.qualificationFiles"/> <a-upload
list-type="picture-card"
v-model:file-list="formData.qualificationFiles"
:before-upload="beforeUpload"
:disabled="isViewMode"
>
<div v-if="formData.qualificationFiles.length < 5 && !isViewMode">
<plus-outlined />
<div class="ant-upload-text">上传</div>
</div>
</a-upload>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="站点图片" name="siteImages"> <a-form-item label="站点图片" name="siteImages">
<gx-upload v-model="formData.siteImages" :fileNumber="1" accept-types=".jpg,.png,.webp" /> <a-upload
list-type="picture-card"
v-model:file-list="formData.siteImages"
:before-upload="beforeUpload"
:disabled="isViewMode"
>
<div v-if="formData.siteImages.length < 5 && !isViewMode">
<plus-outlined />
<div class="ant-upload-text">上传</div>
</div>
</a-upload>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -290,8 +310,7 @@ import { message } from 'ant-design-vue'
import MapPickerModal from '@/components/Map/index.vue' import MapPickerModal from '@/components/Map/index.vue'
import { useDicsStore } from '@/store' import { useDicsStore } from '@/store'
import AreaCascader from '@/components/AreaCascader/index.vue' import AreaCascader from '@/components/AreaCascader/index.vue'
import UploadInput from '@/components/Upload/UploadInput.vue'
import { getBirthDate, spliceUrl } from '@/utils/util'
const emit = defineEmits(['ok']) const emit = defineEmits(['ok'])
const { t } = useI18n() const { t } = useI18n()
const { modal, showModal, hideModal } = useModal() const { modal, showModal, hideModal } = useModal()
@ -430,8 +449,8 @@ async function loadRecord(id, forView = false) {
closeTime: record.closeAt ? dayjs(`1970-01-01 ${record.closeAt}`) : null, closeTime: record.closeAt ? dayjs(`1970-01-01 ${record.closeAt}`) : null,
businessStatus: record.status || '', businessStatus: record.status || '',
services: record.provideServices || [], services: record.provideServices || [],
qualificationFiles: (record.qualificationAttachment && record.qualificationAttachment.length > 0) ? record.qualificationAttachment.map(item => config('http.apiUpload') + item) : [], qualificationFiles: record.qualificationAttachment?.map(url => ({ uid: url, url })) || [],
siteImages: (record.stationImgs && record.stationImgs.length > 0) ? record.stationImgs.map(item => config('http.apiUpload') + item) : [], siteImages: record.stationImgs?.map(url => ({ uid: url, url })) || [],
latitude: record.latitude || 0, latitude: record.latitude || 0,
longitude: record.longitude || 0, longitude: record.longitude || 0,
} }
@ -478,8 +497,7 @@ function handleOk() {
Status: values.businessStatus || '', Status: values.businessStatus || '',
ProvideServices: values.services?.length ? values.services : null, ProvideServices: values.services?.length ? values.services : null,
QualificationAttachment: values.qualificationFiles?.map(f => f.url || f.response?.url) || null, QualificationAttachment: values.qualificationFiles?.map(f => f.url || f.response?.url) || null,
QualificationAttachment:( values.qualificationFiles && values.qualificationFiles.length) > 0 ? values.qualificationFiles.map(item => spliceUrl(item)) : [], StationImgs: values.siteImages?.map(f => f.url || f.response?.url) || null,
StationImgs:( values.siteImages && values.siteImages.length) > 0 ? values.siteImages.map(item => spliceUrl(item)) : [],
} }
let result let result

View File

@ -13,7 +13,7 @@
<x-search-bar class="mb-4"> <x-search-bar class="mb-4">
<template #default="{ gutter, colSpan }"> <template #default="{ gutter, colSpan }">
<a-form :model="searchFormData" layout="inline"> <a-form :label-col="{ style: { width: '100px' } }" :model="searchFormData" layout="inline">
<!-- 基础查询字段 --> <!-- 基础查询字段 -->
<a-row :gutter="gutter"> <a-row :gutter="gutter">
<a-col v-bind="colSpan"> <a-col v-bind="colSpan">
@ -108,7 +108,7 @@
</a-collapse> </a-collapse>
<!-- 操作按钮 --> <!-- 操作按钮 -->
<a-row :gutter="gutter"> <a-row :gutter="gutter" style="margin-top: 16px;">
<a-col :span="24" style="text-align: right;"> <a-col :span="24" style="text-align: right;">
<a-space> <a-space>
<a-button @click="handleResetSearch">{{ $t('button.reset') }}</a-button> <a-button @click="handleResetSearch">{{ $t('button.reset') }}</a-button>