You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
521 lines
18 KiB
521 lines
18 KiB
<template>
|
|
<view class="project-add cc-page-wrap">
|
|
<!-- 项目新增表单卡片 -->
|
|
<!-- <view class="cc-card form-card" ref="form">
|
|
<view class="form-title">基本信息</view>
|
|
<view class="form-item">
|
|
<text class="form-label">项目名称</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectName" class="form-input" placeholder="请输入项目名称" />
|
|
</view>
|
|
</view>
|
|
<view class="form-item">
|
|
<text class="form-label">行政区划</text>
|
|
<view class="form-content">
|
|
<input v-model="form.adcd" class="form-input" placeholder="请选择行政区划" disabled/>
|
|
<view style="position: relative;">
|
|
<view class="form-select" @click="handleOpenSelect">
|
|
选择
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目编码</text>
|
|
<view class="form-content">
|
|
<input v-model="form.proCode" class="form-input" placeholder="请输入项目编码" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目种类</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectKinds" class="form-input" placeholder="请选择项目种类" disabled/>
|
|
<picker mode="selector" :range="projectKindsOptions" @change="onProjectCategoryPickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目法人单位</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectLegalPerson" class="form-input" placeholder="请输入项目法人单位" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目负责人</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectSuperintendent" class="form-input" placeholder="请输入项目负责人" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目负责人电话</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectLegalPhone" class="form-input" placeholder="请输入项目负责人电话" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">单位法定代表人</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectUnitLegal" class="form-input" placeholder="请输入单位法定代表人" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">单位法定代表人电话</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectUnitLegalPhone" class="form-input" placeholder="请输入单位法定代表人电话" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目类型</text>
|
|
<view class="form-content">
|
|
<input v-model="form.projectType" class="form-input" placeholder="请选择项目种类" disabled/>
|
|
<picker mode="selector" :range="projectTypes" @change="onProjectTypePickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">工程等别</text>
|
|
<view class="form-content">
|
|
<input v-model="form.engineeringGrade" class="form-input" placeholder="请选择工程等别" disabled/>
|
|
<picker mode="selector" :range="engineeringGradeOptions" @change="onProjectLevelPickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">工程用途</text>
|
|
<view class="form-content">
|
|
<input v-model="form.engineeringPurposes" class="form-input" placeholder="请选择工程用途" disabled/>
|
|
<picker mode="selector" :range="engineeringPurposesOptions" @change="onProjectPurposesPickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">项目建设地址</text>
|
|
<view class="form-content">
|
|
<input v-model="form.constructionAddress" class="form-input" placeholder="请输入项目建设地址" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">建设模式</text>
|
|
<view class="form-content">
|
|
<input v-model="form.constructionMode" class="form-input" placeholder="请选择建设模式" disabled/>
|
|
<picker mode="selector" :range="constructionModeOptions" @change="onProjectModesPickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">建设性质</text>
|
|
<view class="form-content">
|
|
<input v-model="form.constructionNature" class="form-input" placeholder="请选择建设性质" disabled/>
|
|
<picker mode="selector" :range="constructionNatureOptions" @change="onProjectBuildTypesPickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">建设内容</text>
|
|
<view class="form-content">
|
|
<textarea v-model="form.constructionContent" class="form-input" placeholder="请输入建设内容" :rows="3"></textarea>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">中央资金(万元)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.centralArrangedFunds" class="form-input" placeholder="请输入中央资金(万元)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">中央资金资金比例(%)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.centralArrangedFundsRate" class="form-input" placeholder="请输入中央资金资金比例(%)" type="number"/>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">省级资金(万元)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.provincialFunding" class="form-input" placeholder="请输入省级资金(万元)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">省级资金比例(%)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.provincialFundingRate" class="form-input" placeholder="请输入省级资金比例(%)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">地市资金(万元)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.cityLevelFunds" class="form-input" placeholder="请输入地市资金(万元)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">地市资金比例(%)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.cityLevelFundsRate" class="form-input" placeholder="请输入地市资金比例(%)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">区县资金(万元)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.countyLevelFunds" class="form-input" placeholder="请输入区县资金(万元)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">区县资金比例(%)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.cityLevelFundsRate" class="form-input" placeholder="请输入区县资金比例(%)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">乡镇及群众自筹和其他投资(万元)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.townshipInvestments" class="form-input" placeholder="请输入乡镇及群众自筹和其他投资(万元)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">乡镇及群众自筹和其他投资比例(%)</text>
|
|
<view class="form-content">
|
|
<input v-model="form.townshipInvestmentsRate" class="form-input" placeholder="请输入乡镇及群众自筹和其他投资比例(%)" type="number" />
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form-item">
|
|
<text class="form-label">是否省重大水利工程项目</text>
|
|
<view class="form-content">
|
|
<input v-model="form.isMajorProject" class="form-input" placeholder="请选择是否省重大水利工程项目" disabled/>
|
|
<picker mode="selector" :range="isMajorProjectOptions" @change="onImportProjectPickerChange">
|
|
<view class="form-select">
|
|
选择
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
</view> -->
|
|
<project-add ref="projectAdd" />
|
|
|
|
<view v-if="operateType==='examine'||operateType==='examineSee'" class="cc-card form-card" style="margin-top: 16px;">
|
|
<view class="form-title">审核信息</view>
|
|
<view class="form-item">
|
|
<text class="form-label">审批人</text>
|
|
<view class="form-content">
|
|
<input v-model="checkForm.checkPerson" class="form-input" placeholder="请输入审批人" />
|
|
</view>
|
|
</view>
|
|
<view class="form-item">
|
|
<text class="form-label">审批时间</text>
|
|
<view class="form-content">
|
|
<input v-model="checkForm.checkTime" class="form-input" placeholder="请输入审批时间" />
|
|
</view>
|
|
</view>
|
|
<view class="form-item">
|
|
<text class="form-label">审批意见</text>
|
|
<view class="form-content">
|
|
<textarea v-model="checkForm.checkOpinion" class="form-input" placeholder="请输入审批意见" rows="3"></textarea>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view v-if="operateType!=='see' && operateType!=='examineSee'" class="cc-operation-row operation-row">
|
|
<view v-if="operateType==='edit'" class="buttons-group">
|
|
<view class="button default-button" @click="handleSaveProject()">保存</view>
|
|
</view>
|
|
<view v-else-if="operateType==='add'" class="buttons-group">
|
|
<view class="button primary-button" @click="handleSaveProject()">上报</view>
|
|
<view class="button default-button" @click="handleSaveProjectDraft()">暂存</view>
|
|
</view>
|
|
<view v-else-if="operateType==='examine'" class="buttons-group">
|
|
<view class="button primary-button" @click="handleSubmitCheck()">确定</view>
|
|
<view class="button default-button" @click="handleCancelCheck()">取消</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 省市区选项 -->
|
|
<cityPicker :column="column" :default-value="defaultValue" :mask-close-able="maskCloseAble" @confirm="confirm" @cancel="cancel" :visible="visible"/>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { projectAddApi } from '@/api/system/project'
|
|
import ProjectAdd from '@/components/project-add/project-add.vue'
|
|
export default {
|
|
components: {
|
|
ProjectAdd
|
|
},
|
|
data() {
|
|
return {
|
|
form: {
|
|
id: null,
|
|
isKeyProject: null,
|
|
isPierceProject: null,
|
|
isMajor: null,
|
|
projectName: '',
|
|
unitLeader: null,
|
|
projectLegalPerson: '',
|
|
projectLegalUnit: null,
|
|
projectLegalPhone: '',
|
|
|
|
projectSuperintendent: '',
|
|
projectSuperintendentPhone: null,
|
|
projectUnitLegal: '',
|
|
projectUnitLegalPhone: '',
|
|
|
|
engineeringGrade: '',
|
|
engineeringPurposes: '',
|
|
workCategory: null,
|
|
constructionAddress: '',
|
|
constructionMode: '',
|
|
constructionNature: null,
|
|
constructionContent: '',
|
|
adcd: '',
|
|
basin: null,
|
|
projectType: '',
|
|
// fundingSource: null,
|
|
|
|
centralArrangedFunds: '',
|
|
centralArrangedFundsRate: '',
|
|
provincialFunding: '',
|
|
provincialFundingRate: '',
|
|
cityLevelFunds: '',
|
|
cityLevelFundsRate: '',
|
|
countyLevelFunds: '',
|
|
countyLevelFundsRate: '',
|
|
townshipInvestments: '',
|
|
townshipInvestmentsRate: '',
|
|
|
|
isMajorProject: '',
|
|
investmentSubject: null,
|
|
constructionPhase: null,
|
|
fundingNumber: null,
|
|
proCode: '',
|
|
proNo: null,
|
|
createUid: null,
|
|
createTime: null,
|
|
updateUid: null,
|
|
updateTime: null,
|
|
owerDept: null,
|
|
pointLatitudeLongitudeList: null,
|
|
lineLatitudeLongitudeList: null,
|
|
allLatitudeLongitudeList: null,
|
|
projectKinds: '',
|
|
},
|
|
projectTypes: ['建筑', 'IT', '教育', '制造业'], // 可根据实际项目类型进行扩展
|
|
projectKindsOptions: [],
|
|
engineeringGradeOptions: [],
|
|
// 工程用途字典
|
|
engineeringPurposesOptions: [],
|
|
// 建设模式字典
|
|
constructionModeOptions: [],
|
|
// 建设性质字典
|
|
constructionNatureOptions: [],
|
|
isMajorProjectOptions: [],
|
|
operateType: '',
|
|
checkForm: {
|
|
checkPerson: '',
|
|
checkTime: '',
|
|
checkOpinion: ''
|
|
},
|
|
|
|
// 省市区选项属性
|
|
visible: false,
|
|
maskCloseAble: true,
|
|
str: '',
|
|
defaultValue: '420103',
|
|
column: 3,
|
|
};
|
|
},
|
|
|
|
created () {
|
|
this.getDicts("type_of_project").then((response) => {
|
|
this.projectKindsOptions = response.data;
|
|
})
|
|
this.getDicts("engineering_grade").then((response) => {
|
|
this.engineeringGradeOptions = response.data;
|
|
})
|
|
this.getDicts("project_purposes").then((response) => {
|
|
this.engineeringPurposesOptions = response.data;
|
|
})
|
|
this.getDicts("Construction_mode").then((response) => {
|
|
this.constructionModeOptions = response.data;
|
|
})
|
|
this.getDicts("CONSTRUCTION_NATURE").then((response) => {
|
|
this.constructionNatureOptions = response.data;
|
|
})
|
|
this.getDicts("whether").then((response) => {
|
|
this.isMajorProjectOptions = response.data;
|
|
})
|
|
},
|
|
|
|
mounted() {
|
|
// 在这里进行组件初始化的操作
|
|
this.operateType = this.$route.query.operateType
|
|
// uni.setNavigationBarTitle({
|
|
// title: 'xxxjiu'
|
|
// })
|
|
},
|
|
|
|
methods: {
|
|
// 处理选择行政区划的变化
|
|
onRegionChange(e) {
|
|
this.form.region = e.detail.value;
|
|
},
|
|
// 提交表单
|
|
submitForm() {
|
|
// 在这里处理表单提交的逻辑
|
|
console.log("提交的表单数据:", this.form);
|
|
// 你可以进行数据校验,提交到后端等操作
|
|
},
|
|
// 展开省市区选项
|
|
handleOpenSelect() {
|
|
this.visible = true
|
|
},
|
|
cancel () {
|
|
this.visible = false
|
|
},
|
|
confirm (val) {
|
|
console.log(val)
|
|
this.str = JSON.stringify(val)
|
|
this.form.area = val.name
|
|
this.visible = false
|
|
},
|
|
|
|
// 判断必填项是否填写
|
|
judgeAttrWrite() {
|
|
// const requiredFields = ['projectName', 'adcd', 'proCode', 'projectKinds', 'projectLegalPerson', 'projectSuperintendent', 'projectLegalPhone', 'projectUnitLegal', 'projectUnitLegalPhone', 'projectType', 'engineeringGrade', 'engineeringPurposes', 'constructionAddress', 'constructionMode', 'constructionContent', 'centralArrangedFunds', 'centralArrangedFundsRate', 'provincialFunding', 'provincialFundingRate', 'cityLevelFunds', 'cityLevelFundsRate', 'countyLevelFunds', 'cityLevelFundsRate', 'townshipInvestments', 'townshipInvestmentsRate', 'isMajorProject'];
|
|
// const isValid = requiredFields.every(field => Boolean(this.myObject[field]));
|
|
|
|
// if (!isValid) {
|
|
// return false
|
|
// } else {
|
|
// return true
|
|
// }
|
|
},
|
|
|
|
// 新增项目
|
|
handleSaveProject() {
|
|
// if (!this.judgeAttrWrite()) {
|
|
// return
|
|
// }
|
|
// uni.showLoading({
|
|
// title: '加载中...',
|
|
// mask: true
|
|
// })
|
|
// projectAddApi(this.form).then(res => {
|
|
// uni.showToast({
|
|
// title: `操作成功`,
|
|
// icon: 'none'
|
|
// })
|
|
// uni.navigateTo({
|
|
// url: `/pages/project/list`
|
|
// });
|
|
// })
|
|
// 通过ref调用子组件的方法
|
|
this.$refs.projectAdd.handleProjectAdd();
|
|
},
|
|
handleSaveProjectDraft() {
|
|
uni.showToast({
|
|
title: `新增项目草稿成功`,
|
|
icon: 'none'
|
|
});
|
|
console.log(this.form)
|
|
},
|
|
handleSubmitCheck() {
|
|
uni.showToast({
|
|
title: `提交审核成功`,
|
|
icon: 'none'
|
|
});
|
|
},
|
|
handleCancelCheck() {
|
|
uni.navigateBack()
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.project-add {
|
|
padding: 16px 20px 96px 20px;
|
|
.form-card {
|
|
margin-bottom: 0;
|
|
}
|
|
// .form-card {
|
|
// background-color: white;
|
|
// padding: 20px;
|
|
// border-radius: 10px;
|
|
// box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
// .form-title {
|
|
// font-size: 18px;
|
|
// padding-bottom: 16px;
|
|
// }
|
|
// .form-item {
|
|
// .form-label {
|
|
// font-size: 14px;
|
|
// color: #595959;
|
|
// margin-bottom: 6px;
|
|
// display: block;
|
|
// }
|
|
// margin-bottom: 20px;
|
|
// .form-content {
|
|
// position: relative;
|
|
// padding-bottom: 16px;
|
|
// border-bottom: 1px solid #f0f0f0;
|
|
// .form-input {
|
|
// width: 100%;
|
|
// height: 30px;
|
|
// border-radius: 5px;
|
|
// font-size: 14px;
|
|
// color: #333;
|
|
// }
|
|
// .form-select {
|
|
// position: absolute;
|
|
// bottom: 4px;
|
|
// right: 0;
|
|
// color: #00B39D;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
|