Browse Source

新增项目负责人字段和修改项目负责人

master
zhouhaibin 5 days ago
parent
commit
df12b2e53a
  1. 190
      src/views/projectLib/projectInfo/modifyfieldInfo.vue
  2. 20
      src/views/projectLib/projectInfo/projectInfo.data.ts

190
src/views/projectLib/projectInfo/modifyfieldInfo.vue

@ -1,13 +1,26 @@
<template> <template>
<ProjectDetails :isEdit="false" :projectid="projectid" /> <ProjectDetails :isEdit="false" :projectid="projectid" />
<el-divider content-position="left">项目信息变更字段</el-divider> <el-divider content-position="left">项目信息变更字段</el-divider>
选择变更字段<a-select v-model:value="selectValue" style="width: 30%" placeholder="选择变更字段" :options="options" 选择变更字段<a-select
@change="changeOptions" /> v-model:value="selectValue"
style="width: 30%"
placeholder="选择变更字段"
:options="options"
@change="changeOptions"
/>
<div v-if="showupload"> <div v-if="showupload">
<el-divider content-position="left">上传文件</el-divider> <el-divider content-position="left">上传文件</el-divider>
<el-form-item label="上传文件:"> <el-form-item label="上传文件:">
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" <el-upload
:on-exceed="handleExceed" :limit="1" :on-remove="removeFile"> class="upload-demo"
ref="upload"
action
:http-request="httpRequest"
:before-upload="beforeUpload"
:on-exceed="handleExceed"
:limit="1"
:on-remove="removeFile"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip">文件大小且不超过500M</div> <div slot="tip" class="el-upload__tip">文件大小且不超过500M</div>
</el-upload> </el-upload>
@ -15,34 +28,40 @@
</div> </div>
<el-divider content-position="left">字段新值</el-divider> <el-divider content-position="left">字段新值</el-divider>
<BasicForm @register="registerchangeFieldForm" @submit="handleSubmit" /> <BasicForm @register="registerchangeFieldForm" @submit="handleSubmit" />
</template> </template>
<script lang="ts" name="Detailpage" setup> <script lang="ts" name="Detailpage" setup>
import { defineProps, onMounted, ref, reactive } from 'vue' import { defineProps, onMounted, ref, reactive } from 'vue';
import {} from './projectInfo.data'; import {} from './projectInfo.data';
import { getChangeFieldManageDict, submitFieldchange, getRemainingMoneyinfo, queryProjectInfoById } from './projectInfo.api' import {
import ProjectDetails from "../../ProcessApprovalSubPage/component/ProjectDetails.vue" getChangeFieldManageDict,
submitFieldchange,
getRemainingMoneyinfo,
queryProjectInfoById,
} from './projectInfo.api';
import ProjectDetails from '../../ProcessApprovalSubPage/component/ProjectDetails.vue';
import { useForm, BasicForm } from '@/components/Form'; import { useForm, BasicForm } from '@/components/Form';
import { formSchemas } from './projectInfo.data'; import { formSchemas } from './projectInfo.data';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { cloneDeep } from 'lodash-es'; import { cloneDeep } from 'lodash-es';
import { FormSchema } from '@/components/Form'; import { FormSchema } from '@/components/Form';
let dataTo = defineProps(["projectid", "stage", "IsModify", "fatherid"]) let dataTo = defineProps(['projectid', 'stage', 'IsModify', 'fatherid']);
let emit = defineEmits(["close"]) let emit = defineEmits(['close']);
console.log("dataTo11111", dataTo) console.log('dataTo11111', dataTo);
let selectValue = ref() let selectValue = ref();
let options = ref() let options = ref();
let showupload = ref(false) let showupload = ref(false);
let fileList = reactive<Array<any>>([]); let fileList = reactive<Array<any>>([]);
let showFormSchema: FormSchema[] = [] let showFormSchema: FormSchema[] = [];
onMounted(async () => { onMounted(async () => {
options.value = await getChangeFieldManageDict() options.value = await getChangeFieldManageDict();
}) });
// //
const [registerchangeFieldForm, { getFieldsValue, validate, setFieldsValue, resetSchema, appendSchemaByField }] = useForm({ const [
registerchangeFieldForm,
{ getFieldsValue, validate, setFieldsValue, resetSchema, appendSchemaByField },
] = useForm({
resetButtonOptions: { text: '取消' }, resetButtonOptions: { text: '取消' },
submitButtonOptions: { text: '提交' }, submitButtonOptions: { text: '提交' },
@ -53,28 +72,27 @@ const [registerchangeFieldForm, { getFieldsValue, validate, setFieldsValue, rese
labelCol: { style: { width: '120px' } }, labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } }, wrapperCol: { style: { width: 'auto' } },
// disabled:true // disabled:true
}) });
function httpRequest(option) { function httpRequest(option) {
fileList.push(option) fileList.push(option);
} }
function removeFile(option) { function removeFile(option) {
for (let i = 0; i < fileList.length; i++) { for (let i = 0; i < fileList.length; i++) {
if (fileList[i].file.name == option.name) { if (fileList[i].file.name == option.name) {
fileList.splice(i, 1) fileList.splice(i, 1);
} }
} }
console.log(fileList, option) console.log(fileList, option);
} }
// //
function beforeUpload(file) { function beforeUpload(file) {
let fileSize = file.size let fileSize = file.size;
const FIVE_M = 500 * 1024 * 1024; const FIVE_M = 500 * 1024 * 1024;
//5M //5M
if (fileSize > FIVE_M) { if (fileSize > FIVE_M) {
message.error("最大上传500M") message.error('最大上传500M');
return false return false;
} }
//xlsx //xlsx
// let fileName = file.name // let fileName = file.name
@ -83,106 +101,116 @@ function beforeUpload(file) {
// ElMessage.error("xlsx!") // ElMessage.error("xlsx!")
// return false // return false
// } // }
return true return true;
} }
// //
function handleExceed() { function handleExceed() {
message.warning("最多只能上传一个文件") message.warning('最多只能上传一个文件');
} }
async function handleSubmit(record) { async function handleSubmit(record) {
const params = new FormData() const params = new FormData();
// paramsData // paramsData
if (fileList.length > 0) { if (fileList.length > 0) {
fileList.forEach((x) => { fileList.forEach((x) => {
console.log("xxxxxxxxxx", x, x.file) console.log('xxxxxxxxxx', x, x.file);
params.append('file', x.file) params.append('file', x.file);
}); });
} }
params.append("id", dataTo.projectid) params.append('id', dataTo.projectid);
params.append("fieldValue", selectValue.value) params.append('fieldValue', selectValue.value);
if (await validate) { if (await validate) {
let newValue = await getFieldsValue() let newValue = await getFieldsValue();
Object.keys(newValue).forEach(key => { Object.keys(newValue).forEach((key) => {
// //
if (selectValue.value == "Money" && key.includes("Money")) { if (selectValue.value == 'Money' && key.includes('Money')) {
params.append(key, newValue[key]) params.append(key, newValue[key]);
} else { } else {
// //
if (key == selectValue.value) { if (key == selectValue.value) {
params.append(key, newValue[key]) params.append(key, newValue[key]);
} }
} }
}) });
console.log("params", params) console.log('params', params);
await submitFieldchange(params) await submitFieldchange(params);
emit("close") emit('close');
} }
} }
async function customResetFunc() { async function customResetFunc() {
emit("close") emit('close');
} }
async function changeOptions(value, option) { async function changeOptions(value, option) {
let formSchemasTemp = cloneDeep(formSchemas) let formSchemasTemp = cloneDeep(formSchemas);
// //
if (dataTo.fatherid) { if (dataTo.fatherid) {
let subres = await getRemainingMoneyinfo({ let subres = await getRemainingMoneyinfo({
projectId: dataTo.fatherid, //id projectId: dataTo.fatherid, //id
id: dataTo.projectid//id id: dataTo.projectid, //id
});
}) if (value == 'Money') {
if (value == "Money") {
// //
let moenyform = formSchemasTemp.filter(item => item.field.includes("Money")) let moenyform = formSchemasTemp.filter((item) => item.field.includes('Money'));
moenyform.forEach(item => { moenyform.forEach((item) => {
item.componentProps["max"] = subres[item.field] item.componentProps['max'] = subres[item.field];
showFormSchema.push(item) showFormSchema.push(item);
}) });
resetSchema(moenyform) resetSchema(moenyform);
queryProjectInfoById({ queryProjectInfoById({
projectid: dataTo.projectid projectid: dataTo.projectid,
}).then(res => { }).then((res) => {
setFieldsValue(res) setFieldsValue(res);
}) });
} else { } else {
formSchemasTemp.forEach(item => { formSchemasTemp.forEach((item) => {
if (item.field == value) { if (item.field == value) {
item.dynamicDisabled = false item.dynamicDisabled = false;
resetSchema(item) resetSchema(item);
} }
}) });
} }
// //
} else { } else {
// //
if (value == "Money") { if (value == 'Money') {
let moenyform = formSchemasTemp.filter(item => item.field.includes("Money")) let moenyform = formSchemasTemp.filter((item) => item.field.includes('Money'));
resetSchema(moenyform) resetSchema(moenyform);
queryProjectInfoById({ queryProjectInfoById({
projectid: dataTo.projectid projectid: dataTo.projectid,
}).then(res => { }).then((res) => {
setFieldsValue(res) setFieldsValue(res);
}) });
} else if (value == 'manager') {
let tempitem = [] as any;
formSchemasTemp.forEach((item) => {
if (item.field == value) {
item.dynamicDisabled = false;
tempitem.push(item);
}
if (item.field == 'managerPhone') {
item.dynamicDisabled = false;
tempitem.push(item);
}
});
resetSchema(tempitem);
} else { } else {
formSchemasTemp.forEach(item => { formSchemasTemp.forEach((item) => {
if (item.field == value) { if (item.field == value) {
item.dynamicDisabled = false item.dynamicDisabled = false;
resetSchema(item) resetSchema(item);
} }
}) });
} }
} }
if (option.upload == "1") { if (option.upload == '1') {
showupload.value = true showupload.value = true;
} else { } else {
showupload.value = false showupload.value = false;
fileList.pop() fileList.pop();
} }
selectValue.value selectValue.value;
} }
</script> </script>
<style></style> <style></style>

20
src/views/projectLib/projectInfo/projectInfo.data.ts

@ -544,6 +544,26 @@ export const formSchemas: FormSchema[] = [
colProps: { span: 12 }, colProps: { span: 12 },
dynamicDisabled: true, dynamicDisabled: true,
}, },
{
//标题名称
label: '项目负责人',
//字段
field: 'manager',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '负责人联系电话',
//字段
field: 'managerPhone',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{ {
//标题名称 //标题名称
label: '信息化工作专班', label: '信息化工作专班',

Loading…
Cancel
Save