|
@@ -9,12 +9,13 @@
|
|
|
<span class="basic-title-text">项目信息</span>
|
|
<span class="basic-title-text">项目信息</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="basic-title-right">
|
|
<div class="basic-title-right">
|
|
|
|
|
+ <a-button type="primary" @click="reset">重置</a-button>
|
|
|
<a-button type="primary" @click="submit">提交</a-button>
|
|
<a-button type="primary" @click="submit">提交</a-button>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="steps-content">
|
|
<div class="steps-content">
|
|
|
<a-row :gutter="16" class="smart-query-form-row">
|
|
<a-row :gutter="16" class="smart-query-form-row">
|
|
|
- <a-col :span="8">
|
|
|
|
|
|
|
+ <a-col :span="16">
|
|
|
<a-form-item label="项目名称" name="deliveryName" class="smart-query-form-item">
|
|
<a-form-item label="项目名称" name="deliveryName" class="smart-query-form-item">
|
|
|
<a-input v-model:value="formModel.deliveryName" placeholder="请输入项目名称" />
|
|
<a-input v-model:value="formModel.deliveryName" placeholder="请输入项目名称" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
@@ -24,91 +25,66 @@
|
|
|
<DictSelect key-code="MATE_DELIVERY_TYPE" v-model:value="formModel.deliveryType" placeholder="请选择项目类型" width="100%" />
|
|
<DictSelect key-code="MATE_DELIVERY_TYPE" v-model:value="formModel.deliveryType" placeholder="请选择项目类型" width="100%" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-col>
|
|
</a-col>
|
|
|
- <a-col :span="8">
|
|
|
|
|
- <a-form-item label="项目类别" name="deliveryType" class="smart-query-form-item">
|
|
|
|
|
- <DictSelect key-code="MATE_DELIVERY_TYPE" v-model:value="formModel.deliveryType" placeholder="请选择项目类型" width="100%" />
|
|
|
|
|
- </a-form-item>
|
|
|
|
|
- </a-col>
|
|
|
|
|
</a-row>
|
|
</a-row>
|
|
|
<a-row :gutter="16" class="smart-query-form-row">
|
|
<a-row :gutter="16" class="smart-query-form-row">
|
|
|
<a-col :span="8">
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="项目状态" name="customerType" class="smart-query-form-item">
|
|
|
|
|
- <DictSelect key-code="MATE_CUSTOMER_TYPE" v-model:value="formModel.customerType" placeholder="请选择项目状态" width="100%" />
|
|
|
|
|
- </a-form-item>
|
|
|
|
|
- </a-col>
|
|
|
|
|
- <a-col :span="8">
|
|
|
|
|
- <a-form-item label="客户名称" name="customerName" class="smart-query-form-item">
|
|
|
|
|
- <a-input v-model:value="formModel.customerName" placeholder="请输入客户名称" />
|
|
|
|
|
- </a-form-item>
|
|
|
|
|
- </a-col>
|
|
|
|
|
- <a-col :span="8">
|
|
|
|
|
- <a-form-item label="服务客户" name="deliveryType" class="smart-query-form-item">
|
|
|
|
|
- <DictSelect key-code="MATE_DELIVERY_TYPE" v-model:value="formModel.deliveryType" placeholder="请选择项目类型" width="100%" />
|
|
|
|
|
|
|
+ <a-form-item label="项目状态" name="deliveryStatus" class="smart-query-form-item">
|
|
|
|
|
+ <DictSelect key-code="MATE_DELIVERY_STATUS" v-model:value="formModel.deliveryStatus" placeholder="请选择项目状态" width="100%" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-col>
|
|
</a-col>
|
|
|
- </a-row>
|
|
|
|
|
- <a-row :gutter="16" class="smart-query-form-row">
|
|
|
|
|
<a-col :span="8">
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="客户经理" name="deliveryCharge1" class="smart-query-form-item">
|
|
|
|
|
|
|
+ <a-form-item label="交付经理" name="deliveryCharge1" class="smart-query-form-item">
|
|
|
<a-input
|
|
<a-input
|
|
|
v-model:value="formModel.deliveryCharge1"
|
|
v-model:value="formModel.deliveryCharge1"
|
|
|
placeholder="请选择岗位人员"
|
|
placeholder="请选择岗位人员"
|
|
|
- @click="showSelectUser('deliveryManager')"
|
|
|
|
|
- allowClear
|
|
|
|
|
|
|
+ @click="showSelectUser('deliveryManager', index)"
|
|
|
|
|
+ readonly
|
|
|
|
|
+ />
|
|
|
|
|
+ <EmployeeTableSelectModal
|
|
|
|
|
+ ref="selectDeliveryManagerRef"
|
|
|
|
|
+ type="radio"
|
|
|
|
|
+ @selectDataList="selectedUser('deliveryManager', index, $event)"
|
|
|
/>
|
|
/>
|
|
|
- <EmployeeTableSelectModal ref="selectDeliveryManagerRef" type="radio" @selectDataList="selectedUser('deliveryManager', $event)" />
|
|
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-col>
|
|
</a-col>
|
|
|
<a-col :span="8">
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="项目经理" name="marketManagerCode" class="smart-query-form-item">
|
|
|
|
|
|
|
+ <a-form-item label="营销经理" name="marketManagerCode" class="smart-query-form-item">
|
|
|
<a-input
|
|
<a-input
|
|
|
v-model:value="formModel.marketManagerCode"
|
|
v-model:value="formModel.marketManagerCode"
|
|
|
placeholder="请选择岗位人员"
|
|
placeholder="请选择岗位人员"
|
|
|
- @click="showSelectUser('marketManager')"
|
|
|
|
|
- allowClear
|
|
|
|
|
|
|
+ @click="showSelectMarketManager('marketManager', index)"
|
|
|
|
|
+ readonly
|
|
|
/>
|
|
/>
|
|
|
- <EmployeeTableSelectModal ref="selectMarketManagerRef" type="radio" @selectDataList="selectedUser('marketManager', $event)" />
|
|
|
|
|
- </a-form-item>
|
|
|
|
|
- </a-col>
|
|
|
|
|
- <a-col :span="8">
|
|
|
|
|
- <a-form-item label="产品经理" name="productManagerCode" class="smart-query-form-item">
|
|
|
|
|
- <a-input
|
|
|
|
|
- v-model:value="formModel.productManagerCode"
|
|
|
|
|
- placeholder="请选择岗位人员"
|
|
|
|
|
- @click="showSelectUser('productManager')"
|
|
|
|
|
- allowClear
|
|
|
|
|
|
|
+ <EmployeeTableSelectModal
|
|
|
|
|
+ ref="selectMarketManagerRef"
|
|
|
|
|
+ type="radio"
|
|
|
|
|
+ @selectDataList="selectedMarketManager('marketManager', index, $event)"
|
|
|
/>
|
|
/>
|
|
|
- <EmployeeTableSelectModal ref="selectProductManagerRef" @selectDataList="selectedUser('productManager', $event)" />
|
|
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-col>
|
|
</a-col>
|
|
|
</a-row>
|
|
</a-row>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <div class="basic-title">
|
|
|
|
|
+ <div class="basic-title-left">
|
|
|
|
|
+ <div class="basic-title-line"></div>
|
|
|
|
|
+ <span class="basic-title-text">客户信息</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="basic-title-right">
|
|
|
|
|
+ <!-- <a-button type="primary">提交</a-button> -->
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="steps-content">
|
|
|
<a-row :gutter="16" class="smart-query-form-row">
|
|
<a-row :gutter="16" class="smart-query-form-row">
|
|
|
<a-col :span="8">
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="前端开发" name="frontendDeveloper" class="smart-query-form-item">
|
|
|
|
|
- <a-input
|
|
|
|
|
- v-model:value="formModel.frontendDeveloper"
|
|
|
|
|
- placeholder="请选择岗位人员"
|
|
|
|
|
- @click="showSelectUser('frontendDeveloper')"
|
|
|
|
|
- allowClear
|
|
|
|
|
- />
|
|
|
|
|
- <EmployeeTableSelectModal ref="selectFrontendDeveloperRef" @selectDataList="selectedUser('frontendDeveloper', $event)" />
|
|
|
|
|
- </a-form-item>
|
|
|
|
|
- </a-col>
|
|
|
|
|
- <a-col :span="8">
|
|
|
|
|
- <a-form-item label="后端开发" name="backendDeveloper" class="smart-query-form-item">
|
|
|
|
|
- <a-input
|
|
|
|
|
- v-model:value="formModel.backendDeveloper"
|
|
|
|
|
- placeholder="请选择岗位人员"
|
|
|
|
|
- @click="showSelectUser('backendDeveloper')"
|
|
|
|
|
- allowClear
|
|
|
|
|
- />
|
|
|
|
|
- <EmployeeTableSelectModal ref="selectBackendDeveloperRef" @selectDataList="selectedUser('backendDeveloper', $event)" />
|
|
|
|
|
|
|
+ <a-form-item label="客户名称" name="customerName" class="smart-query-form-item">
|
|
|
|
|
+ <a-input v-model:value="formModel.customerName" placeholder="请输入客户名称" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-col>
|
|
</a-col>
|
|
|
<a-col :span="8">
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="测试" name="tester" class="smart-query-form-item">
|
|
|
|
|
- <a-input v-model:value="formModel.tester" placeholder="请选择岗位人员" @click="showSelectUser('tester')" allowClear />
|
|
|
|
|
- <EmployeeTableSelectModal ref="selectTesterRef" @selectDataList="selectedUser('tester', $event)" />
|
|
|
|
|
|
|
+ <a-form-item label="客户类型" name="customerType" class="smart-query-form-item">
|
|
|
|
|
+ <DictSelect key-code="MATE_CUSTOMER_TYPE" v-model:value="formModel.customerType" placeholder="请选择项目状态" width="100%" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-col>
|
|
</a-col>
|
|
|
</a-row>
|
|
</a-row>
|
|
@@ -153,7 +129,6 @@
|
|
|
</a-form>
|
|
</a-form>
|
|
|
</a-card>
|
|
</a-card>
|
|
|
</template>
|
|
</template>
|
|
|
-
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { onMounted, reactive, ref, useAttrs } from 'vue';
|
|
import { onMounted, reactive, ref, useAttrs } from 'vue';
|
|
|
import { useRouter } from 'vue-router';
|
|
import { useRouter } from 'vue-router';
|
|
@@ -168,44 +143,35 @@
|
|
|
const stepFormRef = ref(null);
|
|
const stepFormRef = ref(null);
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
|
|
|
|
|
- // 数据
|
|
|
|
|
|
|
+ // --------------------- 数据 ---------------------
|
|
|
const formModel = reactive({
|
|
const formModel = reactive({
|
|
|
- deliveryName: undefined, // 项目名称
|
|
|
|
|
- deliveryType: undefined, // 项目类型
|
|
|
|
|
- deliveryStatus: undefined, // 项目状态
|
|
|
|
|
- deliveryCharge: undefined, // 项目负责人
|
|
|
|
|
- deliveryCharge1: undefined, // 客户经理显示的字符串
|
|
|
|
|
- deliveryCharge1List: [], // 客户经理选中的用户列表
|
|
|
|
|
- marketManager: undefined, // 营销经理
|
|
|
|
|
|
|
+ deliveryName: undefined, //项目名称
|
|
|
|
|
+ deliveryType: undefined, //项目类型
|
|
|
|
|
+ deliveryStatus: undefined, //项目状态
|
|
|
|
|
+ deliveryCharge: undefined, //项目负责人
|
|
|
|
|
+ deliveryCharge1: undefined,
|
|
|
|
|
+ marketManager: undefined, //营销经理
|
|
|
marketManagerCode: undefined,
|
|
marketManagerCode: undefined,
|
|
|
- productManager: undefined, // 产品经理
|
|
|
|
|
- productManagerCode: undefined,
|
|
|
|
|
- customerName: undefined, // 客户名称
|
|
|
|
|
- customerType: undefined, // 客户类型
|
|
|
|
|
- remark: undefined, // 备注信息
|
|
|
|
|
- attachment: undefined, // 附件集合
|
|
|
|
|
- frontendDeveloper: undefined, // 前端开发
|
|
|
|
|
- frontendDeveloperList: [],
|
|
|
|
|
- backendDeveloper: undefined, // 后端开发
|
|
|
|
|
- backendDeveloperList: [],
|
|
|
|
|
- tester: undefined, // 测试
|
|
|
|
|
- testerList: [],
|
|
|
|
|
|
|
+ customerName: undefined, //客户名称
|
|
|
|
|
+ customerType: undefined, //客户类型
|
|
|
|
|
+ remark: undefined, // 备注信息
|
|
|
|
|
+ attachment: undefined, //附件集合
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- // 校验规则
|
|
|
|
|
|
|
+ // --------------------- 校验规则 ---------------------
|
|
|
const formRules = {
|
|
const formRules = {
|
|
|
deliveryName: [{ required: true, message: '请输入项目名称', trigger: 'change' }],
|
|
deliveryName: [{ required: true, message: '请输入项目名称', trigger: 'change' }],
|
|
|
deliveryType: [{ required: true, message: '请选择项目类型', trigger: 'change' }],
|
|
deliveryType: [{ required: true, message: '请选择项目类型', trigger: 'change' }],
|
|
|
deliveryStatus: [{ required: true, message: '请选择项目状态', trigger: 'change' }],
|
|
deliveryStatus: [{ required: true, message: '请选择项目状态', trigger: 'change' }],
|
|
|
- deliveryCharge: [{ required: true, message: '请选择交付经理', trigger: 'change' }],
|
|
|
|
|
- marketManager: [{ required: true, message: '请选择营销经理', trigger: 'change' }],
|
|
|
|
|
|
|
+ deliveryCharge1: [{ required: true, message: '请选择交付经理', trigger: 'change' }],
|
|
|
|
|
+ marketManagerCode: [{ required: true, message: '请选择营销经理', trigger: 'change' }],
|
|
|
customerName: [{ required: true, message: '请输入客户名称', trigger: 'change' }],
|
|
customerName: [{ required: true, message: '请输入客户名称', trigger: 'change' }],
|
|
|
customerType: [{ required: true, message: '请选择客户类型', trigger: 'change' }],
|
|
customerType: [{ required: true, message: '请选择客户类型', trigger: 'change' }],
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const labelCol = { style: { width: '128px' } };
|
|
const labelCol = { style: { width: '128px' } };
|
|
|
|
|
|
|
|
- // 步骤相关
|
|
|
|
|
|
|
+ // ----------------------- 步骤相关 ---------------------------
|
|
|
const query = router.currentRoute.value.query;
|
|
const query = router.currentRoute.value.query;
|
|
|
console.log('query', query);
|
|
console.log('query', query);
|
|
|
|
|
|
|
@@ -247,7 +213,8 @@
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 提交
|
|
|
|
|
|
|
+ //-----------------------------提交\重置---------------------------------
|
|
|
|
|
+
|
|
|
const submit = () => {
|
|
const submit = () => {
|
|
|
console.log('formModel', formModel);
|
|
console.log('formModel', formModel);
|
|
|
stepFormRef.value
|
|
stepFormRef.value
|
|
@@ -276,45 +243,42 @@
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- // 重置
|
|
|
|
|
const reset = () => {
|
|
const reset = () => {
|
|
|
Object.keys(formModel).forEach((key) => {
|
|
Object.keys(formModel).forEach((key) => {
|
|
|
formModel[key] = undefined;
|
|
formModel[key] = undefined;
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- // 人员选择
|
|
|
|
|
|
|
+ //---------------------------人员选择------------------------------
|
|
|
|
|
+
|
|
|
const selectDeliveryManagerRef = ref(null);
|
|
const selectDeliveryManagerRef = ref(null);
|
|
|
const selectMarketManagerRef = ref(null);
|
|
const selectMarketManagerRef = ref(null);
|
|
|
- const selectProductManagerRef = ref(null);
|
|
|
|
|
- const selectFrontendDeveloperRef = ref(null);
|
|
|
|
|
- const selectBackendDeveloperRef = ref(null);
|
|
|
|
|
- const selectTesterRef = ref(null);
|
|
|
|
|
|
|
+ function showSelectMarketManager(type) {
|
|
|
|
|
+ if (type === 'marketManager') {
|
|
|
|
|
+ selectMarketManagerRef.value.showModal();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
function showSelectUser(type) {
|
|
function showSelectUser(type) {
|
|
|
- const refs = {
|
|
|
|
|
- deliveryManager: selectDeliveryManagerRef,
|
|
|
|
|
- marketManager: selectMarketManagerRef,
|
|
|
|
|
- productManager: selectProductManagerRef,
|
|
|
|
|
- frontendDeveloper: selectFrontendDeveloperRef,
|
|
|
|
|
- backendDeveloper: selectBackendDeveloperRef,
|
|
|
|
|
- tester: selectTesterRef,
|
|
|
|
|
- };
|
|
|
|
|
- refs[type].value.showModal();
|
|
|
|
|
|
|
+ if (type === 'deliveryManager') {
|
|
|
|
|
+ selectDeliveryManagerRef.value.showModal();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ function selectedUser(field, index, list) {
|
|
|
|
|
+ if (field === 'deliveryManager') {
|
|
|
|
|
+ formModel.deliveryCharge1 = list[0].actualName;
|
|
|
|
|
+ formModel.deliveryCharge = list[0].loginName;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function selectedUser(type, list) {
|
|
|
|
|
- console.info('Selected users for', type, list);
|
|
|
|
|
- const field = `${type}List`;
|
|
|
|
|
- const displayField = type === 'deliveryManager' ? 'deliveryCharge1' : type;
|
|
|
|
|
- formModel[field] = list.map((item) => ({
|
|
|
|
|
- actualName: item.actualName,
|
|
|
|
|
- loginName: item.loginName,
|
|
|
|
|
- }));
|
|
|
|
|
- formModel[displayField] = list.map((item) => item.actualName).join(', ');
|
|
|
|
|
|
|
+ function selectedMarketManager(field, index, list) {
|
|
|
|
|
+ console.info(1111111111111111111111);
|
|
|
|
|
+ formModel.marketManagerCode = list[0].actualName;
|
|
|
|
|
+ formModel.marketManager = list[0].loginName;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 上传附件
|
|
|
|
|
|
|
+ // ----------------------- 上传附件 ----------------------------
|
|
|
|
|
+ // 已上传的附件列表
|
|
|
const defaultFileList = ref([]);
|
|
const defaultFileList = ref([]);
|
|
|
function changeAttachment(fileList) {
|
|
function changeAttachment(fileList) {
|
|
|
defaultFileList.value = fileList;
|
|
defaultFileList.value = fileList;
|
|
@@ -327,6 +291,7 @@
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
gap: 20px;
|
|
gap: 20px;
|
|
|
|
|
+ // width: 1350px;
|
|
|
margin: 0 auto;
|
|
margin: 0 auto;
|
|
|
|
|
|
|
|
.basic-title {
|
|
.basic-title {
|