feat: 供应商管理系统的功能新增以及BUG修改

This commit is contained in:
kun 2024-04-02 17:53:27 +08:00
parent 64ceaad4db
commit e0f90f7558
12 changed files with 708 additions and 1198 deletions

View File

@ -0,0 +1,22 @@
/**
* api接口统一管理
*/
import {get,post} from '../http'
// 供应商基本信息
export const getSupplierInfoApi = data => post('xmgl/xzSupplier/getXzSupplierByUserId', data);
// 企业类型列表
export const getCompanyTypeApi = data => get('xmgl/xzSupplierType/list', data);
// 信息填报保存
export const infoReportSaveApi = data => post('xmgl/xzSupplier/saveSupplier', data);
// 资质文件
export const getQualificationFileApi = data => post('xmgl/xzSupplierQualification/list', data);
export const addQualificationFileApi = data => post('xmgl/xzSupplierQualification/add', data);
export const editQualificationFileApi = data => post('xmgl/xzSupplierQualification/edit', data);
export const deleteQualificationFileApi = data => post('xmgl/xzSupplierQualification/delete', data);
// 资质申请
export const getQualificationApplyListApi = data => post('xmgl/xzSupplierQualificationApply/page', data);

View File

@ -83,12 +83,12 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL ='http://101.43.164.214:45001/' //上海张江
// axios.defaults.baseURL ='http://101.43.164.214:45011/' //上海优益(上海建工)
// axios.defaults.baseURL = 'http://192.168.34.221:28889/' //郭圣雄本地
// axios.defaults.baseURL ='http://192.168.34.221:9111/' //郭圣雄本地
axios.defaults.baseURL ='http://192.168.34.221:9111/' //郭圣雄本地
// axios.defaults.baseURL = 'http://192.168.34.155:19111/' //彭洁本地
// axios.defaults.baseURL = 'http://182.90.224.237:51234' //郭圣雄远程
// axios.defaults.baseURL ='http://101.43.164.214:45020/' //沈阳和盈
// axios.defaults.baseURL ='http://183.249.224.118:9000/' //嘉兴王江泾公用码头
axios.defaults.baseURL ='http://101.43.164.214:11111/' // 百色三标段项目
// axios.defaults.baseURL ='http://101.43.164.214:11111/' // 百色三标段项目
// axios.defaults.baseURL = 'http://125.88.207.86:8088/'//中建四局线上(最新)地址
// axios.defaults.baseURL = 'http://125.88.207.86:8099/'//中建四局(沙湖)线上(最新)地址
// axios.defaults.baseURL = 'http://jxj.zhgdyun.com:15551/'//测试地址

View File

@ -2814,6 +2814,14 @@ const routes2 = [
"@/views/projectFront/engineerArchives/workingDraw.vue",
], resolve),
},
// 供应商管理系统——承包资质申请
{
path: "/supplier/qualification/apply",
name: "承包资质申请",
component: () =>
import("@/views/supplierAdmin/qualificationApply/index.vue"),
},
],
},
//扫二维码路由
@ -3132,13 +3140,6 @@ const routes2 = [
name: "supplierIndex",
component: () => import("../views/supplierAdmin/supplierIndex.vue"),
},
//承包资质申请
{
path: "/supplier/qualification/apply",
name: "承包资质申请",
component: () =>
import("@/views/supplierAdmin/qualificationApply/index.vue"),
},
// 工作台
{
path: "/workSpace",

View File

@ -46,19 +46,19 @@ export default new Vuex.Store({
PAGESIZRS: [10, 20, 30, 50],
// UPLOADURL:' http://101.43.164.214:11111/upload/image/',// 百色
// FILEURL:' http://101.43.164.214:11111/image/',// 百色
// UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄
// FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄
UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄
FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄
// UPLOADURL:'http://10.0.1.43:6023/upload/image',//测试
// FILEURL:'http://10.0.1.43:6023/image/',//测试
BASEURL: baseUrl
? baseUrl
: window.location.protocol + "//" + window.location.host + "/", //正式环境
UPLOADURL:
window.location.protocol +
"//" +
window.location.host +
"/upload/image", //正式环境
FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
// BASEURL: baseUrl
// ? baseUrl
// : window.location.protocol + "//" + window.location.host + "/", //正式环境
// UPLOADURL:
// window.location.protocol +
// "//" +
// window.location.host +
// "/upload/image", //正式环境
// FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
//---------------------------------------------------------------------------------------------
// BASEURL: baseUrl
// ? baseUrl

View File

@ -7,23 +7,23 @@
:model="searchForm"
ref="searchForm"
>
<el-form-item label="账号" prop="fileName">
<el-form-item label="账号" prop="account">
<el-input
v-model="searchForm.fileName"
v-model="searchForm.account"
:placeholder="$t('message.docManage.placeholder')"
clearable
></el-input>
</el-form-item>
<el-form-item label="企业名称" prop="fileName">
<el-form-item label="企业名称" prop="companyName">
<el-input
v-model="searchForm.fileName"
v-model="searchForm.companyName"
:placeholder="$t('message.docManage.placeholder')"
clearable
></el-input>
</el-form-item>
<el-form-item label="注册时间" prop="fileName">
<el-form-item label="注册时间" prop="timeRange">
<el-date-picker
v-model="searchForm.fileName"
v-model="searchForm.timeRange"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
@ -45,28 +45,27 @@
<div class="table_wrap whiteBlock">
<el-table class="tables" :data="tableData">
<el-table-column
type="index"
width="50"
prop="account"
align="center"
label="账号"
></el-table-column>
<el-table-column
prop="companyName"
prop="pw"
label="密码"
align="center"
></el-table-column>
<el-table-column
prop="createTime"
prop="companyName"
label="企业名称"
align="center"
></el-table-column>
<el-table-column
prop="downloadNum"
prop="email"
label="电子邮箱"
align="center"
></el-table-column>
<el-table-column
prop="downloadNum"
prop="createTime"
label="注册时间"
align="center"
></el-table-column>
@ -190,7 +189,9 @@ export default {
return {
downloadUrl: "",
searchForm: {
fileName: "",
account: "",
companyName: "",
timeRange: []
},
total: 0,
pageNo: 1,
@ -299,10 +300,16 @@ export default {
headquartersSn: this.$store.state.userInfo.headquartersSn,
pageNo:this.pageNo,
pageSize: this.pageSize,
accountType: 2
accountType: 2,
account: this.searchForm.account,
companyName: this.searchForm.companyName
}
if (this.searchForm.timeRange.length > 0) {
requestData.createTime_begin = this.searchForm.timeRange[0];
requestData.createTime_end = this.searchForm.timeRange[1];
}
getUserAuditListApi(requestData).then((res) => {
this.userAuditList = res.result.records;
this.tableData = res.result.records;
this.total = res.result.total;
});
},

View File

@ -934,6 +934,7 @@ export default {
break;
case 5:
case 6:
case 11:
//
this.$store.commit("setMenuList", projectModule);
this.$store.commit("setProjectManageMenuList", projectModule);

View File

@ -740,7 +740,7 @@ export default {
]
},
btnList: [],
moudleTypeArr: ['企业前台', '项目后台', '企业后台', '项目看板', '项目前台'],
moudleTypeArr: ['企业前台', '项目后台', '企业后台', '项目看板', '项目前台','供应商管理'],
searchModuleType: 2,
styleTypeArr: [
'普通项目级版本',

View File

@ -57,19 +57,19 @@
width="200"
prop="jobName"
align="center"
label="序号"
label="资质申请时间"
></el-table-column>
<el-table-column
prop="personName"
label="资质文件名称"
label="审批组织"
align="center"
></el-table-column>
<el-table-column
prop="phone"
label="资质文件编号"
label="审批回复时间"
align="center"
></el-table-column>
<el-table-column label="资质文件" width="80" align="center">
<el-table-column label="审批状态" width="80" align="center">
<!-- <div slot slot-scope="scope">
<img
:preview="
@ -81,11 +81,6 @@
/>
</div> -->
</el-table-column>
<el-table-column
prop="phone"
label="备注"
align="center"
></el-table-column>
<el-table-column
:label="$t('message.deviceManage.operation')"
align="center"
@ -253,7 +248,7 @@
</div>
</template>
<script>
import { getComapnyStatisticsListApi } from "@/assets/js/api/company/project";
import { getQualificationApplyListApi } from "@/assets/js/api/supplier.js";
export default {
name: "temporary",
data() {
@ -285,35 +280,33 @@ export default {
},
created() {
this.projectSn = this.$store.state.projectSn;
this.loadData();
this.getTableList();
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
},
},
props: ["activeName"],
methods: {
getTableList(){
let requestData = {
userId: this.$store.state.userInfo.userId,
pageNo: this.page,
pageSize: this.pageSize
};
getQualificationApplyListApi(requestData).then((res) => {
console.log(res, "资质申请表格");
if (res.result && res.result.records) {
this.tableList = res.result.records;
this.total = res.result.total;
}
});
},
//
showAuditReply() {
this.auditReplyDialog = true;
},
loadData() {
let sn = this.$store.state.userInfo.sn;
let projectType = 1; //
if (this.$store.state.userInfo.addProjectType == 1) {
projectType = 0; //
}
getComapnyStatisticsListApi({
sn: sn,
projectType: projectType,
}).then((res) => {
console.log(res,'111222333')
this.level1CompanyData = res.result.companyList
? res.result.companyList
: res.result.projectList;
});
console.log(this.level1CompanyData,'111222333');
},
filterNode(value, data) {
if (!value) return true;
return data.name.indexOf(value) !== -1;
@ -364,7 +357,7 @@ export default {
},
//
handleSizeChange(value) {
// this.pageSize = value;
this.pageSize = value;
},
handleCurrentChange(value) {
this.page = value;

View File

@ -2,67 +2,83 @@
<!-- 项目信息页面 -->
<div class="main-content whiteBlock">
<div class="btn_wrap">
<el-button
type="primary"
size="medium"
@click="addProjectDialog = true"
>{{ $t("message.companyDiagram.Table.newAdd") }}</el-button
<el-button type="primary" size="medium" @click="openInfoDialog"
>基本信息填报</el-button
>
</div>
<div class="custom_tab">
<div class="flex4">
<div class="type_content" style="z-index: 2">
<div class="flex3">
<span class="width_35">{{
<!-- <span class="width_35">{{
$t("message.qualificationApply.companyName")
}}</span>
<span class="width_65">坤之企业</span>
}}</span> -->
<span class="width_35">企业名称</span>
<span class="width_65">{{ supplierDetail.enterpriseName }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">企业类型</span>
<span class="width_65 bg_color">企业分包</span>
<span class="width_65 bg_color">{{
supplierDetail.companyTypeName
}}</span>
</div>
<div class="flex3">
<span class="width_35">开户行</span>
<span class="width_65">123</span>
<span class="width_65">{{ supplierDetail.bankname }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">注册人申请电话</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.registerPersonPhoneTel
}}</span>
</div>
<div class="flex3">
<span class="width_35">法人电话</span>
<span class="width_65">123456</span>
<span class="width_65">{{ supplierDetail.legalPersonTel }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">营业执照截止日期</span>
<span class="width_65 bg_color">2024-03-05</span>
<span class="width_65 bg_color">{{
supplierDetail.businessLicenseEndDate
}}</span>
</div>
<div class="flex3">
<span class="width_35">企业邮箱</span>
<span class="width_65">123@qq.com</span>
<span class="width_65">{{ supplierDetail.enterpriseEmail }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">劳资证书号</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.qualificationNumber
}}</span>
</div>
<div class="flex3">
<span class="width_35">单位性质</span>
<span class="width_65" style="white-space: nowrap">国有企业</span>
<span class="width_65" style="white-space: nowrap">{{
supplierDetail.enterpriseProperty == 1
? "国有企业"
: supplierDetail.enterpriseProperty == 2
? "三资企业"
: supplierDetail.enterpriseProperty == 3
? "集体企业"
: supplierDetail.enterpriseProperty == 4
? "私营企业"
: ""
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">项目负责人</span>
<span class="width_65 bg_color">叶起中</span>
<span class="width_65 bg_color">{{
supplierDetail.projectDirectorName
}}</span>
</div>
</div>
<div class="type_content">
<div class="flex3">
<span class="width_35 border_l">{{
$t("message.qualificationApply.qualificationImg")
}}</span>
<span class="width_35 border_l">资质图片</span>
<span class="width_65"
><img
:src="projectDetail.layoutImage"
:src="supplierDetail.enterpriseQualificationUrl"
style="
width: 40px;
height: 40px;
@ -71,45 +87,68 @@
"
@click="
bigImageDialog = true;
bigImageUrl = projectDetail.layoutImage;
bigImageUrl = supplierDetail.enterpriseQualificationUrl;
"
/></span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">法定代表人</span>
<span class="width_65 bg_color">小坤坤</span>
<span class="width_65 bg_color">{{
supplierDetail.enterpriseLegalPerson
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">统一社会信用代码</span>
<span class="width_65">111222333</span>
<span class="width_65">{{ supplierDetail.socialCode }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">注册资金(万元)</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.registeredCapital
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">银行账号</span>
<span class="width_65">123</span>
<span class="width_65">{{ supplierDetail.bankcardnumber }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">营业执照注册号</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.businessNumber
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">企业地址</span>
<span class="width_65">123 </span>
<span class="width_65">{{ supplierDetail.enterpriseAddress }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">安全生产许可证</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.enterpriseSafeAllow
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">logo</span>
<span class="width_65">123</span>
<span class="width_65"
><img
:src="supplierDetail.logo"
style="
width: 40px;
height: 40px;
margin-top: 2px;
cursor: pointer;
"
@click="
bigImageDialog = true;
bigImageUrl = supplierDetail.logo;
"
/></span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">项目负责人电话</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.projectDirectorPhone
}}</span>
</div>
</div>
</div>
@ -118,8 +157,8 @@
<!-- 基本信息弹框 -->
<el-dialog
class="projectDialog"
:title="projectDialogTitle"
:visible.sync="addProjectDialog"
:title="infoDialogTitle"
:visible.sync="addInfoDialog"
width="1100px"
:modal-append-to-body="false"
:close-on-click-modal="false"
@ -127,140 +166,143 @@
<div class="dialog_content">
<el-form
size="medium"
:model="addProjectForm"
ref="addProjectForm"
:rules="addProjectFormRules"
label-width="130px"
:model="addInfoForm"
ref="addInfoForm"
:rules="addInfoFormRules"
label-width="150px"
class="dialogFormBox big"
:inline="true"
>
<el-form-item label="企业名称" prop="projectName">
<el-form-item label="项目负责人" prop="projectDirectorName">
<el-input
v-model="addProjectForm.projectName"
v-model="addInfoForm.projectDirectorName"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="法定代表人" prop="projectName">
<el-form-item label="项目负责人电话" prop="projectDirectorPhone">
<el-input
v-model="addProjectForm.projectName"
v-model="addInfoForm.projectDirectorPhone"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="企业类型" prop="projectType">
<el-form-item label="企业名称" prop="enterpriseName">
<el-input
v-model="addInfoForm.enterpriseName"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="法定代表人" prop="enterpriseLegalPerson">
<el-input
v-model="addInfoForm.enterpriseLegalPerson"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="企业类型" prop="xzSupplierTypeId">
<el-select
v-model="addProjectForm.projectType"
v-model="addInfoForm.xzSupplierTypeId"
:placeholder="$t('message.companyDiagram.PleaseSelect')"
>
<el-option
v-for="item in $t('message.companyDiagram.PROJECTTYPE')"
v-for="item in companyTypeList"
:key="item.id"
:label="item.name"
:label="item.companyTypeName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="统一社会信用代码" prop="saleAcreage">
<el-form-item label="统一社会信用代码" prop="socialCode">
<el-input
v-model="addProjectForm.saleAcreage"
v-model="addInfoForm.socialCode"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
type="number"
></el-input>
</el-form-item>
<el-form-item label="开户行" prop="households">
<el-form-item label="开户行" prop="bankname">
<el-input
v-model.number="addProjectForm.households"
v-model.number="addInfoForm.bankname"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="注册资金(万元)" prop="registeredCapital">
<el-input
v-model.number="addInfoForm.registeredCapital"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="注册资金(万元)" prop="buildingNum">
<el-form-item label="注册人申请电话" prop="registerPersonPhoneTel">
<el-input
v-model.number="addProjectForm.buildingNum"
v-model.number="addInfoForm.registerPersonPhoneTel"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="注册人申请电话" prop="buildingNum">
<el-form-item label="银行账号" prop="bankcardnumber">
<el-input
v-model.number="addProjectForm.buildingNum"
v-model.number="addInfoForm.bankcardnumber"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="银行账号" prop="buildingNum">
<el-form-item label="法人电话" prop="legalPersonTel">
<el-input
v-model.number="addProjectForm.buildingNum"
v-model.number="addInfoForm.legalPersonTel"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="法人电话" prop="buildingNum">
<el-form-item label="营业执照注册号" prop="businessNumber">
<el-input
v-model.number="addProjectForm.buildingNum"
v-model.number="addInfoForm.businessNumber"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="营业执照注销号" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="营业执照截止日期" prop="buildingNum">
<el-form-item label="营业执照截止日期" prop="businessLicenseEndDate">
<el-date-picker
v-model="addInfoForm.businessLicenseEndDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="企业地址" prop="buildingNum">
<el-form-item label="企业地址" prop="enterpriseAddress">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
v-model.number="addInfoForm.enterpriseAddress"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="企业邮箱" prop="buildingNum">
<el-form-item label="企业邮箱" prop="enterpriseEmail">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
v-model.number="addInfoForm.enterpriseEmail"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="安全生产许可证" prop="buildingNum">
<el-form-item label="安全生产许可证" prop="enterpriseSafeAllow">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
v-model.number="addInfoForm.enterpriseSafeAllow"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="劳资证书号" prop="buildingNum">
<el-form-item label="劳资证书号" prop="qualificationNumber">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
v-model.number="addInfoForm.qualificationNumber"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="单位性质" prop="projectType">
<el-form-item label="单位性质" prop="enterpriseProperty">
<el-select
v-model="addProjectForm.projectType"
v-model="addInfoForm.enterpriseProperty"
:placeholder="$t('message.companyDiagram.PleaseSelect')"
>
<el-option
v-for="item in $t('message.companyDiagram.PROJECTTYPE')"
v-for="item in unitType"
:key="item.id"
:label="item.name"
:value="item.id"
@ -269,10 +311,8 @@
</el-form-item>
<br />
<el-form-item
:label="
$t('message.companyDiagram.dialog_ProjectPop_up.layoutImage')
"
prop="layoutImage"
label="资质照片"
prop="enterpriseQualificationUrl"
>
<div style="width: 280px">
<el-upload
@ -283,11 +323,11 @@
:on-success="(file) => handleUploadSuccess(file, 1)"
name="files"
>
<div v-if="addProjectForm.layoutImage" class="imgBox">
<img :src="addProjectForm.layoutImage" class="avatar" />
<div v-if="addInfoForm.enterpriseQualificationUrl" class="imgBox">
<img :src="addInfoForm.enterpriseQualificationUrl" class="avatar" />
<i
class="el-icon-error redText"
@click.stop="addProjectForm.layoutImage = ''"
@click.stop="addInfoForm.enterpriseQualificationUrl = ''"
></i>
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
@ -295,10 +335,8 @@
</div>
</el-form-item>
<el-form-item
:label="
$t('message.companyDiagram.dialog_ProjectPop_up.shopDrawing')
"
prop="constructionMapUrl"
label="logo"
prop="logo"
>
<el-upload
class="avatar-uploader"
@ -308,11 +346,11 @@
:on-success="(file) => handleUploadSuccess(file, 2)"
name="files"
>
<div v-if="addProjectForm.constructionMapUrl" class="imgBox">
<img :src="addProjectForm.constructionMapUrl" class="avatar" />
<div v-if="addInfoForm.logo" class="imgBox">
<img :src="addInfoForm.logo" class="avatar" />
<i
class="el-icon-error redText"
@click.stop="addProjectForm.constructionMapUrl = ''"
@click.stop="addInfoForm.logo = ''"
></i>
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
@ -321,7 +359,7 @@
<div class="dialog-footer">
<el-button
class="cancleBtn"
@click="addProjectDialog = false"
@click="addInfoDialog = false"
icon="el-icon-circle-close"
size="medium"
>{{ $t("message.companyDiagram.cancel") }}</el-button
@ -329,7 +367,7 @@
<el-button
type="primary"
icon="el-icon-circle-check"
@click="saveProjectFn"
@click="saveInfoFn"
size="medium"
>{{ $t("message.companyDiagram.determine") }}</el-button
>
@ -348,211 +386,150 @@
</div>
</template>
<script>
import { checkPhone } from "@/assets/js/util.js";
import {
sendSafetyHatProjectDataApi,
getDictionaryItemApi,
} from "@/assets/js/api/companyDiagram.js";
import {
getProjectDetail,
editProjectInfo,
sendProjectInfo,
getProjectConfigListApi,
} from "@/assets/js/api/baseInfo.js";
import { selectProvincesCityListApi } from "@/assets/js/api/project.js";
import { getSupplierInfoApi, getCompanyTypeApi, infoReportSaveApi } from "@/assets/js/api/supplier.js";
export default {
name: "baseInfo",
data() {
var checkAge = (rule, value, callback) => {
if (value == "" && value != 0) {
callback(new Error(this.$t("message.companyDiagram.required")));
return;
}
if (!Number.isInteger(value)) {
callback(new Error(this.$t("message.companyDiagram.required_msg")));
} else {
callback();
}
};
return {
tableList: [],
activeTabName: "first",
projectDialogTitle: "新增",
addProjectDialog: false,
addProjectForm: {
areaCode: "",
buildingNum: "",
bulidStatus: "",
cityCode: "",
companySn: "",
constructionStage: "",
engineeringPurpose: "",
households: "",
latitude: "",
layoutImage: "",
constructionMapUrl: "",
longitude: "",
projectAcreage: "",
projectAddress: "",
projectName: "",
projectNumber: "",
projectType: "",
provincesCode: "",
saleAcreage: "",
startWorkDate: "",
structureType: "",
projectManage: "",
projectTel: "",
majorProjectType: 0,
infoDialogTitle: "基本信息填报",
addInfoDialog: false,
addInfoForm: {
enterpriseName: "",
enterpriseQualificationUrl: "",
companyTypeName: "",
xzSupplierTypeId: "",
enterpriseLegalPerson: "",
bankname: "",
socialCode: "",
registerPersonPhoneTel: "",
registeredCapital: "",
legalPersonTel: "",
bankcardnumber: "",
businessLicenseEndDate: "",
businessNumber: "",
enterpriseEmail: "",
enterpriseAddress: "",
qualificationNumber: "",
enterpriseSafeAllow: "",
enterpriseProperty: "",
logo: "",
projectDirectorName: "",
projectDirectorPhone: "",
},
projectDetail: {
areaCode: "",
buildingNum: "",
bulidStatus: "",
cityCode: "",
companySn: "",
constructionStage: "",
engineeringPurpose: "",
households: "",
latitude: "",
layoutImage: "",
constructionMapUrl: "",
longitude: "",
projectAcreage: "",
projectAddress: "",
projectName: "",
projectNumber: "",
projectType: "",
provincesCode: "",
saleAcreage: "",
startWorkDate: "",
structureType: "",
projectManage: "",
projectTel: "",
supplierDetail: {
enterpriseName: "",
enterpriseQualificationUrl: "",
companyTypeName: "",
xzSupplierTypeId: "",
enterpriseLegalPerson: "",
bankname: "",
socialCode: "",
registerPersonPhoneTel: "",
registeredCapital: "",
legalPersonTel: "",
bankcardnumber: "",
businessLicenseEndDate: "",
businessNumber: "",
enterpriseEmail: "",
enterpriseAddress: "",
qualificationNumber: "",
enterpriseSafeAllow: "",
enterpriseProperty: "",
logo: "",
projectDirectorName: "",
projectDirectorPhone: "",
},
addProjectFormRules: {
projectName: [
addInfoFormRules: {
projectDirectorName: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
message: '请输入',
trigger: "blur",
},
],
provincesCode: [
projectDirectorPhone: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
message: '请输入',
trigger: "blur",
},
],
enterpriseName: [
{
required: true,
message: '请输入',
trigger: "blur",
},
],
enterpriseLegalPerson: [
{
required: true,
message: '请输入',
trigger: "blur",
},
],
xzSupplierTypeId: [
{
required: true,
message: '请选择',
trigger: "change",
},
],
projectAddress: [
socialCode: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
message: '请输入',
trigger: "blur",
},
],
projectManage: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectTel: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
longitude: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
latitude: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectNumber: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectType: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
engineeringPurpose: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
// structureType: [
// {
// required: true,
// message: this.$t("message.companyDiagram.Mandatory"),
// trigger: "change",
// },
// ],
// projectAcreage: [
// {
// required: true,
// message: this.$t("message.companyDiagram.required"),
// trigger: "blur",
// },
// ],
bulidStatus: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
startWorkDate: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
// households: [{ required: true, validator: checkAge, trigger: "blur" }],
// buildingNum: [{ required: true, validator: checkAge, trigger: "blur" }],
]
},
bigImageDialog: false,
bigImageUrl: "",
projectSn: "",
provincesCityArr: [],
provincesCityList: [],
cascaderProps: {
label: "name",
children: "childrenlist",
value: "code",
},
showMap: false,
projectAuditStatus: "", //
company: "",
constructionStageList: [],
structureTypeList: [],
unitType: [
{id: 1, name: '国有企业'},
{id: 2, name: '三资企业'},
{id: 3, name: '集体企业'},
{id: 4, name: '私营企业'},
],
companyTypeList: [],
};
},
created() {
this.getBasicInfo();
this.getCompanyTypeList();
},
props: ["activeTabName"],
methods: {
//
openInfoDialog(){
this.addInfoForm = {...this.supplierDetail}
this.addInfoDialog = true
// this.$nextTick(() => {
// // this.$refs.addInfoForm.resetFields();
// })
},
//
getCompanyTypeList(){
getCompanyTypeApi({}).then((res) => {
console.log(res, "企业类型列表");
if(res.result){
this.companyTypeList = res.result;
}
});
},
//
getBasicInfo() {
getSupplierInfoApi({
userId: this.$store.state.userInfo.userId,
}).then((res) => {
console.log(res, "基本信息");
if (res.result) {
for(let i in this.supplierDetail){
this.supplierDetail[i] = res.result[i]
}
}
});
},
//
beforeAvatarUpload(file) {
if (
@ -571,30 +548,25 @@ export default {
handleUploadSuccess(res, type) {
console.log(res);
if (type == 1) {
this.addProjectForm.layoutImage =
this.addInfoForm.enterpriseQualificationUrl =
this.$store.state.FILEURL + res.data[0].imageUrl;
} else {
this.addProjectForm.constructionMapUrl =
this.addInfoForm.logo =
this.$store.state.FILEURL + res.data[0].imageUrl;
}
},
//
saveProjectFn() {
if (this.addProjectForm.projectTel) {
if (!checkPhone(this.addProjectForm.projectTel)) {
console.log(
"this.addProjectForm.projectTel",
this.addProjectForm.projectTel
);
this.$message.error("请输入正确的联系电话");
return;
}
}
this.$refs["addProjectForm"].validate((valid) => {
saveInfoFn() {
this.$refs["addInfoForm"].validate((valid) => {
if (valid) {
editProjectInfo(this.addProjectForm).then((res) => {
this.addProjectDialog = false;
this.getDataDateils();
let requestData = {
...this.addInfoForm,
userId: this.$store.state.userInfo.userId,
}
infoReportSaveApi(requestData).then((res) => {
console.log(res,'信息保存成功')
this.addInfoDialog = false;
this.getBasicInfo();
this.$message.success(
this.$t("message.companyDiagram.editSuccess")
); //
@ -604,8 +576,16 @@ export default {
return false;
}
});
}
},
},
watch: {
activeTabName(newValue) {
if(newValue == 'first'){
this.getBasicInfo();
this.getCompanyTypeList();
}
}
}
};
</script>
<style lang="less" scoped>
@ -738,6 +718,9 @@ export default {
}
}
}
.dialogFormBox.big{
width: 900px;
}
::v-deep .el-input__inner {
line-height: 1px !important;
}

View File

@ -2,47 +2,43 @@
<!-- 项目信息页面 -->
<div class="main-content whiteBlock">
<div class="btn_wrap">
<el-button
type="primary"
size="medium"
@click="addProjectDialog = true"
>{{ $t("message.companyDiagram.Table.newAdd") }}</el-button
>
<el-button type="primary" size="medium" @click="addFileFn">{{
$t("message.companyDiagram.Table.newAdd")
}}</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" :data="tableList" height="800">
<el-table-column
width="200"
prop="jobName"
width="50"
type="index"
align="center"
label="序号"
></el-table-column>
<el-table-column
prop="personName"
prop="fileName"
label="资质文件名称"
align="center"
></el-table-column>
<el-table-column
prop="phone"
prop="fileNumber"
label="资质文件编号"
align="center"
></el-table-column>
<el-table-column
label="资质文件"
width="80"
align="center"
>
<el-table-column label="资质文件" align="center">
<div slot slot-scope="scope">
<img
:preview="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
:src="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
:src="scope.row.fileUrl ? scope.row.fileUrl : []"
alt=""
width="50px"
@click="
bigImageDialog = true;
bigImageUrl = scope.row.fileUrl;
"
/>
</div>
</el-table-column>
<el-table-column
prop="phone"
prop="remarks"
label="备注"
align="center"
></el-table-column>
@ -51,8 +47,8 @@
align="center"
>
<template slot-scope="scope">
<div class="tableBtns">
<div @click="edit(scope.row)" class="operationText">
<div class="operation-style">
<div @click="editFile(scope.row)" class="operationText">
<img
src="@/assets/images/icon-edit.png"
width="15px"
@ -60,7 +56,7 @@
/>
<span>{{ $t("message.deviceManage.edit") }}</span>
</div>
<div @click="deleteDev(scope.row)" class="operationText">
<div @click="deleteFile(scope.row)" class="operationText">
<img
src="@/assets/images/icon-delete.png"
width="15px"
@ -77,38 +73,32 @@
<!-- 新增弹框 -->
<el-dialog
:modal-append-to-body="false"
title="新增"
:visible.sync="addProjectDialog"
:title="dialogTitle"
:visible.sync="addFileDialog"
width="667px"
>
<div class="dialog_content">
<el-form
size="medium"
:model="addBuildForm"
ref="addBuildForm"
:rules="beaconFormRules"
:model="addFileForm"
ref="addFileForm"
:rules="addFileFormRules"
label-width="120px"
class="dialogFormBox"
>
<el-form-item
:label="$t('message.BIMmanage.modelName')"
prop="modelName"
>
<el-form-item label="资质文件名称" prop="fileName">
<el-input
v-model="addBuildForm.modelName"
v-model="addFileForm.fileName"
:placeholder="$t('message.personnelPosition.please_enter')"
></el-input>
</el-form-item>
<el-form-item :label="'模型版本号'" prop="version">
<el-form-item label="资质文件编号" prop="fileNumber">
<el-input
v-model="addBuildForm.version"
v-model="addFileForm.fileNumber"
:placeholder="$t('message.personnelPosition.please_enter')"
></el-input>
</el-form-item>
<el-form-item
:label="$t('message.BIMmanage.modelFile')"
prop="modelUrl"
>
<el-form-item label="上传资质文件" prop="fileUrl">
<!-- :auto-upload="false" $http.defaults.baseURL+'xmgl/projectBim/saveBim' -->
<el-upload
class="uploadBtn"
@ -116,8 +106,9 @@
name="files"
:action="uploadUrl"
:show-file-list="true"
:file-list="fileList"
:data="uploadParams"
:on-change="changeUpload"
:on-remove="removeUpload"
:on-success="uploadMapSuccess"
:limit="1"
:on-exceed="exceedFn"
@ -126,21 +117,21 @@
<el-button slot="trigger" type="primary" size="medium"
>点击上传</el-button
>
<div slot="tip" class="el-upload__tip">
{{ addBuildForm.modelUrl.name }}
</div>
<!-- <div slot="tip" class="el-upload__tip">
{{ addFileForm.modelUrl.name }}
</div> -->
</el-upload>
</el-form-item>
<el-form-item label="备注" prop="version">
<el-form-item label="备注" prop="remarks">
<el-input
v-model="addBuildForm.version"
v-model="addFileForm.remarks"
:placeholder="$t('message.personnelPosition.please_enter')"
></el-input>
</el-form-item>
<div class="dialog-footer">
<el-button
class="cancleBtn"
@click="addBuildDialog = false"
@click="addFileDialog = false"
icon="el-icon-circle-close"
size="medium"
>{{ $t("message.personnelPosition.cancel") }}</el-button
@ -149,16 +140,31 @@
type="primary"
icon="el-icon-circle-check"
size="medium"
@click="operateFileFn"
>{{ $t("message.personnelPosition.determine") }}</el-button
>
</div>
</el-form>
</div>
</el-dialog>
<!-- 查看大图 -->
<el-dialog
:modal-append-to-body="false"
title="查看大图"
:visible.sync="bigImageDialog"
>
<img width="100%" :src="bigImageUrl" alt />
</el-dialog>
</div>
</template>
<script>
import { checkPhone } from "@/assets/js/util.js";
import {
getQualificationFileApi,
addQualificationFileApi,
editQualificationFileApi,
deleteQualificationFileApi,
} from "@/assets/js/api/supplier.js";
import {
sendSafetyHatProjectDataApi,
getDictionaryItemApi,
@ -174,29 +180,40 @@ export default {
name: "baseInfo",
data() {
return {
bigImageDialog: false,
bigImageUrl: "",
fileList: [],
dialogTitle: "新增",
tableList: [],
addProjectDialog: false,
addBuildForm: {
version: "", //
modelName: "", //
modelUrl: "", //
projectSn: "",
addFileDialog: false,
addFileForm: {
fileName: "",
fileNumber: "",
fileUrl: "",
remarks: "",
},
beaconFormRules: {
modelName: [
addFileFormRules: {
fileName: [
{
required: true,
message: this.$t("message.personnelPosition.required"),
message: "请输入",
trigger: "blur",
},
],
version: [
fileNumber: [
{
required: true,
message: this.$t("message.personnelPosition.required"),
message: "请输入",
trigger: "blur",
},
],
fileUrl: [
{
required: true,
message: "请选择",
trigger: "change",
},
],
},
uploadUrl: "", //
uploadParams: {
@ -208,7 +225,76 @@ export default {
created() {
this.uploadUrl = this.$store.state.UPLOADURL;
},
props: ["activeTabName"],
methods: {
//
deleteFile(obj) {
this.$confirm(
this.$t("message.personnelPosition.beaconManage.table.confirmText") +
"文件【" +
obj.fileName +
"】?",
this.$t("message.personnelPosition.beaconManage.table.Tips"),
{
confirmButtonText: this.$t(
"message.personnelPosition.confirmButtonText"
),
cancelButtonText: this.$t(
"message.personnelPosition.cancelButtonText"
),
type: "warning",
}
)
.then(() => {
deleteQualificationFileApi({ id: obj.id }).then((result) => {
if (result.success) {
this.$message.success(result.message);
this.getTableList();
}
});
})
.catch(() => {});
},
//
editFile(item) {
this.fileList = [{ name: item.originFileName, url: item.fileUrl }];
this.dialogTitle = "编辑";
this.addFileDialog = true;
this.addFileForm = { ...item };
this.$nextTick(() => {
this.$refs.addFileForm.clearValidate();
});
},
//
addFileFn() {
this.fileList = [];
setTimeout(() => {
this.dialogTitle = "新增";
this.addFileDialog = true;
this.addFileForm = {
fileName: "",
fileNumber: "",
fileUrl: "",
remarks: "",
}
}, 100);
},
getTableList() {
let requestData = {
userId: this.$store.state.userInfo.userId,
};
getQualificationFileApi(requestData).then((res) => {
console.log(res, "资质文件表格");
if (res.result) {
this.tableList = res.result;
this.tableList.map((item) => {
if (!item.fileUrl.includes(this.$store.state.FILEURL)) {
item.fileUrl = this.$store.state.FILEURL + item.fileUrl;
}
});
}
});
},
//
exceedFn(files, fileList) {
this.$message.warning(
@ -219,39 +305,43 @@ export default {
this.$t("message.BIMmanage.tipText3")
);
},
changeUpload(file, fileList) {
console.log("file", file, fileList);
// this.addBuildForm.modelUrl = file;
removeUpload(file, fileList) {
this.addFileForm.fileUrl = "";
this.fileList = [];
},
uploadMapSuccess(response) {
console.log("上传成功的", response);
this.addBuildForm.modelUrl = response.data[0].imageUrl;
this.addFileForm.fileUrl = response.data[0].imageUrl;
this.$refs.addFileForm.validateField("fileUrl");
console.log(this.fileList);
this.fileList = [{name: response.data[0].fileInfo.originalFilename, url: response.data[0].imageUrl}]
// this.fullscreenLoading = false;
// this.fullscreenLoading.close();
// this.addBuildDialog = false;
// this.loadData();
},
//
saveProjectFn() {
if (this.addProjectForm.projectTel) {
if (!checkPhone(this.addProjectForm.projectTel)) {
console.log(
"this.addProjectForm.projectTel",
this.addProjectForm.projectTel
);
this.$message.error("请输入正确的联系电话");
return;
}
}
this.$refs["addProjectForm"].validate((valid) => {
///
operateFileFn() {
this.$refs["addFileForm"].validate((valid) => {
if (valid) {
editProjectInfo(this.addProjectForm).then((res) => {
this.addProjectDialog = false;
this.getDataDateils();
this.$message.success(
this.$t("message.companyDiagram.editSuccess")
); //
});
let requestData = {
...this.addFileForm,
userId: this.$store.state.userInfo.userId,
originFileName: this.fileList[0].name,
};
if (this.dialogTitle == "新增") {
addQualificationFileApi(requestData).then((res) => {
this.addFileDialog = false;
this.getTableList();
this.$message.success("新增成功!"); //
});
} else {
editQualificationFileApi(requestData).then((res) => {
this.addFileDialog = false;
this.getTableList();
this.$message.success("编辑成功!"); //
});
}
} else {
console.log("error submit!!");
return false;
@ -259,6 +349,13 @@ export default {
});
},
},
watch: {
activeTabName(newValue) {
if (newValue == "second") {
this.getTableList();
}
},
},
};
</script>
<style lang="less" scoped>
@ -295,6 +392,13 @@ export default {
/deep/ .el-dialog {
margin-top: 10vh !important;
}
.operation-style {
.flex();
justify-content: center;
.operationText:not(:last-child) {
margin-right: 10px;
}
}
}
::v-deep .el-input__inner {
line-height: 1px !important;

View File

@ -4,764 +4,49 @@
<el-tabs v-model="activeTabName">
<el-tab-pane label="基本信息" name="first">
<vue-scroll style="width: 100%">
<BasicInfo></BasicInfo>
<BasicInfo :activeTabName="activeTabName"></BasicInfo>
</vue-scroll>
</el-tab-pane>
<el-tab-pane label="资质文件" name="second">
<vue-scroll style="width: 100%">
<QualificationInfo></QualificationInfo>
<QualificationInfo :activeTabName="activeTabName"></QualificationInfo>
</vue-scroll>
</el-tab-pane>
<el-tab-pane label="资质申请" name="third">
<ApplyInfo></ApplyInfo>
<ApplyInfo :activeTabName="activeTabName"></ApplyInfo>
</el-tab-pane>
</el-tabs>
<!-- 基本信息弹框 -->
<el-dialog
class="projectDialog"
:title="projectDialogTitle"
:visible.sync="addProjectDialog"
width="1100px"
:modal-append-to-body="false"
:close-on-click-modal="false"
>
<div class="dialog_content">
<el-form
size="medium"
:model="addProjectForm"
ref="addProjectForm"
:rules="addProjectFormRules"
label-width="130px"
class="dialogFormBox big"
:inline="true"
>
<el-form-item label="企业名称" prop="projectName">
<el-input
v-model="addProjectForm.projectName"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="法定代表人" prop="projectName">
<el-input
v-model="addProjectForm.projectName"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
></el-input>
</el-form-item>
<el-form-item label="企业类型" prop="projectType">
<el-select
v-model="addProjectForm.projectType"
:placeholder="$t('message.companyDiagram.PleaseSelect')"
>
<el-option
v-for="item in $t('message.companyDiagram.PROJECTTYPE')"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="统一社会信用代码" prop="saleAcreage">
<el-input
v-model="addProjectForm.saleAcreage"
:placeholder="$t('message.companyDiagram.PleaseEnter')"
type="number"
></el-input>
</el-form-item>
<el-form-item label="开户行" prop="households">
<el-input
v-model.number="addProjectForm.households"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="注册资金(万元)" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="注册人申请电话" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="银行账号" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="法人电话" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="营业执照注销号" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="营业执照截止日期" prop="buildingNum">
<el-date-picker
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="企业地址" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="企业邮箱" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="安全生产许可证" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="劳资证书号" prop="buildingNum">
<el-input
v-model.number="addProjectForm.buildingNum"
:placeholder="
$t('message.companyDiagram.dialog_ProjectPop_up.placeholder')
"
></el-input>
</el-form-item>
<el-form-item label="单位性质" prop="projectType">
<el-select
v-model="addProjectForm.projectType"
:placeholder="$t('message.companyDiagram.PleaseSelect')"
>
<el-option
v-for="item in $t('message.companyDiagram.PROJECTTYPE')"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<br />
<el-form-item
:label="
$t('message.companyDiagram.dialog_ProjectPop_up.layoutImage')
"
prop="layoutImage"
>
<div style="width: 280px">
<el-upload
class="avatar-uploader"
:action="$store.state.UPLOADURL"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
:on-success="(file) => handleUploadSuccess(file, 1)"
name="files"
>
<div v-if="addProjectForm.layoutImage" class="imgBox">
<img :src="addProjectForm.layoutImage" class="avatar" />
<i
class="el-icon-error redText"
@click.stop="addProjectForm.layoutImage = ''"
></i>
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</el-form-item>
<el-form-item
:label="
$t('message.companyDiagram.dialog_ProjectPop_up.shopDrawing')
"
prop="constructionMapUrl"
>
<el-upload
class="avatar-uploader"
:action="$store.state.UPLOADURL"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
:on-success="(file) => handleUploadSuccess(file, 2)"
name="files"
>
<div v-if="addProjectForm.constructionMapUrl" class="imgBox">
<img :src="addProjectForm.constructionMapUrl" class="avatar" />
<i
class="el-icon-error redText"
@click.stop="addProjectForm.constructionMapUrl = ''"
></i>
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<div class="dialog-footer">
<el-button
class="cancleBtn"
@click="addProjectDialog = false"
icon="el-icon-circle-close"
size="medium"
>{{ $t("message.companyDiagram.cancel") }}</el-button
>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="saveProjectFn"
size="medium"
>{{ $t("message.companyDiagram.determine") }}</el-button
>
</div>
</el-form>
</div>
</el-dialog>
<!-- 查看大图 -->
<el-dialog
:modal-append-to-body="false"
title="查看大图"
:visible.sync="bigImageDialog"
>
<img width="100%" :src="bigImageUrl" alt />
</el-dialog>
<!--高德地图-->
<gd-map
v-if="showMap"
:addProjectForm="addProjectForm"
@closeMap="closeMap"
@save="getLngLat"
></gd-map>
</div>
</template>
<script>
import { checkPhone } from "@/assets/js/util.js";
import {
sendSafetyHatProjectDataApi,
getDictionaryItemApi,
} from "@/assets/js/api/companyDiagram.js";
import {
getProjectDetail,
editProjectInfo,
sendProjectInfo,
getProjectConfigListApi,
} from "@/assets/js/api/baseInfo.js";
import { selectProvincesCityListApi } from "@/assets/js/api/project.js";
import scroll from "vue-seamless-scroll";
import gdMap from "../../../components/map/gd-map";
import BasicInfo from "./components/basic-info.vue";
import QualificationInfo from "./components/qualification-info.vue";
import ApplyInfo from "./components/apply-info.vue";
export default {
name: "baseInfo",
components: {
scroll,
gdMap,
BasicInfo,
QualificationInfo,
ApplyInfo
},
data() {
var checkAge = (rule, value, callback) => {
if (value == "" && value != 0) {
callback(new Error(this.$t("message.companyDiagram.required")));
return;
}
if (!Number.isInteger(value)) {
callback(new Error(this.$t("message.companyDiagram.required_msg")));
} else {
callback();
}
};
return {
tableList: [],
activeTabName: "first",
projectDialogTitle: "新增",
addProjectDialog: false,
addProjectForm: {
areaCode: "",
buildingNum: "",
bulidStatus: "",
cityCode: "",
companySn: "",
constructionStage: "",
engineeringPurpose: "",
households: "",
latitude: "",
layoutImage: "",
constructionMapUrl: "",
longitude: "",
projectAcreage: "",
projectAddress: "",
projectName: "",
projectNumber: "",
projectType: "",
provincesCode: "",
saleAcreage: "",
startWorkDate: "",
structureType: "",
projectManage: "",
projectTel: "",
majorProjectType: 0,
},
projectDetail: {
areaCode: "",
buildingNum: "",
bulidStatus: "",
cityCode: "",
companySn: "",
constructionStage: "",
engineeringPurpose: "",
households: "",
latitude: "",
layoutImage: "",
constructionMapUrl: "",
longitude: "",
projectAcreage: "",
projectAddress: "",
projectName: "",
projectNumber: "",
projectType: "",
provincesCode: "",
saleAcreage: "",
startWorkDate: "",
structureType: "",
projectManage: "",
projectTel: "",
},
addProjectFormRules: {
projectName: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
provincesCode: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
projectAddress: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectManage: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectTel: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
longitude: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
latitude: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectNumber: [
{
required: true,
message: this.$t("message.companyDiagram.required"),
trigger: "blur",
},
],
projectType: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
engineeringPurpose: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
// structureType: [
// {
// required: true,
// message: this.$t("message.companyDiagram.Mandatory"),
// trigger: "change",
// },
// ],
// projectAcreage: [
// {
// required: true,
// message: this.$t("message.companyDiagram.required"),
// trigger: "blur",
// },
// ],
bulidStatus: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
startWorkDate: [
{
required: true,
message: this.$t("message.companyDiagram.Mandatory"),
trigger: "change",
},
],
// households: [{ required: true, validator: checkAge, trigger: "blur" }],
// buildingNum: [{ required: true, validator: checkAge, trigger: "blur" }],
},
bigImageDialog: false,
bigImageUrl: "",
projectSn: "",
provincesCityArr: [],
provincesCityList: [],
cascaderProps: {
label: "name",
children: "childrenlist",
value: "code",
},
showMap: false,
projectAuditStatus: "", //
company: "",
constructionStageList: [],
structureTypeList: [],
};
},
created() {
this.projectSn = this.$store.state.projectSn;
this.company = COMPANY;
this.getDataDateils();
this.loadProvincesCityList();
this.getProjectConfigList();
this.getDictionaryList();
this.getDictionaryByStructure();
},
methods: {
//
getDictionaryList() {
getDictionaryItemApi({
dictionaryEncoding: "project_construction_stage",
projectSn: this.projectSn,
}).then((res) => {
if (res.result.length > 0) {
this.constructionStageList = res.result;
}
});
},
//
getDictionaryByStructure() {
getDictionaryItemApi({
dictionaryEncoding: "project_structure_type",
projectSn: this.projectSn,
}).then((res) => {
if (res.result.length > 0) {
this.structureTypeList = res.result;
}
});
},
sendSafetyHatProject() {
sendSafetyHatProjectDataApi({ projectSn: this.projectSn }).then((res) => {
if (res.code == 200) {
this.$message.success("上传成功!");
}
});
},
getProjectConfigList() {
getProjectConfigListApi({ projectSn: this.projectSn }).then((res) => {
if (res.code == 200) {
this.projectAuditStatus = res.result[0].projectAuditStatus;
console.log(res.result[0].projectAuditStatus);
}
});
},
uploadThirdParty() {
sendProjectInfo({ projectSn: this.projectSn }).then((res) => {
if (res.code == 200) {
this.$message.success(
this.$t("message.projectInfo.updateSuccess") + "!"
);
this.getProjectConfigList();
}
});
},
closeMap(val) {
this.showMap = val;
},
getLngLat(v) {
this.showMap = false;
this.addProjectForm.longitude = v.lng;
this.addProjectForm.latitude = v.lat;
},
//
getDataDateils() {
let data = {
projectSn: this.projectSn,
};
getProjectDetail(data).then((res) => {
if (res.code == 200) {
this.projectDetail =
res.result != null ? res.result : this.projectDetail;
this.provincesCityArr = [
res.result.provincesCode,
res.result.cityCode,
res.result.areaCode,
];
this.addProjectForm = JSON.parse(JSON.stringify(res.result));
this.$store.commit("setProDetail", res.result);
}
});
},
//
beforeAvatarUpload(file) {
if (
file.type != "image/jpeg" &&
file.type != "image/png" &&
file.type != "image/jpg" &&
file.type != "image/bmp"
) {
this.$message.error(this.$t("message.companyDiagram.uploadMsg")); //
return false;
} else {
return true;
}
},
//
handleUploadSuccess(res, type) {
console.log(res);
if (type == 1) {
this.addProjectForm.layoutImage =
this.$store.state.FILEURL + res.data[0].imageUrl;
} else {
this.addProjectForm.constructionMapUrl =
this.$store.state.FILEURL + res.data[0].imageUrl;
}
},
//
toGetLocalFn() {
this.showMap = true;
// window.open("https://lbs.amap.com/console/show/picker");
},
//
saveProjectFn() {
if (this.addProjectForm.projectTel) {
if (!checkPhone(this.addProjectForm.projectTel)) {
console.log(
"this.addProjectForm.projectTel",
this.addProjectForm.projectTel
);
this.$message.error("请输入正确的联系电话");
return;
}
}
this.$refs["addProjectForm"].validate((valid) => {
if (valid) {
editProjectInfo(this.addProjectForm).then((res) => {
this.addProjectDialog = false;
this.getDataDateils();
this.$message.success(
this.$t("message.companyDiagram.editSuccess")
); //
});
} else {
console.log("error submit!!");
return false;
}
});
},
//
loadProvincesCityList() {
selectProvincesCityListApi().then((res) => {
this.provincesCityList = res.result;
});
},
//
changeProvincesCity(val) {
this.addProjectForm.provincesCode = val[0];
this.addProjectForm.cityCode = val[1];
this.addProjectForm.areaCode = val[2];
},
},
};
</script>
<style lang="less" scoped>
.flex {
display: flex;
align-items: center;
justify-content: space-between;
}
.flex2 {
display: flex;
align-items: center;
justify-content: space-around;
}
.flex3 {
display: flex;
align-items: center;
}
.flex4 {
display: flex;
justify-content: space-between;
}
.flex5 {
display: flex;
align-items: center;
justify-content: center;
}
.baseInfo {
width: 100%;
height: 100%;
// background: #ffffff;
padding: 15px;
box-sizing: border-box;
.btn_wrap {
}
.custom_tab {
width: 100%;
height: 100%;
box-sizing: border-box;
border: 1px solid rgba(148, 148, 148, 0.5);
border-bottom: none;
margin-top: 20px;
// color: #333;
.title {
width: 100%;
font-size: 14px;
padding: 12px 20px;
border-bottom: 1px solid rgba(148, 148, 148, 0.5);
box-sizing: border-box;
height: 44px;
background: #eeeeee;
}
.type_content {
width: 50%;
div {
font-size: 14px;
padding: 12px 0;
height: 44px;
line-height: 44px;
box-sizing: border-box;
border-bottom: 1px solid rgba(148, 148, 148, 0.5);
}
}
.width_65 {
width: 80%;
display: inline-block;
box-sizing: border-box;
height: 44px;
padding: 0 15px;
}
.width_35 {
width: 20%;
display: inline-block;
box-sizing: border-box;
border-right: 1px solid rgba(148, 148, 148, 0.5);
padding: 0 15px;
text-align: left;
}
}
.bg_color {
background: rgba(235, 234, 234, 0.5);
display: inline-block;
box-sizing: border-box;
}
.border_l {
border-left: 1px solid rgba(148, 148, 148, 0.5);
}
/deep/ .el-dialog {
margin-top: 10vh !important;
}
.avatar-uploader {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
// overflow: hidden;
height: 178px;
width: 178px;
}
.avatar-uploader:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
.imgBox {
position: relative;
.el-icon-error {
font-size: 20px;
position: absolute;
right: -10px;
top: -10px;
cursor: pointer;
}
}
}
::v-deep .el-input__inner {
line-height: 1px !important;
}
</style>

View File

@ -3,17 +3,25 @@
<div class="fullHeight">
<vhead :titleName="projectName" :showR="true"></vhead>
<div class="supplier-module">
<div class="supplier-module-item" v-for="(item,index) in moduleList" :key="index">
<div
class="supplier-module-item"
v-for="(item, index) in moduleList"
:key="index"
>
<div class="module-item-left">
<div class="item-left-title">
<div class="line"></div>
<div>{{ item.title }}</div>
<div>{{ item.moduleName }}</div>
</div>
<div class="item-left-desc">{{ item.describe }}</div>
<div class="item-left-btn" @click="jumpRoute">进入</div>
<div class="item-left-desc">{{ item.moduleDesc }}</div>
<div class="item-left-btn" @click="jumpRoute(item, index)">进入</div>
</div>
<div class="module-item-right">
<img :src="item.icon">
<img
:src="
require('../../assets/images/menu/' + item.moduleIcon + '.png')
"
/>
</div>
</div>
</div>
@ -21,6 +29,7 @@
</template>
<script>
import vhead from "@/components/header";
import { getAllModuleApi } from "@/assets/js/api/jxjadmin.js";
export default {
name: "projectIndex",
components: { vhead },
@ -28,102 +37,207 @@ export default {
return {
projectName: "",
moduleList: [
{title: "我的资质",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") },
{title: "合同管理",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") },
{title: "劳务队",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") },
{title: "维修记录",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") },
{title: "发货记录",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") },
{title: "付款记录",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") },
{title: "售后工单",describe: "供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",icon: require("@/assets/images/carIcon1.png") }
]
{
title: "我的资质",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
{
title: "合同管理",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
{
title: "劳务队",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
{
title: "维修记录",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
{
title: "发货记录",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
{
title: "付款记录",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
{
title: "售后工单",
describe:
"供应商在此处对基本信息、资质文件等内容进行完善,提交给项目组织审批",
icon: require("@/assets/images/carIcon1.png"),
},
],
};
},
created() {
var arr = this.$store.state.userInfo.menuAuthority.moduleList;
// this.moduleList = this.$store.state.userInfo.menuAuthority.moduleList;
this.getAllModule(arr);
},
methods: {
jumpRoute(){
//
getAllModule(half) {
console.log(half, "101010");
getAllModuleApi({
moduleType: 6,
styleType: this.$store.state.userInfo.styleType,
}).then((res) => {
if (res.success) {
var all = res.result;
let needArr = [];
console.log("all", all);
all.forEach((element, index) => {
all[index].operation = false;
half.forEach((element2) => {
if (element2.moduleId == element.moduleId) {
all[index].operation = true;
all[index].menuList = element2.menuList;
needArr.push(all[index]);
}
});
});
this.moduleList = needArr;
}
});
},
jumpRoute(item, index) {
this.$router.push("/supplier/qualification/apply");
}
if (!item.operation) {
this.$message.error(this.$t("message.projectIndex.tips1"));
return;
}
if (item.menuList && item.menuList.length > 0) {
var arr = item.menuList,
arr2 = [];
arr.forEach((element) => {
if (element.menuEquipment == 0) {
arr2.push(element);
}
});
this.$store.commit("setMenuList", arr2);
this.$store.commit("setIsShowBackIndex", true);
this.$store.commit("setMoudle", item);
if (arr2[0].target == "_blank") {
let routeUrl = "";
if (arr2[0].path.indexOf("http") != -1) {
routeUrl = arr2[0].path;
} else {
let url = this.$router.resolve({
path: arr2[0].path,
});
routeUrl = url.href;
}
window.open(routeUrl, "_blank");
} else {
if (arr2[0].path == "" || arr2[0].path.indexOf("/") == -1) {
this.$router.push(arr2[0].menuList[0].path);
} else {
this.$router.push(arr2[0].path);
}
}
} else {
this.$message.error(this.$t("message.projectIndex.tips2"));
}
window._paq.push([
"trackEvent",
"点击",
item.moduleName,
"进入" + item.moduleName,
]);
},
},
};
</script>
<style lang="less" scoped>
.flex(){
.flex() {
display: flex;
align-items: center;
}
.flexColumn(){
.flexColumn() {
display: flex;
flex-direction: column;
}
.supplier-module{
.supplier-module {
width: max-content;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 50px;
grid-template-columns: repeat(4, 1fr);
grid-gap: 50px;
margin-top: 90px;
&-item{
&-item {
box-sizing: border-box;
display: flex;
align-items: center;
width: 362px;
height: 144px;
background: #FFFFFF;
box-shadow: 2px 1px 4px 1px rgba(48,92,200,0.09);
background: #ffffff;
box-shadow: 2px 1px 4px 1px rgba(48, 92, 200, 0.09);
border-radius: 4px 4px 4px 4px;
padding: 0px 10px;
.module-item-left{
.module-item-left {
width: 181px;
margin-right: auto;
.flexColumn();
justify-content: space-between;
.item-left-title{
.item-left-title {
.flex();
.line{
.line {
width: 2px;
height: 18px;
background-color: #5C81EE;
background-color: #5c81ee;
margin-left: 3px;
margin-right: 5px;
margin-top: 2px;
}
>div:nth-child(2){
> div:nth-child(2) {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 22px;
color: #272D45;
color: #272d45;
text-align: center;
font-style: normal;
text-transform: none;
}
}
.item-left-desc{
.item-left-desc {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 10px;
color: #272D45;
color: #272d45;
font-style: normal;
text-transform: none;
margin-top: 3px;
margin-bottom: 12px;
}
.item-left-btn{
.item-left-btn {
width: 37px;
height: 19px;
line-height: 19px;
text-align: center;
background: #5181F6;
background: #5181f6;
border-radius: 14px 14px 14px 14px;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 9px;
color: #FFFFFF;
color: #ffffff;
cursor: pointer;
}
}
.module-item-right{
img{
.module-item-right {
img {
width: 106px;
height: 106px;
}