|
@@ -0,0 +1,1888 @@
|
|
|
|
+<template>
|
|
|
|
+ <!-- 添加或修改项目信息对话框 -->
|
|
|
|
+ <div class="el-drawer__wrapper company-list">
|
|
|
|
+ <el-drawer :title="title" v-model="visible" direction="rtl" size="100%">
|
|
|
|
+ <div class="page-container form-container">
|
|
|
|
+ <!-- 功能按钮区域 -->
|
|
|
|
+ <div class="form-btns-container">
|
|
|
|
+ <span class="title-label"
|
|
|
|
+ ><el-icon>
|
|
|
|
+ <Document />
|
|
|
|
+ </el-icon>
|
|
|
|
+ 客户表单</span
|
|
|
|
+ >
|
|
|
|
+
|
|
|
|
+ <!-- <el-button
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ type="primary"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="Finished"
|
|
|
|
+ @click="submitForm"
|
|
|
|
+ >保存</el-button
|
|
|
|
+ >
|
|
|
|
+ <template v-else>
|
|
|
|
+ <el-button
|
|
|
|
+ v-hasPermi="['business:company:edit']"
|
|
|
|
+ type="warning"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="Edit"
|
|
|
|
+ @click="editStatus = true"
|
|
|
|
+ >修改</el-button
|
|
|
|
+ >
|
|
|
|
+ </template> -->
|
|
|
|
+ <!-- <el-button
|
|
|
|
+ v-if="form.id && editStatus"
|
|
|
|
+ type="info"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="Close"
|
|
|
|
+ @click="
|
|
|
|
+ () => {
|
|
|
|
+ editStatus = false;
|
|
|
|
+ getForm();
|
|
|
|
+ }
|
|
|
|
+ "
|
|
|
|
+ >取消修改</el-button
|
|
|
|
+ >
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="form.id"
|
|
|
|
+ type="success"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="refresh"
|
|
|
|
+ @click="getForm"
|
|
|
|
+ >
|
|
|
|
+ 刷新</el-button
|
|
|
|
+ > -->
|
|
|
|
+
|
|
|
|
+ <div class="screen-btn" @click="handleScreen">
|
|
|
|
+ <template v-if="!isFullscreen">
|
|
|
|
+ <i class="fa fa-window-maximize" aria-hidden="true" />
|
|
|
|
+ <!-- <span>全屏</span> -->
|
|
|
|
+ </template>
|
|
|
|
+ <template v-else>
|
|
|
|
+ <i class="fa fa-window-restore" aria-hidden="true" />
|
|
|
|
+ <!-- <span>还原</span> -->
|
|
|
|
+ </template>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="close-btn" @click="cancel">
|
|
|
|
+ <i class="fa fa-times" aria-hidden="true" />
|
|
|
|
+ <!-- <span>关闭</span> -->
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="Y-scrollbar"
|
|
|
|
+ style="
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 32px;
|
|
|
|
+ bottom: 0;
|
|
|
|
+ width: 100%;
|
|
|
|
+ overflow: auto;
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <!-- 主表 -->
|
|
|
|
+ <el-form
|
|
|
|
+ ref="companyRef"
|
|
|
|
+ class="master-container"
|
|
|
|
+ size="small"
|
|
|
|
+ :model="form"
|
|
|
|
+ :rules="rules"
|
|
|
|
+ label-width="120px"
|
|
|
|
+ >
|
|
|
|
+ <div class="radio-scroll">
|
|
|
|
+ <el-radio-group
|
|
|
|
+ v-model="queryRadio"
|
|
|
|
+ style="margin-left: 20px"
|
|
|
|
+ size="small"
|
|
|
|
+ @change="scrollTargetTo"
|
|
|
|
+ >
|
|
|
|
+ <el-radio-button label="base-form">基本信息</el-radio-button>
|
|
|
|
+ <el-radio-button label="business-form"
|
|
|
|
+ >工商信息</el-radio-button
|
|
|
|
+ >
|
|
|
|
+ <el-radio-button label="tax-form">税务信息</el-radio-button>
|
|
|
|
+ <el-radio-button label="linkman-form">联系人</el-radio-button>
|
|
|
|
+ <el-radio-button v-if="form.id" label="follow-form"
|
|
|
|
+ >跟进动态</el-radio-button
|
|
|
|
+ >
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="scroll-view"
|
|
|
|
+ style="
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 50px;
|
|
|
|
+ bottom: 20px;
|
|
|
|
+ right: 0px;
|
|
|
|
+ left: 0px;
|
|
|
|
+ overflow: auto;
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <div class="details-container" style="margin-top: 8px">
|
|
|
|
+ <div id="base-form" class="details-head">
|
|
|
|
+ <div class="title">
|
|
|
|
+ <i class="fa fa-th-list" aria-hidden="true" /> 基本信息
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <el-row :gutter="30" style="margin-top: 10px">
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-form-item label="客户编码:" prop="code">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.code"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ placeholder="客户编码"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.code }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="客户名称:" required prop="name">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.name"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="客户名称"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.name }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="简称:" prop="shortName">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.shortName"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="简称"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.shortName }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="12" style="width: 100%">
|
|
|
|
+ <el-form-item label="客户来源:" prop="sourceCategoryName">
|
|
|
|
+ <CustomerFormCom
|
|
|
|
+ ref="CustomerFormComRef"
|
|
|
|
+ :edit-status="editStatus"
|
|
|
|
+ :form-data="form"
|
|
|
|
+ :source-categories="sourceCategories"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6" >
|
|
|
|
+ <el-form-item label="客户标签" prop="customerLabelId" >
|
|
|
|
+ <el-select v-model="form.customerLabelId" style="width:100%"
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in options"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.lable"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <span v-else>{{ selectedOptionLabel }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-form-item label="备注:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.remark"
|
|
|
|
+ type="text"
|
|
|
|
+ width="100%"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="备注"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.remark }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <br />
|
|
|
|
+
|
|
|
|
+ <div id="business-form" class="details-head">
|
|
|
|
+ <div class="title">
|
|
|
|
+ <i class="fa fa-th-list" aria-hidden="true" /> 工商信息
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <el-row :gutter="30" style="margin-top: 10px">
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item
|
|
|
|
+ label="税号:"
|
|
|
|
+ prop="socialCreditCode"
|
|
|
|
+ >
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.socialCreditCode"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="税号"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.socialCreditCode }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item label="主营行业:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.mainBusiness"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="主营行业"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.mainBusiness }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item label="企业类型:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.type"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="企业类型"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.type }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item label="法定代表人:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.legalRepresentative"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="法定代表人"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.legalRepresentative }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item label="成立日期:">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.foundationDate"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ format="YYYY-MM-DD"
|
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
|
+ align="center"
|
|
|
|
+ type="date"
|
|
|
|
+ placeholder="成立日期"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.foundationDate }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item label="出执照日期:">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.licenceDate"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ format="YYYY-MM-DD"
|
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
|
+ align="center"
|
|
|
|
+ type="date"
|
|
|
|
+ placeholder="出执照日期"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.licenceDate }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item
|
|
|
|
+ label="营业开始日期:"
|
|
|
|
+ prop="createTime"
|
|
|
|
+ class="date-layout"
|
|
|
|
+ >
|
|
|
|
+ <template v-if="editStatus">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="form.businessStartDate"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ format="YYYY-MM-DD"
|
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
|
+ align="center"
|
|
|
|
+ type="date"
|
|
|
|
+ placeholder="开始日期"
|
|
|
|
+ />
|
|
|
|
+ </template>
|
|
|
|
+ <span v-else>
|
|
|
|
+ {{
|
|
|
|
+ form.businessStartDate == null
|
|
|
|
+ ? ""
|
|
|
|
+ : form.businessStartDate
|
|
|
|
+ }}</span
|
|
|
|
+ >
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item
|
|
|
|
+ label="营业截止日期:"
|
|
|
|
+ prop="createTime"
|
|
|
|
+ class="date-layout"
|
|
|
|
+ >
|
|
|
|
+ <template v-if="editStatus">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="form.businessEndDate"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ format="YYYY-MM-DD"
|
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
|
+ :disabled="PermanentlyEffective"
|
|
|
|
+ align="center"
|
|
|
|
+ type="date"
|
|
|
|
+ placeholder="结束日期"
|
|
|
|
+ />
|
|
|
|
+ </template>
|
|
|
|
+ <span v-else-if="form.isPermanentlyEffective == 0">
|
|
|
|
+ {{
|
|
|
|
+ form.businessEndDate == null
|
|
|
|
+ ? ""
|
|
|
|
+ : form.businessEndDate
|
|
|
|
+ }}
|
|
|
|
+ </span>
|
|
|
|
+ <span v-else-if="form.isPermanentlyEffective == 1">
|
|
|
|
+ {{ "无固定期限" }}
|
|
|
|
+ </span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <div
|
|
|
|
+ style="display: inline; height: 28pxs; margin-left: -70px"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <template v-if="editStatus">
|
|
|
|
+ <span
|
|
|
|
+ style="
|
|
|
|
+ font-size: 12px;
|
|
|
|
+ margin-left: -16px;
|
|
|
|
+ margin-right: 8px;
|
|
|
|
+ "
|
|
|
|
+ >无固定期限</span
|
|
|
|
+ >
|
|
|
|
+ <el-checkbox v-model="PermanentlyEffective" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <el-form-item label="注册资金:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.number="form.registerMoney"
|
|
|
|
+ number
|
|
|
|
+ size="small"
|
|
|
|
+ id="inputField"
|
|
|
|
+ min="0"
|
|
|
|
+ placeholder="注册资金"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ controls-position="right"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ @input="handleInput"
|
|
|
|
+ @change="handleCompute"
|
|
|
|
+ >
|
|
|
|
+ <template #append>万元</template>
|
|
|
|
+ </el-input>
|
|
|
|
+ <span v-else
|
|
|
|
+ >{{ rowNum(form.registerMoney) }}{{ "万元" }}
|
|
|
|
+ </span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="16">
|
|
|
|
+ <el-form-item
|
|
|
|
+ label="注册省市区:"
|
|
|
|
+ prop="provinceCode"
|
|
|
|
+ >
|
|
|
|
+ <template v-if="editStatus">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="form.provinceCode"
|
|
|
|
+ placeholder="省份"
|
|
|
|
+ style="width: 33.33%"
|
|
|
|
+ @change="handleSelectProvince"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in provinces"
|
|
|
|
+ :key="item.code"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ :value="item.code"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="form.cityCode"
|
|
|
|
+ placeholder="城市"
|
|
|
|
+ style="width: 33.33%"
|
|
|
|
+ @change="handleSelectCity"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in cities"
|
|
|
|
+ :key="item.code"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ :value="item.code"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="form.districtCode"
|
|
|
|
+ placeholder="行政区"
|
|
|
|
+ style="width: 33.33%"
|
|
|
|
+ @change="handleSelectDistrict"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in districts"
|
|
|
|
+ :key="item.code"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ :value="item.code"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <!-- <EluiChinaAreaDht v-model="area" @change="handleAreaChange" /> -->
|
|
|
|
+ </template>
|
|
|
|
+ <span v-else>{{
|
|
|
|
+ form.province +
|
|
|
|
+ (form.city ? " - " + form.city : "") +
|
|
|
|
+ (form.district ? " - " + form.district : "")
|
|
|
|
+ }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+
|
|
|
|
+ <el-col :span="16">
|
|
|
|
+ <el-form-item label="详细地址:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.address"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="详细地址:"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <div
|
|
|
|
+ v-else
|
|
|
|
+ style="
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ height: 28px;
|
|
|
|
+ line-height: normal;
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <span>{{ form.address }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="24" style="height: auto; min-height: 60px">
|
|
|
|
+ <el-form-item label="经营范围:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.businessField"
|
|
|
|
+ maxlength="200"
|
|
|
|
+ type="textarea"
|
|
|
|
+ :rows="5"
|
|
|
|
+ width="100%"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="经营范围"
|
|
|
|
+ show-word-limit
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.businessField }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <br />
|
|
|
|
+ <div id="tax-form" class="details-head">
|
|
|
|
+ <div class="title">
|
|
|
|
+ <i class="fa fa-th-list" aria-hidden="true" /> 税务信息
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <el-row :gutter="30" style="margin-top: 10px">
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="纳税性质:" prop="taxType">
|
|
|
|
+ <el-select
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model="form.taxType"
|
|
|
|
+ placeholder="请选择纳税性质"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ @change="taxTypeChange"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in taxTypes"
|
|
|
|
+ :key="item.label"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <span v-else>{{ form.taxType }} </span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col v-if="form.taxType === '个体工商户'" :span="6">
|
|
|
|
+ <el-form-item label="征收方式:" required>
|
|
|
|
+ <el-select
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model="form.collectionMethod"
|
|
|
|
+ placeholder="请选择征收方式"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in collectionMethods"
|
|
|
|
+ :key="item.label"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <span v-else>{{ form.collectionMethod }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col v-if="form.collectionMethod === '定期定额'" :span="6">
|
|
|
|
+ <el-form-item label="定额金额:" required>
|
|
|
|
+ <el-input-number
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model="form.quotaAmount"
|
|
|
|
+ placeholder="请输入定额金额"
|
|
|
|
+ :min="0"
|
|
|
|
+ :precision="2"
|
|
|
|
+ controls-position="right"
|
|
|
|
+ :controls="false"
|
|
|
|
+ size="small"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.quotationAmount }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="是否零申报:">
|
|
|
|
+ <el-select
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model="form.isZero"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in yesOrNo"
|
|
|
|
+ :key="item.label"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <span v-else>{{
|
|
|
|
+ form.isZero === 1 ? "是" : form.isZero === 0 ? "否" : ""
|
|
|
|
+ }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="主管税务机关:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.competentTaxAuthority"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="主管税务机关"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.competentTaxAuthority }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="税务专管员">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.taxCollectorName"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="税务专管员"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.taxCollectorName }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="专管员电话:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.taxCollectorPhone"
|
|
|
|
+ size="small"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="专管员电话"
|
|
|
|
+ minlength="1"
|
|
|
|
+ maxlength="11"
|
|
|
|
+ oninput="value=value.replace(/[^\d]/g, '')"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ />
|
|
|
|
+ <span v-else>{{ form.taxCollectorPhone }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="核税月份:">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model.trim="form.taxMonth"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ format="YYYY-MM"
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
+ align="center"
|
|
|
|
+ type="month"
|
|
|
|
+ placeholder="核税月份"
|
|
|
|
+ />
|
|
|
|
+ <span v-else> {{ form.taxMonth }}</span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="年收入:" prop="annualIncome">
|
|
|
|
+ <el-select
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ v-model="form.annualIncome"
|
|
|
|
+ placeholder="请选择年收入"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in incomeDefault"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <span v-else>{{ form.annualIncome }} </span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <br />
|
|
|
|
+ <div id="linkman-form" class="details-head">
|
|
|
|
+ <div class="title">
|
|
|
|
+ <i class="fa fa-th-list" aria-hidden="true" /> 联系人
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="editStatus" class="details-btns-container">
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="Plus"
|
|
|
|
+ @click="handleAddContactor"
|
|
|
|
+ >
|
|
|
|
+ 添加联系人</el-button
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <el-row :gutter="10" style="height: 200px">
|
|
|
|
+ <el-col :span="24">
|
|
|
|
+ <div class="details-body">
|
|
|
|
+ <el-table
|
|
|
|
+ ref="contactorsable"
|
|
|
|
+ :data="form.contactors"
|
|
|
|
+ size="small"
|
|
|
|
+ border
|
|
|
|
+ header-row-class-name="list-header-row"
|
|
|
|
+ max-height="200"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ type="index"
|
|
|
|
+ label="序号"
|
|
|
|
+ width="47"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column label="姓名" width="70" align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div v-if="editStatus">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="scope.row.name"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="姓名"
|
|
|
|
+ />
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else>
|
|
|
|
+ {{ scope.row.name }}
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="角色"
|
|
|
|
+ width="130"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div v-if="editStatus">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="scope.row.position"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="角色"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="(item, index) in contact_role"
|
|
|
|
+ :key="index"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.label"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else>
|
|
|
|
+ {{ scope.row.position }}
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="联系电话"
|
|
|
|
+ width="100"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div v-if="editStatus">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="scope.row.phone"
|
|
|
|
+ size="small"
|
|
|
|
+ minlength="1"
|
|
|
|
+ maxlength="11"
|
|
|
|
+ placeholder="联系电话"
|
|
|
|
+ oninput="value=value.replace(/[^\d]/g, '')"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else>{{ scope.row.phone }}</div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="主联系人"
|
|
|
|
+ width="100"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div v-if="editStatus">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="scope.row.isMain"
|
|
|
|
+ class="txtC"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="(item, index) in confirmDefaultRef"
|
|
|
|
+ :key="index"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.label"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else>
|
|
|
|
+ {{ scope.row.isMain }}
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="备注"
|
|
|
|
+ prop="remark"
|
|
|
|
+ header-align="center"
|
|
|
|
+ >
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div v-if="editStatus">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="scope.row.remark"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="备注"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else>{{ scope.row.remark }}</div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="操作" width="50" align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div>
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="editStatus"
|
|
|
|
+ size="small"
|
|
|
|
+ link
|
|
|
|
+ type="danger"
|
|
|
|
+ @click="handleDelContactor(scope.$index)"
|
|
|
|
+ >删除</el-button
|
|
|
|
+ >
|
|
|
|
+ <span v-else>-</span>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <br />
|
|
|
|
+ <div v-if="form.id" id="follow-form" class="details-head">
|
|
|
|
+ <div class="title">
|
|
|
|
+ <i class="fa fa-th-list" aria-hidden="true" /> 跟进动态
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <el-row v-if="form.id" :gutter="30" style="margin-top: 10px">
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="跟进方式:" required>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model.trim="followData.followTypeId"
|
|
|
|
+ placeholder="跟进方式"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ disabled
|
|
|
|
+
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in follow_modes"
|
|
|
|
+ :key="item.label"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="跟进类型:" required >
|
|
|
|
+ <el-select
|
|
|
|
+ v-model.trim="followData.followCategoryId"
|
|
|
|
+ placeholder="跟进类型"
|
|
|
|
+ size="small"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ disabled
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in follow_categories"
|
|
|
|
+ :key="item.label"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="跟进时间:" required>
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="followData.followDate"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ size="small"
|
|
|
|
+ format="YYYY-MM-DD HH:mm"
|
|
|
|
+ type="datetime"
|
|
|
|
+ placeholder="选择日期"
|
|
|
|
+ disabled
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="下次跟进时间">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="followData.nextFollowDate"
|
|
|
|
+ :disabled-date="nextFollowDateDisable"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ size="small"
|
|
|
|
+ format="YYYY-MM-DD HH:mm"
|
|
|
|
+ type="datetime"
|
|
|
|
+ placeholder="选择日期"
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm"
|
|
|
|
+ disabled
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="24" style="height: auto; min-height: 24px">
|
|
|
|
+ <el-form-item label="跟进内容:" required>
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="followData.content"
|
|
|
|
+ disabled
|
|
|
|
+ maxlength="200"
|
|
|
|
+ type="textarea"
|
|
|
|
+ :rows="2"
|
|
|
|
+ width="100%"
|
|
|
|
+ size="small"
|
|
|
|
+ placeholder="请填写跟进内容"
|
|
|
|
+ :clearable="true"
|
|
|
|
+ show-word-limit
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+
|
|
|
|
+ <el-col :span="24" style="padding: 15px 15px 16px 15px">
|
|
|
|
+ <div class="details-btns-container">
|
|
|
|
+ <el-form-item label="上传附件" required>
|
|
|
|
+ <el-upload
|
|
|
|
+ action="#"
|
|
|
|
+ :http-request="upload"
|
|
|
|
+ :with-credentials="true"
|
|
|
|
+ :show-file-list="false"
|
|
|
|
+ multiple
|
|
|
|
+ >
|
|
|
|
+ <!-- <el-button size="small" type="primary" icon="Upload"
|
|
|
|
+ >点击上传</el-button
|
|
|
|
+ > -->
|
|
|
|
+ </el-upload>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="details-body" style="height: 100px">
|
|
|
|
+ <el-table
|
|
|
|
+ ref="filesTable"
|
|
|
|
+ :data="fileList"
|
|
|
|
+ size="small"
|
|
|
|
+ height="100%"
|
|
|
|
+ border
|
|
|
|
+ header-row-class-name="list-header-row"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="文件名"
|
|
|
|
+ prop="fileName"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-link
|
|
|
|
+ :href="`${baseUrl}${scope.row.fileUrl}`"
|
|
|
|
+ :underline="false"
|
|
|
|
+ target="_blank"
|
|
|
|
+ type="primary"
|
|
|
|
+ >
|
|
|
|
+ {{ scope.row.fileName }}
|
|
|
|
+ </el-link>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="文件类型"
|
|
|
|
+ prop="fileType"
|
|
|
|
+ width="90"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-link :underline="false" target="_blank">
|
|
|
|
+ {{ scope.row.fileType }}
|
|
|
|
+ </el-link>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <!-- <el-table-column label="操作" width="60" align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-button
|
|
|
|
+ link
|
|
|
|
+ size="small"
|
|
|
|
+ type="danger"
|
|
|
|
+ @click="handleDelFile(scope.$index)"
|
|
|
|
+ >删除</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column> -->
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col
|
|
|
|
+ :span="24"
|
|
|
|
+ style="
|
|
|
|
+ text-align: center;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <!-- <el-button
|
|
|
|
+ size="small"
|
|
|
|
+ type="primary"
|
|
|
|
+ style="width: 160px"
|
|
|
|
+ @click="followSaveHandler"
|
|
|
|
+ >发 布</el-button
|
|
|
|
+ > -->
|
|
|
|
+ </el-col>
|
|
|
|
+ <br />
|
|
|
|
+ <el-col :span="24">
|
|
|
|
+ <br />
|
|
|
|
+ <div class="details-head">
|
|
|
|
+ <div class="title">
|
|
|
|
+ <i class="fa fa-th-list" aria-hidden="true" /> 跟进记录
|
|
|
|
+ </div>
|
|
|
|
+ <div class="details-btns-container" style="display: flex">
|
|
|
|
+ <el-switch
|
|
|
|
+ v-model="followQuery.asc"
|
|
|
|
+ style="display: inline-block height:28px; line-height:28px;"
|
|
|
|
+ active-color="#13ce66"
|
|
|
|
+ inactive-color="#ff4949"
|
|
|
|
+ active-text="正序"
|
|
|
|
+ inactive-text="倒序"
|
|
|
|
+ size="small"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="details-body" style="height: 200px">
|
|
|
|
+ <el-table
|
|
|
|
+ ref="filesTable"
|
|
|
|
+ :data="form.followDetails"
|
|
|
|
+ size="small"
|
|
|
|
+ height="100%"
|
|
|
|
+ border
|
|
|
|
+ header-row-class-name="list-header-row"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ type="index"
|
|
|
|
+ label="序号"
|
|
|
|
+ width="47"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="跟进方式"
|
|
|
|
+ prop="followMode"
|
|
|
|
+ align="center"
|
|
|
|
+ width="120"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="跟进类型"
|
|
|
|
+ prop="followCategory"
|
|
|
|
+ align="center"
|
|
|
|
+ width="120"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="跟进时间"
|
|
|
|
+ prop="followDate"
|
|
|
|
+ align="center"
|
|
|
|
+ width="140"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="跟进内容"
|
|
|
|
+ prop="content"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="下次跟进时间"
|
|
|
|
+ prop="nextFollowDate"
|
|
|
|
+ align="center"
|
|
|
|
+ width="140"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column label="操作" align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-button
|
|
|
|
+ link
|
|
|
|
+ size="small"
|
|
|
|
+ type="primary"
|
|
|
|
+ @click="handleImageView(scope.row)"
|
|
|
|
+ >查看</el-button
|
|
|
|
+ >
|
|
|
|
+ <!-- <el-button
|
|
|
|
+ link
|
|
|
|
+ size="small"
|
|
|
|
+ type="danger"
|
|
|
|
+ @click="handleDelFollow(scope.row)"
|
|
|
|
+ >删除</el-button
|
|
|
|
+ > -->
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ <br />
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-form>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-drawer>
|
|
|
|
+ <!-- 图片预览 -->
|
|
|
|
+ <el-image-viewer
|
|
|
|
+ v-if="showViewer"
|
|
|
|
+ :url-list="currentFileList"
|
|
|
|
+ @close="closeImages"
|
|
|
|
+ :initial-index="showIndex"
|
|
|
|
+ />
|
|
|
|
+ <fileDialog ref="fileDialogRef" />
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+<script setup>
|
|
|
|
+import { getToken } from "@/utils/auth";
|
|
|
|
+import { EluiChinaAreaDht } from "elui-china-area-dht";
|
|
|
|
+import {
|
|
|
|
+ addFollow,
|
|
|
|
+ listFollow,
|
|
|
|
+ delFollow,
|
|
|
|
+} from "@/api/business/crm/companyFollowDetail";
|
|
|
|
+import { regionData, codeToText } from "element-china-area-data";
|
|
|
|
+import CustomerFormCom from "@/components/CustomerFormCom";
|
|
|
|
+import fileDialog from "@/views/dialog/fileDialog.vue";
|
|
|
|
+import {
|
|
|
|
+ getCompany,
|
|
|
|
+ addCompany,
|
|
|
|
+ updateCompany,
|
|
|
|
+} from "@/api/business/crm/company";
|
|
|
|
+import useUserStore from "@/store/modules/user";
|
|
|
|
+import { listSource } from "@/api/settings/source";
|
|
|
|
+import { deepClone } from "@/utils";
|
|
|
|
+import { rowNum } from "@/utils/index";
|
|
|
|
+import { uploadFile } from "@/api/tool/file";
|
|
|
|
+import { ref } from "vue";
|
|
|
|
+import {
|
|
|
|
+ incomeDefault,
|
|
|
|
+ taxTypes,
|
|
|
|
+ confirmDefault,
|
|
|
|
+ collectionMethods,
|
|
|
|
+ yesOrNo,
|
|
|
|
+} from "@/utils/default";
|
|
|
|
+const { proxy } = getCurrentInstance();
|
|
|
|
+/** 父组件传参 */
|
|
|
|
+const props = defineProps({
|
|
|
|
+ getList: {
|
|
|
|
+ type: Function,
|
|
|
|
+ default: () => {},
|
|
|
|
+ },
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+const registerMoneyUnits = ref([]);
|
|
|
|
+const mainBusinesses = ref([]);
|
|
|
|
+const taxDishes = ref([]);
|
|
|
|
+const { getList } = toRefs(props);
|
|
|
|
+const options = ref([]);
|
|
|
|
+/** 字典数组区 */
|
|
|
|
+const { develop_type } = proxy.useDict("develop_type");
|
|
|
|
+const { follow_categories } = proxy.useDict("follow_categories");
|
|
|
|
+const { contact_role } = proxy.useDict("contact_role");
|
|
|
|
+const { follow_modes } = proxy.useDict("follow_modes");
|
|
|
|
+const confirmDefaultRef = ref(confirmDefault);
|
|
|
|
+import { listLableNoPage } from "@/api/business/lable";
|
|
|
|
+const CustomerFormComRef = ref(null);
|
|
|
|
+/** 表单抽屉 页变量 */
|
|
|
|
+const title = ref("");
|
|
|
|
+const loading = ref(false);
|
|
|
|
+const multiple = ref(true);
|
|
|
|
+const visible = ref(false);
|
|
|
|
+const editStatus = ref(false);
|
|
|
|
+const isFullscreen = ref(false);
|
|
|
|
+const addDetailNum = ref(1);
|
|
|
|
+const currentMember = {};
|
|
|
|
+const provinces = ref(proxy.region.getProvinces());
|
|
|
|
+provinces.value.unshift({ code: "", name: "全部" });
|
|
|
|
+const cities = ref([]);
|
|
|
|
+const fileDialogRef = ref(null);
|
|
|
|
+
|
|
|
|
+const districts = ref([]);
|
|
|
|
+const sourceCategories = ref([]);
|
|
|
|
+const area = ref([]);
|
|
|
|
+const fileList = ref([]);
|
|
|
|
+const PermanentlyEffective = ref(false);
|
|
|
|
+const showViewer = ref(false);
|
|
|
|
+const currentFileList = ref([]);
|
|
|
|
+const showIndex = ref(0);
|
|
|
|
+const types = ref([]);
|
|
|
|
+const taxDeclarationCategories = ref([]);
|
|
|
|
+
|
|
|
|
+const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
|
|
|
|
+
|
|
|
|
+const webHost = import.meta.env.VITE_APP_BASE_API;
|
|
|
|
+const setHeaders = {
|
|
|
|
+ Authorization: getToken(),
|
|
|
|
+};
|
|
|
|
+const data = reactive({
|
|
|
|
+ form: {},
|
|
|
|
+ followData: {},
|
|
|
|
+ followQuery: {
|
|
|
|
+ isAsc: "asc",
|
|
|
|
+ },
|
|
|
|
+ rules: {
|
|
|
|
+ name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
|
|
|
|
+ // socialCreditCode: [
|
|
|
|
+ // { max: 18, min: 18, message: "税号为18位", trigger: "blur" },
|
|
|
|
+ // ],
|
|
|
|
+ // provinceCode: [{ validator: areaValidator, trigger: "blur" }],
|
|
|
|
+ taxType: [{ require: true, message: "纳税性质不能为空", trigger: "blur" }],
|
|
|
|
+ sourceCategoryName: [
|
|
|
|
+ { validator: sourceValidator, trigger: "change" },
|
|
|
|
+ { required: true, message: "客户来源不能为空", trigger: "change" },
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+const { form, rules, followData, followQuery } = toRefs(data);
|
|
|
|
+
|
|
|
|
+watch(
|
|
|
|
+ followQuery,
|
|
|
|
+ () => {
|
|
|
|
+ if (followQuery.value.asc) {
|
|
|
|
+ followQuery.value.isAsc = "asc";
|
|
|
|
+ } else {
|
|
|
|
+ followQuery.value.isAsc = "desc";
|
|
|
|
+ }
|
|
|
|
+ loadFollow();
|
|
|
|
+ },
|
|
|
|
+ { deep: true }
|
|
|
|
+);
|
|
|
|
+
|
|
|
|
+const contactorEmptyData = {
|
|
|
|
+ id: null,
|
|
|
|
+ name: "",
|
|
|
|
+ position: "",
|
|
|
|
+ gender: "男",
|
|
|
|
+ phone: "",
|
|
|
|
+ email: "",
|
|
|
|
+ isMain: "是",
|
|
|
|
+ remark: "",
|
|
|
|
+};
|
|
|
|
+const companyEmptyData = {
|
|
|
|
+ id: null,
|
|
|
|
+ code: "",
|
|
|
|
+ name: "",
|
|
|
|
+ oldName: "",
|
|
|
|
+ shortName: "",
|
|
|
|
+ ownerId: "",
|
|
|
|
+ ownerName: "",
|
|
|
|
+ sourceCategoryId: "",
|
|
|
|
+ sourceCategoryName: "",
|
|
|
|
+ sourceId: "",
|
|
|
|
+ sourceName: "",
|
|
|
|
+ stageId: "",
|
|
|
|
+ stageName: "",
|
|
|
|
+ phone: "",
|
|
|
|
+ email: "",
|
|
|
|
+ contactAddress: "",
|
|
|
|
+ remark: "",
|
|
|
|
+ socialCreditCode: "",
|
|
|
|
+ mainBusinessId: "",
|
|
|
|
+ mainBusinessName: "",
|
|
|
|
+ typeId: "",
|
|
|
|
+ typeName: "",
|
|
|
|
+ legalRepresentative: "",
|
|
|
|
+ foundationDate: "",
|
|
|
|
+ licenceDate: "",
|
|
|
|
+ businessStartDate: "",
|
|
|
|
+ collectionMethod: "",
|
|
|
|
+ businessEndDate: "",
|
|
|
|
+ isPermanentlyEffective: "",
|
|
|
|
+ registerMoney: "",
|
|
|
|
+ registerMoneyUnitId: "",
|
|
|
|
+ registerMoneyUnitName: "",
|
|
|
|
+ provinceCode: "",
|
|
|
|
+ province: "",
|
|
|
|
+ cityCode: "",
|
|
|
|
+ city: "",
|
|
|
|
+ districtCode: "",
|
|
|
|
+ district: "",
|
|
|
|
+ address: "",
|
|
|
|
+ businessField: "",
|
|
|
|
+ taxTypeId: "",
|
|
|
|
+ taxTypeName: "",
|
|
|
|
+ taxDeclarationCategoryId: "",
|
|
|
|
+ taxDeclarationCategoryName: "",
|
|
|
|
+ isZero: "",
|
|
|
|
+ taxDishId: "",
|
|
|
|
+ taxDishName: "",
|
|
|
|
+ competentTaxAuthority: "",
|
|
|
|
+ annualIncome: "",
|
|
|
|
+ taxType: "",
|
|
|
|
+ taxCollectorName: "",
|
|
|
|
+ taxCollectorPhone: "",
|
|
|
|
+ taxMonth: "",
|
|
|
|
+ openingBank: "",
|
|
|
|
+ bankAccount: "",
|
|
|
|
+ companyTags: [],
|
|
|
|
+ companyTagIds: [],
|
|
|
|
+ contactors: [],
|
|
|
|
+ serviceTeams: [],
|
|
|
|
+ companyFiles: [],
|
|
|
|
+ stores: [],
|
|
|
|
+ creatorId: useUserStore().user.id,
|
|
|
|
+};
|
|
|
|
+const queryRadio = ref("base-form");
|
|
|
|
+const defaultIsZero = ref(0);
|
|
|
|
+/*********************** 表单页方法 ****************************/
|
|
|
|
+
|
|
|
|
+function sourceValidator(rule, value, callback) {
|
|
|
|
+ if (form.value.sourceCategoryName === "") {
|
|
|
|
+ callback(new Error("来源类型不能为空"));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (
|
|
|
|
+ form.value.referrerDataSource !== "" &&
|
|
|
|
+ form.value.referrerDataSource != null &&
|
|
|
|
+ (form.value.sourceName === "" || form.value.sourceName == null)
|
|
|
|
+ ) {
|
|
|
|
+ callback(new Error("来源不能为空"));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ return callback();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 抽屉打开 */
|
|
|
|
+function open(id, position) {
|
|
|
|
+ reset();
|
|
|
|
+ visible.value = true;
|
|
|
|
+
|
|
|
|
+ if (id) {
|
|
|
|
+ getCompany(id).then((response) => {
|
|
|
|
+ form.value = response.data;
|
|
|
|
+ defaultIsZero.value = Number(response.data.isZero);
|
|
|
|
+ initRegion();
|
|
|
|
+ editStatus.value = false;
|
|
|
|
+ title.value = "修改客户";
|
|
|
|
+
|
|
|
|
+ nextTick((_) => {
|
|
|
|
+ if (position) {
|
|
|
|
+ scrollTargetTo(position);
|
|
|
|
+ } else {
|
|
|
|
+ scrollTargetTo("base-form");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ editStatus.value = true;
|
|
|
|
+ title.value = "添加客户";
|
|
|
|
+ }
|
|
|
|
+ getOption()
|
|
|
|
+ console.log("字典", contact_role.value);
|
|
|
|
+}
|
|
|
|
+function getOption(){
|
|
|
|
+ listLableNoPage().then(res =>{
|
|
|
|
+ options.value = res.data
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+const selectedOptionLabel = computed(() => {
|
|
|
|
+ const selectedOption = options.value.find(option => option.id === form.value.customerLabelId);
|
|
|
|
+ return selectedOption ? selectedOption.lable : '';
|
|
|
|
+ });
|
|
|
|
+/** 注册资金限制 */
|
|
|
|
+function handleInput(event) {
|
|
|
|
+ if (event) {
|
|
|
|
+ var str = event;
|
|
|
|
+ var len1 = str.substr(0, 1);
|
|
|
|
+ var len2 = str.substr(1, 1);
|
|
|
|
+ //如果第一位是0,第二位不是点,就用数字把点替换掉
|
|
|
|
+ if (str.length > 1 && len1 == 0 && len2 != ".") {
|
|
|
|
+ str = str.substr(1, 1);
|
|
|
|
+ }
|
|
|
|
+ //第一位不能是.
|
|
|
|
+ if (len1 == ".") {
|
|
|
|
+ str = "";
|
|
|
|
+ }
|
|
|
|
+ //限制只能输入一个小数点
|
|
|
|
+ if (str.indexOf(".") != -1) {
|
|
|
|
+ var str_ = str.substr(str.indexOf(".") + 1);
|
|
|
|
+ if (str_.indexOf(".") != -1) {
|
|
|
|
+ str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //正则替换,保留数字和小数点
|
|
|
|
+ str = str.replace(/[^\d^\.]+/g, "");
|
|
|
|
+ form.value.registerMoney = str;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 注册资金计算保留两位小数 */
|
|
|
|
+function handleCompute() {
|
|
|
|
+ form.value.registerMoney = Math.round(form.value.registerMoney * 100) / 100;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function init() {
|
|
|
|
+ listSource()
|
|
|
|
+ .then((res) => {
|
|
|
|
+ sourceCategories.value = res.rows;
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ console.log(err);
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 取消按钮 */
|
|
|
|
+function cancel() {
|
|
|
|
+ visible.value = false;
|
|
|
|
+ reset();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 表单重置 */
|
|
|
|
+function reset() {
|
|
|
|
+ form.value = deepClone(companyEmptyData);
|
|
|
|
+ if (CustomerFormComRef.value) CustomerFormComRef.value.reset();
|
|
|
|
+ followData.value = {};
|
|
|
|
+ proxy.resetForm("companyRef");
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 上传后方法处理 */
|
|
|
|
+function uploadSuccess(res) {
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
+ const newAttach = {
|
|
|
|
+ name: res.data.name,
|
|
|
|
+ url: res.data.url,
|
|
|
|
+ };
|
|
|
|
+ form.value.attaches.push(newAttach);
|
|
|
|
+ } else {
|
|
|
|
+ proxy.$modal.msgError("上传失败" + res.msg);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleDownLoad(url) {
|
|
|
|
+ window.open(webHost + url);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 全屏缩放
|
|
|
|
+function handleScreen() {
|
|
|
|
+ const dom = document.querySelector(
|
|
|
|
+ ".list-container > .el-drawer__wrapper > .el-overlay"
|
|
|
|
+ );
|
|
|
|
+ isFullscreen.value = !isFullscreen.value;
|
|
|
|
+ dom.style.position = isFullscreen.value ? "fixed" : "absolute";
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function getForm() {
|
|
|
|
+ loading.value = true;
|
|
|
|
+ getCompany(form.value.id).then((response) => {
|
|
|
|
+ reset();
|
|
|
|
+ loading.value = false;
|
|
|
|
+ form.value = response.data;
|
|
|
|
+ PermanentlyEffective.value = form.value.isPermanentlyEffective == 1;
|
|
|
|
+ // CustomerFormCom.value.setForm(form.value);
|
|
|
|
+ console.log("刷新表单", form.value);
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function checkZero() {
|
|
|
|
+ if (defaultIsZero.value === 1) {
|
|
|
|
+ return true;
|
|
|
|
+ } else if (
|
|
|
|
+ defaultIsZero.value != form.value.isZero &&
|
|
|
|
+ form.value.isZero === 1
|
|
|
|
+ ) {
|
|
|
|
+ proxy.$modal.msgError("不可将非零申报客户改为零申报");
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+ } else {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 提交保存 */
|
|
|
|
+function submitForm() {
|
|
|
|
+ console.log("提交表单", form.value);
|
|
|
|
+ form.value.isPermanentlyEffective = PermanentlyEffective.value ? 1 : 0;
|
|
|
|
+ proxy.$refs["companyRef"].validate((valid) => {
|
|
|
|
+ if (valid && validDetails() && checkZero()) {
|
|
|
|
+ if (form.value.id) {
|
|
|
|
+ updateCompany(form.value).then((response) => {
|
|
|
|
+ proxy.$modal.msgSuccess("保存成功!");
|
|
|
|
+ editStatus.value = false;
|
|
|
|
+ form.value = response.data;
|
|
|
|
+ defaultIsZero.value = Number(response.data.isZero);
|
|
|
|
+ getList.value();
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ addCompany(form.value).then((res) => {
|
|
|
|
+ proxy.$modal.msgSuccess("保存成功!");
|
|
|
|
+ editStatus.value = false;
|
|
|
|
+ form.value = response.data;
|
|
|
|
+ defaultIsZero.value = Number(response.data.isZero);
|
|
|
|
+ getList.value();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 添加从表 */
|
|
|
|
+function handleAdd() {
|
|
|
|
+ for (var i = 0; i < addDetailNum.value; i++) {
|
|
|
|
+ form.value.members.push({});
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 删除从表 */
|
|
|
|
+function handleDel(index) {
|
|
|
|
+ proxy.$modal
|
|
|
|
+ .confirm("确定删除?")
|
|
|
|
+ .then(() => {
|
|
|
|
+ form.value.members.splice(index, 1);
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ proxy.$modal.msg("已取消删除");
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleDelAttach(index) {
|
|
|
|
+ proxy.$modal
|
|
|
|
+ .confirm("确定删除?")
|
|
|
|
+ .then(() => {
|
|
|
|
+ form.value.attaches.splice(index, 1);
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ proxy.$modal.msg("已取消删除");
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 单选添加 */
|
|
|
|
+function handleDialogOpen(person) {
|
|
|
|
+ multiple.value = false;
|
|
|
|
+ currentMember.value = person;
|
|
|
|
+ proxy.$refs.personRef.open();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 多选添加 */
|
|
|
|
+function handleAddBatch() {
|
|
|
|
+ multiple.value = true;
|
|
|
|
+ proxy.$refs.personRef.open();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleSingleSelected(person) {
|
|
|
|
+ if (
|
|
|
|
+ form.value.members.findIndex((item) => item.personId === person.id) === -1
|
|
|
|
+ ) {
|
|
|
|
+ currentMember.value.personId = person.id;
|
|
|
|
+ currentMember.value.name = person.name;
|
|
|
|
+ currentMember.value.code = person.code;
|
|
|
|
+ currentMember.value.gender = person.gender;
|
|
|
|
+ currentMember.value.age = person.age;
|
|
|
|
+ currentMember.value.phone = person.phone;
|
|
|
|
+ } else {
|
|
|
|
+ proxy.$modal.msgError(person.name + "已存在,请勿重复添加!");
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleMultipleSelected(selection) {
|
|
|
|
+ for (var i = 0; i < selection.length; ++i) {
|
|
|
|
+ const newPerson = {};
|
|
|
|
+ if (
|
|
|
|
+ form.value.members.findIndex(
|
|
|
|
+ (item) => item.personId === selection[i].id
|
|
|
|
+ ) === -1
|
|
|
|
+ ) {
|
|
|
|
+ newPerson.personId = selection[i].id;
|
|
|
|
+ newPerson.name = selection[i].name;
|
|
|
|
+ newPerson.code = selection[i].code;
|
|
|
|
+ newPerson.gender = selection[i].gender;
|
|
|
|
+ newPerson.age = selection[i].age;
|
|
|
|
+ newPerson.phone = selection[i].phone;
|
|
|
|
+ form.value.members.push(newPerson);
|
|
|
|
+ } else {
|
|
|
|
+ proxy.$modal.msgError(selection[i].name + "已存在,请勿重复添加!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function scrollTargetTo(target) {
|
|
|
|
+ const targetElement = document.getElementById(target);
|
|
|
|
+ if (targetElement) {
|
|
|
|
+ targetElement.scrollIntoView();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+async function followSaveHandler() {
|
|
|
|
+ if (
|
|
|
|
+ followData.value.followTypeId === null ||
|
|
|
|
+ followData.value.followTypeId === "0"
|
|
|
|
+ ) {
|
|
|
|
+ proxy.$modal.msgWarning("请选择跟进方式");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (
|
|
|
|
+ followData.value.followCategoryId === null ||
|
|
|
|
+ followData.value.followCategoryId === "0"
|
|
|
|
+ ) {
|
|
|
|
+ proxy.$modal.msgWarning("请选择跟进类型");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (followData.value.content == null || followData.value.content === "") {
|
|
|
|
+ proxy.$modal.msgWarning("请输入跟进内容");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ followData.value.companyId = form.value.id;
|
|
|
|
+ followData.value.files = fileList.value;
|
|
|
|
+ const res = await addFollow(followData.value);
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
+ editStatus.value = false;
|
|
|
|
+ getForm(form.value.id);
|
|
|
|
+ getList.value();
|
|
|
|
+ followData.value = {};
|
|
|
|
+ fileList.value = [];
|
|
|
|
+ proxy.$modal.msgSuccess("发布成功");
|
|
|
|
+ } else {
|
|
|
|
+ proxy.$modal.msgError(res.message);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleAddContactor() {
|
|
|
|
+ const contactor = JSON.parse(JSON.stringify(contactorEmptyData));
|
|
|
|
+ form.value.contactors.push(contactor);
|
|
|
|
+ return;
|
|
|
|
+}
|
|
|
|
+// function areaValidator(rule, value, callback) {
|
|
|
|
+// console.log("省份验证");
|
|
|
|
+// if (form.value.provinceCode === "") {
|
|
|
|
+// callback(new Error("省份不能为空"));
|
|
|
|
+// return;
|
|
|
|
+// }
|
|
|
|
+// if (form.value.cityCode === "") {
|
|
|
|
+// callback(new Error("城市不能为空"));
|
|
|
|
+// return;
|
|
|
|
+// }
|
|
|
|
+// if (form.value.districtCode === "") {
|
|
|
|
+// callback(new Error("行政区不能为空"));
|
|
|
|
+// return;
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// return callback();
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+function handleSelectProvince() {
|
|
|
|
+ const _provinceCode = form.value.provinceCode;
|
|
|
|
+ const _province = provinces.value.find(function (item) {
|
|
|
|
+ return item.code === _provinceCode;
|
|
|
|
+ });
|
|
|
|
+ form.value.province = _province.name;
|
|
|
|
+ cities.value = proxy.region.getCities(_provinceCode);
|
|
|
|
+ if (cities.value.length === 0) {
|
|
|
|
+ // 清空城市数据
|
|
|
|
+ form.value.cityCode = "";
|
|
|
|
+ form.value.city = "";
|
|
|
|
+ cities.value = [{ code: "", name: "全部" }];
|
|
|
|
+ // 清空行政区数据
|
|
|
|
+ form.value.districtCode = "";
|
|
|
|
+ form.value.district = "";
|
|
|
|
+ districts.value = [];
|
|
|
|
+ } else {
|
|
|
|
+ cities.value.unshift({ code: "", name: "全部" });
|
|
|
|
+ form.value.cityCode = cities.value[0].code;
|
|
|
|
+ form.value.city = cities.value[0].name;
|
|
|
|
+ handleSelectCity();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleSelectCity() {
|
|
|
|
+ console.log("市");
|
|
|
|
+ const _cityCode = form.value.cityCode;
|
|
|
|
+ const _city = cities.value.find(function (item) {
|
|
|
|
+ return item.code === _cityCode;
|
|
|
|
+ });
|
|
|
|
+ form.value.city = _city.name;
|
|
|
|
+ districts.value = proxy.region.getDistricts(_cityCode);
|
|
|
|
+ if (districts.value.length === 0) {
|
|
|
|
+ // 清空行政区数据
|
|
|
|
+ form.value.districtCode = "";
|
|
|
|
+ form.value.district = "";
|
|
|
|
+ districts.value = [{ code: "", name: "全部" }];
|
|
|
|
+ } else {
|
|
|
|
+ districts.value.unshift({ code: "", name: "全部" });
|
|
|
|
+ form.value.districtCode = districts.value[0].code;
|
|
|
|
+ form.value.district = districts.value[0].name;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleSelectDistrict() {
|
|
|
|
+ console.log("区");
|
|
|
|
+ const _districtCode = form.value.districtCode;
|
|
|
|
+ const _district = districts.value.find(function (item) {
|
|
|
|
+ return item.code === _districtCode;
|
|
|
|
+ });
|
|
|
|
+ form.value.district = _district.name;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function validDetails() {
|
|
|
|
+ const contactors = form.value.contactors;
|
|
|
|
+ if (contactors.length === 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ form.value.contactors.forEach(function (val, index) {
|
|
|
|
+ if (val.name === "") {
|
|
|
|
+ proxy.$modal.msgError(`第 ${index + 1} 行联系人的姓名不能为空`);
|
|
|
|
+ _isNull = true;
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+ } else if (val.position === "") {
|
|
|
|
+ proxy.$modal.msgError(`第 ${index + 1} 行联系人的角色不能为空`);
|
|
|
|
+ _isNull = true;
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleDelContactor(index) {
|
|
|
|
+ proxy.$modal.confirm("是否确认删除选中的数据项?").then(() => {
|
|
|
|
+ form.value.contactors.splice(index, 1);
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleAreaChange(arg) {
|
|
|
|
+ if (arg != null && arg.length === 3) {
|
|
|
|
+ form.value.provinceCode = arg[0];
|
|
|
|
+ form.value.cityCode = arg[1];
|
|
|
|
+ form.value.districtCode = arg[2];
|
|
|
|
+
|
|
|
|
+ form.value.province = codeToText[arg[0]];
|
|
|
|
+ form.value.city = codeToText[arg[1]];
|
|
|
|
+ form.value.district = codeToText[arg[2]];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function upload(param) {
|
|
|
|
+ const formData = new FormData();
|
|
|
|
+ formData.append("file", param.file);
|
|
|
|
+ uploadFile(formData).then((res) => {
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
+ const file = {};
|
|
|
|
+ file.fileName = res.newFileName;
|
|
|
|
+ file.fileType =
|
|
|
|
+ res.newFileName.split(".")[res.newFileName.split(".").length - 1];
|
|
|
|
+ file.url = res.url;
|
|
|
|
+ file.originalFileName = res.originalFilename;
|
|
|
|
+ file.fileUrl = res.fileName;
|
|
|
|
+ fileList.value.push(file);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function uploadFollowRemove(index) {
|
|
|
|
+ fileList.value.splice(index, 1);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function openFollowFile(arg) {
|
|
|
|
+ const attach = arg;
|
|
|
|
+ window.open(`${arg.url}`, arg.fileName);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function nextFollowDateDisable(date) {
|
|
|
|
+ const follow = proxy.moment(followData.value.followDate);
|
|
|
|
+ if (proxy.moment(date).isBefore(follow)) {
|
|
|
|
+ return true;
|
|
|
|
+ } else return false;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function loadFollow() {
|
|
|
|
+ followQuery.value.companyId = form.value.id;
|
|
|
|
+ listFollow(followQuery.value).then((res) => {
|
|
|
|
+ form.value.followDetails = res.rows;
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleDelFollow(row) {
|
|
|
|
+ const _ids = row.id;
|
|
|
|
+ proxy.$modal
|
|
|
|
+ .confirm("是否确认删除选中的数据项?")
|
|
|
|
+ .then(function () {
|
|
|
|
+ return delFollow(_ids);
|
|
|
|
+ })
|
|
|
|
+ .then(() => {
|
|
|
|
+ loadFollow();
|
|
|
|
+ proxy.$modal.msgSuccess("删除成功!");
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {});
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 查看按钮事件 */
|
|
|
|
+function handleImageView(row) {
|
|
|
|
+ // let imgUrl = [];
|
|
|
|
+ // let txtUrl = [];
|
|
|
|
+ // row.files.forEach((l) => {
|
|
|
|
+ // var res = l.fileUrl.split(".")[l.fileUrl.split(".").length - 1];
|
|
|
|
+ // if (
|
|
|
|
+ // res === "jpg" ||
|
|
|
|
+ // res === "png" ||
|
|
|
|
+ // res === "psd" ||
|
|
|
|
+ // res === "pdf" ||
|
|
|
|
+ // res === "gif" ||
|
|
|
|
+ // res === "bmp"
|
|
|
|
+ // ) {
|
|
|
|
+ // imgUrl.push(`${baseUrl.value}${l.fileUrl}`);
|
|
|
|
+ // } else {
|
|
|
|
+ // txtUrl.push(`${baseUrl.value}${l.fileUrl}`);
|
|
|
|
+ // }
|
|
|
|
+ // });
|
|
|
|
+ // if (imgUrl.length > 0) {
|
|
|
|
+ // currentFileList.value = imgUrl;
|
|
|
|
+ // showViewer.value = true;
|
|
|
|
+ // }
|
|
|
|
+ // if (txtUrl.length > 0) {
|
|
|
|
+ // txtUrl.forEach((l) => {
|
|
|
|
+ // downloadFile(l);
|
|
|
|
+ // });
|
|
|
|
+ // }
|
|
|
|
+ fileDialogRef.value.open({
|
|
|
|
+ masterTableName: "biz_company_follow_detail",
|
|
|
|
+ masterId: row.id,
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/** 下载事件 */
|
|
|
|
+function downloadFile(url) {
|
|
|
|
+ const iframe = document.createElement("iframe");
|
|
|
|
+ iframe.style.display = "none"; // 防止影响页面
|
|
|
|
+ iframe.style.height = 0; // 防止影响页面
|
|
|
|
+ iframe.src = url;
|
|
|
|
+ document.body.appendChild(iframe); // 这一行必须,iframe挂在到dom树上才会发请求
|
|
|
|
+ // 5分钟之后删除
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ iframe.remove();
|
|
|
|
+ }, 5 * 60 * 1000);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function closeImages() {
|
|
|
|
+ showViewer.value = false;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function taxTypeChange(item) {
|
|
|
|
+ if (item !== "个体工商户") {
|
|
|
|
+ form.value.collectionMethod = "";
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function initRegion() {
|
|
|
|
+ console.log("省市区", form.value);
|
|
|
|
+ cities.value = proxy.region.getCities(form.value.provinceCode);
|
|
|
|
+ cities.value.unshift({ code: "", name: "全部" });
|
|
|
|
+ districts.value = proxy.region.getDistricts(form.value.cityCode);
|
|
|
|
+ districts.value.unshift({ code: "", name: "全部" });
|
|
|
|
+ console.log("省市区", cities.value, districts.value);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleDelFile(index) {
|
|
|
|
+ proxy.$modal
|
|
|
|
+ .confirm("是否确认删除选中的数据项?")
|
|
|
|
+ .then(function () {
|
|
|
|
+ fileList.value.splice(index, 1);
|
|
|
|
+ })
|
|
|
|
+ .then(() => {
|
|
|
|
+ proxy.$modal.msgSuccess("删除成功!");
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {});
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+init();
|
|
|
|
+// 暴露给父组件的方法
|
|
|
|
+defineExpose({
|
|
|
|
+ open,
|
|
|
|
+});
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style>
|
|
|
|
+.radio-scroll .el-radio-button__orig-radio:checked + .el-radio-button__inner {
|
|
|
|
+ color: rgb(64, 158, 255);
|
|
|
|
+ background-color: rgba(0, 0, 0, 0);
|
|
|
|
+ border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgb(64, 158, 255)
|
|
|
|
+ rgba(0, 0, 0, 0);
|
|
|
|
+ border-style: none none solid none;
|
|
|
|
+ border-width: 0 0 3px 0;
|
|
|
|
+ box-shadow: none;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.radio-scroll .el-radio-button__inner {
|
|
|
|
+ border: none;
|
|
|
|
+ background-color: rgba(0, 0, 0, 0);
|
|
|
|
+ border-color: rgba(0, 0, 0, 0);
|
|
|
|
+ border-style: none none solid none;
|
|
|
|
+ border-width: 0 0 3px 0;
|
|
|
|
+ box-shadow: none;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.radio-scroll .el-radio-button:first-child .el-radio-button__inner {
|
|
|
|
+ border-left: none;
|
|
|
|
+ border-radius: 0 0 0 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.radio-scroll .el-radio-button:last-child .el-radio-button__inner {
|
|
|
|
+ border-radius: 0 0 0 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* .company-list .detail-head {
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
+} */
|
|
|
|
+</style>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+var inputField = document.getElementById("inputField");
|
|
|
|
+if (inputField) {
|
|
|
|
+ console.log("事件监听");
|
|
|
|
+ inputField.addEventListener("input", function () {});
|
|
|
|
+}
|
|
|
|
+</script>
|