2025-04-01 18:09:08 +08:00
|
|
|
<template>
|
|
|
|
|
<!-- 新增 修改 详情表单-->
|
|
|
|
|
<up-form
|
|
|
|
|
labelWidth="70"
|
2025-04-03 14:23:20 +08:00
|
|
|
labelAlign="center"
|
2025-04-01 18:09:08 +08:00
|
|
|
labelPosition="left"
|
|
|
|
|
ref="addAndEditModelRef"
|
|
|
|
|
:model="addAndEditModel"
|
|
|
|
|
:rules="addAndEditModelRules"
|
|
|
|
|
style="background-color: #fff; padding: 0 30rpx 20rpx"
|
|
|
|
|
>
|
|
|
|
|
<TitleTipModal :TitleTip="`项目信息`" />
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="proName" label="项目名称" required>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
readonly
|
|
|
|
|
border="none"
|
2025-04-02 14:40:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择项目'"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.proName"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
2025-04-02 10:43:35 +08:00
|
|
|
<template #suffix v-if="props.addAndEditFormType != 3">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-icon name="arrow-right" @tap="onSelectProject" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="majorName" label="专业">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
border="none"
|
|
|
|
|
readonly
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.majorName"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择专业'"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
2025-04-02 10:43:35 +08:00
|
|
|
<template #suffix v-if="props.addAndEditFormType != 3">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-icon name="arrow-right" @tap="onSelectMajor" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="gxName" label="工序">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
border="none"
|
|
|
|
|
readonly
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.gxName"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择工序'"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
2025-04-02 10:43:35 +08:00
|
|
|
<template #suffix v-if="props.addAndEditFormType != 3">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-icon name="arrow-right" @tap="onSelectProcedure" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</up-form-item>
|
|
|
|
|
|
2025-04-07 11:27:47 +08:00
|
|
|
<TitleTipModal :TitleTip="`检查信息`" />
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="checkUserName" label="检查人">
|
2025-04-02 10:43:35 +08:00
|
|
|
<up-input
|
|
|
|
|
border="none"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.checkUserName"
|
2025-04-02 10:43:35 +08:00
|
|
|
:readonly="props.addAndEditFormType == 3"
|
|
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查人'"
|
|
|
|
|
/>
|
2025-04-01 18:09:08 +08:00
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="vioDate" label="检查日期">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
readonly
|
|
|
|
|
border="none"
|
|
|
|
|
inputAlign="right"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.vioDate"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择检查日期'"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
2025-04-02 10:43:35 +08:00
|
|
|
<template #suffix v-if="props.addAndEditFormType != 3">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-icon name="arrow-right" @tap="onSelectDate(1)" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="rectDate" label="整改期限" required>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
readonly
|
|
|
|
|
border="none"
|
|
|
|
|
inputAlign="right"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.rectDate"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择整改期限'"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
2025-04-02 10:43:35 +08:00
|
|
|
<template #suffix v-if="props.addAndEditFormType != 3">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-icon name="arrow-right" @tap="onSelectDate(2)" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="vioPlace" label="检查地点" required>
|
2025-04-02 10:43:35 +08:00
|
|
|
<up-input
|
|
|
|
|
border="none"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.vioPlace"
|
2025-04-02 10:43:35 +08:00
|
|
|
:readonly="props.addAndEditFormType == 3"
|
2025-04-07 14:41:01 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查地点'"
|
2025-04-02 10:43:35 +08:00
|
|
|
/>
|
2025-04-01 18:09:08 +08:00
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="vioDesc" label="检查描述" required>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-textarea
|
2025-04-08 17:24:43 +08:00
|
|
|
count
|
2025-04-01 18:09:08 +08:00
|
|
|
autoHeight
|
|
|
|
|
border="none"
|
2025-04-08 17:24:43 +08:00
|
|
|
maxlength="200"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.vioDesc"
|
2025-04-08 17:24:43 +08:00
|
|
|
:disabled="props.addAndEditFormType == 3"
|
2025-04-07 14:41:01 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查描述'"
|
2025-04-01 18:09:08 +08:00
|
|
|
/>
|
|
|
|
|
</up-form-item>
|
2025-04-02 10:43:35 +08:00
|
|
|
<up-form-item
|
|
|
|
|
required
|
2025-04-07 14:41:01 +08:00
|
|
|
prop="vrImgList"
|
|
|
|
|
:label="props.addAndEditFormType == 3 ? '检查照片' : '检查照片(最多9张)'"
|
2025-04-02 10:43:35 +08:00
|
|
|
>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-upload
|
|
|
|
|
multiple
|
|
|
|
|
@delete="onDeletePicVrImgList"
|
2025-04-02 10:43:35 +08:00
|
|
|
@afterRead="onAfterReadVrImgList"
|
2025-04-07 14:41:01 +08:00
|
|
|
:deletable="props.addAndEditFormType != 3"
|
2025-04-02 10:43:35 +08:00
|
|
|
:fileList="addAndEditModel.vrImgList"
|
2025-04-08 17:51:41 +08:00
|
|
|
:maxCount="props.addAndEditFormType == 3 ? addAndEditModel.vrImgList.length : 9"
|
2025-04-01 18:09:08 +08:00
|
|
|
/>
|
|
|
|
|
</up-form-item>
|
|
|
|
|
<TitleTipModal :TitleTip="`整改信息`" />
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="rectUserName" label="整改人" required>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
border="none"
|
2025-04-02 10:43:35 +08:00
|
|
|
:readonly="props.addAndEditFormType == 3"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.rectUserName"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入整改人'"
|
2025-04-01 18:09:08 +08:00
|
|
|
/>
|
|
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="rectTime" label="整改日期">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-input
|
|
|
|
|
readonly
|
|
|
|
|
border="none"
|
|
|
|
|
inputAlign="right"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.rectTime"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择整改日期'"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
2025-04-02 10:43:35 +08:00
|
|
|
<template #suffix v-if="props.addAndEditFormType != 3">
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-icon name="arrow-right" @tap="onSelectDate(3)" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</up-form-item>
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-form-item prop="rectDesc" label="整改说明" required>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-textarea
|
2025-04-08 17:24:43 +08:00
|
|
|
count
|
2025-04-01 18:09:08 +08:00
|
|
|
autoHeight
|
|
|
|
|
border="none"
|
2025-04-08 17:24:43 +08:00
|
|
|
maxlength="200"
|
|
|
|
|
:disabled="props.addAndEditFormType == 3"
|
2025-04-07 14:41:01 +08:00
|
|
|
v-model="addAndEditModel.rectDesc"
|
2025-04-02 10:43:35 +08:00
|
|
|
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入整改说明'"
|
2025-04-01 18:09:08 +08:00
|
|
|
/>
|
|
|
|
|
</up-form-item>
|
2025-04-02 10:43:35 +08:00
|
|
|
<up-form-item
|
|
|
|
|
prop="examiner"
|
|
|
|
|
:label="props.addAndEditFormType == 3 ? '整改照片' : '整改照片(最多9张)'"
|
|
|
|
|
>
|
2025-04-01 18:09:08 +08:00
|
|
|
<up-upload
|
|
|
|
|
multiple
|
|
|
|
|
@delete="onDeleteCorrectionImgList"
|
2025-04-07 14:41:01 +08:00
|
|
|
:deletable="props.addAndEditFormType != 3"
|
2025-04-02 10:43:35 +08:00
|
|
|
@afterRead="onAfterReadCorrectionImgList"
|
|
|
|
|
:fileList="addAndEditModel.correctionImgList"
|
2025-04-07 14:41:01 +08:00
|
|
|
:maxCount="
|
2025-04-08 17:51:41 +08:00
|
|
|
props.addAndEditFormType == 3 ? addAndEditModel.correctionImgList.length : 9
|
2025-04-07 14:41:01 +08:00
|
|
|
"
|
2025-04-01 18:09:08 +08:00
|
|
|
/>
|
|
|
|
|
</up-form-item>
|
|
|
|
|
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-button
|
|
|
|
|
text="提交"
|
|
|
|
|
type="primary"
|
|
|
|
|
@tap="onSubmitForm"
|
2025-04-08 17:24:43 +08:00
|
|
|
v-if="props.addAndEditFormType != 3"
|
|
|
|
|
style="width: 100%; margin-top: 10rpx"
|
2025-04-07 14:41:01 +08:00
|
|
|
/>
|
2025-04-01 18:09:08 +08:00
|
|
|
</up-form>
|
|
|
|
|
|
|
|
|
|
<!-- 项目选择弹框 -->
|
|
|
|
|
<up-popup :show="projectShow" mode="center" @close="onCloseProjectPopup">
|
|
|
|
|
<view class="project-popup">
|
|
|
|
|
<text>选择工程</text>
|
|
|
|
|
<view style="width: 100%; margin: 18rpx 0">
|
|
|
|
|
<up-input
|
|
|
|
|
clearable
|
|
|
|
|
placeholder="输入工程名称搜索"
|
|
|
|
|
suffixIconStyle="color: #909399"
|
2025-04-02 10:43:35 +08:00
|
|
|
v-model.trim="onSearchProjectName"
|
2025-04-01 18:09:08 +08:00
|
|
|
>
|
|
|
|
|
<template #suffix>
|
|
|
|
|
<up-icon name="search" size="24" @tap="onSearchInProjectPopup" />
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 工程列表 -->
|
|
|
|
|
<view class="project-list">
|
2025-04-07 14:41:01 +08:00
|
|
|
<up-list @scrolltolower="onScrollTolower" style="width: 100%" pagingEnabled>
|
|
|
|
|
<up-list-item v-for="(item, index) in projectList" :key="item.id">
|
|
|
|
|
<up-cell :title="item.name" @tap="onSelectProjectItem(item)">
|
2025-04-01 18:09:08 +08:00
|
|
|
<template #icon>
|
|
|
|
|
<text style="margin-right: 10rpx">
|
2025-04-07 14:41:01 +08:00
|
|
|
{{ index + 1 }}
|
2025-04-01 18:09:08 +08:00
|
|
|
</text>
|
|
|
|
|
</template>
|
|
|
|
|
</up-cell>
|
|
|
|
|
</up-list-item>
|
|
|
|
|
</up-list>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</up-popup>
|
|
|
|
|
|
|
|
|
|
<!-- 专业选择器 -->
|
|
|
|
|
<up-picker
|
2025-04-07 14:41:01 +08:00
|
|
|
keyName="name"
|
2025-04-01 18:09:08 +08:00
|
|
|
:show="majorShow"
|
|
|
|
|
:columns="majorList"
|
|
|
|
|
@confirm="onConfirmMajor"
|
|
|
|
|
@cancel="majorShow = !majorShow"
|
|
|
|
|
/>
|
|
|
|
|
<!-- 工序选择器 -->
|
|
|
|
|
<up-picker
|
2025-04-07 14:41:01 +08:00
|
|
|
keyName="name"
|
2025-04-01 18:09:08 +08:00
|
|
|
:show="procedureShow"
|
|
|
|
|
:columns="procedureList"
|
|
|
|
|
@confirm="onConfirmProcedure"
|
|
|
|
|
@cancel="procedureShow = !procedureShow"
|
|
|
|
|
/>
|
|
|
|
|
<!-- 年月日选择器 -->
|
|
|
|
|
<up-datetime-picker
|
|
|
|
|
mode="date"
|
|
|
|
|
:show="dateShow"
|
|
|
|
|
v-model="dateValue"
|
|
|
|
|
:formatter="formatter"
|
|
|
|
|
@confirm="onConfirmDate"
|
|
|
|
|
@cancel="dateShow = !dateShow"
|
|
|
|
|
/>
|
2025-04-02 10:43:35 +08:00
|
|
|
|
|
|
|
|
<up-loading-page
|
|
|
|
|
color="#333"
|
|
|
|
|
fontSize="16"
|
|
|
|
|
loadingColor="#2979ff"
|
|
|
|
|
:loading="sendLoading"
|
|
|
|
|
bg-color="rgba(0,0,0,0.3)"
|
|
|
|
|
loading-text="正在提交,请稍后..."
|
|
|
|
|
/>
|
2025-04-01 18:09:08 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2025-04-07 17:51:31 +08:00
|
|
|
import { reactive, ref, watch, onMounted } from 'vue'
|
2025-04-02 10:43:35 +08:00
|
|
|
import { debounce } from 'lodash-es' // 引入防抖函数
|
2025-04-07 17:51:31 +08:00
|
|
|
import { useCommon } from '@/hooks/useCommon.js'
|
|
|
|
|
import { getProcedureApi } from '@/services/common.js'
|
2025-04-07 14:41:01 +08:00
|
|
|
import {
|
|
|
|
|
addQualityInspectionApi,
|
|
|
|
|
editQualityInspectionApi,
|
|
|
|
|
getQualityInspectionDetailsByIdApi,
|
|
|
|
|
} from '@/services/qualityInspection.js'
|
2025-04-01 18:09:08 +08:00
|
|
|
import TitleTipModal from '@/components/TitleTipModal/index'
|
|
|
|
|
|
2025-04-07 17:51:31 +08:00
|
|
|
const { getProjectList, getMajorList } = useCommon()
|
|
|
|
|
|
2025-04-07 14:41:01 +08:00
|
|
|
const addAndEditModelRef = ref(null)
|
2025-04-01 18:09:08 +08:00
|
|
|
const projectShow = ref(false) // 项目选择弹框
|
|
|
|
|
const majorShow = ref(false) // 专业选择器
|
|
|
|
|
const procedureShow = ref(false) // 工序选择器
|
|
|
|
|
const dateShow = ref(false) // 年月日选择器
|
|
|
|
|
const onSearchProjectName = ref('') // 项目搜索条件
|
|
|
|
|
const dateValue = ref(Date.now()) // 年月日选择器数据源
|
2025-04-02 10:43:35 +08:00
|
|
|
const sendLoading = ref(false) // 加载中
|
2025-04-01 18:09:08 +08:00
|
|
|
const dateType = ref(1)
|
2025-04-07 14:41:01 +08:00
|
|
|
|
2025-04-01 18:09:08 +08:00
|
|
|
const props = defineProps({
|
|
|
|
|
// 表单类型 1. 新增 2. 修改 3. 详情
|
2025-04-02 10:43:35 +08:00
|
|
|
addAndEditFormType: {
|
|
|
|
|
type: [Number, String],
|
2025-04-01 18:09:08 +08:00
|
|
|
default: () => 1,
|
|
|
|
|
},
|
2025-04-07 14:41:01 +08:00
|
|
|
// 列表id
|
|
|
|
|
detailsId: {
|
|
|
|
|
type: [Number, String],
|
|
|
|
|
default: () => '',
|
|
|
|
|
},
|
2025-04-01 18:09:08 +08:00
|
|
|
})
|
|
|
|
|
|
2025-04-07 17:51:31 +08:00
|
|
|
// 项目数据源
|
|
|
|
|
const projectList = ref([])
|
2025-04-08 17:24:43 +08:00
|
|
|
const projectListAll = ref([])
|
2025-04-07 17:51:31 +08:00
|
|
|
// 专业数据源
|
|
|
|
|
const majorList = reactive([])
|
|
|
|
|
// 工序数据源
|
|
|
|
|
const procedureList = reactive([])
|
|
|
|
|
|
2025-04-07 14:41:01 +08:00
|
|
|
// 修改时删除的数据源
|
|
|
|
|
const deleteFileList = []
|
2025-04-01 18:09:08 +08:00
|
|
|
// 表单数据源
|
|
|
|
|
const addAndEditModel = reactive({
|
2025-04-07 14:41:01 +08:00
|
|
|
dataSource: 2,
|
|
|
|
|
proId: '', // 工程id
|
|
|
|
|
proName: '', // 工程名称
|
|
|
|
|
majorId: '', // 专业id
|
|
|
|
|
majorName: '', // 专业名称
|
|
|
|
|
gxId: '', // 工序id
|
|
|
|
|
gxName: '', // 工序名称
|
|
|
|
|
checkUserName: '', // 检查人
|
|
|
|
|
vioDate: '', // 检查时间
|
|
|
|
|
vioPlace: '', // 检查地点
|
|
|
|
|
vioDesc: '', // 检查描述
|
|
|
|
|
rectDate: '', // 整改期限
|
|
|
|
|
rectUserName: '', //整改人
|
|
|
|
|
rectTime: '', //整改时间
|
|
|
|
|
rectDesc: '', //整改说明
|
|
|
|
|
vrImgList: [], // 检查照片
|
|
|
|
|
correctionImgList: [], // 整改照片
|
2025-04-08 17:51:41 +08:00
|
|
|
rectStatus: 0,
|
2025-04-01 18:09:08 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 校验规则
|
|
|
|
|
const addAndEditModelRules = ref({
|
|
|
|
|
projectName: [
|
|
|
|
|
{
|
|
|
|
|
type: 'string',
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请选择项目名称',
|
|
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-04-07 14:41:01 +08:00
|
|
|
rectDate: [
|
2025-04-01 18:09:08 +08:00
|
|
|
{
|
|
|
|
|
type: 'string',
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请选择整改期限',
|
|
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-04-08 17:24:43 +08:00
|
|
|
checkUserName: [
|
|
|
|
|
{
|
|
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
pattern: /^(?:[\u4e00-\u9fa5]{1,10}|[a-zA-Z][a-zA-Z\s\-.]{1,19})$/,
|
|
|
|
|
// 正则检验前先将值转为字符串
|
|
|
|
|
transform(value) {
|
|
|
|
|
return String(value)
|
|
|
|
|
},
|
|
|
|
|
message: '请填写正确的人名',
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-04-07 14:41:01 +08:00
|
|
|
vioPlace: [
|
2025-04-01 18:09:08 +08:00
|
|
|
{
|
|
|
|
|
type: 'string',
|
|
|
|
|
required: true,
|
2025-04-07 14:41:01 +08:00
|
|
|
message: '请填写检查地点',
|
2025-04-01 18:09:08 +08:00
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-04-07 14:41:01 +08:00
|
|
|
vioDesc: [
|
2025-04-01 18:09:08 +08:00
|
|
|
{
|
|
|
|
|
type: 'string',
|
|
|
|
|
required: true,
|
2025-04-07 14:41:01 +08:00
|
|
|
message: '请填写检查描述',
|
2025-04-01 18:09:08 +08:00
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
vrImgList: [
|
|
|
|
|
{
|
2025-04-07 14:41:01 +08:00
|
|
|
type: 'array',
|
2025-04-01 18:09:08 +08:00
|
|
|
required: true,
|
2025-04-07 14:41:01 +08:00
|
|
|
message: '请上传检查照片',
|
2025-04-01 18:09:08 +08:00
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-04-07 14:41:01 +08:00
|
|
|
rectUserName: [
|
2025-04-01 18:09:08 +08:00
|
|
|
{
|
|
|
|
|
type: 'string',
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请填写整改人',
|
|
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-04-07 14:41:01 +08:00
|
|
|
rectDesc: [
|
2025-04-01 18:09:08 +08:00
|
|
|
{
|
|
|
|
|
type: 'string',
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请填写整改说明',
|
|
|
|
|
trigger: ['blur', 'change'],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
})
|
2025-04-07 14:41:01 +08:00
|
|
|
|
|
|
|
|
// 获取工序
|
|
|
|
|
const getProcedureData = async (pid) => {
|
|
|
|
|
console.log(
|
2025-04-08 17:24:43 +08:00
|
|
|
'%c🔍 获取工序请求入参 %c',
|
2025-04-07 14:41:01 +08:00
|
|
|
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
|
|
|
|
|
'',
|
2025-04-08 17:24:43 +08:00
|
|
|
'pid=' + pid,
|
2025-04-07 14:41:01 +08:00
|
|
|
)
|
|
|
|
|
const { data: res } = await getProcedureApi({ pid })
|
|
|
|
|
console.log(
|
|
|
|
|
'%c🔍 获取工序请求出参 %c',
|
|
|
|
|
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
|
|
|
|
|
'',
|
|
|
|
|
res,
|
|
|
|
|
)
|
|
|
|
|
procedureList.push(res)
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-01 18:09:08 +08:00
|
|
|
// 日期格式化
|
|
|
|
|
const formatter = (type, value) => {
|
|
|
|
|
if (type === 'year') {
|
|
|
|
|
return `${value}年`
|
|
|
|
|
}
|
|
|
|
|
if (type === 'month') {
|
|
|
|
|
return `${value}月`
|
|
|
|
|
}
|
|
|
|
|
if (type === 'day') {
|
|
|
|
|
return `${value}日`
|
|
|
|
|
}
|
|
|
|
|
return value
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 选择项目
|
|
|
|
|
const onSelectProject = () => {
|
|
|
|
|
projectShow.value = true
|
|
|
|
|
}
|
|
|
|
|
// 搜索
|
|
|
|
|
const onSearchInProjectPopup = () => {
|
2025-04-08 17:24:43 +08:00
|
|
|
if (!onSearchProjectName.value) {
|
|
|
|
|
projectList.value = projectListAll.value // 如果搜索为空,返回所有项目
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const searchTerm = onSearchProjectName.value.toLowerCase()
|
|
|
|
|
projectList.value = projectListAll.value.filter(
|
|
|
|
|
(e) => e.name && e.name.toLowerCase().includes(searchTerm),
|
|
|
|
|
)
|
2025-04-01 18:09:08 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 滚动触底事件
|
|
|
|
|
const onScrollTolower = () => {
|
2025-04-07 17:51:31 +08:00
|
|
|
// console.log('---滚动触底')
|
2025-04-01 18:09:08 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 选择项目
|
|
|
|
|
const onSelectProjectItem = (item) => {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModel.proName = item.name
|
|
|
|
|
addAndEditModel.proId = item.id
|
2025-04-01 18:09:08 +08:00
|
|
|
projectShow.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 关闭项目选择弹框
|
|
|
|
|
const onCloseProjectPopup = () => {
|
|
|
|
|
onSearchProjectName.value = ''
|
|
|
|
|
projectShow.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 选择专业
|
|
|
|
|
const onSelectMajor = () => {
|
|
|
|
|
majorShow.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 专业确定
|
|
|
|
|
const onConfirmMajor = (item) => {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModel.majorName = item.value[0].name
|
|
|
|
|
addAndEditModel.majorId = item.value[0].id
|
|
|
|
|
getProcedureData(item.value[0].id)
|
2025-04-01 18:09:08 +08:00
|
|
|
majorShow.value = false
|
|
|
|
|
}
|
|
|
|
|
// 选择工序
|
|
|
|
|
const onSelectProcedure = () => {
|
|
|
|
|
procedureShow.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 工序确定
|
|
|
|
|
const onConfirmProcedure = (item) => {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModel.gxName = item.value[0].name
|
|
|
|
|
addAndEditModel.gxId = item.value[0].id
|
2025-04-01 18:09:08 +08:00
|
|
|
procedureShow.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 打开日期选择器
|
|
|
|
|
const onSelectDate = (type) => {
|
2025-04-07 14:41:01 +08:00
|
|
|
// type 为类型 1. 违章日期 2. 整改期限 3. 整改日期
|
2025-04-01 18:09:08 +08:00
|
|
|
dateType.value = type
|
|
|
|
|
dateShow.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 日期确定
|
|
|
|
|
const onConfirmDate = (item) => {
|
|
|
|
|
const formatDateValue = formatDate(dateValue.value)
|
|
|
|
|
if (dateType.value === 1) {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModel.vioDate = formatDateValue
|
2025-04-01 18:09:08 +08:00
|
|
|
}
|
|
|
|
|
if (dateType.value === 2) {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModel.rectDate = formatDateValue
|
2025-04-01 18:09:08 +08:00
|
|
|
}
|
|
|
|
|
if (dateType.value === 3) {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModel.rectTime = formatDateValue
|
2025-04-01 18:09:08 +08:00
|
|
|
}
|
|
|
|
|
dateShow.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const formatDate = (timestamp) => {
|
|
|
|
|
const date = new Date(timestamp)
|
|
|
|
|
const year = date.getFullYear()
|
|
|
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
|
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
|
|
|
return `${year}-${month}-${day}`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 违章照片上传
|
|
|
|
|
const onAfterReadVrImgList = (event) => {
|
|
|
|
|
let lists = [].concat(event.file)
|
|
|
|
|
lists.map((item) => {
|
|
|
|
|
addAndEditModel.vrImgList.push({
|
|
|
|
|
...item,
|
2025-04-07 14:41:01 +08:00
|
|
|
isEdit: false,
|
2025-04-01 18:09:08 +08:00
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// 违章照片删除
|
|
|
|
|
const onDeletePicVrImgList = (event) => {
|
2025-04-08 17:51:41 +08:00
|
|
|
if (props.addAndEditFormType == 2 && addAndEditModel.vrImgList[event.index].isEdit) {
|
2025-04-07 14:41:01 +08:00
|
|
|
deleteFileList.push({ id: addAndEditModel.vrImgList[event.index].id })
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-01 18:09:08 +08:00
|
|
|
addAndEditModel.vrImgList.splice(event.index, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 整改照片上传
|
|
|
|
|
const onAfterReadCorrectionImgList = (event) => {
|
|
|
|
|
let lists = [].concat(event.file)
|
|
|
|
|
lists.map((item) => {
|
|
|
|
|
addAndEditModel.correctionImgList.push({
|
|
|
|
|
...item,
|
2025-04-07 14:41:01 +08:00
|
|
|
isEdit: false,
|
2025-04-01 18:09:08 +08:00
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
2025-04-07 14:41:01 +08:00
|
|
|
// 整改照片删除
|
2025-04-01 18:09:08 +08:00
|
|
|
const onDeleteCorrectionImgList = (event) => {
|
2025-04-08 17:51:41 +08:00
|
|
|
if (props.addAndEditFormType == 2 && addAndEditModel.correctionImgList[event.index].isEdit) {
|
|
|
|
|
deleteFileList.push({ id: addAndEditModel.correctionImgList[event.index].id })
|
2025-04-07 14:41:01 +08:00
|
|
|
}
|
|
|
|
|
|
2025-04-01 18:09:08 +08:00
|
|
|
addAndEditModel.correctionImgList.splice(event.index, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 提交
|
2025-04-02 10:43:35 +08:00
|
|
|
const onSubmitForm = debounce(() => {
|
2025-04-07 14:41:01 +08:00
|
|
|
addAndEditModelRef.value
|
|
|
|
|
.validate()
|
|
|
|
|
.then(async (valid) => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
// 先调上传接口把图片上传
|
|
|
|
|
sendLoading.value = true
|
|
|
|
|
const uploadImages = new Promise(async (resolve, reject) => {
|
|
|
|
|
try {
|
|
|
|
|
let successVrImgList = []
|
|
|
|
|
let successCorrectionImgList = []
|
|
|
|
|
|
|
|
|
|
let successVrImgListNoEdit = []
|
|
|
|
|
let successCorrectionImgListNoEdit = []
|
|
|
|
|
|
|
|
|
|
if (addAndEditModel.vrImgList.length > 0) {
|
2025-04-08 17:24:43 +08:00
|
|
|
successVrImgListNoEdit = addAndEditModel.vrImgList.filter(
|
|
|
|
|
(e) => !e.isEdit,
|
|
|
|
|
)
|
2025-04-07 14:41:01 +08:00
|
|
|
|
|
|
|
|
if (successVrImgListNoEdit.length > 0) {
|
|
|
|
|
successVrImgList = await uploadImgFun(successVrImgListNoEdit, 3)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (addAndEditModel.correctionImgList.length > 0) {
|
2025-04-08 17:24:43 +08:00
|
|
|
successCorrectionImgListNoEdit =
|
|
|
|
|
addAndEditModel.correctionImgList.filter((e) => !e.isEdit)
|
2025-04-07 14:41:01 +08:00
|
|
|
|
|
|
|
|
if (successCorrectionImgListNoEdit.length > 0) {
|
|
|
|
|
successCorrectionImgList = await uploadImgFun(
|
|
|
|
|
successCorrectionImgListNoEdit,
|
|
|
|
|
4,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resolve({ successVrImgList, successCorrectionImgList }) // 上传成功,返回结果
|
|
|
|
|
} catch (error) {
|
|
|
|
|
reject(error) // 上传失败,抛出错误
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
uploadImages
|
|
|
|
|
.then(async ({ successVrImgList, successCorrectionImgList }) => {
|
|
|
|
|
// 这里写提交表单的逻辑
|
|
|
|
|
// 组装参数
|
|
|
|
|
const {
|
|
|
|
|
dataSource,
|
|
|
|
|
proId, // 工程id
|
|
|
|
|
proName, // 工程名称
|
|
|
|
|
majorId, // 专业id
|
|
|
|
|
majorName, // 专业名称
|
|
|
|
|
gxId, // 工序id
|
|
|
|
|
gxName, // 工序名称
|
|
|
|
|
checkUserName, // 检查人
|
|
|
|
|
vioDate, // 违章时间
|
|
|
|
|
vioPlace, // 违章地点
|
|
|
|
|
vioDesc, // 违章描述
|
|
|
|
|
rectDate, // 整改期限
|
|
|
|
|
rectUserName, //整改人
|
|
|
|
|
rectTime, //整改时间
|
|
|
|
|
rectDesc, //整改说明
|
2025-04-08 17:51:41 +08:00
|
|
|
rectStatus,
|
2025-04-07 14:41:01 +08:00
|
|
|
} = addAndEditModel
|
|
|
|
|
|
|
|
|
|
const addParams = {
|
|
|
|
|
dataSource,
|
|
|
|
|
proId, // 工程id
|
|
|
|
|
proName, // 工程名称
|
|
|
|
|
majorId, // 专业id
|
|
|
|
|
majorName, // 专业名称
|
|
|
|
|
gxId, // 工序id
|
|
|
|
|
gxName, // 工序名称
|
|
|
|
|
checkUserName, // 检查人
|
|
|
|
|
vioDate, // 违章时间
|
|
|
|
|
vioPlace, // 违章地点
|
|
|
|
|
vioDesc, // 违章描述
|
|
|
|
|
rectDate, // 整改期限
|
|
|
|
|
rectUserName, //整改人
|
|
|
|
|
rectTime, //整改时间
|
|
|
|
|
rectDesc, //整改说明
|
|
|
|
|
fileList: [...successVrImgList, ...successCorrectionImgList],
|
|
|
|
|
uploadType: 2,
|
2025-04-08 17:51:41 +08:00
|
|
|
rectStatus: addAndEditModel.correctionImgList.length > 0 ? 1 : 0,
|
2025-04-07 14:41:01 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const SED_API =
|
|
|
|
|
props.addAndEditFormType == 1
|
|
|
|
|
? addQualityInspectionApi
|
|
|
|
|
: editQualityInspectionApi
|
|
|
|
|
|
|
|
|
|
if (props.addAndEditFormType == 2) {
|
|
|
|
|
Object.assign(addParams, {
|
|
|
|
|
id: props.detailsId,
|
|
|
|
|
delFileList: deleteFileList,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log(
|
|
|
|
|
'%c🔍 表单提交入参 %c',
|
|
|
|
|
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
|
|
|
|
|
'',
|
|
|
|
|
addParams,
|
|
|
|
|
)
|
|
|
|
|
const res = await SED_API(addParams)
|
|
|
|
|
console.log(
|
|
|
|
|
'%c🔍 表单提交出参 %c',
|
|
|
|
|
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
|
|
|
|
|
'',
|
|
|
|
|
res,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
sendLoading.value = false
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
uni.$u.toast(res.data)
|
2025-04-08 17:51:41 +08:00
|
|
|
setTimeout(() => {
|
|
|
|
|
uni.navigateBack({
|
|
|
|
|
delta: 1,
|
|
|
|
|
})
|
|
|
|
|
}, 500)
|
2025-04-07 14:41:01 +08:00
|
|
|
} else {
|
|
|
|
|
uni.$u.toast(res.data)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
console.error('图片上传失败:', error)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {})
|
2025-04-02 10:43:35 +08:00
|
|
|
}, 1000)
|
|
|
|
|
|
2025-04-07 14:41:01 +08:00
|
|
|
// 上传逻辑
|
|
|
|
|
const uploadImgFun = async (list, type) => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
let successList = []
|
|
|
|
|
let files = []
|
|
|
|
|
|
|
|
|
|
list.forEach((f) => {
|
|
|
|
|
let d = {
|
|
|
|
|
file: f.url,
|
|
|
|
|
name: 'files',
|
|
|
|
|
uri: f.url,
|
|
|
|
|
}
|
|
|
|
|
files.push(d)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
sendLoading.value = true
|
|
|
|
|
|
|
|
|
|
uni.uploadFile({
|
|
|
|
|
url: '/imgTool/sys/file/uploadFile',
|
|
|
|
|
files: files,
|
|
|
|
|
name: 'files',
|
|
|
|
|
formData: {
|
|
|
|
|
params: JSON.stringify({
|
|
|
|
|
uploadType: 2,
|
|
|
|
|
sourceType: type,
|
|
|
|
|
sourceTypeName: type === 3 ? '质量检查-缺陷问题照片' : '质量检查-整改照片',
|
|
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
success: (res) => {
|
|
|
|
|
sendLoading.value = false
|
|
|
|
|
res = JSON.parse(res.data)
|
|
|
|
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
successList = res.data
|
|
|
|
|
resolve(successList) // 上传成功,返回数据
|
|
|
|
|
} else {
|
|
|
|
|
uni.$u.toast('上传失败' + res.msg)
|
|
|
|
|
reject(new Error('上传失败: ' + res.msg))
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: (err) => {
|
|
|
|
|
sendLoading.value = false
|
|
|
|
|
reject(new Error('网络错误: ' + err.errMsg))
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
})
|
2025-04-02 10:43:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取表单详情
|
2025-04-07 14:41:01 +08:00
|
|
|
const getFormDetail = async () => {
|
|
|
|
|
const res = await getQualityInspectionDetailsByIdApi({ id: props?.detailsId })
|
|
|
|
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
const {
|
|
|
|
|
dataSource,
|
|
|
|
|
proId, // 工程id
|
|
|
|
|
proName, // 工程名称
|
|
|
|
|
majorId, // 专业id
|
|
|
|
|
majorName, // 专业名称
|
|
|
|
|
gxId, // 工序id
|
|
|
|
|
gxName, // 工序名称
|
|
|
|
|
checkUserName, // 检查人
|
|
|
|
|
vioDate, // 违章时间
|
|
|
|
|
vioPlace, // 违章地点
|
|
|
|
|
vioDesc, // 违章描述
|
|
|
|
|
rectDate, // 整改期限
|
|
|
|
|
rectUserName, //整改人
|
|
|
|
|
rectTime, //整改时间
|
|
|
|
|
rectDesc, //整改说明
|
|
|
|
|
rectPhotoList,
|
|
|
|
|
vioPhotoList,
|
2025-04-08 17:51:41 +08:00
|
|
|
rectStatus,
|
2025-04-07 14:41:01 +08:00
|
|
|
} = res.data
|
|
|
|
|
|
|
|
|
|
let rectPhotoListEdit = []
|
|
|
|
|
let vioPhotoListEdit = []
|
|
|
|
|
|
|
|
|
|
if (rectPhotoList.length > 0) {
|
|
|
|
|
rectPhotoListEdit = rectPhotoList.map((e) => {
|
|
|
|
|
return {
|
2025-04-08 17:24:43 +08:00
|
|
|
isEdit: true,
|
2025-04-07 14:41:01 +08:00
|
|
|
url: e.originalFilePath,
|
|
|
|
|
...e,
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (vioPhotoList.length > 0) {
|
|
|
|
|
vioPhotoListEdit = vioPhotoList.map((e) => {
|
|
|
|
|
return {
|
2025-04-08 17:24:43 +08:00
|
|
|
isEdit: true,
|
2025-04-07 14:41:01 +08:00
|
|
|
url: e.originalFilePath,
|
|
|
|
|
...e,
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Object.assign(addAndEditModel, {
|
|
|
|
|
proId, // 工程id
|
|
|
|
|
proName, // 工程名称
|
|
|
|
|
majorId, // 专业id
|
|
|
|
|
majorName, // 专业名称
|
|
|
|
|
gxId, // 工序id
|
|
|
|
|
gxName, // 工序名称
|
|
|
|
|
checkUserName, // 检查人
|
|
|
|
|
vioDate, // 违章时间
|
|
|
|
|
vioPlace, // 违章地点
|
|
|
|
|
vioDesc, // 违章描述
|
|
|
|
|
rectDate, // 整改期限
|
|
|
|
|
rectUserName, //整改人
|
|
|
|
|
rectTime, //整改时间
|
|
|
|
|
rectDesc, //整改说明
|
|
|
|
|
vrImgList: vioPhotoListEdit,
|
|
|
|
|
correctionImgList: rectPhotoListEdit,
|
2025-04-08 17:51:41 +08:00
|
|
|
rectStatus,
|
2025-04-07 14:41:01 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
getProcedureData(majorId)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-07 17:51:31 +08:00
|
|
|
onMounted(async () => {
|
|
|
|
|
projectList.value = await getProjectList()
|
2025-04-08 17:24:43 +08:00
|
|
|
projectListAll.value = await getProjectList()
|
2025-04-07 17:51:31 +08:00
|
|
|
majorList.push(await getMajorList())
|
|
|
|
|
})
|
|
|
|
|
|
2025-04-07 14:41:01 +08:00
|
|
|
// 监听当前页面是新增还是修改
|
|
|
|
|
watch(
|
|
|
|
|
() => props.addAndEditFormType,
|
|
|
|
|
(newValue) => {
|
|
|
|
|
if (newValue != 1) {
|
|
|
|
|
getFormDetail()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
deep: true,
|
|
|
|
|
immediate: true,
|
|
|
|
|
},
|
|
|
|
|
)
|
2025-04-01 18:09:08 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.u-nav-slot {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
color: #2979ff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .u-navbar__content__title {
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .u-form-item__body__right {
|
|
|
|
|
padding: 0 60rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-popup {
|
|
|
|
|
width: 90vw;
|
|
|
|
|
height: 80vh;
|
|
|
|
|
padding: 20rpx 12rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
align-items: center;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
.project-list {
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|