yujinwen 3 mēneši atpakaļ
vecāks
revīzija
35d697be7b

+ 11 - 0
src/api/api.js

@@ -0,0 +1,11 @@
+//crm
+import { customInterence } from './modules/crmApi';
+//商家管理
+import {businessCustomInterence} from './modules/businessCustom'
+// 路演权限
+import { roadshowInterence } from './modules/roadshowApi'
+export {
+    customInterence,
+    businessCustomInterence,
+    roadshowInterence
+}

+ 164 - 0
src/api/modules/businessCustom.js

@@ -0,0 +1,164 @@
+/**
+ * 商家管理api
+ */
+import {get,post} from '@/api/index'
+
+export const businessCustomInterence = {
+    /**
+     * 获取商家列表
+     * @param Keyword String关键字
+     * @param SellerIds String 销售ID(多选),英文逗号拼接
+     * @param SigningStatus Integer 签约状态: 1-首次签约; 2-续约中; 3-已终止
+     * @param Province String 省份(多选),英文逗号拼接
+     * @param City String 城市(多选),英文逗号拼接
+     * @param SortParam Integer 排序字段: 1-签约时间; 2-到期时间; 3-创建时间; 4-用户上限
+     * @param SortType Integer 排序类型: 1-正序; 2-倒序
+     * @param PageSize Integer 每页数据量
+     * @param CurrentIndex Integer 页码
+     * @returns 
+     */
+    getBusinessList:(params)=>{
+        return get('/eta_business/page_list',params)
+    },
+    // 商家列表 (不分页)
+    bussinessListAll:params=>{
+        return get('/eta_business/list',params)
+    },
+    /**
+     * 获取商家签约列表
+     * @param EtaBusinessId Integer 商家ID
+     */
+    getContractList:(params)=>{
+        return get('/eta_business/contract_list',params)
+    },
+    /**
+     * 获取操作日志列表
+     * @param EtaBusinessId Integer 商家ID
+     */
+    getTimeLineList:(params)=>{
+        return get('/eta_business/operate_record_list',params)
+    },
+    /**
+     * 获取商家详情
+     * @param EtaBusinessId Integer 商家ID
+     */
+    getBusinessDetail:(params)=>{
+        return get('/eta_business/detail',params)
+    },
+    /**
+     * 添加续约
+     * @param EtaBusinessId Integer 商家ID
+     * @param SigningTime String 签约时间
+     * @param ExpiredTime String 到期时间
+     * @returns 
+     */
+    addNewContract:(params)=>{
+        return post('/eta_business/signing',params)
+    },
+    /** 
+     * 编辑续约
+     * @param EtaBusinessId Integer 商家ID
+     * @param EtaBusinessContractId Integer 商家合约ID
+     * @param SigningTime String 签约时间
+     * @param ExpiredTime String 到期时间
+     * @returns 
+    */
+    editContract:(params)=>{
+        return post('/eta_business/edit_sign',params)
+    },
+    /**
+     * 删除续约信息
+     * @param EtaBusinessContractId Integer 商家合约ID
+     * @returns 
+     */
+    removeContract:(params)=>{
+        return post('/eta_business/remove_sign',params)
+    },
+    /**
+     * 修改销售
+     * @param EtaBusinessId Integer 商家ID
+     * @param SellerId Integer 销售ID
+     * @param SellerName String 销售名称
+     */
+    changeBusinessSeller:(params)=>{
+        return post('/eta_business/move_seller',params)
+    },
+    /**
+     * 启用禁用商家
+     * @param EtaBusinessId Integer 商家ID
+     */
+    changeBusinessStatus:(params)=>{
+        return post('/eta_business/enable',params)
+    },
+    /**
+     * 编辑商家
+     * @param EtaBusinessId Integer 商家ID
+     * @param Province String 省份
+     * @param City String 城市
+     * @param Leader String 决策人姓名
+     * @param IndustryId Integer 行业ID
+     * @param IndustryName String 行业名称
+     * @param CapitalScale String 资金规模
+     * @param ResearchTeamSize String 研究团队规模
+     * @param UserMax Integer 用户上限
+     */
+    editBusiness:(params)=>{
+        return post('/eta_business/edit',params)
+    },
+    /**
+     * 添加商家
+     * @param BusinessName String 商家名称
+     * @param CreditCode String 社会信用码
+     * @param RegionType String 所属区域:国内;海外
+     * @param Province String 省份
+     * @param City String 城市
+     * @param SellerId Integer 销售ID
+     * @param SellerName String 销售姓名
+     * @param Leader String 决策人姓名
+     * @param IndustryId Integer 行业ID
+     * @param IndustryName String 行业名称
+     * @param CapitalScale String 资金规模
+     * @param ResearchTeamSize String 研究团队规模
+     * @param UserMax Integer 用户上限
+     * @param SigningTime String 签约时间(IsCheck为false时必填)
+     * @param ExpiredTime String 到期时间(IsCheck为false时必填)
+     * @param IsCheck Boolean 是否仅校验,为true时校验参数但不实际新增
+     * @returns 
+     */
+    addBusiness:(params)=>{
+        return post('/eta_business/add',params)
+    },
+    /**
+     * 获取商家权限详情
+     * @param EtaBusinessId 商家ID
+     * @returns
+     */
+    getAuthList:(params)=>{
+        return get('/eta_business/menu/list',params)
+    },
+    /**
+     * 设置商家权限
+     * @param EtaBusinessId 商家ID
+     * @param MenuIds 权限的ID列表
+     * @returns 
+     */
+    setAuthList:(params)=>{
+        return post('/eta_business/menu/relate/save',params)
+    },
+    /**
+     * 获取商家接口权限
+     * @returns 
+     */
+    getConfigList:(params)=>{
+        return get('/eta_business/api/config/list',params)
+    },
+    /**
+     * 设置商家接口权限
+     * @param EtaBusinessId 商家ID
+     * @param List 接口权限列表
+     * @returns 
+     */
+    setConfigList:(params)=>{
+        return post('/eta_business/api/config/set',params)
+    },
+}

+ 1340 - 0
src/api/modules/crmApi.js

@@ -0,0 +1,1340 @@
+import {get,post} from '@/api/index'
+
+/* 客户管理模块 */
+const customInterence = {
+	// 销售今日待办
+	sellerTodayList:params=>{
+		return get('/custom/getTryOutCompanyList',params)
+	},
+	// 销售待办填写续约说明
+	sellerTodayListRemark:params=>{
+		return post('/custom/editTryOutCompanyReason',params)
+	},
+	//销售代办中历史记录
+	sellerTodayHistoryList:params=>{
+		return get('/custom/renewReasonList',params)
+	},
+  //累计试用天数详情
+  tryOutDeail:params=>{
+    return get("/custom/company/tryOutDayList",params)
+  },
+
+  /* 
+    关闭客户
+    CompanyId
+    Remark
+  */
+  closeCustom:params=>{
+      return post('/custom/close',params)
+  },
+  /**
+   * 关闭客户转流失
+   * CompanyId
+   */
+  turnLose:params=>{
+    return post('/custom/close2loss',params)
+  },
+
+  // 客户系统合同搜索
+  contractSearch: (params) => {
+    return get("/custom/system_contract/list", params);
+  },
+  // 系统合同详情
+  sysContractDetail: (params) => {
+    return get("/custom/system_contract/detail", params);
+  },
+  // 通过系统合同申请转正/服务更新接口
+  sysCustomeApply: (params) => {
+    return post("/custom/apply/systemContract", params);
+  },
+
+  /**
+   * 获取客户大于今天的最后一份有效合同详情
+   * CompanyId
+   */
+  lastContractInfo: (params) => {
+    return get("/custom/company/last_contract/detail", params);
+  },
+
+  //补全客户信息
+  /**
+   * City
+   * CompanyId	客户id
+   * CompanyName
+   * CreditCode
+   * IndustryId	所属行业id
+   * IndustryName
+   * Province
+   * Source		来源
+   */
+  completeInfo: (params) => {
+    return post("/custom/company_info/edit", params);
+  },
+
+  //获取客户名下联系人数量(根据当前账号角色区分)
+  //CompanyId 客户id
+  companyUserTotal: (params) => {
+    return get("/custom/company_user/total", params);
+  },
+
+  //获取客户申请转正的合同类型
+  applyTurnContractType: (params) => {
+    return get("/custom/apply/contract/getApplyTurnContractType", params);
+  },
+
+  //客户来源
+  customerSourceList: (params) => {
+    return get("/custom/getCompanySourceList", params);
+  },
+
+  // 获取客户名下所有销售列表
+  companySellerList: (params) => {
+    return get("/custom/getCompanySellerList", params);
+  },
+  // 移动联系人
+  moveCustom: (params) => {
+    return post("/custom/user/move", params);
+  },
+
+  /* 上传图片接口 file  */
+  upload: (params) => {
+    return post("/resource/image/upload", params);
+  },
+  /* 代办消息列表 */
+  noticeList: (params) => {
+    return get("/custom/message/listV2", params);
+  },
+  /* 消息已读接口 Id */
+  readNotice: (params) => {
+    return post("/custom/message/read", params);
+  },
+  /* 客户列表 
+		PageSize * integer
+		CurrentIndex * integer
+		Status *string 状态:’传空字符串或者不传为全部’,’试用’,’永续’,’冻结’,’流失’,’正式’
+		CompanyType *string 客户类型:传空字符串或者不传为全部,’ficc’,’权益’
+		IndustryId *integer
+		AdminId string 销售id,多个用英文逗号隔开,空字符串为全部
+		ChartPermissionIds *string 品种id,多个用英文逗号分开,空字符串为全部
+		StartDate *
+		EndDate *
+		KeyWord * 搜索关键词
+		TryStage  试用子标签 0全部、1未分类、2 推进、3 跟踪、4 预备
+	*/
+  customList: (params) => {
+    return get("/custom/list", params);
+  },
+  /* 获取指定权限的销售列表 */
+  getSale: (params) => {
+    // return get('/custom/seller/check/list',params)
+    return get("/custom/seller/check/listV2", params);
+  },
+  /* 获取正式客户共享-原销售列表 */
+  getShareSale:(params)=>{
+    return get("/custom/seller/check/Sharelist2",params)
+  },
+  /* 客户详情
+		CompanyId 
+	*/
+  customDetail: (params) => {
+    return get("/custom/detail", params);
+  },
+  /* 新增客户
+		Province:	string
+		City:string
+		省市
+		CompanyCode:	string
+		客户编码
+		CompanyName:	string
+		客户名称
+		CompanyType:	string
+		客户类型,ficc,权益
+		CreditCode:	string
+		社会统一信用码
+		IndustryId:	integer ($int64)
+		所属行业id
+		PermissionIds:	string
+		权限id,多个用英文逗号隔开
+		Reasons:	string
+		新增理由
+		SellsId:	integer ($int64)
+		销售员id
+		Source:	string
+		来源
+		Status:	string
+		客户状态,试用,永续
+	*/
+  customAdd: (params) => {
+    return post("/custom/add", params);
+  },
+  /* 编辑客户
+	 	"City": "string",
+		"CompanyId": 0,
+		"CompanyName": "string",
+		"CreditCode": "string",
+		"Products": [
+			{
+				"CompanyProductId": 0,
+				"CompanyType": "string",
+				"IndustryId": 0,
+				"IndustryName": "string",
+				"PermissionIds": "string",
+				"Reasons": "string",
+				"SellsId": 0,
+				"Source": "string",
+				"Status": "string"
+			}
+		],
+		"Province": "string"
+	 */
+  customEdit: (params) => {
+    return post("/custom/edit", params);
+  },
+  /* 删除客户  CompanyId*/
+  customDel: (params) => {
+    return post("/custom/delete", params);
+  },
+  /* 新增编辑客户名称检索  KeyWord*/
+  customSea: (params) => {
+    return get("/custom/fuzzy/search", params);
+  },
+  /* 获取销售接口 */
+  /**
+   * 
+   * @param {
+   * SellerType - 销售类型 - 0:所有; 1:FICC; 2:权益
+   * } params 
+   * @returns 
+   */
+  saleslist: (params) => {
+    return get("/custom/seller/list", params);
+  },
+  /* 联系人列表
+		PageSize
+		CurrentIndex
+		CompanyId *integer
+		KeyWord
+	*/
+  concactList: (params) => {
+    return get("/custom/user/list", params);
+  },
+  /* 新增联系人
+		DepartmentName
+		BusinessCardUrl:	string名片地址
+		CompanyId:	integer ($int64)客户id
+		Email:	string邮箱
+		IsMaker:	integer ($int64) 是否决策人,1:是,0:否
+		MobileOne:	string手机号1
+		MobileTwo:	string手机号2
+		Position:	string职位
+		RealName:	string姓名
+		Sex:	integer ($int64)用户性别,1为男性,2为女性
+	*/
+  concactAdd: (params) => {
+    return post("/custom/user/add", params);
+  },
+  /* 删除联系人  UserId int*/
+  concactDel: (params) => {
+    return post("/custom/user/delete", params);
+  },
+  /* 编辑联系人
+		DepartmentName
+		"BusinessCardUrl": "string",
+		"CompanyId": 0,
+		"Email": "string",
+		"IsMaker": 0,
+		"MobileOne": "string",
+		"MobileTwo": "string",
+		"Position": "string",
+		"RealName": "string",
+		"Sex": 0,
+		"UserId": 0
+	 */
+  concactEdit: (params) => {
+    return post("/custom/user/edit", params);
+  },
+  /* 关注/取消关注 联系人
+  UserId CompanyId
+  Type 0取关 1关注
+  */
+  concactFollow: (params) => {
+    return post("/custom/follow", params);
+  },
+  /* 获取权限基本信息 */
+  authList: (params) => {
+    return get("/custom/permission/list", params);
+  },
+  /* 查看权限  CompanyId */
+  lookauth: (params) => {
+    return get("/custom/permission/look", params);
+  },
+  /* 根据客户类型获取行业列表接口 
+		Classify string
+	*/
+  getindustry: (params) => {
+    return get("/custom/industry/list", params);
+  },
+  /* 
+		品种列表 客户列表筛选
+
+	*/
+  getvariety: (params) => {
+    return get("/custom/permission/variety", params);
+  },
+
+  /* 客户检索列表 
+		KeyWord 
+	*/
+  searchList: (params) => {
+    return get("/custom/search/list", params);
+  },
+
+  /* 潜在用户列表
+		PageSize *	每页数据条数
+		CurrentIndex *
+		ApplyMethod *	int 申请方式,0:全部,1:未申请,2:已付费客户申请试用,3:非客户申请试用
+		KeyWord *
+	*/
+  potentialList: (params) => {
+    return get("/custom/potential/user/list", params);
+  },
+  /* 获取试用用户列表 */
+  trialList: (params) => {
+    return get("/custom/official/user/list", params);
+    // return get('/api/adminapi/custom/official/user/list?PageSize=10&CurrentIndex=1&SourceType=中文官网', params)
+  },
+  /* 试用用户确认已处理接口 */
+  trialStatus: (params) => {
+    return post("/custom/official/user/confirm", params);
+  },
+  /* 标记研报申请分组
+    ApplyRecordId
+    GroupName
+    UserId
+   */
+  markApplyUser:(params)=>{
+      return post('/yb/apply_record/mark_group',params)
+  },
+  /**
+   * 标记官网试用申请
+   * Id
+   * GroupName
+   */
+  markOfficialUser:(params)=>{
+      return post('/custom/official/user/mark_group',params)
+  },
+  /* 搜索公司 KeyWord  */
+  companySearch: (params) => {
+    return get("/custom/potential/company/search", params);
+  },
+  /* 搜索公司qcc KeyWord  */
+  companyQccSearch: (params) => {
+    return get("/custom/potential/company/qccSearch", params);
+  },
+  /* 检查公司名称或是信用码 CompanyName CreditCode */
+  checkCompany: (params) => {
+    return get("/custom/check/companyInfo", params);
+  },
+  /* 检查公司名称或是信用码 CompanyName CreditCode */
+  checkCompanyInfo: (params) => {
+    return get("/custom/check/RepeatCompanyInfo", params);
+  },
+  /* 移动潜在用户
+		"BusinessCardUrl":string名片地址
+		"CompanyId": int,
+		"DepartmentName":string联系人部门
+		"Email": "string",
+		"IsMaker":int是否决策人,1:是,0:否
+		"Mobile": "string",
+		"Position":	string职位
+		"RegionType":string 区域,枚举值:国内、海外
+		"RealName": "string",
+		"Remark": "string",
+		"SellerId":int 需要移动到的销售id
+		"Sex":int 用户性别,1为男性,2为女性
+		"UserId": int
+	*/
+  moveUser: (params) => {
+    return post("/custom/potential/user/move", params);
+  },
+  /* 删除潜在用户
+		"UserId": int
+	*/
+  potentialDel: (params) => {
+    return post("/custom/potential/user/delete", params);
+  },
+
+  //给用户打标记
+  potentialDeal: (params) => {
+    return post("/custom/potential/user/deal", params);
+  },
+
+  /* 客户创建周期
+		CompanyId int
+	*/
+  processList: (params) => {
+    return get("/custom/process/list", params);
+  },
+  /* 服务更新 历史签约列表 CompanyId  CompanyType */
+  historydeal: (params) => {
+    return get("/custom/apply/contract/history/list", params);
+  },
+  /* 服务更新 
+		"CompanyId": 0,
+		"CompanyType": "string",
+		"EndDate": "string",
+		"ImgUrl": "string",
+		"Money": 0,
+		"PayChannel": "string",
+		"PayMethod": "string",
+		"PermissionIds": "string",
+		"StartDate": "string"
+	*/
+  Update: (params) => {
+    return post("/custom/apply/service/update", params);
+  },
+  /* 冻结客户   
+	"CompanyId": 0,
+  "CompanyType":*/
+  Freez: (params) => {
+    return post("/custom/freeze", params);
+  },
+  /* 申请转正
+		"CompanyId": 0,
+		"EndDate": "string",
+		"ImgUrl": "string",
+		"Money": 0,
+		"PayChannel": "string",
+		"PayMethod": "string",
+		"PermissionIds": "string",
+		"StartDate": "string"
+	 */
+  applyTurn: (params) => {
+    return post("/custom/apply/turn/positive", params);
+  },
+  /* 申请延期
+	 "ApplyRemark": "string",
+	  "CompanyId": 0
+	  CompanyApprovalId
+	  PermissionIds
+	*/
+  applyDelay: (params) => {
+    return post("/custom/apply/delay", params);
+  },
+  /* 申请领取 
+		"ApplyRemark": "string",
+  		"CompanyId": 0
+	*/
+  applyPick: (params) => {
+    return post("/custom/apply/receive", params);
+  },
+  /* 申请解冻
+		"ApplyRemark": "string",
+  		"CompanyId": 0
+	*/
+  applyThaw: (params) => {
+    return post("/custom/apply/thaw", params);
+  },
+  /* 修改所属销售  "CompanyId": 0,"SellsId": 0*/
+  moveSale: (params) => {
+    return post("/custom/move/seller", params);
+  },
+  /* 暂停/启用 CompanyId */
+  Suspend: (params) => {
+    return post("/custom/suspend", params);
+  },
+  /* 领取列表
+		PageSize *
+		CurrentIndex *
+		IndustryId 行业id,0为全部
+		ChartPermissionIds 
+		StartDate *
+		EndDate *
+		KeyWord *
+	*/
+  pickList: (params) => {
+    return get("/custom/receive/list", params);
+  },
+  /* 领取客户  ——领取列表
+		"CompanyId": 0,
+		"IndustryId": 0,
+		"PermissionIds": "string",
+		"Reasons": "string",
+		"SellsId": 0,
+		"Source": "string",
+		"Status": "string"
+		CompanyType
+	*/
+  Pick: (params) => {
+    return post("/custom/receive", params);
+  },
+  /* 设置共享/取消共享
+		CompanyId
+		IsShare 0-取消共享 1-共享
+	*/
+  setCustomShare: (params) => {
+    return post("/custom/share", params);
+  },
+  /**
+   * 正式客户共享
+   */
+
+  /**
+   * 获取 共享客户组 里面的销售列表
+   */
+  salesShareList: (params) => {
+    return get("/custom/seller/share/list", params);
+  },
+  /**
+   * 获取分配销售列表,根据用户角色返回 共享客户组 or 权益销售组
+   */
+  getShareSaleList:(params)=>{
+    return get("/custom/seller/share/list", params);
+  },
+  /**
+   * 获取 共享客户列表
+   * SortParam 排序字段
+   * SortType 排序类型 `asc 正序`,`desc 倒叙`
+   * PageSize CurrentIndex 
+   * SellerId 选择的销售id
+   * Keyword 
+   * ListParam 0:全部 、 1:已分配 、 2:未分配
+   * 
+   */
+  getShareCustomList: (params) => {
+    return get("/custom/share/list", params);
+  },
+  /**
+   * 共享客户列表 - 分配销售
+   * CompanyId 公司Id
+   * SellsId 销售Id
+   * 
+   */
+    assignShareSeller: (params) => {
+      return post("/custom/share/moveSeller", params);
+    },
+    /**
+     * 新增服务记录
+     * CompanyId 公司Id
+     * Content 服务描述
+     */
+    addRecord:(params)=>{
+        return post("/custom/service_record/add",params)
+    },
+    /**
+     * 服务记录列表
+     * CompanyId 公司Id
+     */
+    getRecordList:(params)=>{
+        return get("/custom/service_record/list",params)
+    },
+    /**
+     * 删除服务记录
+     * CompanyServiceRecordId 服务记录id
+     */
+    deleteRecord:(params)=>{
+        return post("/custom/service_record/del",params)
+    },
+    /**
+     * 正式客户共享-添加备注
+     * CompanyId
+     * Remark 
+     */
+    addCustomRemark:(params)=>{
+        return post("/custom/share/remark/add",params)
+    },
+    /**
+     * 客户列表,正式客户共享-删除备注
+     * RemarkId
+     */
+    deleteRemark:(params)=>{
+        return post("/custom/remark/del",params)
+    },
+    /*
+     * 标记服务记录
+     * CompanyServiceRecordId
+     * Status 0取消标记 1标记
+     */
+    markRecord:(params)=>{
+        return post('/custom/share/mark',params)
+    },
+    /**
+     * 同城客户列表
+     */
+    getCustomCityList:(params)=>{
+        return get('/custom/share/list/city',params)
+    },
+  /* 审批列表
+		PageSize *
+		CurrentIndex *
+		Status *
+		KeyWord *
+	*/
+  approvalList: (params) => {
+    return get("/custom/approval/listV2", params);
+  },
+  /* 审批
+	  "CompanyId": 0,
+		"Remark": "string",
+		"Status": 0
+	 */
+  Approval: (params) => {
+    return post("/custom/approval/approve", params);
+  },
+  /* 撤回 CompanyId*/
+  Revoke: (params) => {
+    return post("/custom/apply/revoke", params);
+  },
+  /* 删除审批单 CompanyApprovalId CompanyId */
+  approvalDel: (params) => {
+    return post("/custom/approval/delete", params);
+  },
+  /* 审批页面详情
+		CompanyId * *
+	*/
+  approvalDetail: (params) => {
+    return get("/custom/apply/contract/detail", params);
+  },
+  /* 重新申请合同详情 */
+  reapplyDetail: (params) => {
+    return get("/custom/apply/contract", params);
+  },
+  /* 阅读报告记录  UserId*/
+  readList: (params) => {
+    return get("/custom/view/report/list", params);
+  },
+  /* 获取导入联系人列表 File CompanyId*/
+  getimportList: (params) => {
+    return post("/custom/import/list", params);
+  },
+  /* 导入联系人 File  CompanyId*/
+  importUser: (params) => {
+    return post("/custom/import", params);
+  },
+  /* 增加试用 "ChartPermissionId" "CompanyId"*/
+  addTryout: (params) => {
+    return post("/custom/permission/add/try/out", params);
+  },
+  /* 申请解冻 申请领取权限列表 */
+  allAuth: (params) => {
+    return get("/custom/getCompanyPermission", params);
+  },
+  /**
+   * 获取审批单中的权限列表
+   * @param {ApprovalId } params 审批单id
+   * @returns
+   */
+  approvalPermission: (params) => {
+    return get("/custom/approval/getApprovalPermissionList", params);
+  },
+  /**
+   * 查看客户权限接口(主观客观)
+   * @param {CompanyId } params 客户id
+   * @param {LookType } params 调用类型:1增开试用,0其他
+   * @returns
+   */
+  permissionLookSando: (params) => {
+    return get("/custom/permission/lookSando", params);
+  },
+  // 获取联系人配置图库权限详情
+  chartPermissionInfo: (params) => {
+    return get("/custom/user/getChartClassifyPermissionDetail", params);
+  },
+
+  // 联系人图库权限设置
+  chartPermissionSet: (params) => {
+    return post("/custom/user/addChartClassifyPermission", params);
+  },
+
+  // 联系人图库权限编辑
+  chartPermissionEdit: (params) => {
+    return post("/custom/user/editChartClassifyPermission", params);
+  },
+  // 销售待办添加未续约说明
+  sellerAddListRemark: (params) => {
+    return post("/custom/addTryOutCompanyReason", params);
+  },
+  // 正式转试用添加说明
+  addTryOutRenewalReason: (params) => {
+    return post("/custom/addRenewalReason", params);
+  },
+  // 导出
+  companyExportList: (params) => {
+    return get("/cygx/company/exportList", params);
+  },
+
+  /* 查看备注 */
+  lookRemarkAuth: (params) => {
+    return get("/custom/remark", params);
+  },
+  /* 新增备注 */
+  lookRemarkAuthAdd: (params) => {
+    return post("/custom/remark/add", params);
+  },
+  //路演的弹框
+  roadShowList: (params) => {
+    return get("/custom/roadShowList", params);
+  },
+  //中文客户累计点击量
+  getZNCustomClickList:(params)=>{
+    return get('/custom/user/listByReport',params)
+  },
+  /**
+   * 销售ToDo
+   */
+  //新建任务
+  addToDoItem: (params) => {
+    return post("/custom/company_todo/add", params);
+  },
+  //编辑任务
+  editToDoItem: (params) => {
+    return post("/custom/company_todo/edit", params);
+  },
+  //正在进行的任务
+  getToDoItem: (params) => {
+    return get("custom/company_todo/edit_list", params);
+  },
+  //历史记录
+  getHistory: (params) => {
+    return get("/custom/company_todo/list", params);
+  },
+  //确认完成
+  checkToDo: (params) => {
+    return post("/custom/company_todo/approve", params);
+  },
+
+  // 设置试用子标签
+  // "CompanyId":6802,"ProductId":1, "TryStage": 2
+  setTrialTag: (params) => {
+    return post("/custom/update/tryStage", params);
+  },
+
+  /**
+   * 销售添加客户管理
+   */
+  //销售分组列表
+  getSales: (params) => {
+    return get("/custom/receive/seller/group", params);
+  },
+  //销售列表
+  getSalesData: (params) => {
+    return get("/custom/receive/seller", params);
+  },
+  //权益销售列表
+  getSalesRaiData: (params) => {
+    return get("/custom/seller/check/list_rai", params);
+  },
+  //启用/禁用权限
+  changeSaleAuth: (params) => {
+    return post("/custom/receive/permission/change", params);
+  },
+  
+  /**
+   * 分产品阅读统计
+   */
+  /*
+    用户阅读统计:
+    UserId:联系人ID;ClickSort:点击量排序:1-升序 2-降序
+    CurrentIndex,pageSize
+  */
+  getYbProductReadInfo:(params)=>{
+    return get("/yb/product_census/user/visit_count",params)
+  },
+  /*
+    用户阅读统计详情:
+    UserId:联系人ID;ClickSort:点击量排序:1-升序 2-降序
+    ProductType:产品类型:1-语音播报 2-视频社区 3-问答社区
+    ProductId:产品ID:产品类型为1-语音播报时必填
+    CurrentIndex,pageSize
+  */
+  getYbProductReadDetail:(params)=>{
+    return get("/yb/product_census/user/visit_count_detail",params)
+  },
+
+  /**
+   * 获取分产品列表
+   * @param {*} params 
+   * @returns 
+   */
+  getSubProduct: params => {
+    return get('/custom/user/otherProductList',params)
+  },
+  
+  /**
+   * 客户区域统计
+  */
+  /**
+   * 获取客户区域统计列表
+   * @param {*} params 
+   * @returns Date 当天 ProductId=1
+   */
+   getRegionCustom: params => {
+    return get('/custom/customerAreaStatistics',params)
+  },
+   /**
+   * --------开票到款统计
+  */
+  /**
+   * 获取简易的套餐列表(用于搜索下拉框)
+   * @returns 
+   */
+  getSimpleServiceList: () => {
+    return get('/statistic_report/contract/service/simple')
+  },
+  /**
+   * --------开票到款统计
+  */
+  /**
+   * 销售下拉
+   * @returns 
+   */
+  sellerSelectList: () => {
+    return get('/custom/seller/check/invoice_payment/list')
+  },
+  /**
+   * 获取客户合同商品到款列表
+  * @param data.page_size - 每页数据量 - 必填
+  * @param data.current - 页码 - 必填
+  * @param data.keyword - 关键词-客户名称/销售
+  * @param data.service_types - 套餐
+  * @param data.start_date - 开始时间
+  * @param data.end_date - 结束时间
+  * @param data.time_type - 时间类型:1-开票时间; 2-到款时间
+  * @param data.sort_type - desc:降序 asc:升序
+  * @param data.sort_param - invoice_time:开票日 payment_date:到款日
+   * @returns 
+   */
+  getCTContractStatistics: params => {
+    return get('/statistic_report/census/invoice_payment/list',params)
+  },
+  
+  // ----------------------------------------------------英文客户
+  /**
+   * 设置英文客户权限
+   * @param {*} params 
+   * @returns 
+   */
+  setENCustomReportVariety:params=>{
+    return post('/english_report/company/save_permission',params)
+  },
+
+  // 获取英文客户列表
+  /**
+   * 
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * Keywords - 客户名称
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  getCustomListEn: params => {
+    return get('/english_report/company/list',params)
+  },
+  // 新增英文客户
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID 大于0为编辑
+   * CompanyName - 客户名称 - 必填
+   * CountryCode - 国家代码 - 必填
+   * Country - 国家 - 必填
+   * SellerId - 销售ID - 必填
+   * } params 
+   * @returns 
+   */
+  addCustomEn: (params) => {
+    return post("/english_report/company/save", params);
+  },
+  // 删除英文客户
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID
+   * } params 
+   * @returns 
+   */
+  delCustomEn: (params) => {
+    return post("/english_report/company/del", params);
+  },
+  // 英文客户点击量详情
+  /**
+   * 
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * CompanyId - 客户ID - 必填
+   * SortParam - 点击量排序字段 - 1-点击量;2-点击时间
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  customEnHitNumber: (params) => {
+    return get("/english_report/company/view_list", params);
+  },
+  // 英文客户详情
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID
+   * } params 
+   * @returns 
+   */
+  customDetailEn: (params) => {
+    return get("/english_report/company/detail", params);
+  },
+  // ---------英文客户todo
+  // 新建to do
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID
+   * Description - 任务描述
+   * EndTime - 截止日期
+   * } params 
+   * @returns 
+   */
+  addCustomToDoEn: (params) => {
+    return post("/english_report/company_todo/add", params);
+  },
+  // 编辑todo的列表
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID - 必填
+   * } params 
+   * @returns 
+   */
+   todoEditListEn: (params) => {
+    return get("/english_report/company_todo/edit_list", params);
+  },
+  // 编辑todo
+  /**
+   * 
+   * @param {
+   * Id - 任务Id - 必填
+   * CompanyId - 客户ID - 必填
+   * Description - 任务描述 - 必填
+   * } params 
+   * @returns 
+   */
+   editCustomToDoEn: (params) => {
+    return post("/english_report/company_todo/edit", params);
+  },
+  // 完成todo
+  /**
+   * 
+   * @param {
+   * Id - 任务Id - 必填
+   * } params 
+   * @returns 
+   */
+   finishCustomToDoEn: (params) => {
+    return post("/english_report/company_todo/approve", params);
+  },
+  // to do历史记录
+  /**
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * CompanyId - 客户ID
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  getTodoListEn: (params) => {
+    return get("/english_report/company_todo/list", params);
+  },
+  //----------------------------英文联系人列表
+  /**
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * CompanyId - 客户ID
+   * Keywords - 搜索关键词,客户名称/邮箱
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  getContactsListEn: (params) => {
+    return get("/english_report/email/list", params);
+  },
+  // 保存联系人 新增/编辑
+  /**
+   * 
+   * @param {
+   * Id - 联系人ID,大于0为编辑
+   * CompanyId - 客户Id
+   * Name - 联系人名称
+   * Email - 邮箱地址
+   * } params 
+   * @returns 
+   */
+  contactsSaveEn: (params) => {
+    return post("/english_report/email/save", params);
+  },
+  // 移动联系人
+  /**
+   * 
+   * @param {
+  * EmailId - 邮箱ID
+  * CompanyId - 客户Id
+  * } params 
+  * @returns 
+  */
+  contactsMoveEn: (params) => {
+    return post("/english_report/email/moveToCurrent", params);
+  },
+  // 英文联系人批量导入
+  /**
+   * 
+   * @param { formData
+   * File - Excel文件
+   * CompanyId - 客户ID
+   * } params 
+   * @returns 
+   */
+  importContactsEn: (params) => {
+    return post("/english_report/email/import", params);
+  },
+  // 删除英文联系人
+  /**
+   * 
+   * @param {
+   * EmailId - 联系人Id
+   * } params 
+   * @returns 
+   */
+  delContactsEn: (params) => {
+    return post("/english_report/email/del", params);
+  },
+  //启用禁用英文联系人
+  /**
+   * 
+   * @param {*
+   *  EmailId
+   *  Enabled
+   * } params 
+   * @returns 
+   */
+  editEnabledEn:(params)=>{
+    return post('/english_report/email/editEnabled',params)
+  },
+  //批量启用,禁用英文联系人
+    /**
+   * 
+   * @param {*
+     *  CompanyId
+     *  Enabled
+     * } params 
+     * @returns 
+     */
+  editEnabledAll:(params)=>{
+    return post('/english_report/company/edit_enabled',params)
+  },
+  // 英文联系人点击量详情
+  /**
+   * 
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * EmailId - 联系人ID - 必填
+   * SortParam - 点击量排序字段 - 1-点击量;2-点击时间
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  contactsEnHitNumber: (params) => {
+    return get("/english_report/email/view_list", params);
+  },
+  //英文客户-未完成todo统计
+  /**
+   * 
+   * @param {
+     * PageSize - 每页数据量
+     * CurrentIndex - 当前页数
+     * SortType - 截止日期排序方式: 1-正序; 2-倒序
+     * } params 
+     * @returns 
+     */
+  getUnDoList:(params)=>{
+    return get("/english_report/company_todo/doing_list",params)
+  },
+  //英文客户-获取to-do编辑框信息
+  getToDoEditData:(params)=>{
+    return get("/english_report/company_todo/last_public_todo",params)
+  },
+  //英文客户-新增to-do编辑框信息
+  /**
+   * 
+   * @param {* Description 任务描述} params 
+   * @returns 
+   */
+  saveToDoEditData:(params)=>{
+    return post("/english_report/company_todo/add_public",params)
+  },
+  //新增开通或者关闭用户研选权限新建接口
+    /**
+   * 
+   * @param {* UserId 用户ID} params 
+   * @param {* Type 类型 } params 
+   * @returns 
+   */
+  yananxuanPermissionOpen:(params)=>{
+    return post("/custom/update/user/yananxuan/permission",params)
+  },
+  //查询移动记录列表
+    /**
+   * 
+   * @returns 
+   */
+  getCustomListMoveLog:(params)=>{
+      return get("/custom/user/listMoveLog",params)
+  }
+};
+
+/*
+权益联系人列表模块
+*/
+const equityContacts = {
+  //状态搜索栏接口
+  getUserStatusTable: (params) => {
+    return get("/cygx/user/status/table", params);
+  },
+  // 用户列表接口
+  getCygxContactsList: (params) => {
+    return get("/cygx/user/list", params);
+  },
+  //备注列表接口
+  getCygxRemarkList: (params) => {
+    return get("/cygx/user/remark/list", params);
+  },
+  // 新增备注
+  getCygxAddRemarks: (params) => {
+    return post("/cygx/user/addRemarks", params);
+  },
+  //获取用户标签详情接口
+  getCygxLabelDetail: (params) => {
+    return get("/cygx/user/label/detail", params);
+  },
+  //产业、标的模糊查询接口
+  industrialManagementSearch: (params) => {
+    return get("/cygx/industrialManagement/search", params);
+  },
+  //互动详情table栏接口
+  getCygxMutualList: (params) => {
+    return get("/cygx/user/table/list", params);
+  },
+  //互动详情table栏接口
+  getCygxMutualDetail: (params) => {
+    return get("/cygx/user/interaction/detail", params);
+  },
+  //用户相关互动接口
+  getInteractionRelevant: (params) => {
+    return get("/cygx/user/interaction/relevant", params);
+  },
+  //机构状态搜索栏互助
+  getInteractionNum: (params) => {
+    return get("/cygx/user/interactionNum", params);
+  },
+  //机构互动详情table栏接口
+  getCompanyTableList: (params) => {
+    return get("/cygx/user/company/table/list", params);
+  },
+  //机构互动详情table栏接口
+  getCompanyInteractionDetail: (params) => {
+    return get("/cygx/user/company/interaction/detail", params);
+  },
+  //添加/取消用户提醒
+  postUserRemind: (params) => {
+    return post("/cygx/user/remind", params);
+  },
+  //全机构互动列表接口
+  getUserCompanyList: (params) => {
+    return get("cygx/user/company/list", params);
+  },
+  //机构列表互动详情table栏接口
+  getUserTableCompanyList: (params) => {
+    return get("/cygx/user/table/companyList", params);
+  },
+  // 交流反馈列表接口
+  userFeedbacklist:(params)=>{
+    return get("/cygx/user_feedback/list",params)
+  }, 
+  // 添加交流反馈接口
+  userFeedbackAdd:(params)=>{
+    return post("/cygx/user_feedback/add",params)
+  }, 
+  // 删除交流反馈接口
+  userFeedbackDel:(params)=>{
+    return post("/cygx/user_feedback/del",params)
+  }, 
+};
+
+/*
+crm12.4 ETA试用列表模块
+ */
+const etaTrialInterence={
+ /**ETA试用客户列表
+  * PageSize,CurrentIndex,KeyWord
+  * SortParam
+  * SortType : asc正序 desc倒序
+  */
+  getETATrialList:(params)=>{
+    return get('/eta_trial/list',params)
+  },
+ /**非管理员-我的审批列表
+  * 
+  */
+  getApprovalAllList:(params)=>{
+    return get('/eta_trial/apply/myList',params)
+  },
+ /**非管理员-账号列表
+  * 
+  */
+  getApprovalList:(params)=>{
+    return get('/eta_trial/apply/accountlist',params)
+  },
+ /**非管理员-删除申请
+  * ApprovalId
+  */
+  deleteApproval:(params)=>{
+    return post('/eta_trial/apply/del',params)
+  },
+ /**非管理员-撤回申请
+  * Mobile
+  */
+  withdrawApproval:(params)=>{
+    return post('/eta_trial/apply/revoke',params)
+  },
+ /**非管理员-申请启用
+  * UserName,CompanyName,Position,Mobile
+  * ApplyReasons 申请理由
+  */
+  applyEnable:(params)=>{
+    return post('/eta_trial/apply/enable',params)
+  },
+ /**非管理员-新增申请
+  * List[]
+  * List[].UserName 姓名
+  * List[].CompanyName 公司名称
+  * List[].Position 职位
+  * List[].Mobile 手机号
+  */
+  addApproval:(params)=>{
+    return post('/eta_trial/add',params)
+  },
+ /**管理员-审批列表
+  * ApprovalStatus 
+  */
+  getAdminApprovalList:(params)=>{
+    return get('/eta_trial/apply/list',params)
+  },
+ /**管理员-同意申请
+  * ApprovalId
+  */
+  agreeApply:(params)=>{
+    return post('/eta_trial/apply/approval',params)
+  },
+ /**管理员-驳回申请
+  * ApprovalId
+  * RejectReason
+  */
+  rejectApply:(params)=>{
+    return post('/eta_trial/apply/reject',params)
+  },
+  // -------------ETA试用 1.1
+  // 问卷调查
+  /**统计结果列表
+  * ListParam 1-全部 2-选择题 3-简答题
+  */
+  getQuestionDataList:(params)=>{
+    return get('/eta_trial/questionnaire/statistical',params)
+  },
+  /**简答题详情列表
+  * CurrentIndex PageSize QuestionnaireId
+  */
+  getTextDetailList:(params)=>{
+    return get('/eta_trial/questionnaire/answerList',params)
+  },
+  /**详细数据列表
+  * PageSize CurrentIndex
+  */
+  getDetailDataList:(params)=>{
+    return get('/eta_trial/questionnaire/detailList',params)
+  },
+  /**详细数据 - 详情
+  * Mobile
+  */
+  getDetailDataDetail:(params)=>{
+    return get('/eta_trial/questionnaire/detail',params)
+  },
+  /**问卷列表
+  */
+  getQuestionOptionList:()=>{
+    return get('/eta_trial/questionnaire/list')
+  },
+   /**保存题目配置
+  * List - 题目列表
+  */
+  questionOptionSave:(params)=>{
+    return post('/eta_trial/questionnaire/save',params)
+  },
+  /**删除题目
+  * QuestionnaireId - 题目Id
+  */
+  questionOptionDelete:(params)=>{
+    return post('/eta_trial/questionnaire/del',params)
+  },
+}
+
+/* 全量客户相关 */
+const customAllInterence = {
+    //客户列表
+    customList:(params)=>{
+        return get("/custom/full/list",params)
+    },
+    //客户详情
+    customDetail:(params)=>{
+        return get("/custom/full/detail", params);
+    },
+    //查看权限
+    lookauth: (params) => {
+        return get("/custom/full/permission/look", params);
+    },
+}
+
+/* X类客户评分 */
+const xClassCustomApi = {
+  //模板 列表
+  enterScoreDetail:(params)=>{
+      return get("/cygx/enterScore/detail",params)
+  },
+   //添加/ 更新录分
+   enterScoreUpdate:(params)=>{
+    return post("/cygx/enterScore/update",params)
+  },  
+  // X试用类客户检索
+  enterScoreSearchlist:(params)=>{
+      return get("/cygx/enterScore/company/searchlist",params)
+  },
+  // 录分列表接口
+  enterScoreList:(params)=>{
+    return get("/cygx/enterScore/list",params)
+  },
+  // 录分列表接口
+  enterScoreDelete:(params)=>{
+    return post("/cygx/enterScore/delete",params)
+  },  
+  // 评分总览接口
+  enterScoreScoreOverview:(params)=>{
+    return get("/cygx/enterScore/scoreOverview",params)
+  }, 
+  // 排名总览接口
+  enterScoreRankingOverview:(params)=>{
+    return get("/cygx/enterScore/rankingOverview",params)
+  }, 
+}
+
+export { customInterence,customAllInterence, equityContacts,etaTrialInterence,xClassCustomApi};

+ 375 - 0
src/api/modules/roadshowApi.js

@@ -0,0 +1,375 @@
+// 路演管理模块
+import {get,post} from '@/api/index'
+
+const roadshowInterence={
+	/**
+	 * 路演FICC销售列表
+	 */
+	getSellerList:params=>{
+		return get('/custom/seller/roadshow_ficc/list',params)
+	},
+	/**
+	 * 获取路演-研究员列表
+	 * @param {*} params 
+	 * @returns 
+	 */
+	getResearcherList:params=>{
+		return get('/roadshow/researcher/list',params)
+	},
+
+	/**
+	 * 获取日历列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {CalendarType} params 1:待处理申请,2:已处理申请,3:内部会议
+	 * @returns 
+	 */
+	getCalendarList:params=>{
+		return get('/roadshow/calendar/list',params)
+	},
+
+	/**
+	 * 撤回路演活动
+	 * @param {*} params RsCalendarId RsCalendarResearcherId
+	 * @returns 
+	 */
+	revocationRoadshow:params=>{
+		return post('/roadshow/back',params)
+	},
+
+	/**
+	 * 接受路演活动
+	 * @param {RsCalendarId} params 
+	 * @param {RsCalendarResearcherId} params 
+	 * @returns 
+	 */
+	acceptRoadshow:params=>{
+		return post('/roadshow/accept',params)
+	},
+	
+	/**
+	 * 拒绝路演
+	 * @param {*} params RsCalendarId RsCalendarResearcherId RefuseReason
+	 * @returns 
+	 */
+	refuseRoadshow:params=>{
+		return post('/roadshow/refuse',params)
+	},
+
+	/**
+	 * 删除路演活动
+	 * @param {*} params RsCalendarId RsCalendarResearcherId DeleteReason
+	 * @returns 
+	 */
+	deleteRoadshow:params=>{
+		return post('/roadshow/delete',params)
+	},
+
+	/**
+	 * 研究员日历
+	 * @param {DateType} params 
+	 * @param {ResearcherId} params 
+	 * @returns 
+	 */
+	getCalendarDetail:params=>{
+		return get('/roadshow/researcher/calendar/detail',params)
+	},
+    /**
+	 * 销售员日历
+	 * @param {DateType} params 
+	 * @param {SellerId} params 
+	 * @returns 
+	 */
+	getSellerCalendarDetail:params=>{
+		return get('/roadshow/seller/calendar/detail',params)
+	},
+
+	/**
+	 * 我的日历
+	 * @param {DateType} params 
+	 * @returns 
+	 */
+	myCalendarDetail:params=>{
+		return get('/roadshow/my/calendar/detail',params)
+	},
+
+
+
+	// 客户搜索 KeyWord
+	searchRoadshowCompany:params=>{
+		return get('/roadshow/company/search',params)
+	},
+
+	/**
+	 * 客户详情
+	 * @param {CompanyId} params 
+	 * @returns 
+	 */
+	componyDetail:params=>{
+		return get('/roadshow/company/detail',params)
+	},
+
+	/**
+	 * 新增路演活动
+	 * @param {*} params  
+	 * "ActivityType": "路演",
+			"RoadshowType": "线上",
+			"RoadshowPlatform": "腾讯会议",
+			"CompanyId": 16,
+			"CompanyName": "弘则研究",
+			"ResearcherList": [
+				{
+					"ResearcherId": 4,
+					"ResearcherName": "章左昊",
+					"StartDate": "2020-01-11",
+					"EndDate": "2020-01-11",
+					"StartTime": "10:00:00",
+					"EndTime": "11:00:00",
+					"Week": "周二"
+				}
+			]
+	 * @returns 
+	 */
+	addRoadshow:params=>{
+		return post('/roadshow/add',params)
+	},
+
+	/**
+	 * 活动编辑 
+	 * @param {*} params  RsCalendarId RsCalendarResearcherId EditType 1修改 2重提
+	 * @returns 
+	 */
+	editRoadshow: params=>{
+		return post('/roadshow/edit',params)
+	},
+
+	/**
+	 * 新增事项
+	 * @param {*} params  
+	 * "MatterContent": "休假",
+		"StartDate": "2020-01-11",
+		"EndDate": "2020-01-11",
+		"StartTime": "10:00:00",
+		"EndTime": "11:00:00",
+		"StartWeek": "周二",
+		"EndWeek": "周二"
+	 * @returns 
+	 */
+	addRoadshowMatters:params=>{
+		return post('/roadshow/matters/add',params)
+	},
+
+	/**
+	 * 修改事项
+	 * @param {*} params 
+	 * "RsMattersId": 1,
+		"MatterContent": "休假了",
+		"StartDate": "2020-01-11",
+		"EndDate": "2020-01-11",
+		"StartTime": "10:00:00",
+		"EndTime": "11:00:00",
+		"StartWeek": "周二",
+		"EndWeek": "周二"
+	 * @returns 
+	 */
+	editMatters:params=>{
+		return post('/roadshow/matters/update',params)
+	},
+
+	/**
+	 * 删除事项
+	 * @param {RsMattersId} params 
+	 * @returns 
+	 */
+	delMatters:params=>{
+		return post('/roadshow/matters/delete',params)
+	},
+
+	/**
+	 * 事项列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @returns 
+	 */
+	mattersList:params=>{
+		return get('/roadshow/matters/list',params)
+	},
+
+	/**
+	 * 新增参会名单
+	 * @param {Object} params 
+	 * @param {Number} params.RsCalendarId 日程ID
+	 * @param {Number[]} params.UserId 用户ID
+	 * @returns 
+	 */
+	addMeetingUser:params=>{
+		return post('/roadshow/rs_calendar_meeting_user/add',params)
+	},
+	/**
+	 * 参会名单列表
+	 * @param {Object} params 
+	 * @param {Number} params.RsCalendarId
+	 * @returns 
+	 */
+	getMeetingUserList:params=>{
+		return get('/roadshow/rs_calendar_meeting_user/list',params)
+	},
+	/**
+	 * 删除参会名单
+	 * @param {Object} params 
+	 * @param {Number} params.RsCalendarMeetingUserId
+	 * @returns 
+	 */
+	deleteMeetingUser:params=>{
+		return post('/roadshow/rs_calendar_meeting_user/delete',params)
+	},
+
+	/* ==================  路演统计 ================= */
+	/**
+	 * 研究员统计
+	 * @param {*} params DataType StartDate EndDate
+	 * @returns 
+	 */
+	researcherStatistic: params => {
+		return get('/roadshow/report/researcher/list',params)
+	},
+
+	/**
+	 * 销售统计
+	 * @param {*} params DataType StartDate EndDate
+	 * @returns 
+	 */
+	sellerStatistic: params => {
+		return get('/roadshow/report/seller/list',params)
+	},
+
+	/**
+	 * 统计详情列表
+	 * @param {} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	statisticDetailList: params => {
+		return get('/roadshow/report/calendar/list',params)
+	},
+	/**
+	 * 统计详情列表-海外路演
+	 * @param {} params DataType StartDate EndDate AdminIds AdminType
+	 * @returns 
+	 */
+	overseaStatisticDetailList: params => {
+		return get('/roadshow/overseas/calendar/list',params)
+	},
+	/**
+	 * 选择的研究员接口
+	 * @param {AdminIds} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	 roadshowChoiceResearcher: params => {
+		return post('/roadshow/report/choice/researcher',params)
+	},
+	
+	/**
+	 * 公开会议日历详情
+	 * @param {} params StartDate EndDate
+	 * @returns 
+	 */
+	meetCalendarDetail: params => {
+		return get('/roadshow/public_meeting/detail',params)
+	},
+
+
+	/**
+	 * 获取选择的研究员列表
+	 * @param {} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	roadshowAdminList: params => {
+		return get('/roadshow/report/admin/list',params)
+	},
+
+	/**
+	 * 专项路演统计接口
+	 * @param {} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	roadshowSpecialList: params => {
+		return get('/roadshow/report/special/list',params)
+	},
+
+	/**
+	 * 路演反馈列表
+	 * @param {} params PageSize CurrentIndex FeedbackType 0:不显示(默认),1:显示 ResearcherId 
+	 * @returns
+	 */
+	feedbackList: params => {
+		return get('/roadshow/feedback/list',params)
+	},
+
+	/**
+	 * 发送路演反馈
+	 * @param {*} params List  [{"RsCalendarResearcherId": 0}
+  ]
+	 * @returns 
+	 */
+	sendFeedback: params => {
+		return post('/roadshow/send/feedback',params)
+	},
+
+	/**
+	 * 待反馈列表
+	 * @param {*} params   [{"RsCalendarResearcherId": 0}
+  ]
+	 * @returns 
+	 */
+	toFeedbacklist: params => {
+		return get('/roadshow/submit/feedback/list',params)
+	},
+
+	/**
+	 * 填写路演反馈
+	 * @param {*} params   RsCalendarResearcherId FeedbackContent
+  ]
+	 * @returns 
+	 */
+	writeFeedback: params => {
+		return post('/roadshow/write/feedback',params)
+	},
+
+	/**
+	 * 提交反馈
+	 * @param {*} params   [{RsCalendarResearcherId}]
+  ]
+	 * @returns 
+	 */
+	submitFeedback: params => {
+		return post('/roadshow/submit/feedback',params)
+	},
+    /**
+     * 报告电话会活动类别
+     * @param {*} params 
+     */
+    getTelList:params=>{
+        return get('/yb/activity/type/tel_list',params)
+    },
+	// -------------------------------------出差表模块
+	/**
+	 * 获取研究员的出差表
+	 * @param {*} params.AdminId - 研究员的AdminId
+	 * @returns 
+	*/
+	getResearcherBusinessTrip: params => {
+		return get('/roadshow/report/researcher/business_trip',params)
+	},
+	//标签搜索(研究员日历添加到会信息)
+	rai_serve_search_tag:params => {
+		return get('/cygx/rai_serve/search_tag_by_calendar',params)
+	},	
+	//校验是否属于策略固收接口
+	rai_serve_search_chcck_PermissionName:params => {
+		return get('/cygx/rai_serve/chcck_PermissionName',params)
+	},	
+}
+
+export {
+	roadshowInterence
+}

+ 46 - 0
src/router/modules/customer.js

@@ -9,6 +9,52 @@ export default[
       title:'客户管理'
     },
     children:[
+      {
+        path:'businessETAList',
+        name:"商家管理",
+        component: () => import('@/views/business_ETA_manage/businessList.vue'),
+				hidden: false,
+      },
+      {
+        path:'addETABusiness',
+        name:"新增商家",
+        component: () => import('@/views/business_ETA_manage/addBusiness.vue'),
+				hidden: false,
+        meta:{
+          pathFrom: "businessETAList",
+          pathName: "商家管理",
+        }
+      },
+      {
+        path:'editETABusiness',
+        name:"编辑商家",
+        component: () => import('@/views/business_ETA_manage/businessEdit.vue'),
+				hidden: false,
+        meta:{
+          pathFrom: "businessETAList",
+          pathName: "商家管理",
+        }
+      },
+      {
+        path:'businessETADetail',
+        name:"商家详情",
+        component: () => import('@/views/business_ETA_manage/businessDetail.vue'),
+				hidden: false,
+        meta:{
+          pathFrom: "businessETAList",
+          pathName: "商家管理",
+        }
+      },
+      {
+        path:'businessETAAuth',
+        name:"商家权限",
+        component: () => import('@/views/business_ETA_manage/businessAuth.vue'),
+        hidden: false,
+        meta:{
+          pathFrom: "businessETAList",
+          pathName: "商家管理",
+        }
+      },
       {
         path:'userList',
         name:'CustomerUserList',

+ 1829 - 0
src/utils/countryData.js

@@ -0,0 +1,1829 @@
+export default[
+  {
+    "cnName": "安道尔",
+    "cnSpell": "ANDAOER",
+    "code": "AD",
+    "enName": "Andorra",
+    "hot": false
+  },
+  {
+    "cnName": "阿拉伯联合酋长国",
+    "cnSpell": "ALABOLIANHEQIUCHANGGUO",
+    "code": "AE",
+    "enName": "United Arab Emirates",
+    "hot": false
+  },
+  {
+    "cnName": "阿富汗",
+    "cnSpell": "AFUHAN",
+    "code": "AF",
+    "enName": "Afghanistan",
+    "hot": false
+  },
+  {
+    "cnName": "安提瓜及巴布达",
+    "cnSpell": "ANTIGUAJIBABUDA",
+    "code": "AG",
+    "enName": "Antigua and Barbuda",
+    "hot": false
+  },
+  {
+    "cnName": "安圭拉岛",
+    "cnSpell": "ANGUILADAO",
+    "code": "AI",
+    "enName": "Anguilla",
+    "hot": false
+  },
+  {
+    "cnName": "阿尔巴尼亚",
+    "cnSpell": "AERBANIYA",
+    "code": "AL",
+    "enName": "Albania",
+    "hot": false
+  },
+  {
+    "cnName": "亚美尼亚",
+    "cnSpell": "YAMEINIYA",
+    "code": "AM",
+    "enName": "Armenia",
+    "hot": false
+  },
+  {
+    "cnName": "荷属安的列斯群岛",
+    "cnSpell": "HESHUANDELIESIQUNDAO",
+    "code": "AN",
+    "enName": "NETHERLANDS ANTILLES",
+    "hot": false
+  },
+  {
+    "cnName": "安哥拉",
+    "cnSpell": "ANGELA",
+    "code": "AO",
+    "enName": "ANGOLA",
+    "hot": false
+  },
+  {
+    "cnName": "阿根廷",
+    "cnSpell": "AGENTING",
+    "code": "AR",
+    "enName": "ARGENTINA",
+    "hot": false
+  },
+  {
+    "cnName": "美属萨摩亚群岛",
+    "cnSpell": "MEISHUSAMOYAQUNDAO",
+    "code": "AS",
+    "enName": "AMERICAN SAMOA",
+    "hot": false
+  },
+  {
+    "cnName": "奥地利",
+    "cnSpell": "AODILI",
+    "code": "AT",
+    "enName": "AUSTRIA",
+    "hot": false
+  },
+  {
+    "cnName": "澳大利亚",
+    "cnSpell": "AODALIYA",
+    "code": "AU",
+    "enName": "AUSTRALIA",
+    "hot": true
+  },
+  {
+    "cnName": "阿鲁巴岛",
+    "cnSpell": "ALUBADAO",
+    "code": "AW",
+    "enName": "ARUBA",
+    "hot": false
+  },
+  {
+    "cnName": "阿塞拜疆(独联体)",
+    "cnSpell": "ASAIBAIJIANG(DULIANTI)",
+    "code": "AZ",
+    "enName": "AZERBAIJAN",
+    "hot": false
+  },
+  {
+    "cnName": "波斯尼亚-黑塞哥维那共和国",
+    "cnSpell": "BOSINIYA-HEISAIGEWEINAGONGHEGUO",
+    "code": "BA",
+    "enName": "BOSNIA AND HERZEGOVINA",
+    "hot": false
+  },
+  {
+    "cnName": "巴巴多斯",
+    "cnSpell": "BABADUOSI",
+    "code": "BB",
+    "enName": "BARBADOS",
+    "hot": false
+  },
+  {
+    "cnName": "孟加拉国",
+    "cnSpell": "MENGJIALAGUO",
+    "code": "BD",
+    "enName": "BANGLADESH",
+    "hot": false
+  },
+  {
+    "cnName": "比利时",
+    "cnSpell": "BILISHI",
+    "code": "BE",
+    "enName": "BELGIUM",
+    "hot": false
+  },
+  {
+    "cnName": "布基纳法索",
+    "cnSpell": "BUJINAFASUO",
+    "code": "BF",
+    "enName": "BURKINA FASO",
+    "hot": false
+  },
+  {
+    "cnName": "保加利亚",
+    "cnSpell": "BAOJIALIYA",
+    "code": "BG",
+    "enName": "BULGARIA",
+    "hot": false
+  },
+  {
+    "cnName": "巴林",
+    "cnSpell": "BALIN",
+    "code": "BH",
+    "enName": "BAHRAIN",
+    "hot": false
+  },
+  {
+    "cnName": "布隆迪",
+    "cnSpell": "BULONGDI",
+    "code": "BI",
+    "enName": "BURUNDI",
+    "hot": false
+  },
+  {
+    "cnName": "贝宁",
+    "cnSpell": "BEINING",
+    "code": "BJ",
+    "enName": "BENIN",
+    "hot": false
+  },
+  {
+    "cnName": "百慕大",
+    "cnSpell": "BAIMUDA",
+    "code": "BM",
+    "enName": "BERMUDA",
+    "hot": false
+  },
+  {
+    "cnName": "文莱",
+    "cnSpell": "WENLAI",
+    "code": "BN",
+    "enName": "BRUNEI",
+    "hot": false
+  },
+  {
+    "cnName": "波利维亚",
+    "cnSpell": "BOLIWEIYA",
+    "code": "BO",
+    "enName": "BOLIVIA",
+    "hot": false
+  },
+  {
+    "cnName": "巴西",
+    "cnSpell": "BAXI",
+    "code": "BR",
+    "enName": "BRAZIL",
+    "hot": true
+  },
+  {
+    "cnName": "巴哈马",
+    "cnSpell": "BAHAMA",
+    "code": "BS",
+    "enName": "BAHAMAS",
+    "hot": false
+  },
+  {
+    "cnName": "不丹",
+    "cnSpell": "BUDAN",
+    "code": "BT",
+    "enName": "BHUTAN",
+    "hot": false
+  },
+  {
+    "cnName": "布维岛",
+    "cnSpell": "BUWEIDAO",
+    "code": "BV",
+    "enName": "BOUVET ISLAND",
+    "hot": false
+  },
+  {
+    "cnName": "博茨瓦纳",
+    "cnSpell": "BOCIWANA",
+    "code": "BW",
+    "enName": "BOTSWANA",
+    "hot": false
+  },
+  {
+    "cnName": "白俄罗斯(独联体)",
+    "cnSpell": "BAIELUOSI(DULIANTI)",
+    "code": "BY",
+    "enName": "BELARUS",
+    "hot": false
+  },
+  {
+    "cnName": "伯利兹",
+    "cnSpell": "BOLIZI",
+    "code": "BZ",
+    "enName": "BELIZE",
+    "hot": false
+  },
+  {
+    "cnName": "加拿大",
+    "cnSpell": "JIANADA",
+    "code": "CA",
+    "enName": "Canada",
+    "hot": true
+  },
+  {
+    "cnName": "科科斯群岛",
+    "cnSpell": "KEKESIQUNDAO",
+    "code": "CC",
+    "enName": "COCOS(KEELING)ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "刚果民主共和国",
+    "cnSpell": "GANGGUOMINZHUGONGHEGUO",
+    "code": "CD",
+    "enName": "CONGO REPUBLIC ",
+    "hot": false
+  },
+  {
+    "cnName": "中非共和国",
+    "cnSpell": "ZHONGFEIGONGHEGUO",
+    "code": "CF",
+    "enName": "CENTRAL REPUBLIC",
+    "hot": false
+  },
+  {
+    "cnName": "刚果",
+    "cnSpell": "GANGGUO",
+    "code": "CG",
+    "enName": "CONGO",
+    "hot": false
+  },
+  {
+    "cnName": "瑞士",
+    "cnSpell": "RUISHI",
+    "code": "CH",
+    "enName": "SWITZERLAND",
+    "hot": false
+  },
+  {
+    "cnName": "科特迪瓦(象牙海岸)",
+    "cnSpell": "KETEDIWAXIANGYAHAIAN",
+    "code": "CI",
+    "enName": "COTE D`LVOIRE(IVORY)",
+    "hot": false
+  },
+  {
+    "cnName": "库克群岛",
+    "cnSpell": "KUKEQUNDAO",
+    "code": "CK",
+    "enName": "COOK ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "智利",
+    "cnSpell": "ZHILI",
+    "code": "CL",
+    "enName": "CHILE",
+    "hot": false
+  },
+  {
+    "cnName": "喀麦隆",
+    "cnSpell": "KAMAILONG",
+    "code": "CM",
+    "enName": "CAMEROON",
+    "hot": false
+  },
+  {
+    "cnName": "中国",
+    "cnSpell": "ZHONGGUO",
+    "code": "CN",
+    "enName": "CHINA",
+    "hot": true
+  },
+  {
+    "cnName": "哥伦比亚",
+    "cnSpell": "GELUNBIYA",
+    "code": "CO",
+    "enName": "COLOMBIA",
+    "hot": false
+  },
+  {
+    "cnName": "哥斯达黎加",
+    "cnSpell": "GESIDALIJIA",
+    "code": "CR",
+    "enName": "COSTA RICA",
+    "hot": false
+  },
+  {
+    "cnName": "古巴",
+    "cnSpell": "GUBA",
+    "code": "CU",
+    "enName": "CUBA",
+    "hot": false
+  },
+  {
+    "cnName": "佛得角群岛",
+    "cnSpell": "FODEJIAOQUNDAO",
+    "code": "CV",
+    "enName": "CAPE VERDE",
+    "hot": false
+  },
+  {
+    "cnName": "圣诞岛",
+    "cnSpell": "SHENGDANDAO",
+    "code": "CX",
+    "enName": "CHRISTMAS ISLAND",
+    "hot": false
+  },
+  {
+    "cnName": "塞浦路斯",
+    "cnSpell": "SAIPULUSI",
+    "code": "CY",
+    "enName": "CYPRUS",
+    "hot": false
+  },
+  {
+    "cnName": "捷克共和国",
+    "cnSpell": "JIEKEGONGHEGUO",
+    "code": "CZ",
+    "enName": "CZECH REPUBLIC",
+    "hot": false
+  },
+  {
+    "cnName": "德国",
+    "cnSpell": "DEGUO",
+    "code": "DE",
+    "enName": "GERMANY",
+    "hot": true
+  },
+  {
+    "cnName": "吉布提",
+    "cnSpell": "JIBUTI",
+    "code": "DJ",
+    "enName": "DJIBOUTI",
+    "hot": false
+  },
+  {
+    "cnName": "丹麦",
+    "cnSpell": "DANMAI",
+    "code": "DK",
+    "enName": "DENMARK",
+    "hot": false
+  },
+  {
+    "cnName": "多米尼克",
+    "cnSpell": "DUOMINIKE",
+    "code": "DM",
+    "enName": "DOMINICA",
+    "hot": false
+  },
+  {
+    "cnName": "多米尼加共合国",
+    "cnSpell": "DUOMINIJIAGONGHEGUO",
+    "code": "DO",
+    "enName": "DOMINICAN REPUBLIC",
+    "hot": false
+  },
+  {
+    "cnName": "阿尔及利亚",
+    "cnSpell": "AERJILIYA",
+    "code": "DZ",
+    "enName": "ALGERIA",
+    "hot": false
+  },
+  {
+    "cnName": "厄瓜多尔",
+    "cnSpell": "EGUADUOER",
+    "code": "EC",
+    "enName": "ECUADOR",
+    "hot": false
+  },
+  {
+    "cnName": "爱沙尼亚",
+    "cnSpell": "AISHANIYA",
+    "code": "EE",
+    "enName": "ESTONIA",
+    "hot": false
+  },
+  {
+    "cnName": "埃及",
+    "cnSpell": "AIJI",
+    "code": "EG",
+    "enName": "EGYPT",
+    "hot": false
+  },
+  {
+    "cnName": "西撒哈拉",
+    "cnSpell": "XISAHALA",
+    "code": "EH",
+    "enName": "WESTERN SAHARA ",
+    "hot": false
+  },
+  {
+    "cnName": "厄里特立亚",
+    "cnSpell": "ELITELIYA",
+    "code": "ER",
+    "enName": "ERITREA",
+    "hot": false
+  },
+  {
+    "cnName": "西班牙",
+    "cnSpell": "XIBANYA",
+    "code": "ES",
+    "enName": "SPAIN",
+    "hot": true
+  },
+  {
+    "cnName": "埃塞俄比亚",
+    "cnSpell": "AISAIEBIYA",
+    "code": "ET",
+    "enName": "ETHIOPIA",
+    "hot": false
+  },
+  {
+    "cnName": "芬兰",
+    "cnSpell": "FENLAN",
+    "code": "FI",
+    "enName": "FINLAND",
+    "hot": false
+  },
+  {
+    "cnName": "斐济",
+    "cnSpell": "FEIJI",
+    "code": "FJ",
+    "enName": "FIJI",
+    "hot": false
+  },
+  {
+    "cnName": "福克兰群岛",
+    "cnSpell": "FUKELANQUNDAO",
+    "code": "FK",
+    "enName": "FALKLAND ISLAND",
+    "hot": false
+  },
+  {
+    "cnName": "密克罗尼西亚",
+    "cnSpell": "MIKELUONIXIYA",
+    "code": "FM",
+    "enName": "MICRONESIA",
+    "hot": false
+  },
+  {
+    "cnName": "法鲁群岛",
+    "cnSpell": "FALUOQUNDAO",
+    "code": "FO",
+    "enName": "FAROE ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "法国",
+    "cnSpell": "FAGUO",
+    "code": "FR",
+    "enName": "FRANCE",
+    "hot": true
+  },
+  {
+    "cnName": "法属美特罗波利坦",
+    "cnSpell": "FASHUMEITELUOBOLITAN",
+    "code": "FX",
+    "enName": "FRANCE, METROPOLITAN",
+    "hot": false
+  },
+  {
+    "cnName": "加蓬",
+    "cnSpell": "JIAPENG",
+    "code": "GA",
+    "enName": "GABON",
+    "hot": false
+  },
+  {
+    "cnName": "英国",
+    "cnSpell": "YINGGUO",
+    "code": "GB",
+    "enName": "UNITED KINGDOM",
+    "hot": true
+  },
+  {
+    "cnName": "格林纳达",
+    "cnSpell": "GELINNADA",
+    "code": "GD",
+    "enName": "GRENADA",
+    "hot": false
+  },
+  {
+    "cnName": "格鲁吉亚",
+    "cnSpell": "GELUJIYA",
+    "code": "GE",
+    "enName": "GEORGIA",
+    "hot": false
+  },
+  {
+    "cnName": "法属圭亚那",
+    "cnSpell": "FASHUGUIYANA",
+    "code": "GF",
+    "enName": "FRENCH GUIANA",
+    "hot": false
+  },
+  {
+    "cnName": "根西岛",
+    "cnSpell": "GENXIDAO",
+    "code": "GG",
+    "enName": "GUERNSEY",
+    "hot": false
+  },
+  {
+    "cnName": "加纳",
+    "cnSpell": "JIANA",
+    "code": "GH",
+    "enName": "GHANA",
+    "hot": false
+  },
+  {
+    "cnName": "直布罗陀",
+    "cnSpell": "ZHIBULUOTUO",
+    "code": "GI",
+    "enName": "GIBRALTAR",
+    "hot": false
+  },
+  {
+    "cnName": "格陵兰",
+    "cnSpell": "GELINGLAN",
+    "code": "GL",
+    "enName": "GREENLAND",
+    "hot": false
+  },
+  {
+    "cnName": "冈比亚",
+    "cnSpell": "GANGBIYA",
+    "code": "GM",
+    "enName": "GAMBIA",
+    "hot": false
+  },
+  {
+    "cnName": "几内亚",
+    "cnSpell": "JINEIYA",
+    "code": "GN",
+    "enName": "GUINEA ",
+    "hot": false
+  },
+  {
+    "cnName": "瓜德罗普",
+    "cnSpell": "GUADELUOPU",
+    "code": "GP",
+    "enName": "GUADELOUPE",
+    "hot": false
+  },
+  {
+    "cnName": "赤道几内亚",
+    "cnSpell": "CHIDAOJINEIYA",
+    "code": "GQ",
+    "enName": "EQUATORIAL GUINEA ",
+    "hot": false
+  },
+  {
+    "cnName": "希腊",
+    "cnSpell": "XILA",
+    "code": "GR",
+    "enName": "GREECE",
+    "hot": false
+  },
+  {
+    "cnName": "南乔治亚岛和南桑威奇群岛",
+    "cnSpell": "NANQIAOZHIYADAOHENANSANGWEIQIQUNDAO",
+    "code": "GS",
+    "enName": "SOUTH GEORGIA AND THE SOUTH SANDWICH ISL",
+    "hot": false
+  },
+  {
+    "cnName": "危地马拉",
+    "cnSpell": "WEIDIMALA",
+    "code": "GT",
+    "enName": "GUATEMALA",
+    "hot": false
+  },
+  {
+    "cnName": "关岛",
+    "cnSpell": "GUANDAO",
+    "code": "GU",
+    "enName": "GUAM",
+    "hot": false
+  },
+  {
+    "cnName": "几内亚比绍",
+    "cnSpell": "JINEIYABISHAO",
+    "code": "GW",
+    "enName": "GUINEA BISSAU",
+    "hot": false
+  },
+  {
+    "cnName": "圭亚那",
+    "cnSpell": "GUIYANA",
+    "code": "GY",
+    "enName": "GUYANA (BRITISH)",
+    "hot": false
+  },
+  // {
+  //   "cnName": "香港",
+  //   "cnSpell": "XIANGGANG",
+  //   "code": "HK",
+  //   "enName": "HONG KONG",
+  //   "hot": true
+  // },
+  {
+    "cnName": "赫德岛和麦克唐纳岛",
+    "cnSpell": "HEDEDAOHEMAIKETANGNADAO",
+    "code": "HM",
+    "enName": "HEARD ISLAND AND MCDONALD ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "洪都拉斯",
+    "cnSpell": "HONGDULASI",
+    "code": "HN",
+    "enName": "HONDURAS",
+    "hot": false
+  },
+  {
+    "cnName": "克罗地亚",
+    "cnSpell": "KELUODIYA",
+    "code": "HR",
+    "enName": "CROATIA",
+    "hot": false
+  },
+  {
+    "cnName": "海地",
+    "cnSpell": "HAIDI",
+    "code": "HT",
+    "enName": "HAITI",
+    "hot": false
+  },
+  {
+    "cnName": "匈牙利",
+    "cnSpell": "XIONGYALI",
+    "code": "HU",
+    "enName": "HUNGARY",
+    "hot": false
+  },
+  {
+    "cnName": "加那利群岛",
+    "cnSpell": "JIANALIQUNDAO",
+    "code": "IC",
+    "enName": "CANARY ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "印度尼西亚",
+    "cnSpell": "YINDUNIXIYA",
+    "code": "ID",
+    "enName": "INDONESIA",
+    "hot": true
+  },
+  {
+    "cnName": "爱尔兰",
+    "cnSpell": "AIERLAN",
+    "code": "IE",
+    "enName": "IRELAND",
+    "hot": false
+  },
+  {
+    "cnName": "以色列",
+    "cnSpell": "YISELIE",
+    "code": "IL",
+    "enName": "ISRAEL",
+    "hot": false
+  },
+  {
+    "cnName": "印度",
+    "cnSpell": "YINDU",
+    "code": "IN",
+    "enName": "INDIA",
+    "hot": false
+  },
+  {
+    "cnName": "英属印度洋地区(查各群岛)",
+    "cnSpell": "YINGSHUYINDUYANGDIQUCHAGEQUNDAO",
+    "code": "IO",
+    "enName": "BRITISH INDIAN OCEAN TERRITORY",
+    "hot": false
+  },
+  {
+    "cnName": "伊拉克",
+    "cnSpell": "YILAKE",
+    "code": "IQ",
+    "enName": "IRAQ",
+    "hot": false
+  },
+  {
+    "cnName": "伊朗",
+    "cnSpell": "YILANG",
+    "code": "IR",
+    "enName": "IRAN (ISLAMIC REPUBLIC OF)",
+    "hot": false
+  },
+  {
+    "cnName": "冰岛",
+    "cnSpell": "BINGDAO",
+    "code": "IS",
+    "enName": "ICELAND",
+    "hot": false
+  },
+  {
+    "cnName": "意大利",
+    "cnSpell": "YIDALI",
+    "code": "IT",
+    "enName": "ITALY",
+    "hot": true
+  },
+  {
+    "cnName": "泽西岛(英属)",
+    "cnSpell": "ZEXIDAO(YINGSHU)",
+    "code": "JE",
+    "enName": "JERSEY",
+    "hot": false
+  },
+  {
+    "cnName": "牙买加",
+    "cnSpell": "YAMAIJIA",
+    "code": "JM",
+    "enName": "JAMAICA",
+    "hot": false
+  },
+  {
+    "cnName": "约旦",
+    "cnSpell": "YUEDAN",
+    "code": "JO",
+    "enName": "JORDAN",
+    "hot": false
+  },
+  {
+    "cnName": "日本",
+    "cnSpell": "RIBEN",
+    "code": "JP",
+    "enName": "JAPAN",
+    "hot": true
+  },
+  {
+    "cnName": "南斯拉夫",
+    "cnSpell": "NANSILAFU",
+    "code": "JU",
+    "enName": "YUGOSLAVIA",
+    "hot": false
+  },
+  {
+    "cnName": "肯尼亚",
+    "cnSpell": "KENNIYA",
+    "code": "KE",
+    "enName": "KENYA",
+    "hot": false
+  },
+  {
+    "cnName": "吉尔吉斯斯坦",
+    "cnSpell": "JIERJISISITAN",
+    "code": "KG",
+    "enName": "KYRGYZSTAN",
+    "hot": false
+  },
+  {
+    "cnName": "柬埔寨",
+    "cnSpell": "JIANPUZHAI",
+    "code": "KH",
+    "enName": "CAMBODIA",
+    "hot": false
+  },
+  {
+    "cnName": "基利巴斯共和国",
+    "cnSpell": "JILIBASIGONGHEGUO",
+    "code": "KI",
+    "enName": "KIRIBATI REPUBILC",
+    "hot": false
+  },
+  {
+    "cnName": "科摩罗",
+    "cnSpell": "KEMOLUO",
+    "code": "KM",
+    "enName": "COMOROS",
+    "hot": false
+  },
+  {
+    "cnName": "圣基茨",
+    "cnSpell": "SHENGJICI",
+    "code": "KN",
+    "enName": "SAINT KITTS ",
+    "hot": false
+  },
+  {
+    "cnName": "朝鲜",
+    "cnSpell": "CHAOXIAN",
+    "code": "KP",
+    "enName": "NORTH KOREA",
+    "hot": false
+  },
+  {
+    "cnName": "韩国",
+    "cnSpell": "HANGUO",
+    "code": "KR",
+    "enName": "SOUTH KOREA",
+    "hot": true
+  },
+  {
+    "cnName": "科索沃",
+    "cnSpell": "KESUOWO",
+    "code": "KV",
+    "enName": "KOSOVO",
+    "hot": false
+  },
+  {
+    "cnName": "科威特",
+    "cnSpell": "KEWEITE",
+    "code": "KW",
+    "enName": "KUWAIT",
+    "hot": false
+  },
+  {
+    "cnName": "开曼群岛",
+    "cnSpell": "KAIMANQUNDAO",
+    "code": "KY",
+    "enName": "CAYMAN ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "哈萨克斯坦",
+    "cnSpell": "HASAKESITAN",
+    "code": "KZ",
+    "enName": "KAZAKHSTAN",
+    "hot": false
+  },
+  {
+    "cnName": "老挝",
+    "cnSpell": "LAOWO",
+    "code": "LA",
+    "enName": "LAOS",
+    "hot": false
+  },
+  {
+    "cnName": "黎巴嫩",
+    "cnSpell": "LIBANEN",
+    "code": "LB",
+    "enName": "LEBANON",
+    "hot": false
+  },
+  {
+    "cnName": "圣卢西亚",
+    "cnSpell": "SHENGLUXIYA",
+    "code": "LC",
+    "enName": "ST. LUCIA",
+    "hot": false
+  },
+  {
+    "cnName": "列支敦士登",
+    "cnSpell": "LIEZHIDUNSHIDENG",
+    "code": "LI",
+    "enName": "LIECHTENSTEIN",
+    "hot": false
+  },
+  {
+    "cnName": "斯里兰卡",
+    "cnSpell": "SILILANKA",
+    "code": "LK",
+    "enName": "SRI LANKA",
+    "hot": false
+  },
+  {
+    "cnName": "利比里亚",
+    "cnSpell": "LIBILIYA",
+    "code": "LR",
+    "enName": "LIBERIA",
+    "hot": false
+  },
+  {
+    "cnName": "莱索托",
+    "cnSpell": "LAISUOTUO",
+    "code": "LS",
+    "enName": "LESOTHO",
+    "hot": false
+  },
+  {
+    "cnName": "立陶宛",
+    "cnSpell": "LITAOWAN",
+    "code": "LT",
+    "enName": "LITHUANIA",
+    "hot": false
+  },
+  {
+    "cnName": "卢森堡",
+    "cnSpell": "LUSENBAO",
+    "code": "LU",
+    "enName": "LUXEMBOURG",
+    "hot": false
+  },
+  {
+    "cnName": "拉脱维亚",
+    "cnSpell": "LATUOWEIYA",
+    "code": "LV",
+    "enName": "LATVIA",
+    "hot": false
+  },
+  {
+    "cnName": "利比亚",
+    "cnSpell": "LIBIYA",
+    "code": "LY",
+    "enName": "LIBYA",
+    "hot": false
+  },
+  {
+    "cnName": "摩洛哥",
+    "cnSpell": "MOLUOGE",
+    "code": "MA",
+    "enName": "MOROCCO",
+    "hot": false
+  },
+  {
+    "cnName": "摩纳哥",
+    "cnSpell": "MONAGE",
+    "code": "MC",
+    "enName": "MONACO",
+    "hot": false
+  },
+  {
+    "cnName": "摩尔多瓦",
+    "cnSpell": "MOERDUOWA",
+    "code": "MD",
+    "enName": "MOLDOVA",
+    "hot": false
+  },
+  {
+    "cnName": "黑山共和国",
+    "cnSpell": "HEISHANGONGHEGUO",
+    "code": "ME",
+    "enName": "MONTENEGRO",
+    "hot": false
+  },
+  {
+    "cnName": "马达加斯加",
+    "cnSpell": "MADAJIASIJIA",
+    "code": "MG",
+    "enName": "MADAGASCAR",
+    "hot": false
+  },
+  {
+    "cnName": "马绍尔群岛",
+    "cnSpell": "MASHAOERQUNDAO",
+    "code": "MH",
+    "enName": "MARSHALL ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "马其顿",
+    "cnSpell": "MAQIDUN",
+    "code": "MK",
+    "enName": "MACEDONIA",
+    "hot": false
+  },
+  {
+    "cnName": "马里",
+    "cnSpell": "MALI",
+    "code": "ML",
+    "enName": "MALI",
+    "hot": false
+  },
+  {
+    "cnName": "缅甸",
+    "cnSpell": "MIANDIAN",
+    "code": "MM",
+    "enName": "MYANMAR",
+    "hot": false
+  },
+  {
+    "cnName": "蒙古",
+    "cnSpell": "MENGGU",
+    "code": "MN",
+    "enName": "MONGOLIA",
+    "hot": false
+  },
+  // {
+  //   "cnName": "澳门",
+  //   "cnSpell": "AOMEN",
+  //   "code": "MO",
+  //   "enName": "MACAU",
+  //   "hot": true
+  // },
+  {
+    "cnName": "塞班岛",
+    "cnSpell": "SAIBANDAO",
+    "code": "MP",
+    "enName": "SAIPAN",
+    "hot": false
+  },
+  {
+    "cnName": "马提尼克岛",
+    "cnSpell": "MATINIKEDAO",
+    "code": "MQ",
+    "enName": "MARTINIQUE",
+    "hot": false
+  },
+  {
+    "cnName": "毛里塔尼亚",
+    "cnSpell": "MAOLITANIYA",
+    "code": "MR",
+    "enName": "MAURITANIA",
+    "hot": false
+  },
+  {
+    "cnName": "蒙特塞拉岛",
+    "cnSpell": "MENGTESAILADAO",
+    "code": "MS",
+    "enName": "MONTSERRAT",
+    "hot": false
+  },
+  {
+    "cnName": "马尔他",
+    "cnSpell": "MAERTA",
+    "code": "MT",
+    "enName": "MALTA",
+    "hot": false
+  },
+  {
+    "cnName": "毛里求斯",
+    "cnSpell": "MAOLIQIUSI",
+    "code": "MU",
+    "enName": "MAURITIUS",
+    "hot": false
+  },
+  {
+    "cnName": "马尔代夫",
+    "cnSpell": "MAERDAIFU",
+    "code": "MV",
+    "enName": "MALDIVES",
+    "hot": false
+  },
+  {
+    "cnName": "马拉维",
+    "cnSpell": "MALAWEI",
+    "code": "MW",
+    "enName": "MALAWI",
+    "hot": false
+  },
+  {
+    "cnName": "墨西哥",
+    "cnSpell": "MOXIGE",
+    "code": "MX",
+    "enName": "MEXICO",
+    "hot": false
+  },
+  {
+    "cnName": "马来西亚",
+    "cnSpell": "MALAIXIYA",
+    "code": "MY",
+    "enName": "MALAYSIA",
+    "hot": false
+  },
+  {
+    "cnName": "莫桑比克",
+    "cnSpell": "MOSANGBIKE",
+    "code": "MZ",
+    "enName": "MOZAMBIQUE",
+    "hot": false
+  },
+  {
+    "cnName": "纳米比亚",
+    "cnSpell": "NAMIBIYA",
+    "code": "NA",
+    "enName": "NAMIBIA",
+    "hot": false
+  },
+  {
+    "cnName": "新喀里多尼亚",
+    "cnSpell": "XINKALIDUONIYA",
+    "code": "NC",
+    "enName": "NEW CALEDONIA",
+    "hot": false
+  },
+  {
+    "cnName": "尼日尔",
+    "cnSpell": "NIRIER",
+    "code": "NE",
+    "enName": "NIGER",
+    "hot": false
+  },
+  {
+    "cnName": "诺褔克岛",
+    "cnSpell": "NUOFUKEDAO",
+    "code": "NF",
+    "enName": "NORFOLK ISLAND",
+    "hot": false
+  },
+  {
+    "cnName": "尼日利亚",
+    "cnSpell": "NIRILIYA",
+    "code": "NG",
+    "enName": "NIGERIA",
+    "hot": false
+  },
+  {
+    "cnName": "尼加拉瓜",
+    "cnSpell": "NIJIALAGUA",
+    "code": "NI",
+    "enName": "NICARAGUA",
+    "hot": false
+  },
+  {
+    "cnName": "荷兰",
+    "cnSpell": "HELAN",
+    "code": "NL",
+    "enName": "NETHERLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "挪威",
+    "cnSpell": "NUOWEI",
+    "code": "NO",
+    "enName": "NORWAY",
+    "hot": false
+  },
+  {
+    "cnName": "尼泊尔",
+    "cnSpell": "NIBOER",
+    "code": "NP",
+    "enName": "NEPAL",
+    "hot": false
+  },
+  {
+    "cnName": "瑙鲁共和国",
+    "cnSpell": "NAOLUGONGHEGUO",
+    "code": "NR",
+    "enName": "NAURU REPUBLIC ",
+    "hot": false
+  },
+  {
+    "cnName": "纽埃岛",
+    "cnSpell": "NIUAIDAO",
+    "code": "NU",
+    "enName": "NIUE",
+    "hot": false
+  },
+  {
+    "cnName": "新西兰",
+    "cnSpell": "XINXILAN",
+    "code": "NZ",
+    "enName": "NEW ZEALAND",
+    "hot": false
+  },
+  {
+    "cnName": "阿曼",
+    "cnSpell": "AMAN",
+    "code": "OM",
+    "enName": "OMAN",
+    "hot": false
+  },
+  {
+    "cnName": "巴拿马",
+    "cnSpell": "BANAMA",
+    "code": "PA",
+    "enName": "PANAMA",
+    "hot": false
+  },
+  {
+    "cnName": "秘鲁",
+    "cnSpell": "MILU",
+    "code": "PE",
+    "enName": "PERU",
+    "hot": false
+  },
+  {
+    "cnName": "塔希堤岛(法属波利尼西亚)",
+    "cnSpell": "TAXIDIDAO(FASHUBOLINIXIYA)",
+    "code": "PF",
+    "enName": "FRENCH POLYNESIA",
+    "hot": false
+  },
+  {
+    "cnName": "巴布亚新几内亚",
+    "cnSpell": "BABUYAXINJINEIYA",
+    "code": "PG",
+    "enName": "PAPUA NEW GUINEA",
+    "hot": false
+  },
+  {
+    "cnName": "菲律宾",
+    "cnSpell": "FEILVBIN",
+    "code": "PH",
+    "enName": "PHILIPPINES",
+    "hot": false
+  },
+  {
+    "cnName": "巴基斯坦",
+    "cnSpell": "BAJISITAN",
+    "code": "PK",
+    "enName": "PAKISTAN",
+    "hot": false
+  },
+  {
+    "cnName": "波兰",
+    "cnSpell": "BOLAN",
+    "code": "PL",
+    "enName": "POLAND",
+    "hot": false
+  },
+  {
+    "cnName": "圣皮埃尔和密克隆群岛",
+    "cnSpell": "SHENGPIAIERHEMIKELONGQUNDAO",
+    "code": "PM",
+    "enName": "SAINT PIERRE AND MIQUELON",
+    "hot": false
+  },
+  {
+    "cnName": "皮特凯恩群岛",
+    "cnSpell": "PITEKAIENQUNDAO",
+    "code": "PN",
+    "enName": "PITCAIRN ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "波多黎各",
+    "cnSpell": "BODUOLIGE",
+    "code": "PR",
+    "enName": "PUERTO RICO",
+    "hot": false
+  },
+  {
+    "cnName": "巴勒斯坦",
+    "cnSpell": "BALESITAN",
+    "code": "PS",
+    "enName": "PALESTINE",
+    "hot": false
+  },
+  {
+    "cnName": "葡萄牙",
+    "cnSpell": "PUTAOYA",
+    "code": "PT",
+    "enName": "PORTUGAL",
+    "hot": false
+  },
+  {
+    "cnName": "帕劳",
+    "cnSpell": "PALAO",
+    "code": "PW",
+    "enName": "PALAU",
+    "hot": false
+  },
+  {
+    "cnName": "巴拉圭",
+    "cnSpell": "BALAGUI",
+    "code": "PY",
+    "enName": "PARAGUAY",
+    "hot": false
+  },
+  {
+    "cnName": "卡塔尔",
+    "cnSpell": "KATAER",
+    "code": "QA",
+    "enName": "QATAR",
+    "hot": false
+  },
+  {
+    "cnName": "留尼汪岛",
+    "cnSpell": "LIUNIWANGDAO",
+    "code": "RE",
+    "enName": "REUNION ISLAND ",
+    "hot": false
+  },
+  {
+    "cnName": "罗马尼亚",
+    "cnSpell": "LUOMANIYA",
+    "code": "RO",
+    "enName": "ROMANIA",
+    "hot": false
+  },
+  {
+    "cnName": "塞尔维亚共和国",
+    "cnSpell": "SAIERWEIYAGONGHEGUO",
+    "code": "RS",
+    "enName": "SERBIA, REPUBLIC OF",
+    "hot": false
+  },
+  {
+    "cnName": "俄罗斯",
+    "cnSpell": "ELUOSI",
+    "code": "RU",
+    "enName": "RUSSIA",
+    "hot": true
+  },
+  {
+    "cnName": "卢旺达",
+    "cnSpell": "LUWANGDA",
+    "code": "RW",
+    "enName": "RWANDA",
+    "hot": false
+  },
+  {
+    "cnName": "沙特阿拉伯",
+    "cnSpell": "SHATEALABO",
+    "code": "SA",
+    "enName": "SAUDI ARABIA",
+    "hot": false
+  },
+  {
+    "cnName": "所罗门群岛",
+    "cnSpell": "SUOLUOMENQUNDAO",
+    "code": "SB",
+    "enName": "SOLOMON ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "塞舌尔",
+    "cnSpell": "SAISHEER",
+    "code": "SC",
+    "enName": "SEYCHELLES",
+    "hot": false
+  },
+  {
+    "cnName": "苏丹",
+    "cnSpell": "SUDAN",
+    "code": "SD",
+    "enName": "SUDAN",
+    "hot": false
+  },
+  {
+    "cnName": "瑞典",
+    "cnSpell": "RUIDIAN",
+    "code": "SE",
+    "enName": "SWEDEN",
+    "hot": false
+  },
+  {
+    "cnName": "新加坡",
+    "cnSpell": "XINJIAPO",
+    "code": "SG",
+    "enName": "SINGAPORE",
+    "hot": false
+  },
+  {
+    "cnName": "圣赫勒拿岛",
+    "cnSpell": "SHENGHELENADAO",
+    "code": "SH",
+    "enName": "ST HELENA",
+    "hot": false
+  },
+  {
+    "cnName": "斯洛文尼亚",
+    "cnSpell": "SILUOWENNIYA",
+    "code": "SI",
+    "enName": "SLOVENIA",
+    "hot": false
+  },
+  {
+    "cnName": "斯瓦尔巴岛和扬马延岛",
+    "cnSpell": "SIWAERBADAOHEYANGMAYANDAO",
+    "code": "SJ",
+    "enName": "SVALBARD AND JAN MAYEN",
+    "hot": false
+  },
+  {
+    "cnName": "斯洛伐克共和国",
+    "cnSpell": "SILUOFAKEGONGHEGUO",
+    "code": "SK",
+    "enName": "SLOVAKIA REPUBLIC",
+    "hot": false
+  },
+  {
+    "cnName": "塞拉里昂",
+    "cnSpell": "SAILALIANG",
+    "code": "SL",
+    "enName": "SIERRA LEONE",
+    "hot": false
+  },
+  {
+    "cnName": "圣马力诺",
+    "cnSpell": "SHENGMALINUO",
+    "code": "SM",
+    "enName": "SAN MARINO",
+    "hot": false
+  },
+  {
+    "cnName": "塞内加尔",
+    "cnSpell": "SAINEIJIAER",
+    "code": "SN",
+    "enName": "SENEGAL",
+    "hot": false
+  },
+  {
+    "cnName": "索马里",
+    "cnSpell": "SUOMALI",
+    "code": "SO",
+    "enName": "SOMALIA",
+    "hot": false
+  },
+  {
+    "cnName": "苏里南",
+    "cnSpell": "SULINAN",
+    "code": "SR",
+    "enName": "SURINAME",
+    "hot": false
+  },
+  {
+    "cnName": "南苏丹共和国",
+    "cnSpell": "NANSUDANGONGHEGUO",
+    "code": "SS",
+    "enName": "SOUTH SUDAN",
+    "hot": false
+  },
+  {
+    "cnName": "圣多美和普林西比",
+    "cnSpell": "SHENGDUOMEIHEPULINXIBI",
+    "code": "ST",
+    "enName": "SAO TOME AND PRINCIPE",
+    "hot": false
+  },
+  {
+    "cnName": "萨尔瓦多",
+    "cnSpell": "SAERWADUO",
+    "code": "SV",
+    "enName": "EL SALVADOR",
+    "hot": false
+  },
+  {
+    "cnName": "叙利亚",
+    "cnSpell": "XULIYA",
+    "code": "SY",
+    "enName": "SYRIA",
+    "hot": false
+  },
+  {
+    "cnName": "斯威士兰",
+    "cnSpell": "SIWEISHILAN",
+    "code": "SZ",
+    "enName": "SWAZILAND",
+    "hot": false
+  },
+  {
+    "cnName": "特里斯坦",
+    "cnSpell": "TELISITAN",
+    "code": "TA",
+    "enName": "TRISTAN DA CUNBA",
+    "hot": false
+  },
+  {
+    "cnName": "特克斯和凯科斯群岛",
+    "cnSpell": "TEKESIHEKAIKESIQUNDAO",
+    "code": "TC",
+    "enName": "TURKS AND CAICOS ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "乍得",
+    "cnSpell": "ZHADE",
+    "code": "TD",
+    "enName": "CHAD",
+    "hot": false
+  },
+  {
+    "cnName": "法属南部领土",
+    "cnSpell": "FASHUNANBULINGTU",
+    "code": "TF",
+    "enName": "FRENCH SOUTHERN TERRITORIES",
+    "hot": false
+  },
+  {
+    "cnName": "多哥",
+    "cnSpell": "DUOGE",
+    "code": "TG",
+    "enName": "TOGO",
+    "hot": false
+  },
+  {
+    "cnName": "泰国",
+    "cnSpell": "TAIGUO",
+    "code": "TH",
+    "enName": "THAILAND",
+    "hot": false
+  },
+  {
+    "cnName": "塔吉克斯坦",
+    "cnSpell": "TAJIKESITAN",
+    "code": "TJ",
+    "enName": "TAJIKISTAN",
+    "hot": false
+  },
+  {
+    "cnName": "托克劳",
+    "cnSpell": "TUOKELAO",
+    "code": "TK",
+    "enName": "TOKELAU",
+    "hot": false
+  },
+  {
+    "cnName": "东帝汶",
+    "cnSpell": "DONGDI汶",
+    "code": "TL",
+    "enName": "EAST TIMOR",
+    "hot": false
+  },
+  {
+    "cnName": "土库曼斯坦",
+    "cnSpell": "TUKUMANSITAN",
+    "code": "TM",
+    "enName": "TURKMENISTAN",
+    "hot": false
+  },
+  {
+    "cnName": "突尼斯",
+    "cnSpell": "TUNISI",
+    "code": "TN",
+    "enName": "TUNISIA",
+    "hot": false
+  },
+  {
+    "cnName": "汤加",
+    "cnSpell": "TANGJIA",
+    "code": "TO",
+    "enName": "TONGA",
+    "hot": false
+  },
+  {
+    "cnName": "土耳其",
+    "cnSpell": "TUERQI",
+    "code": "TR",
+    "enName": "TURKEY",
+    "hot": true
+  },
+  {
+    "cnName": "特立尼达和多巴哥",
+    "cnSpell": "TELINIDAHEDUOBAGE",
+    "code": "TT",
+    "enName": "TRINIDAD AND TOBAGO",
+    "hot": false
+  },
+  {
+    "cnName": "图瓦卢",
+    "cnSpell": "TUWALU",
+    "code": "TV",
+    "enName": "TUVALU",
+    "hot": false
+  },
+  // {
+  //   "cnName": "台灣",
+  //   "cnSpell": "TAIWAN",
+  //   "code": "TW",
+  //   "enName": "TAIWAN",
+  //   "hot": true
+  // },
+  {
+    "cnName": "坦桑尼亚",
+    "cnSpell": "TANSANGNIYA",
+    "code": "TZ",
+    "enName": "TANZANIA",
+    "hot": false
+  },
+  {
+    "cnName": "乌克兰",
+    "cnSpell": "WUKELAN",
+    "code": "UA",
+    "enName": "UKRAINE",
+    "hot": false
+  },
+  {
+    "cnName": "乌干达",
+    "cnSpell": "WUGANDA",
+    "code": "UG",
+    "enName": "UGANDA",
+    "hot": false
+  },
+  {
+    "cnName": "美国本土外小岛屿",
+    "cnSpell": "MEIGUOBENTUWAIXIAODAOYU",
+    "code": "UM",
+    "enName": "UNITED STATES MINOR OUTLYING ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "美国",
+    "cnSpell": "MEIGUO",
+    "code": "US",
+    "enName": "UNITED STATES OF AMERICA",
+    "hot": true
+  },
+  {
+    "cnName": "乌拉圭",
+    "cnSpell": "WULAGUI",
+    "code": "UY",
+    "enName": "URUGUAY",
+    "hot": false
+  },
+  {
+    "cnName": "乌兹别克斯坦",
+    "cnSpell": "WUZIBIEKESITAN",
+    "code": "UZ",
+    "enName": "UZBEKISTAN",
+    "hot": false
+  },
+  {
+    "cnName": "梵蒂冈",
+    "cnSpell": "FANDIGANG",
+    "code": "VA",
+    "enName": "VATICAN CITY",
+    "hot": false
+  },
+  {
+    "cnName": "圣文森特和格林纳丁斯岛",
+    "cnSpell": "SHENGWENSENTEHEGELINNADINGSIDAO",
+    "code": "VC",
+    "enName": "SAINT VINCENT AND THE GRENADINES",
+    "hot": false
+  },
+  {
+    "cnName": "委内瑞拉",
+    "cnSpell": "WEINEIRUILA",
+    "code": "VE",
+    "enName": "VENEZUELA",
+    "hot": false
+  },
+  {
+    "cnName": "英属维尔京群岛",
+    "cnSpell": "YINGSHUWEIERJINGQUNDAO",
+    "code": "VG",
+    "enName": "VIRGIN ISLAND (GB)",
+    "hot": false
+  },
+  {
+    "cnName": "美属维尔京群岛",
+    "cnSpell": "MEISHUWEIERJINGQUNDAO",
+    "code": "VI",
+    "enName": "VIRGIN ISLAND (US)",
+    "hot": false
+  },
+  {
+    "cnName": "越南",
+    "cnSpell": "YUENAN",
+    "code": "VN",
+    "enName": "VIETNAM",
+    "hot": false
+  },
+  {
+    "cnName": "瓦努阿图",
+    "cnSpell": "WANUATU",
+    "code": "VU",
+    "enName": "VANUATU",
+    "hot": false
+  },
+  {
+    "cnName": "瓦利斯群岛和富图纳群岛",
+    "cnSpell": "WALISIQUNDAOHEFUTUNAQUNDAO",
+    "code": "WF",
+    "enName": "WALLIS AND FUTUNA ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "西萨摩亚",
+    "cnSpell": "XISAMOYA",
+    "code": "WS",
+    "enName": "WESTERN SAMOA",
+    "hot": false
+  },
+  {
+    "cnName": "伯奈尔岛",
+    "cnSpell": "BONAIERDAO",
+    "code": "XB",
+    "enName": "BONAIRE",
+    "hot": false
+  },
+  {
+    "cnName": "库拉索岛(荷兰)",
+    "cnSpell": "KULASUODAOHELAN",
+    "code": "XC",
+    "enName": "CURACAO",
+    "hot": false
+  },
+  {
+    "cnName": "阿森松",
+    "cnSpell": "ASENSONG",
+    "code": "XD",
+    "enName": "ASCENSION",
+    "hot": false
+  },
+  {
+    "cnName": "圣尤斯塔提马斯岛",
+    "cnSpell": "SHENGYOUSITATIMASIDAO",
+    "code": "XE",
+    "enName": "ST. EUSTATIUS",
+    "hot": false
+  },
+  {
+    "cnName": "北非西班牙属土",
+    "cnSpell": "BEIFEIXIBANYASHUTU",
+    "code": "XG",
+    "enName": "SPANISH TERRITORIES OF N.AFRICA",
+    "hot": false
+  },
+  {
+    "cnName": "亚速尔群岛",
+    "cnSpell": "YASUERQUNDAO",
+    "code": "XH",
+    "enName": "AZORES",
+    "hot": false
+  },
+  {
+    "cnName": "马德拉岛",
+    "cnSpell": "MADELADAO",
+    "code": "XI",
+    "enName": "MADEIRA",
+    "hot": false
+  },
+  {
+    "cnName": "巴利阿里群岛",
+    "cnSpell": "BALIALIQUNDAO",
+    "code": "XJ",
+    "enName": "BALEARIC ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "加罗林群岛",
+    "cnSpell": "JIALUOLINQUNDAO",
+    "code": "XK",
+    "enName": "CAROLINE ISLANDS",
+    "hot": false
+  },
+  {
+    "cnName": "圣马腾岛",
+    "cnSpell": "SHENGMADINGDAO",
+    "code": "XM",
+    "enName": "ST. MAARTEN",
+    "hot": false
+  },
+  {
+    "cnName": "尼维斯岛",
+    "cnSpell": "NIWEISIDAO",
+    "code": "XN",
+    "enName": "NEVIS",
+    "hot": false
+  },
+  {
+    "cnName": "索马里共和国",
+    "cnSpell": "SUOMALIGONGHEGUO",
+    "code": "XS",
+    "enName": "SOMALILAND",
+    "hot": false
+  },
+  {
+    "cnName": "圣巴特勒米岛",
+    "cnSpell": "SHENGBATAILEMIDAO",
+    "code": "XY",
+    "enName": "ST. BARTHELEMY",
+    "hot": false
+  },
+  {
+    "cnName": "也门阿拉伯共合国",
+    "cnSpell": "YEMENGONGHEGUO",
+    "code": "YE",
+    "enName": "YEMEN, REPUBLIC OF",
+    "hot": false
+  },
+  {
+    "cnName": "马约特",
+    "cnSpell": "MAYUETE",
+    "code": "YT",
+    "enName": "MAYOTTE",
+    "hot": false
+  },
+  {
+    "cnName": "南非",
+    "cnSpell": "NANFEI",
+    "code": "ZA",
+    "enName": "SOUTH AFRICA",
+    "hot": true
+  },
+  {
+    "cnName": "赞比亚",
+    "cnSpell": "ZANBIYA",
+    "code": "ZM",
+    "enName": "ZAMBIA",
+    "hot": false
+  },
+  {
+    "cnName": "扎伊尔",
+    "cnSpell": "ZHAYIER",
+    "code": "ZR",
+    "enName": "ZAIRE",
+    "hot": false
+  },
+  {
+    "cnName": "津巴布韦",
+    "cnSpell": "JINBABUWEI",
+    "code": "ZW",
+    "enName": "ZIMBABWE",
+    "hot": false
+  }
+]

+ 1658 - 0
src/utils/location.js

@@ -0,0 +1,1658 @@
+export const locationOptions = [
+  {
+      name: "北京市",
+      city: [
+          {
+              name: "北京市",
+              districtAndCounty: ["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "怀柔区", "平谷区", "密云县", "延庆县", "延庆镇"]
+          }
+      ]
+  },
+  {
+      name: "天津市",
+      city: [
+          {
+              name: "天津市",
+              districtAndCounty: ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "蓟县", "宁河县", "芦台镇", "静海县", "静海镇"]
+          }
+      ]
+  },
+  {
+      name: "上海市",
+      city: [
+          {
+              name: "上海市",
+              districtAndCounty: ["黄浦区", "卢湾区", "徐汇区", "长宁区", "静安区", "普陀区", "闸北区", "虹口区", "杨浦区", "闵行区", "宝山区?", "嘉定区", "浦东新区", "金山区", "松江区", "青浦区", "南汇区", "奉贤区", "崇明县", "城桥镇"]
+          }
+      ]
+  },
+  {
+      name: "重庆市",
+      city: [
+          {
+              name: "重庆市",
+              districtAndCounty: ["渝中区", "大渡口区", "江北区", "沙坪坝区", "九龙坡区", "南岸区", "北碚区", "万盛区", "双桥区", "渝北区", "巴南区", "万州区", "涪陵区", "黔江区", "长寿区", "合川市", "永川区市", "江津市", "南川市", "綦江县", "潼南县", "铜梁县", "大足县", "荣昌县", "璧山县", "垫江县", "武隆县", "丰都县", "城口县", "梁平县", "开县", "巫溪县", "巫山县", "奉节县", "云阳县", "忠县", "石柱土家族自治县", "彭水苗族土家族自治县", "酉阳土家族苗族自治县", "秀山土家族苗族自治县"]
+          }
+      ]
+  },
+  {
+      name: "河北省",
+      city: [
+          {
+              name: "石家庄市",
+              districtAndCounty: ["长安区", "桥东区", "桥西区", "新华区", "裕华区", "井陉矿区", "辛集市", "藁城市", "晋州市", "新乐市", "鹿泉市", "井陉县", "微水镇", "正定县", "正定镇", "栾城县", "栾城镇", "行唐县", "龙州镇", "灵寿县", "灵寿镇", "高邑县", "高邑镇", "深泽县", "深泽镇", "赞皇县", "赞皇镇", "无极县", "无极镇", "平山县", "平山镇", "元氏县", "槐阳镇", "赵县", "赵州镇"]
+          },
+          {
+              name: "张家口市",
+              districtAndCounty: ["桥西区", "桥东区", "宣化区", "下花园区", "宣化县", "张家口市宣化区", "张北县", "张北镇", "康保县", "康保镇", "沽源县", "平定堡镇", "尚义县", "南壕堑镇", "蔚县", "蔚州镇", "阳原县", "西城镇", "怀安县", "柴沟堡镇", "万全县", "孔家庄镇", "怀来县", "沙城镇", "涿鹿县", "涿鹿镇", "赤城县", "赤城镇", "崇礼县", "西湾子镇"]
+          },
+          {
+              name: "承德市",
+              districtAndCounty: ["双桥区", "双滦区", "鹰手营子矿区", "承德县", "下板城镇", "兴隆县", "兴隆镇", "平泉县", "平泉镇", "滦平县", "滦平镇", "隆化县", "隆化镇", "丰宁满族自治县", "大阁镇", "宽城满族自治县", "宽城镇", "围场满族蒙古族自治县", "围场镇"]
+          },
+          {
+              name: "秦皇岛市",
+              districtAndCounty: ["海港区", "山海关区", "北戴河区", "昌黎县", "昌黎镇", "抚宁县", "抚宁镇", "卢龙县", "卢龙镇", "青龙满族自治县", "青龙镇"]
+          },
+          {
+              name: "唐山市",
+              districtAndCounty: ["路北区", "路南区", "古冶区", "开平区", "丰润区", "丰南区", "遵化市", "迁安市", "滦县", "滦州镇", "滦南县", "倴城镇", "乐亭县", "乐亭镇", "迁西县", "兴城镇", "玉田县", "玉田镇", "唐海县", "唐海镇"]
+          },
+          {
+              name: "廊坊市",
+              districtAndCounty: ["安次区", "广阳区", "霸州市", "三河市", "固安县", "固安镇", "永清县", "永清镇", "香河县", "淑阳镇", "大城县", "平舒镇", "文安县", "文安镇", "大厂回族自治县", "大厂镇"]
+          },
+          {
+              name: "保定市",
+              districtAndCounty: ["新市区", "北市区", "南市区", "定州市", "涿州市", "安国市", "高碑店市", "满城县", "满城镇", "清苑县", "清苑镇", "易县", "易州镇", "徐水县", "安肃镇", "涞源县", "涞源镇", "定兴县", "定兴镇", "顺平县", "蒲阳镇", "唐县", "仁厚镇", "望都县", "望都镇", "涞水县", "涞水镇", "高阳县", "高阳镇", "安新县", "安新镇", "雄县", "雄州镇", "容城县", "容城镇", "曲阳县", "恒州镇", "阜平县", "阜平镇", "博野县", "博陵镇", "蠡县", "蠡吾镇"]
+          },
+          {
+              name: "衡水市",
+              districtAndCounty: ["桃城区", "冀州市", "深州市", "枣强县", "枣强镇", "武邑县", "武邑镇", "武强县", "武强镇", "饶阳县", "饶阳镇", "安平县", "安平镇", "故城县", "郑口镇", "景县", "景州镇", "阜城县", "阜城镇"]
+          },
+          {
+              name: "沧州市",
+              districtAndCounty: ["运河区", "新华区", "泊头市", "任丘市", "黄骅市", "河间市", "沧县", "沧州市新华区", "青县", "清州镇", "东光县", "东光镇", "海兴县", "苏基镇", "盐山县", "盐山镇", "肃宁县", "肃宁镇", "南皮县", "南皮镇", "吴桥县", "桑园镇", "献县", "乐寿镇", "孟村回族自治县", "孟村镇"]
+          },
+          {
+              name: "邢台市",
+              districtAndCounty: ["桥东区", "桥西区", "南宫市", "沙河市", "邢台县", "邢台市桥东区", "临城县", "临城镇", "内丘县", "内丘镇", "柏乡县", "柏乡镇", "隆尧县", "隆尧镇", "任县", "任城镇", "南和县", "和阳镇", "宁晋县", "凤凰镇", "巨鹿县", "巨鹿镇", "新河县", "新河镇", "广宗县", "广宗镇", "平乡县", "丰州镇", "威县", "洺州镇", "清河县", "葛仙庄镇", "临西县", "临西镇"]
+          },
+          {
+              name: "邯郸市",
+              districtAndCounty: ["丛台区", "邯山区", "复兴区", "峰峰矿区", "武安市", "邯郸县", "南堡乡东小屯村", "临漳县", "临漳镇", "成安县", "成安镇", "大名县", "大名镇", "涉县", "涉城镇", "磁县", "磁州镇", "肥乡县", "肥乡镇", "永年县", "临洺关镇", "邱县", "新马头镇", "鸡泽县", "鸡泽镇", "广平县", "广平镇", "馆陶县", "馆陶镇", "魏县", "魏城镇", "曲周县", "曲周镇"]
+          }
+      ]
+  },
+  {
+      name: "山西省",
+      city: [
+          {
+              name: "太原市",
+              districtAndCounty: ["杏花岭区", "小店区", "迎泽区", "尖草坪区", "万柏林区", "晋源区", "古交市", "清徐县", "清源镇", "阳曲县", "黄寨镇", "娄烦县", "娄烦镇"]
+          },
+          {
+              name: "朔州市",
+              districtAndCounty: ["朔城区", "平鲁区", "山阴县", "岱岳乡", "应县", "金城镇", "右玉县", "新城镇", "怀仁县", "云中镇"]
+          },
+          {
+              name: "大同市",
+              districtAndCounty: ["城区", "矿区", "南郊区", "新荣区", "阳高县", "龙泉镇", "天镇县", "玉泉镇", "广灵县", "壶泉镇", "灵丘县", "武灵镇", "浑源县", "永安镇", "左云县", "云兴镇", "大同县", "西坪镇"]
+          },
+          {
+              name: "阳泉市",
+              districtAndCounty: ["城区", "矿区", "郊区", "平定县", "冠山镇", "盂县", "秀水镇"]
+          },
+          {
+              name: "长治市",
+              districtAndCounty: ["城区", "郊区", "潞城市", "长治县", "韩店镇", "襄垣县", "古韩镇", "屯留县", "麟绛镇", "平顺县", "青羊镇", "黎城县", "黎侯镇", "壶关县", "龙泉镇", "长子县", "丹朱镇", "武乡县", "丰州镇", "沁县", "定昌镇", "沁源县", "沁河镇"]
+          },
+          {
+              name: "晋城市",
+              districtAndCounty: ["城区", "高平市", "泽州县", "南村镇", "沁水县", "龙港镇", "阳城县", "凤城镇", "陵川县", "崇文镇"]
+          },
+          {
+              name: "忻州市",
+              districtAndCounty: ["忻府区", "原平市", "定襄县", "晋昌镇", "五台县", "台城镇", "代县", "上馆镇", "繁峙县", "繁城镇", "宁武县", "凤凰镇", "静乐县", "鹅城镇", "神池县", "龙泉镇", "五寨县", "砚城镇", "岢岚县", "岚漪镇", "河曲县", "文笔镇", "保德县", "东关镇", "偏关县", "新关镇"]
+          },
+          {
+              name: "晋中市",
+              districtAndCounty: ["榆次区", "介休市", "榆社县", "箕城镇", "左权县", "辽阳镇", "和顺县", "义兴镇", "昔阳县", "乐平镇", "寿阳县", "朝阳镇", "太谷县", "明星镇", "祁县", "昭余镇", "平遥县", "古陶镇", "灵石县", "翠峰镇"]
+          },
+          {
+              name: "临汾市",
+              districtAndCounty: ["尧都区", "侯马市", "霍州市", "曲沃县", "乐昌镇", "翼城县", "唐兴镇", "襄汾县", "新城镇", "洪洞县", "大槐树镇", "古县", "岳阳镇", "安泽县", "府城镇", "浮山县", "天坛镇", "吉县", "吉昌镇", "乡宁县", "昌宁镇", "蒲县", "蒲城镇", "大宁县", "昕水镇", "永和县", "芝河镇", "隰县", "龙泉镇", "汾西县", "永安镇"]
+          },
+          {
+              name: "吕梁市",
+              districtAndCounty: ["离石区", "孝义市", "汾阳市", "文水县", "凤城镇", "中阳县", "宁乡镇", "兴县", "蔚汾镇", "临县", "临泉镇", "方山县", "圪洞镇", "柳林县", "柳林镇", "岚县", "东村镇", "交口县", "水头镇", "交城县", "天宁镇", "石楼县", "灵泉镇"]
+          },
+          {
+              name: "运城市",
+              districtAndCounty: ["盐湖区", "永济市", "河津市", "芮城县", "古魏镇", "临猗县", "猗氏镇", "万荣县", "解店镇", "新绛县", "龙兴镇", "稷山县", "稷峰镇", "闻喜县", "桐城镇", "夏县", "瑶峰镇", "绛县", "古绛镇", "平陆县", "圣人涧镇", "垣曲县", "新城镇"]
+          }
+      ]
+  },
+  {
+      name: "内蒙古自治区",
+      city: [
+          {
+              name: "呼和浩特市",
+              districtAndCounty: ["回民区", "新城区", "玉泉区", "赛罕区", "托克托县", "双河镇", "武川县", "可可以力更镇", "和林格尔县", "清水河县", "土默特左旗", "察素齐镇"]
+          },
+          {
+              name: "包头市",
+              districtAndCounty: ["昆都仑区", "东河区", "青山区", "石拐区", "白云矿区", "九原区", "固阳县", "金山镇", "土默特右旗", "萨拉齐镇", "达尔罕茂明安联合旗", "百灵庙镇"]
+          },
+          {
+              name: "乌海市",
+              districtAndCounty: ["海勃湾区", "海南区", "乌达区"]
+          },
+          {
+              name: "赤峰市",
+              districtAndCounty: ["红山区", "元宝山区", "松山区", "宁城县", "天义镇", "林西县", "林西镇", "阿鲁科尔沁旗", "天山镇", "巴林左旗", "林东镇", "巴林右旗", "大板镇", "克什克腾旗", "经棚镇", "翁牛特旗", "乌丹镇", "喀喇沁旗", "锦山镇", "敖汉旗", "新惠镇"]
+          },
+          {
+              name: "通辽市",
+              districtAndCounty: ["科尔沁区", "霍林郭勒市", "开鲁县", "开鲁镇", "库伦旗", "库伦镇", "奈曼旗", "大沁他拉镇", "扎鲁特旗", "鲁北镇", "科尔沁左翼中旗", "保康镇", "科尔沁左翼后旗", "甘旗卡镇"]
+          },
+          {
+              name: "呼伦贝尔市",
+              districtAndCounty: ["海拉尔区", "满洲里市", "扎兰屯市", "牙克石市", "根河市", "额尔古纳市", "阿荣旗", "那吉镇", "新巴尔虎右旗", "阿拉坦额莫勒镇", "新巴尔虎左旗", "阿穆古郎镇", "陈巴尔虎旗", "巴彦库仁镇", "鄂伦春自治旗", "阿里河镇", "鄂温克族自治旗", "巴彦托海镇", "莫力达瓦达斡尔族自治旗", "尼尔基镇"]
+          },
+          {
+              name: "鄂尔多斯市",
+              districtAndCounty: ["东胜区", "达拉特旗", "树林召镇", "准格尔旗", "薛家湾镇", "鄂托克前旗", "敖勒召其镇", "鄂托克旗", "乌兰镇", "杭锦旗", "锡尼镇", "乌审旗", "嘎鲁图镇", "伊金霍洛旗", "阿勒腾席热镇"]
+          },
+          {
+              name: "乌兰察布市",
+              districtAndCounty: ["集宁区", "丰镇市", "卓资县", "卓资山镇", "化德县", "长顺镇", "商都县", "商都镇", "兴和县", "凉城县", "岱海镇", "察哈尔右翼前旗", "土贵乌拉镇", "察哈尔右翼中旗", "科布尔镇", "察哈尔右翼后旗", "白音察干镇", "四子王旗", "乌兰花镇"]
+          },
+          {
+              name: "巴彦淖尔市",
+              districtAndCounty: ["临河区", "五原县", "隆兴昌镇", "磴口县", "巴彦高勒镇", "乌拉特前旗", "乌拉山镇", "乌拉特中旗", "海流图镇", "乌拉特后旗", "巴音宝力格镇", "杭锦后旗", "陕坝镇"]
+          },
+          {
+              name: "兴安盟",
+              districtAndCounty: ["乌兰浩特市", "阿尔山市", "突泉县", "突泉镇", "科尔沁右翼前旗", "大坝沟镇", "科尔沁右翼中旗", "巴彦呼硕镇", "扎赉特旗", "音德尔镇"]
+          },
+          {
+              name: "锡林郭勒盟",
+              districtAndCounty: ["锡林浩特市", "二连浩特市", "多伦县", "多伦淖尔镇", "阿巴嘎旗", "别力古台镇", "苏尼特左旗", "满都拉图镇", "苏尼特右旗", "赛汉塔拉镇", "东乌珠穆沁旗", "乌里雅斯太镇", "西乌珠穆沁旗", "巴拉嘎尔郭勒镇", "太仆寺旗", "宝昌镇", "镶黄旗", "新宝拉格镇", "正镶白旗", "明安图镇", "正蓝旗", "上都镇"]
+          },
+          {
+              name: "阿拉善盟",
+              districtAndCounty: ["巴彦浩特镇", "阿拉善右旗", "额肯呼都格镇", "额济纳旗", "达来呼布镇"]
+          }
+      ]
+  },
+  {
+      name: "辽宁省",
+      city: [
+          {
+              name: "沈阳市",
+              districtAndCounty: ["沈河区", "和平区", "大东区", "皇姑区", "铁西区", "苏家屯区", "东陵区", "新城子区", "于洪区", "新民市", "辽中县", "辽中镇", "康平县", "康平镇", "法库县", "法库镇"]
+          },
+          {
+              name: "朝阳市",
+              districtAndCounty: ["双塔区", "龙城区", "北票市", "凌源市", "朝阳县", "朝阳市双塔区", "建平县", "喀喇沁左翼蒙古族自治县", "大城子镇"]
+          },
+          {
+              name: "阜新市",
+              districtAndCounty: ["海州区", "新邱区", "太平区", "清河门区", "细河区", "彰武县", "彰武镇", "阜新蒙古族自治县", "阜新镇"]
+          },
+          {
+              name: "铁岭市",
+              districtAndCounty: ["银州区", "清河区", "调兵山市", "开原市", "铁岭县", "铁岭市银州区", "西丰县", "西丰镇", "昌图县", "昌图镇"]
+          },
+          {
+              name: "抚顺市",
+              districtAndCounty: ["顺城区", "新抚区", "东洲区", "望花区", "抚顺县", "抚顺市顺城区", "新宾满族自治县", "新宾镇", "清原满族自治县", "清原镇"]
+          },
+          {
+              name: "本溪市",
+              districtAndCounty: ["平山区", "溪湖区", "明山区", "南芬区", "本溪满族自治县", "小市镇", "桓仁满族自治县", "桓仁镇"]
+          },
+          {
+              name: "辽阳市",
+              districtAndCounty: ["白塔区", "文圣区", "宏伟区", "弓长岭区", "太子河区", "灯塔市", "辽阳县", "首山镇"]
+          },
+          {
+              name: "鞍山市",
+              districtAndCounty: ["铁东区", "铁西区", "立山区", "千山区", "海城市", "台安县", "台安镇", "岫岩满族自治县", "岫岩镇"]
+          },
+          {
+              name: "丹东市",
+              districtAndCounty: ["振兴区", "元宝区", "振安区", "凤城市", "东港市", "宽甸满族自治县", "宽甸镇"]
+          },
+          {
+              name: "大连市",
+              districtAndCounty: ["西岗区", "中山区", "沙河口区", "甘井子区", "旅顺口区", "金州区", "瓦房店市", "普兰店市", "庄河市", "长海县", "大长山岛镇"]
+          },
+          {
+              name: "营口市",
+              districtAndCounty: ["站前区", "西市区", "鲅鱼圈区", "老边区", "大石桥市", "盖州市"]
+          },
+          {
+              name: "盘锦市",
+              districtAndCounty: ["兴隆台区", "双台子区", "大洼县", "大洼镇", "盘山县", "盘锦市双台子区"]
+          },
+          {
+              name: "锦州市",
+              districtAndCounty: ["太和区", "古塔区", "凌河区", "凌海市", "北宁市", "黑山县", "黑山镇", "义县", "义州镇"]
+          },
+          {
+              name: "葫芦岛市",
+              districtAndCounty: ["龙港区", "连山区", "南票区", "兴城市", "绥中县", "绥中镇", "建昌县", "建昌镇"]
+          }
+      ]
+  },
+  {
+      name: "吉林省",
+      city: [
+          {
+              name: "长春市",
+              districtAndCounty: ["朝阳区", "南关区", "宽城区", "二道区", "绿园区", "双阳区", "德惠市", "九台市", "榆树市", "农安县", "农安镇"]
+          },
+          {
+              name: "白城市",
+              districtAndCounty: ["洮北区", "大安市", "洮南市", "镇赉县", "镇赉镇", "通榆县", "开通镇"]
+          },
+          {
+              name: "松原市",
+              districtAndCounty: ["宁江区", "扶余县", "三岔河镇", "长岭县", "长岭镇", "乾安县", "乾安镇", "前郭尔罗斯蒙古族自治县", "前郭镇"]
+          },
+          {
+              name: "吉林市",
+              districtAndCounty: ["船营区", "龙潭区", "昌邑区", "丰满区", "磐石市", "蛟河市", "桦甸市", "舒兰市", "永吉县", "口前镇"]
+          },
+          {
+              name: "四平市",
+              districtAndCounty: ["铁西区", "铁东区", "双辽市", "公主岭市", "梨树县", "梨树镇", "伊通满族自治县", "伊通镇"]
+          },
+          {
+              name: "辽源市",
+              districtAndCounty: ["龙山区", "西安区", "东丰县", "东丰镇", "东辽县", "白泉镇"]
+          },
+          {
+              name: "通化市",
+              districtAndCounty: ["东昌区", "二道江区", "梅河口市", "集安市", "通化县", "快大茂镇", "辉南县", "朝阳镇", "柳河县", "柳河镇"]
+          },
+          {
+              name: "白山市",
+              districtAndCounty: ["八道江区", "临江市", "江源县", "孙家堡子镇", "抚松县", "抚松镇", "靖宇县", "靖宇镇", "长白朝鲜族自治县", "长白镇"]
+          },
+          {
+              name: "延边朝鲜族自治州",
+              districtAndCounty: ["延吉市", "图们市", "敦化市", "珲春市", "龙井市", "和龙市", "汪清县", "汪清镇", "安图县", "明月镇"]
+          }
+      ]
+  },
+  {
+      name: "黑龙江省",
+      city: [
+          {
+              name: "哈尔滨市",
+              districtAndCounty: ["松北区", "道里区", "南岗区", "道外区", "香坊区", "动力区", "平房区", "呼兰区", "双城市", "尚志市", "五常市", "阿城市", "依兰县", "依兰镇", "方正县", "方正镇", "宾县", "宾州镇", "巴彦县", "巴彦镇", "木兰县", "木兰镇", "通河县", "通河镇", "延寿县", "延寿镇"]
+          },
+          {
+              name: "齐齐哈尔市",
+              districtAndCounty: ["建华区", "龙沙区", "铁锋区", "昂昂溪区", "富拉尔基区", "碾子山区", "梅里斯达斡尔族区", "讷河市", "龙江县", "龙江镇", "依安县", "依安镇", "泰来县", "泰来镇", "甘南县", "甘南镇", "富裕县", "富裕镇", "克山县", "克山镇", "克东县", "克东镇", "拜泉县", "拜泉镇"]
+          },
+          {
+              name: "七台河市",
+              districtAndCounty: ["桃山区", "新兴区", "茄子河区", "勃利县", "勃利镇"]
+          },
+          {
+              name: "黑河市",
+              districtAndCounty: ["爱辉区", "北安市", "五大连池市", "嫩江县", "嫩江镇", "逊克县", "边疆镇", "孙吴县", "孙吴镇"]
+          },
+          {
+              name: "大庆市",
+              districtAndCounty: ["萨尔图区", "龙凤区", "让胡路区", "大同区", "红岗区", "肇州县", "肇州镇", "肇源县", "肇源镇", "林甸县", "林甸镇", "杜尔伯特蒙古族自治县", "泰康镇"]
+          },
+          {
+              name: "鹤岗市",
+              districtAndCounty: ["兴山区", "向阳区", "工农区", "南山区", "兴安区", "东山区", "萝北县", "凤翔镇", "绥滨县", "绥滨镇"]
+          },
+          {
+              name: "伊春市",
+              districtAndCounty: ["伊春区", "南岔区", "友好区", "西林区", "翠峦区", "新青区", "美溪区", "金山屯区", "五营区", "乌马河区", "汤旺河区", "带岭区", "乌伊岭区", "红星区", "上甘岭区", "铁力市", "嘉荫县", "朝阳镇"]
+          },
+          {
+              name: "佳木斯市",
+              districtAndCounty: ["前进区", "永红区", "向阳区", "东风区", "郊区", "同江市", "富锦市", "桦南县", "桦南镇", "桦川县", "悦来镇", "汤原县", "汤原镇", "抚远县", "抚远镇"]
+          },
+          {
+              name: "双鸭山市",
+              districtAndCounty: ["尖山区", "岭东区", "四方台区", "宝山区", "集贤县", "福利镇", "友谊县", "友谊镇", "宝清县", "宝清镇", "饶河县", "饶河镇"]
+          },
+          {
+              name: "鸡西市",
+              districtAndCounty: ["鸡冠区", "恒山区", "滴道区", "梨树区", "城子河区", "麻山区", "虎林市", "密山市", "鸡东县", "鸡东镇"]
+          },
+          {
+              name: "牡丹江市",
+              districtAndCounty: ["爱民区", "东安区", "阳明区", "西安区", "穆棱市", "绥芬河市", "海林市", "宁安市", "东宁县", "东宁镇", "林口县", "林口镇"]
+          },
+          {
+              name: "绥化市",
+              districtAndCounty: ["北林区", "安达市", "肇东市", "海伦市", "望奎县", "望奎镇", "兰西县", "兰西镇", "青冈县", "青冈镇", "庆安县", "庆安镇", "明水县", "明水镇", "绥棱县", "绥棱镇"]
+          },
+          {
+              name: "大兴安岭地区",
+              districtAndCounty: ["呼玛县", "呼玛镇", "塔河县", "塔河镇", "漠河县", "西林吉镇"]
+          }
+      ]
+  },
+  {
+      name: "江苏省",
+      city: [
+          {
+              name: "南京市",
+              districtAndCounty: ["玄武区", "白下区", "秦淮区", "建邺区", "鼓楼区", "下关区", "浦口区", "六合区", "栖霞区", "雨花台区", "江宁区", "溧水县", "永阳镇", "高淳县", "淳溪镇"]
+          },
+          {
+              name: "徐州市",
+              districtAndCounty: ["云龙区", "鼓楼区", "九里区", "贾汪区", "泉山区", "邳州市", "新沂市", "铜山县", "铜山镇", "睢宁县", "睢城镇", "沛县", "沛城镇", "丰县", "凤城镇"]
+          },
+          {
+              name: "连云港市",
+              districtAndCounty: ["新浦区", "连云区", "海州区", "赣榆县", "青口镇", "灌云县", "伊山镇", "东海县", "牛山镇", "灌南县", "新安镇"]
+          },
+          {
+              name: "宿迁市",
+              districtAndCounty: ["宿城区", "宿豫区", "沭阳县", "沭城镇", "泗阳县", "众兴镇", "泗洪县", "青阳镇"]
+          },
+          {
+              name: "淮安市",
+              districtAndCounty: ["清河区", "清浦区", "楚州区", "淮阴区", "金湖县", "黎城镇", "盱眙县", "盱城镇", "洪泽县", "高良涧镇", "涟水县", "涟城镇"]
+          },
+          {
+              name: "盐城市",
+              districtAndCounty: ["亭湖区", "盐都区", "东台市", "大丰市", "射阳县", "合德镇", "阜宁县", "阜城镇", "滨海县", "东坎镇", "响水县", "响水镇", "建湖县", "近湖镇"]
+          },
+          {
+              name: "扬州市",
+              districtAndCounty: ["维扬区", "广陵区", "邗江区", "仪征市", "江都市", "高邮市", "宝应县", "安宜镇"]
+          },
+          {
+              name: "泰州市",
+              districtAndCounty: ["海陵区", "高港区", "靖江市", "泰兴市", "姜堰市", "兴化市"]
+          },
+          {
+              name: "南通市",
+              districtAndCounty: ["崇川区", "港闸区", "海门市", "启东市", "通州市", "如皋市", "如东县", "掘港镇", "海安县", "海安镇"]
+          },
+          {
+              name: "镇江市",
+              districtAndCounty: ["京口区", "润州区", "丹徒区", "扬中市", "丹阳市", "句容市"]
+          },
+          {
+              name: "常州市",
+              districtAndCounty: ["钟楼区", "天宁区", "戚墅堰区", "新北区", "武进区", "金坛市", "溧阳市"]
+          },
+          {
+              name: "无锡市",
+              districtAndCounty: ["崇安区", "南长区", "北塘区", "滨湖区", "惠山区", "锡山区", "江阴市", "宜兴市"]
+          },
+          {
+              name: "苏州市",
+              districtAndCounty: ["金阊区", "沧浪区", "平江区", "虎丘区", "吴中区", "相城区", "吴江市", "昆山市", "太仓市", "常熟市", "张家港市"]
+          }
+      ]
+  },
+  {
+      name: "浙江省",
+      city: [
+          {
+              name: "杭州市",
+              districtAndCounty: ["拱墅区", "上城区", "下城区", "江干区", "西湖区", "滨江区", "余杭区", "萧山区", "临安市", "富阳市", "建德市", "桐庐县", "淳安县", "千岛湖镇"]
+          },
+          {
+              name: "湖州市",
+              districtAndCounty: ["吴兴区", "南浔区", "长兴县", "雉城镇", "德清县", "武康镇", "安吉县", "递铺镇"]
+          },
+          {
+              name: "嘉兴市",
+              districtAndCounty: ["南湖区", "秀洲区", "平湖市", "海宁市", "桐乡市", "嘉善县", "魏塘镇", "海盐县", "武原镇"]
+          },
+          {
+              name: "舟山市",
+              districtAndCounty: ["定海区", "普陀区", "岱山县", "高亭镇", "嵊泗县", "菜园镇"]
+          },
+          {
+              name: "宁波市",
+              districtAndCounty: ["海曙区", "江东区", "江北区", "北仑区", "镇海区", "鄞州区", "慈溪市", "余姚市", "奉化市", "宁海县", "象山县"]
+          },
+          {
+              name: "绍兴市",
+              districtAndCounty: ["越城区", "诸暨市", "上虞市", "嵊州市", "绍兴县", "新昌县"]
+          },
+          {
+              name: "衢州市",
+              districtAndCounty: ["柯城区", "衢江区", "江山市", "常山县", "天马镇", "开化县", "龙游县"]
+          },
+          {
+              name: "金华市",
+              districtAndCounty: ["婺城区", "金东区", "兰溪市", "永康市", "义乌市", "东阳市", "武义县", "浦江县", "磐安县", "安文镇"]
+          },
+          {
+              name: "台州市",
+              districtAndCounty: ["椒江区", "黄岩区", "路桥区", "临海市", "温岭市", "三门县", "海游镇", "天台县", "仙居县", "玉环县", "珠港镇"]
+          },
+          {
+              name: "温州市",
+              districtAndCounty: ["鹿城区", "龙湾区", "瓯海区", "瑞安市", "乐清市", "永嘉县", "上塘镇", "文成县", "大峃镇", "平阳县", "昆阳镇", "泰顺县", "罗阳镇", "洞头县", "北岙镇", "苍南县", "灵溪镇"]
+          },
+          {
+              name: "丽水市",
+              districtAndCounty: ["莲都区", "龙泉市", "缙云县", "五云镇", "青田县", "鹤城镇", "云和县", "云和镇", "遂昌县", "妙高镇", "松阳县", "西屏镇", "庆元县", "松源镇", "景宁畲族自治县", "鹤溪镇"]
+          }
+      ]
+  },
+  {
+      name: "安徽省",
+      city: [
+          {
+              name: "合肥市",
+              districtAndCounty: ["庐阳区", "瑶海区", "蜀山区", "包河区", "长丰县", "水湖镇", "肥东县", "店埠镇", "肥西县", "上派镇"]
+          },
+          {
+              name: "宿州市",
+              districtAndCounty: ["埇桥区", "砀山县", "砀城镇", "萧县", "龙城镇", "灵璧县", "灵城镇", "泗县", "泗城镇"]
+          },
+          {
+              name: "淮北市",
+              districtAndCounty: ["相山区", "杜集区", "烈山区", "濉溪县", "濉溪镇"]
+          },
+          {
+              name: "亳州市",
+              districtAndCounty: ["谯城区", "涡阳县", "蒙城县", "利辛县"]
+          },
+          {
+              name: "阜阳市",
+              districtAndCounty: ["颍州区", "颍东区", "颍泉区", "界首市", "临泉县", "太和县", "阜南县", "颍上县", "慎城镇"]
+          },
+          {
+              name: "蚌埠市",
+              districtAndCounty: ["蚌山区", "龙子湖区", "禹会区", "淮上区", "怀远县", "五河县", "固镇县"]
+          },
+          {
+              name: "淮南市",
+              districtAndCounty: ["田家庵区", "大通区", "谢家集区", "八公山区", "潘集区", "凤台县"]
+          },
+          {
+              name: "滁州市",
+              districtAndCounty: ["琅区", "南谯区", "明光市", "天长市", "来安县", "新安镇", "全椒县", "襄河镇", "定远县", "定城镇", "凤阳县", "府城镇"]
+          },
+          {
+              name: "马鞍山市",
+              districtAndCounty: ["雨山区", "花山区", "金家庄区", "当涂县", "姑孰镇"]
+          },
+          {
+              name: "芜湖市",
+              districtAndCounty: ["镜湖区", "弋江区", "三山区", "鸠江区", "芜湖县", "湾镇", "繁昌县", "繁阳镇", "南陵县", "籍山镇"]
+          },
+          {
+              name: "铜陵市",
+              districtAndCounty: ["铜官山区", "狮子山区", "郊区", "铜陵县", "五松镇"]
+          },
+          {
+              name: "安庆市",
+              districtAndCounty: ["迎江区", "大观区", "宜秀区", "桐城市", "怀宁县", "高河镇", "枞阳县", "枞阳镇", "潜山县", "梅城镇", "太湖县", "晋熙镇", "宿松县", "孚玉镇", "望江县", "雷阳镇", "岳西县", "天堂镇"]
+          },
+          {
+              name: "黄山市",
+              districtAndCounty: ["屯溪区", "黄山区", "徽州区", "歙县", "徽城镇", "休宁县", "海阳镇", "黟县", "碧阳镇", "祁门县", "祁山镇"]
+          },
+          {
+              name: "六安市",
+              districtAndCounty: ["金安区", "裕安区", "寿县", "寿春镇", "霍邱县", "舒城县", "金寨县", "梅山镇", "霍山县", "衡山镇"]
+          },
+        //   隶属于合肥市
+        //   {
+        //       name: "巢湖市",
+        //       districtAndCounty: ["居巢区", "庐江县", "庐城镇", "无为县", "无城镇", "含山县", "环峰镇", "和县", "历阳镇"]
+        //   },
+          {
+              name: "池州市",
+              districtAndCounty: ["贵池区", "东至县", "尧渡镇", "石台县", "七里镇", "青阳县", "蓉城镇"]
+          },
+          {
+              name: "宣城市",
+              districtAndCounty: ["宣州区", "宁国市", "郎溪县", "建平镇", "广德县", "桃州镇", "泾县", "泾川镇", "旌德县", "旌阳镇", "绩溪县", "华阳镇"]
+          }
+      ]
+  },
+  {
+      name: "福建省",
+      city: [
+          {
+              name: "福州市",
+              districtAndCounty: ["鼓楼区", "台江区", "仓山区", "马尾区", "晋安区", "福清市", "长乐市", "闽侯县", "连江县", "凤城镇", "罗源县", "凤山镇", "闽清县", "梅城镇", "永泰县", "樟城镇", "平潭县", "潭城镇"]
+          },
+          {
+              name: "南平市",
+              districtAndCounty: ["延平区", "邵武市", "武夷山市", "建瓯市", "建阳市", "顺昌县", "浦城县", "光泽县", "杭川镇", "松溪县", "松源镇", "政和县", "熊山镇"]
+          },
+          {
+              name: "莆田市",
+              districtAndCounty: ["城厢区", "涵江区", "荔城区", "秀屿区", "仙游县"]
+          },
+          {
+              name: "三明市",
+              districtAndCounty: ["梅列区", "三元区", "永安市", "明溪县", "雪峰镇", "清流县", "龙津镇", "宁化县", "翠江镇", "大田县", "均溪镇", "尤溪县", "沙县", "将乐县", "古镛镇", "泰宁县", "杉城镇", "建宁县", "濉城镇"]
+          },
+          {
+              name: "泉州市",
+              districtAndCounty: ["鲤城区", "丰泽区", "洛江区", "泉港区", "石狮市", "晋江市", "南安市", "惠安县", "螺城镇", "安溪县", "凤城镇", "永春县", "桃城镇", "德化县", "浔中镇", "金门县", "☆"]
+          },
+          {
+              name: "厦门市",
+              districtAndCounty: ["思明区", "海沧区", "湖里区", "集美区", "同安区", "翔安区"]
+          },
+          {
+              name: "漳州市",
+              districtAndCounty: ["芗城区", "龙文区", "龙海市", "云霄县", "云陵镇", "漳浦县", "绥安镇", "诏安县", "南诏镇", "长泰县", "武安镇", "东山县", "西埔镇", "南靖县", "山城镇", "平和县", "小溪镇", "华安县", "华丰镇"]
+          },
+          {
+              name: "龙岩市",
+              districtAndCounty: ["新罗区", "漳平市", "长汀县", "汀州镇", "永定县", "凤城镇", "上杭县", "临江镇", "武平县", "平川镇", "连城县", "莲峰镇"]
+          },
+          {
+              name: "宁德市",
+              districtAndCounty: ["蕉城区", "福安市", "福鼎市", "寿宁县", "鳌阳镇", "霞浦县", "柘荣县", "双城镇", "屏南县", "古峰镇", "古田县", "周宁县", "狮城镇"]
+          }
+      ]
+  },
+  {
+      name: "江西省",
+      city: [
+          {
+              name: "南昌市",
+              districtAndCounty: ["东湖区", "西湖区", "青云谱区", "湾里区", "青山湖区", "南昌县", "莲塘镇", "新建县", "长堎镇", "安义县", "龙津镇", "进贤县", "民和镇"]
+          },
+          {
+              name: "九江市",
+              districtAndCounty: ["浔阳区", "庐山区", "瑞昌市", "九江县", "沙河街镇", "武宁县", "新宁镇", "修水县", "义宁镇", "永修县", "涂埠镇", "德安县", "蒲亭镇", "星子县", "南康镇", "都昌县", "都昌镇", "湖口县", "双钟镇", "彭泽县", "龙城镇"]
+          },
+          {
+              name: "景德镇市",
+              districtAndCounty: ["珠山区", "昌江区", "乐平市", "浮梁县", "浮梁镇"]
+          },
+          {
+              name: "鹰潭市",
+              districtAndCounty: ["月湖区", "贵溪市", "余江县", "邓埠镇"]
+          },
+          {
+              name: "新余市",
+              districtAndCounty: ["渝水区", "分宜县", "分宜镇"]
+          },
+          {
+              name: "萍乡市",
+              districtAndCounty: ["安源区", "湘东区", "莲花县", "琴亭镇", "上栗县", "上栗镇", "芦溪县", "芦溪镇"]
+          },
+          {
+              name: "赣州市",
+              districtAndCounty: ["章贡区", "瑞金市", "南康市", "赣县", "梅林镇", "信丰县", "嘉定镇", "大余县", "南安镇", "上犹县", "东山镇", "崇义县", "横水镇", "安远县", "欣山镇", "龙南县", "龙南镇", "定南县", "历市镇", "全南县", "城厢镇", "宁都县", "梅江镇", "于都县", "贡江镇", "兴国县", "潋江镇", "会昌县", "文武坝镇", "寻乌县", "长宁镇", "石城县", "琴江镇"]
+          },
+          {
+              name: "上饶市",
+              districtAndCounty: ["信州区", "德兴市", "上饶县", "旭日镇", "广丰县", "永丰镇", "玉山县", "冰溪镇", "铅山县", "河口镇", "横峰县", "岑阳镇", "弋阳县", "弋江镇", "余干县", "玉亭镇", "鄱阳县", "鄱阳镇", "万年县", "陈营镇", "婺源县", "紫阳镇"]
+          },
+          {
+              name: "抚州市",
+              districtAndCounty: ["临川区", "南城县", "建昌镇", "黎川县", "日峰镇", "南丰县", "琴城镇", "崇仁县", "巴山镇", "乐安县", "鳌溪镇", "宜黄县", "凤冈镇", "金溪县", "秀谷镇", "资溪县", "鹤城镇", "东乡县", "孝岗镇", "广昌县", "旴江镇"]
+          },
+          {
+              name: "宜春市",
+              districtAndCounty: ["袁州区", "丰城市", "樟树市", "高安市", "奉新县", "冯川镇", "万载县", "上高县", "宜丰县", "新昌镇", "靖安县", "双溪镇", "铜鼓县", "永宁镇"]
+          },
+          {
+              name: "吉安市",
+              districtAndCounty: ["吉州区", "青原区", "井冈山市", "厦坪镇", "吉安县", "敦厚镇", "吉水县", "文峰镇", "峡江县", "水边镇", "新干县", "金川镇", "永丰县", "恩江镇", "泰和县", "澄江镇", "遂川县", "泉江镇", "万安县", "芙蓉镇", "安福县", "平都镇", "永新县", "禾川镇"]
+          }
+      ]
+  },
+  {
+      name: "山东省",
+      city: [
+          {
+              name: "济南市",
+              districtAndCounty: ["市中区", "历下区", "槐荫区", "天桥区", "历城区", "长清区", "章丘市", "平阴县", "平阴镇", "济阳县", "济阳镇", "商河县"]
+          },
+          {
+              name: "青岛市",
+              districtAndCounty: ["市南区", "市北区", "四方区", "黄岛区", "崂山区", "城阳区", "李沧区", "胶州市", "即墨市", "平度市", "胶南市", "莱西市"]
+          },
+          {
+              name: "聊城市",
+              districtAndCounty: ["东昌府区", "临清市", "阳谷县", "莘县", "茌平县", "东阿县", "冠县", "冠城镇", "高唐县"]
+          },
+          {
+              name: "德州市",
+              districtAndCounty: ["德城区", "乐陵市", "禹城市", "陵县", "陵城镇", "平原县", "夏津县", "夏津镇", "武城县", "武城镇", "齐河县", "晏城镇", "临邑县", "宁津县", "宁津镇", "庆云县", "庆云镇"]
+          },
+          {
+              name: "东营市",
+              districtAndCounty: ["东营区", "河口区", "垦利县", "垦利镇", "利津县", "利津镇", "广饶县", "广饶镇"]
+          },
+          {
+              name: "淄博市",
+              districtAndCounty: ["张店区", "淄川区", "博山区", "临淄区", "周村区", "桓台县", "索镇", "高青县", "田镇", "沂源县", "南麻镇"]
+          },
+          {
+              name: "潍坊市",
+              districtAndCounty: ["潍城区", "寒亭区", "坊子区", "奎文区", "安丘市", "昌邑市", "高密市", "青州市", "诸城市", "寿光市", "临朐县", "昌乐县"]
+          },
+          {
+              name: "烟台市",
+              districtAndCounty: ["莱山区", "芝罘区", "福山区", "牟平区", "栖霞市", "海阳市", "龙口市", "莱阳市", "莱州市", "蓬莱市", "招远市", "长岛县", "南长山镇"]
+          },
+          {
+              name: "威海市",
+              districtAndCounty: ["环翠区", "荣成市", "乳山市", "文登市"]
+          },
+          {
+              name: "日照市",
+              districtAndCounty: ["东港区", "岚山区", "五莲县", "洪凝镇", "莒县", "城阳镇"]
+          },
+          {
+              name: "临沂市",
+              districtAndCounty: ["兰山区", "罗庄区", "河东区", "郯城县", "郯城镇", "苍山县", "卞庄镇", "莒南县", "十字路镇", "沂水县", "沂水镇", "蒙阴县", "蒙阴镇", "平邑县", "平邑镇", "费县", "费城镇", "沂南县", "界湖镇", "临沭县", "临沭镇"]
+          },
+          {
+              name: "枣庄市",
+              districtAndCounty: ["薛城区", "市中区", "峄城区", "台儿庄区", "山亭区", "滕州市"]
+          },
+          {
+              name: "济宁市",
+              districtAndCounty: ["市中区", "任城区", "曲阜市", "兖州市", "邹城市", "微山县", "鱼台县", "谷亭镇", "金乡县", "金乡镇", "嘉祥县", "嘉祥镇", "汶上县", "汶上镇", "泗水县", "梁山县", "梁山镇"]
+          },
+          {
+              name: "泰安市",
+              districtAndCounty: ["泰山区", "岱岳区", "新泰市", "肥城市", "宁阳县", "宁阳镇", "东平县", "东平镇"]
+          },
+        // 隶属于济南市
+        //   {
+        //       name: "莱芜市",
+        //       districtAndCounty: ["莱城区", "钢城区"]
+        //   },
+          {
+              name: "滨州市",
+              districtAndCounty: ["滨城区", "惠民县", "惠民镇", "阳信县", "阳信镇", "无棣县", "无棣镇", "沾化县", "富国镇", "博兴县", "博兴镇", "邹平县"]
+          },
+          {
+              name: "菏泽市",
+              districtAndCounty: ["牡丹区", "曹县", "曹城镇", "定陶县", "定陶镇", "成武县", "成武镇", "单县", "单城镇", "巨野县", "巨野镇", "郓城县", "郓城镇", "鄄城县", "鄄城镇", "东明县"]
+          }
+      ]
+  },
+  {
+      name: "河南省",
+      city: [
+          {
+              name: "郑州市",
+              districtAndCounty: ["中原区", "二七区", "管城回族区", "金水区", "上街区", "惠济区", "新郑市", "登封市", "新密市", "巩义市", "荥阳市", "中牟县"]
+          },
+          {
+              name: "开封市",
+              districtAndCounty: ["鼓楼区", "龙亭区", "顺河回族区", "禹王台区", "金明区", "杞县", "通许县", "尉氏县", "开封县", "兰考县"]
+          },
+          {
+              name: "三门峡市",
+              districtAndCounty: ["湖滨区", "义马市", "灵宝市", "渑池县", "陕县", "大营镇", "卢氏县"]
+          },
+          {
+              name: "洛阳市",
+              districtAndCounty: ["西工区", "老城区", "瀍河回族区", "涧西区", "吉利区", "洛龙区", "偃师市", "孟津县", "新安县", "栾川县", "嵩县", "汝阳县", "宜阳县", "洛宁县", "伊川县"]
+          },
+          {
+              name: "焦作市",
+              districtAndCounty: ["解放区", "山阳区", "中站区", "马村区", "孟州市", "沁阳市", "修武县", "博爱县", "清化镇", "武陟县", "木城镇", "温县", "温泉镇"]
+          },
+          {
+              name: "新乡市",
+              districtAndCounty: ["卫滨区", "红旗区", "凤泉区", "牧野区", "卫辉市", "辉县市", "新乡县", "新乡市红旗区", "获嘉县", "原阳县", "延津县", "封丘县", "长垣县"]
+          },
+          {
+              name: "鹤壁市",
+              districtAndCounty: ["淇滨区", "山城区", "鹤山区", "浚县", "淇县", "朝歌镇"]
+          },
+          {
+              name: "安阳市",
+              districtAndCounty: ["北关区", "文峰区", "殷都区", "龙安区", "林州市", "安阳县", "安阳市北关区", "汤阴县", "滑县", "道口镇", "内黄县"]
+          },
+          {
+              name: "濮阳市",
+              districtAndCounty: ["华龙区", "清丰县", "南乐县", "范县", "台前县", "濮阳县"]
+          },
+          {
+              name: "商丘市",
+              districtAndCounty: ["梁园区", "睢阳区", "永城市", "虞城县", "民权县", "宁陵县", "睢县", "夏邑县", "柘城县"]
+          },
+          {
+              name: "许昌市",
+              districtAndCounty: ["魏都区", "禹州市", "长葛市", "许昌县", "许昌市魏都区", "鄢陵县", "安陵镇", "襄城县"]
+          },
+          {
+              name: "漯河市",
+              districtAndCounty: ["源汇区", "郾城区", "召陵区", "舞阳县", "舞泉镇", "临颍县"]
+          },
+          {
+              name: "平顶山市",
+              districtAndCounty: ["新华区", "卫东区", "湛河区", "石龙区", "舞钢市", "汝州市", "宝丰县", "叶县", "昆阳镇", "鲁山县", "鲁阳镇", "郏县"]
+          },
+          {
+              name: "南阳市",
+              districtAndCounty: ["卧龙区", "宛城区", "邓州市", "南召县", "方城县", "西峡县", "镇平县", "内乡县", "淅川县", "社旗县", "赊店镇", "唐河县", "新野县", "桐柏县"]
+          },
+          {
+              name: "信阳市",
+              districtAndCounty: ["河区", "平桥区", "息县", "淮滨县", "潢川县", "光山县", "固始县", "商城县", "罗山县", "新县", "新集镇"]
+          },
+          {
+              name: "周口市",
+              districtAndCounty: ["川汇区", "项城市", "扶沟县", "西华县", "商水县", "太康县", "鹿邑县", "郸城县", "淮阳县", "沈丘县", "槐店镇"]
+          },
+          {
+              name: "驻马店市",
+              districtAndCounty: ["驿城区", "确山县", "盘龙镇", "泌阳县", "泌水镇", "遂平县", "灈阳镇", "西平县", "上蔡县", "蔡都镇", "汝南县", "汝宁镇", "平舆县", "古槐镇", "新蔡县", "古吕镇", "正阳县", "真阳镇"]
+          },
+        //   {
+        //       name: "济源市",
+        //       districtAndCounty: []
+        //   }
+      ]
+  },
+  {
+      name: "湖北省",
+      city: [
+          {
+              name: "武汉市",
+              districtAndCounty: ["江岸区", "江汉区", "硚口区", "汉阳区", "武昌区", "青山区", "洪山区", "东西湖区", "汉南区", "蔡甸区", "江夏区", "黄陂区", "新洲区"]
+          },
+          {
+              name: "十堰市",
+              districtAndCounty: ["张湾区", "茅箭区", "丹江口市", "郧县", "竹山县", "房县", "郧西县", "竹溪县"]
+          },
+          {
+              name: "襄樊市",
+              districtAndCounty: ["襄城区", "樊城区", "襄阳区", "老河口市", "枣阳市", "宜城市", "南漳县", "谷城县", "保康县"]
+          },
+          {
+              name: "荆门市",
+              districtAndCounty: ["东宝区", "掇刀区", "钟祥市", "沙洋县", "沙洋镇", "京山县", "新市镇"]
+          },
+          {
+              name: "孝感市",
+              districtAndCounty: ["孝南区", "应城市", "安陆市", "汉川市", "孝昌县", "花园镇", "大悟县", "云梦县"]
+          },
+          {
+              name: "黄冈市",
+              districtAndCounty: ["黄州区", "麻城市", "武穴市", "红安县", "罗田县", "凤山镇", "英山县", "温泉镇", "浠水县", "清泉镇", "蕲春县", "漕河镇", "黄梅县", "黄梅镇", "团风县", "团风镇"]
+          },
+          {
+              name: "鄂州市",
+              districtAndCounty: ["鄂城区", "梁子湖区", "华容区"]
+          },
+          {
+              name: "黄石市",
+              districtAndCounty: ["黄石港区", "西塞山区", "下陆区", "铁山区", "大冶市", "阳新县", "兴国镇"]
+          },
+          {
+              name: "咸宁市",
+              districtAndCounty: ["咸安区", "赤壁市", "嘉鱼县", "鱼岳镇", "通城县", "隽水镇", "崇阳县", "天城镇", "通山县", "通羊镇"]
+          },
+          {
+              name: "荆州市",
+              districtAndCounty: ["沙市区", "荆州区", "石首市", "洪湖市", "松滋市", "江陵县", "郝穴镇", "公安县", "斗湖堤镇", "监利县", "容城镇"]
+          },
+          {
+              name: "宜昌市",
+              districtAndCounty: ["西陵区", "伍家岗区", "点军区", "猇亭区", "夷陵区", "枝江市", "宜都市", "当阳市", "远安县", "鸣凤镇", "兴山县", "古夫镇", "秭归县", "茅坪镇", "长阳土家族自治县", "龙舟坪镇", "五峰土家族自治县", "五峰镇"]
+          },
+          {
+              name: "随州市",
+              districtAndCounty: ["曾都区", "广水市"]
+          },
+        //   {
+        //       name: "省直辖县级行政单位",
+        //       districtAndCounty: ["仙桃市", "天门市", "潜江市", "神农架林区", "松柏镇"]
+        //   },
+          {
+              name: "恩施土家族苗族自治州",
+              districtAndCounty: ["恩施市", "利川市", "建始县", "业州镇", "巴东县", "信陵镇", "宣恩县", "珠山镇", "咸丰县", "高乐山镇", "来凤县", "翔凤镇", "鹤峰县", "容美镇"]
+          }
+      ]
+  },
+  {
+      name: "湖南省",
+      city: [
+          {
+              name: "长沙市",
+              districtAndCounty: ["长沙市", "岳麓区", "芙蓉区", "天心区", "开福区", "雨花区", "浏阳市", "长沙县", "星沙镇", "望城县", "高塘岭镇", "宁乡县", "玉潭镇"]
+          },
+          {
+              name: "张家界市",
+              districtAndCounty: ["永定区", "武陵源区", "慈利县", "零阳镇", "桑植县", "澧源镇"]
+          },
+          {
+              name: "常德市",
+              districtAndCounty: ["武陵区", "鼎城区", "津市市", "安乡县", "汉寿县", "龙阳镇", "澧县", "澧阳镇", "临澧县", "安福镇", "桃源县", "漳江镇", "石门县", "楚江镇"]
+          },
+          {
+              name: "益阳市",
+              districtAndCounty: ["赫山区", "资阳区", "沅江市", "南县", "南洲镇", "桃江县", "桃花江镇", "安化县", "东坪镇"]
+          },
+          {
+              name: "岳阳市",
+              districtAndCounty: ["岳阳楼区", "君山区", "云溪区", "汨罗市", "临湘市", "岳阳县", "荣家湾镇", "华容县", "湘阴县", "文星镇", "平江县", "汉昌镇"]
+          },
+          {
+              name: "株洲市",
+              districtAndCounty: ["天元区", "荷塘区", "芦淞区", "石峰区", "醴陵市", "株洲县", "渌口镇", "攸县", "茶陵县", "炎陵县", "霞阳镇"]
+          },
+          {
+              name: "湘潭市",
+              districtAndCounty: ["岳塘区", "雨湖区", "湘乡市", "韶山市", "湘潭县", "易俗河镇"]
+          },
+          {
+              name: "衡阳市",
+              districtAndCounty: ["雁峰区", "珠晖区", "石鼓区", "蒸湘区", "南岳区", "常宁市", "耒阳市", "衡阳县", "西渡镇", "衡南县", "云集镇", "衡山县", "开云镇", "衡东县", "祁东县", "洪桥镇"]
+          },
+          {
+              name: "郴州市",
+              districtAndCounty: ["北湖区", "苏仙区", "资兴市", "桂阳县", "永兴县", "宜章县", "嘉禾县", "临武县", "汝城县", "桂东县", "安仁县"]
+          },
+          {
+              name: "永州市",
+              districtAndCounty: ["冷水滩区", "零陵区", "东安县", "白牙市镇", "道县", "道江镇", "宁远县", "舜陵镇", "江永县", "潇浦镇", "蓝山县", "塔峰镇", "新田县", "龙泉镇", "双牌县", "泷泊镇", "祁阳县", "浯溪镇", "江华瑶族自治县", "沱江镇"]
+          },
+          {
+              name: "邵阳市",
+              districtAndCounty: ["双清区", "大祥区", "北塔区", "武冈市", "邵东县", "两市镇", "邵阳县", "塘渡口镇", "新邵县", "酿溪镇", "隆回县", "桃洪镇", "洞口县", "洞口镇", "绥宁县", "长铺镇", "新宁县", "金石镇", "城步苗族自治县", "儒林镇"]
+          },
+          {
+              name: "怀化市",
+              districtAndCounty: ["鹤城区", "洪江市", "沅陵县", "沅陵镇", "辰溪县", "辰阳镇", "溆浦县", "卢峰镇", "中方县", "中方镇", "会同县", "林城镇", "麻阳苗族自治县", "高村镇", "新晃侗族自治县", "新晃镇", "芷江侗族自治县", "芷江镇", "靖州苗族侗族自治县", "渠阳镇", "通道侗族自治县", "双江镇"]
+          },
+          {
+              name: "娄底市",
+              districtAndCounty: ["娄星区", "冷水江市", "涟源市", "双峰县", "永丰镇", "新化县", "上梅镇"]
+          },
+          {
+              name: "湘西土家族苗族自治州",
+              districtAndCounty: ["吉首市", "泸溪县", "白沙镇", "凤凰县", "沱江镇", "花垣县", "花垣镇", "保靖县", "迁陵镇", "古丈县", "古阳镇", "永顺县", "灵溪镇", "龙山县"]
+          }
+      ]
+  },
+  {
+      name: "广东省",
+      city: [
+          {
+              name: "广州市",
+              districtAndCounty: ["越秀区", "荔湾区", "海珠区", "天河区", "白云区", "黄埔区", "番禺区", "花都区", "南沙区", "萝岗区", "增城市", "从化市"]
+          },
+          {
+              name: "深圳市",
+              districtAndCounty: ["福田区", "罗湖区", "南山区", "宝安区", "龙岗区", "盐田区"]
+          },
+          {
+              name: "清远市",
+              districtAndCounty: ["清城区", "英德市", "连州市", "佛冈县", "石角镇", "阳山县", "阳城镇", "清新县", "太和镇", "连山壮族瑶族自治县", "吉田镇", "连南瑶族自治县", "三江镇"]
+          },
+          {
+              name: "韶关市",
+              districtAndCounty: ["浈江区", "武江区", "曲江区", "乐昌市", "南雄市", "始兴县", "太平镇", "仁化县", "仁化镇", "翁源县", "龙仙镇", "新丰县", "乳源瑶族自治县", "乳城镇"]
+          },
+          {
+              name: "河源市",
+              districtAndCounty: ["源城区", "紫金县", "紫城镇", "龙川县", "老隆镇", "连平县", "元善镇", "和平县", "阳明镇", "东源县", "仙塘镇"]
+          },
+          {
+              name: "梅州市",
+              districtAndCounty: ["梅江区", "兴宁市", "梅县", "程江镇", "大埔县", "湖寮镇", "丰顺县", "汤坑镇", "五华县", "水寨镇", "平远县", "大柘镇", "蕉岭县", "蕉城镇"]
+          },
+          {
+              name: "潮州市",
+              districtAndCounty: ["湘桥区", "潮安县", "庵埠镇", "饶平县", "黄冈镇"]
+          },
+          {
+              name: "汕头市",
+              districtAndCounty: ["金平区", "濠江区", "龙湖区", "潮阳区", "潮南区", "澄海区", "南澳县", "后宅镇"]
+          },
+          {
+              name: "揭阳市",
+              districtAndCounty: ["榕城区", "普宁市", "揭东县", "曲溪镇", "揭西县", "河婆镇", "惠来县", "惠城镇"]
+          },
+          {
+              name: "汕尾市",
+              districtAndCounty: ["城区", "陆丰市", "海丰县", "海城镇", "陆河县", "河田镇"]
+          },
+          {
+              name: "惠州市",
+              districtAndCounty: ["惠城区", "惠阳区", "博罗县", "罗阳镇", "惠东县", "龙门县"]
+          },
+          {
+              name: "东莞市",
+              districtAndCounty: []
+          },
+          {
+              name: "珠海市",
+              districtAndCounty: ["香洲区", "斗门区", "金湾区"]
+          },
+          {
+              name: "中山市",
+              districtAndCounty: []
+          },
+          {
+              name: "江门市",
+              districtAndCounty: ["江海区", "蓬江区", "新会区", "恩平市", "台山市", "开平市", "鹤山市"]
+          },
+          {
+              name: "佛山市",
+              districtAndCounty: ["禅城区", "南海区", "顺德区", "三水区", "高明区"]
+          },
+          {
+              name: "肇庆市",
+              districtAndCounty: ["端州区", "鼎湖区", "高要市", "四会市", "广宁县", "南街镇", "怀集县", "怀城镇", "封开县", "江口镇", "德庆县"]
+          },
+          {
+              name: "云浮市",
+              districtAndCounty: ["云城区", "罗定市", "云安县", "六都镇", "新兴县", "新城镇", "郁南县", "都城镇"]
+          },
+          {
+              name: "阳江市",
+              districtAndCounty: ["江城区", "阳春市", "阳西县", "织镇", "阳东县", "东城镇"]
+          },
+          {
+              name: "茂名市",
+              districtAndCounty: ["茂南区", "茂港区", "化州市", "信宜市", "高州市", "电白县", "水东镇"]
+          },
+          {
+              name: "湛江市",
+              districtAndCounty: ["赤坎区", "霞山区", "坡头区", "麻章区", "吴川市", "廉江市", "雷州市", "遂溪县", "遂城镇", "徐闻县", "撤销广州市东山区", "芳村区", "设立广州市南沙区", "萝岗区"]
+          }
+      ]
+  },
+  {
+      name: "广西壮族自治区",
+      city: [
+          {
+              name: "南宁市",
+              districtAndCounty: ["青秀区", "兴宁区", "江南区", "西乡塘区", "良庆区", "邕宁区", "武鸣县", "横县", "宾阳县", "上林县", "隆安县", "马山县"]
+          },
+          {
+              name: "桂林市",
+              districtAndCounty: ["象山区", "叠彩区", "秀峰区", "七星区", "雁山区", "阳朔县", "阳朔镇", "临桂县", "临桂镇", "灵川县", "灵川镇", "全州县", "全州镇", "兴安县", "兴安镇", "永福县", "永福镇", "灌阳县", "灌阳镇", "资源县", "资源镇", "平乐县", "平乐镇", "荔浦县", "荔城镇", "龙胜各族自治县", "龙胜镇", "恭城瑶族自治县", "恭城镇"]
+          },
+          {
+              name: "柳州市",
+              districtAndCounty: ["城中区", "鱼峰区", "柳南区", "柳北区", "柳江县", "拉堡镇", "柳城县", "大埔镇", "鹿寨县", "鹿寨镇", "融安县", "长安镇", "三江侗族自治县", "古宜镇", "融水苗族自治县", "融水镇"]
+          },
+          {
+              name: "梧州市",
+              districtAndCounty: ["万秀区", "蝶山区", "长洲区", "岑溪市", "苍梧县", "龙圩镇", "藤县", "藤州镇", "蒙山县", "蒙山镇"]
+          },
+          {
+              name: "贵港市",
+              districtAndCounty: ["港北区", "港南区", "覃塘区", "桂平市", "平南县", "平南镇"]
+          },
+          {
+              name: "玉林市",
+              districtAndCounty: ["玉州区", "北流市", "兴业县", "石南镇", "容县", "容州镇", "陆川县", "陆城镇", "博白县", "博白镇"]
+          },
+          {
+              name: "钦州市",
+              districtAndCounty: ["钦南区", "钦北区", "灵山县", "灵城镇", "浦北县", "小江镇"]
+          },
+          {
+              name: "北海市",
+              districtAndCounty: ["海城区", "银海区", "铁山港区", "合浦县", "廉州镇"]
+          },
+          {
+              name: "防城港市",
+              districtAndCounty: ["港口区", "防城区", "东兴市", "上思县", "思阳镇"]
+          },
+          {
+              name: "崇左市",
+              districtAndCounty: ["江州区", "凭祥市", "扶绥县", "新宁镇", "大新县", "桃城镇", "天等县", "天等镇", "宁明县", "城中镇", "龙州县", "龙州镇"]
+          },
+          {
+              name: "百色市",
+              districtAndCounty: ["右江区", "田阳县", "田州镇", "田东县", "平马镇", "平果县", "马头镇", "德保县", "靖西县", "新靖镇", "那坡县", "城厢镇", "凌云县", "泗城镇", "乐业县", "同乐镇", "西林县", "八达镇", "田林县", "乐里镇", "隆林各族自治县", "新州镇"]
+          },
+          {
+              name: "河池市",
+              districtAndCounty: ["金城江区", "宜州市", "南丹县", "天峨县", "六排镇", "凤山县", "凤城镇", "东兰县", "东兰镇", "巴马瑶族自治县", "巴马镇", "都安瑶族自治县", "安阳镇", "大化瑶族自治县", "大化镇", "罗城仫佬族自治县", "东门镇", "环江毛南族自治县", "思恩镇"]
+          },
+          {
+              name: "来宾市",
+              districtAndCounty: ["兴宾区", "合山市", "象州县", "象州镇", "武宣县", "武宣镇", "忻城县", "金秀瑶族自治县", "金秀镇"]
+          },
+          {
+              name: "贺州市",
+              districtAndCounty: ["八步区", "昭平县", "昭平镇", "钟山县", "钟山镇", "富川瑶族自治县", "富阳镇"]
+          }
+      ]
+  },
+  {
+      name: "海南省",
+      city: [
+          {
+              name: "海口市",
+              districtAndCounty: ["龙华区", "秀英区", "琼山区", "美兰区"]
+          },
+          {
+              name: "三亚市",
+              districtAndCounty: []
+          },          
+          {
+            name: "三沙市",
+            districtAndCounty: []
+          },
+          {
+            name: "儋州市",
+            districtAndCounty: []
+          },
+        //   {
+        //       name: "省直辖行政单位",
+        //       districtAndCounty: ["文昌市", "琼海市", "万宁市", "五指山市", "东方市", "儋州市", "临高县", "临城镇", "澄迈县", "金江镇", "定安县", "定城镇", "屯昌县", "屯城镇", "昌江黎族自治县", "石碌镇", "白沙黎族自治县", "牙叉镇", "琼中黎族苗族自治县", "营根镇", "陵水黎族自治县", "椰林镇", "保亭黎族苗族自治县", "保城镇", "乐东黎族自治县", "抱由镇"]
+        //   }
+      ]
+  },
+  {
+      name: "四川省",
+      city: [
+          {
+              name: "成都市",
+              districtAndCounty: ["青羊区", "锦江区", "金牛区", "武侯区", "成华区", "龙泉驿区", "青白江区", "新都区", "温江区", "都江堰市", "彭州市", "邛崃市", "崇州市", "金堂县", "赵镇", "双流县", "郫县", "郫筒镇", "大邑县", "晋原镇", "蒲江县", "鹤山镇", "新津县", "五津镇"]
+          },
+          {
+              name: "广元市",
+              districtAndCounty: ["市中区", "元坝区", "朝天区", "旺苍县", "东河镇", "青川县", "乔庄镇", "剑阁县", "下寺镇", "苍溪县", "陵江镇"]
+          },
+          {
+              name: "绵阳市",
+              districtAndCounty: ["涪城区", "游仙区", "江油市", "三台县", "潼川镇", "盐亭县", "云溪镇", "安县", "花荄镇", "梓潼县", "文昌镇", "北川羌族自治县", "曲山镇", "平武县", "龙安镇"]
+          },
+          {
+              name: "德阳市",
+              districtAndCounty: ["旌阳区", "什邡市", "广汉市", "绵竹市", "罗江县", "罗江镇", "中江县", "凯江镇"]
+          },
+          {
+              name: "南充市",
+              districtAndCounty: ["顺庆区", "高坪区", "嘉陵区", "阆中市", "南部县", "南隆镇", "营山县", "朗池镇", "蓬安县", "周口镇", "仪陇县", "新政镇", "西充县", "晋城镇"]
+          },
+          {
+              name: "广安市",
+              districtAndCounty: ["广安区", "华蓥市", "岳池县", "九龙镇", "武胜县", "沿口镇", "邻水县", "鼎屏镇"]
+          },
+          {
+              name: "遂宁市",
+              districtAndCounty: ["船山区", "安居区", "蓬溪县", "赤城镇", "射洪县", "太和镇", "大英县", "蓬莱镇"]
+          },
+          {
+              name: "内江市",
+              districtAndCounty: ["市中区", "东兴区", "威远县", "严陵镇", "资中县", "重龙镇", "隆昌县", "金鹅镇"]
+          },
+          {
+              name: "乐山市",
+              districtAndCounty: ["市中区", "沙湾区", "五通桥区", "金口河区", "峨眉山市", "犍为县", "玉津镇", "井研县", "研城镇", "夹江县", "漹城镇", "沐川县", "沐溪镇", "峨边彝族自治县", "沙坪镇", "马边彝族自治县", "民建镇"]
+          },
+          {
+              name: "自贡市",
+              districtAndCounty: ["自流井区", "大安区", "贡井区", "沿滩区", "荣县", "旭阳镇", "富顺县", "富世镇"]
+          },
+          {
+              name: "泸州市",
+              districtAndCounty: ["江阳区", "纳溪区", "龙马潭区", "泸县", "福集镇", "合江县", "合江镇", "叙永县", "叙永镇", "古蔺县", "古蔺镇"]
+          },
+          {
+              name: "宜宾市",
+              districtAndCounty: ["翠屏区", "宜宾县", "柏溪镇", "南溪县", "南溪镇", "江安县", "江安镇", "长宁县", "长宁镇", "高县", "庆符镇", "筠连县", "筠连镇", "珙县", "巡场镇", "兴文县", "中城镇", "屏山县", "屏山镇"]
+          },
+          {
+              name: "攀枝花市",
+              districtAndCounty: ["东区", "西区", "仁和区", "米易县", "攀莲镇", "盐边县", "桐子林镇"]
+          },
+          {
+              name: "巴中市",
+              districtAndCounty: ["巴州区", "通江县", "诺江镇", "南江县", "南江镇", "平昌县", "江口镇"]
+          },
+          {
+              name: "达州市",
+              districtAndCounty: ["通川区", "万源市", "达县", "南外镇", "宣汉县", "东乡镇", "开江县", "新宁镇", "大竹县", "竹阳镇", "渠县", "渠江镇"]
+          },
+          {
+              name: "资阳市",
+              districtAndCounty: ["雁江区", "简阳市", "乐至县", "天池镇", "安岳县", "岳阳镇"]
+          },
+          {
+              name: "眉山市",
+              districtAndCounty: ["东坡区", "仁寿县", "文林镇", "彭山县", "凤鸣镇", "洪雅县", "洪川镇", "丹棱县", "丹棱镇", "青神县", "城厢镇"]
+          },
+          {
+              name: "雅安市",
+              districtAndCounty: ["雨城区", "名山县", "蒙阳镇", "荥经县", "严道镇", "汉源县", "富林镇", "石棉县", "新棉镇", "天全县", "城厢镇", "芦山县", "芦阳镇", "宝兴县", "穆坪镇"]
+          },
+          {
+              name: "阿坝藏族羌族自治州",
+              districtAndCounty: ["马尔康县", "马尔康镇", "汶川县", "威州镇", "理县", "杂谷脑镇", "茂县", "凤仪镇", "松潘县", "进安镇", "九寨沟县", "永乐镇", "金川县", "金川镇", "小金县", "美兴镇", "黑水县", "芦花镇", "壤塘县", "壤柯镇", "阿坝县", "阿坝镇", "若尔盖县", "达扎寺镇", "红原县", "邛溪镇"]
+          },
+          {
+              name: "甘孜藏族州",
+              districtAndCounty: ["康定县", "炉城镇", "泸定县", "泸桥镇", "丹巴县", "章谷镇", "九龙县", "呷尔镇", "雅江县", "河口镇", "道孚县", "鲜水镇", "炉霍县", "新都镇", "甘孜县", "甘孜镇", "新龙县", "茹龙镇", "德格县", "更庆镇", "白玉县", "建设镇", "石渠县", "尼呷镇", "色达县", "色柯镇", "理塘县", "高城镇", "巴塘县", "夏邛镇", "乡城县", "桑披镇", "稻城县", "金珠镇", "得荣县", "松麦镇"]
+          },
+          {
+              name: "凉山彝族州",
+              districtAndCounty: ["西昌市", "盐源县", "盐井镇", "德昌县", "德州镇", "会理县", "会东县", "会东镇", "宁南县", "披砂镇", "普格县", "普基镇", "布拖县", "特木里镇", "金阳县", "天地坝镇", "昭觉县", "新城镇", "喜德县", "光明镇", "冕宁县", "城厢镇", "越西县", "越城镇", "甘洛县", "新市坝镇", "美姑县", "巴普镇", "雷波县", "锦城镇", "木里藏族自治县", "乔瓦镇"]
+          }
+      ]
+  },
+  {
+      name: "贵州省",
+      city: [
+          {
+              name: "贵阳市",
+              districtAndCounty: ["乌当区", "南明区", "云岩区", "花溪区", "白云区", "小河区", "清镇市", "开阳县", "修文县", "龙场镇", "息烽县", "永靖镇"]
+          },
+          {
+              name: "六盘水市",
+              districtAndCounty: ["钟山区", "盘县", "红果镇", "六枝特区", "平寨镇", "水城县"]
+          },
+          {
+              name: "遵义市",
+              districtAndCounty: ["红花岗区", "汇川区", "赤水市", "仁怀市", "遵义县", "南白镇", "桐梓县", "娄山关镇", "绥阳县", "洋川镇", "正安县", "凤仪镇", "凤冈县", "龙泉镇", "湄潭县", "湄江镇", "余庆县", "白泥镇", "习水县", "东皇镇", "道真仡佬族苗族自治县", "玉溪镇", "务川仡佬族苗族自治县", "都濡镇"]
+          },
+          {
+              name: "安顺市",
+              districtAndCounty: ["西秀区", "平坝县", "普定县", "关岭布依族苗族自治县", "关索镇", "镇宁布依族苗族自治县", "紫云苗族布依族自治县", "松山镇"]
+          },
+          {
+              name: "毕节市",
+              districtAndCounty: ["毕节市", "大方县", "大方镇", "黔西县", "金沙县", "织金县", "纳雍县", "雍熙镇", "赫章县", "威宁彝族回族苗族自治县", "草海镇"]
+          },
+          {
+              name: "铜仁市",
+              districtAndCounty: ["铜仁市", "江口县", "双江镇", "石阡县", "汤山镇", "思南县", "思唐镇", "德江县", "青龙镇", "玉屏侗族自治县", "平溪镇", "印江土家族苗族自治县", "峨岭镇", "沿河土家族自治县", "和平镇", "松桃苗族自治县", "蓼皋镇", "万山特区", "万山镇"]
+          },
+          {
+              name: "黔东南苗族侗族自治州",
+              districtAndCounty: ["凯里市", "黄平县", "新州镇", "施秉县", "三穗县", "八弓镇", "镇远县", "阳镇", "岑巩县", "思旸镇", "天柱县", "凤城镇", "锦屏县", "三江镇", "剑河县", "革东镇", "台江县", "台拱镇", "黎平县", "德凤镇", "榕江县", "古州镇", "从江县", "丙妹镇", "雷山县", "丹江镇", "麻江县", "杏山镇", "丹寨县", "龙泉镇"]
+          },
+          {
+              name: "黔南布依族苗族自治州",
+              districtAndCounty: ["都匀市", "福泉市", "荔波县", "玉屏镇", "贵定县", "瓮安县", "雍阳镇", "独山县", "平塘县", "平湖镇", "罗甸县", "龙坪镇", "长顺县", "长寨镇", "龙里县", "龙山镇", "惠水县", "和平镇", "三都水族自治县", "三合镇"]
+          },
+          {
+              name: "黔西南布依族苗族自治州",
+              districtAndCounty: ["兴义市", "兴仁县", "普安县", "盘水镇", "晴隆县", "莲城镇", "贞丰县", "珉谷镇", "望谟县", "复兴镇", "册亨县", "者楼镇", "安龙县", "新安镇"]
+          }
+      ]
+  },
+  {
+      name: "云南省",
+      city: [
+          {
+              name: "昆明市",
+              districtAndCounty: ["盘龙区", "五华区", "官渡区", "西山区", "东川区", "安宁市", "呈贡县", "龙城镇", "晋宁县", "昆阳镇", "富民县", "永定镇", "宜良县", "匡远镇", "嵩明县", "嵩阳镇", "石林彝族自治县", "鹿阜镇", "禄劝彝族苗族自治县", "屏山镇", "寻甸回族彝族自治县", "仁德镇"]
+          },
+          {
+              name: "曲靖市",
+              districtAndCounty: ["麒麟区", "宣威市", "马龙县", "通泉镇", "沾益县", "西平镇", "富源县", "中安镇", "罗平县", "罗雄镇", "师宗县", "丹凤镇", "陆良县", "中枢镇", "会泽县", "金钟镇"]
+          },
+          {
+              name: "玉溪市",
+              districtAndCounty: ["红塔区", "江川县", "大街镇", "澄江县", "凤麓镇", "通海县", "秀山镇", "华宁县", "宁州镇", "易门县", "龙泉镇", "峨山彝族自治县", "双江镇", "新平彝族傣族自治县", "桂山镇", "元江哈尼族彝族傣族自治县", "澧江镇"]
+          },
+          {
+              name: "保山市",
+              districtAndCounty: ["隆阳区", "施甸县", "甸阳镇", "腾冲县", "腾越镇", "龙陵县", "龙山镇", "昌宁县", "田园镇"]
+          },
+          {
+              name: "昭通市",
+              districtAndCounty: ["昭阳区", "鲁甸县", "文屏镇", "巧家县", "新华镇", "盐津县", "盐井镇", "大关县", "翠华镇", "永善县", "溪落渡镇", "绥江县", "中城镇", "镇雄县", "乌峰镇", "彝良县", "角奎镇", "威信县", "扎西镇", "水富县", "向家坝镇"]
+          },
+          {
+              name: "丽江市",
+              districtAndCounty: ["古城区", "永胜县", "永北镇", "华坪县", "中心镇", "玉龙纳西族自治县", "黄山镇", "宁蒗彝族自治县", "大兴镇"]
+          },
+          {
+              name: "思茅市",
+              districtAndCounty: ["翠云区", "普洱哈尼族彝族自治县", "宁洱镇", "墨江哈尼族自治县", "联珠镇", "景东彝族自治县", "锦屏镇", "景谷傣族彝族自治县", "威远镇", "镇沅彝族哈尼族拉祜族自治县", "恩乐镇", "江城哈尼族彝族自治县", "勐烈镇", "孟连傣族拉祜族佤族自治县", "娜允镇", "澜沧拉祜族自治县", "勐朗镇", "西盟佤族自治县", "勐梭镇"]
+          },
+          {
+              name: "临沧市",
+              districtAndCounty: ["临翔区", "凤庆县", "凤山镇", "云县", "爱华镇", "永德县", "德党镇", "镇康县", "南伞镇", "双江拉祜族佤族布朗族傣族自治县", "勐勐镇", "耿马傣族佤族自治县", "耿马镇", "沧源佤族自治县", "勐董镇"]
+          },
+          {
+              name: "德宏傣族景颇族自治州",
+              districtAndCounty: ["潞西市", "瑞丽市", "梁河县", "遮岛镇", "盈江县", "平原镇", "陇川县", "章凤镇"]
+          },
+          {
+              name: "怒江傈僳族自治州",
+              districtAndCounty: ["泸水县六库镇", "泸水县", "六库镇", "福贡县", "上帕镇", "贡山独龙族怒族自治县", "茨开镇", "兰坪白族普米族自治县", "金顶镇"]
+          },
+          {
+              name: "迪庆藏族自治州",
+              districtAndCounty: ["香格里拉县", "建塘镇", "德钦县", "升平镇", "维西傈僳族自治县", "保和镇"]
+          },
+          {
+              name: "大理白族自治州",
+              districtAndCounty: ["大理市", "祥云县", "祥城镇", "宾川县", "金牛镇", "弥渡县", "弥城镇", "永平县", "博南镇", "云龙县", "诺邓镇", "洱源县", "茈碧湖镇", "剑川县", "金华镇", "鹤庆县", "云鹤镇", "漾濞彝族自治县", "苍山西镇", "南涧彝族自治县", "南涧镇", "巍山彝族回族自治县", "南诏镇"]
+          },
+          {
+              name: "楚雄彝族自治州",
+              districtAndCounty: ["楚雄市", "双柏县", "妥甸镇", "牟定县", "共和镇", "南华县", "龙川镇", "姚安县", "栋川镇", "大姚县", "金碧镇", "永仁县", "永定镇", "元谋县", "元马镇", "武定县", "狮山镇", "禄丰县", "金山镇"]
+          },
+          {
+              name: "红河哈尼族彝族自治州",
+              districtAndCounty: ["蒙自县", "文澜镇", "个旧市", "开远市", "绿春县", "大兴镇", "建水县", "临安镇", "石屏县", "异龙镇", "弥勒县", "弥阳镇", "泸西县", "中枢镇", "元阳县", "南沙镇", "红河县", "迤萨镇", "金平苗族瑶族傣族自治县", "金河镇", "河口瑶族自治县", "河口镇", "屏边苗族自治县", "玉屏镇"]
+          },
+          {
+              name: "文山壮族苗族自治州",
+              districtAndCounty: ["文山县", "开化镇", "砚山县", "江那镇", "西畴县", "西洒镇", "麻栗坡县", "麻栗镇", "马关县", "马白镇", "丘北县", "锦屏镇", "广南县", "莲城镇", "富宁县", "新华镇"]
+          },
+          {
+              name: "西双版纳傣族自治州",
+              districtAndCounty: ["景洪市", "勐海县", "勐海镇", "勐腊县", "勐腊镇"]
+          }
+      ]
+  },
+  {
+      name: "西藏自治区",
+      city: [
+          {
+              name: "拉萨市",
+              districtAndCounty: ["城关区", "林周县", "甘丹曲果镇", "当雄县", "当曲卡镇", "尼木县", "塔荣镇", "曲水县", "曲水镇", "堆龙德庆县", "东嘎镇", "达孜县", "德庆镇", "墨竹工卡县", "工卡镇"]
+          },
+          {
+              name: "那曲市",
+              districtAndCounty: ["那曲县", "那曲镇", "嘉黎县", "阿扎镇", "比如县", "比如镇", "聂荣县", "聂荣镇", "安多县", "帕那镇", "申扎县", "申扎镇", "索县", "亚拉镇", "班戈县", "普保镇", "巴青县", "拉西镇", "尼玛县", "尼玛镇"]
+          },
+          {
+              name: "昌都市",
+              districtAndCounty: ["昌都县", "江达县", "江达镇", "贡觉县", "莫洛镇", "类乌齐县", "桑多镇", "丁青县", "丁青镇", "察雅县", "烟多镇", "八宿县", "白玛镇", "左贡县", "旺达镇", "芒康县", "嘎托镇", "洛隆县", "孜托镇", "边坝县", "草卡镇"]
+          },
+          {
+              name: "林芝市",
+              districtAndCounty: ["林芝县", "八一镇", "工布江达县", "工布江达镇", "米林县", "米林镇", "墨脱县", "墨脱镇", "波密县", "扎木镇", "察隅县", "竹瓦根镇", "朗县", "朗镇"]
+          },
+          {
+              name: "山南市",
+              districtAndCounty: ["乃东县", "泽当镇", "扎囊县", "扎塘镇", "贡嘎县", "吉雄镇", "桑日县", "桑日镇", "琼结县", "琼结镇", "曲松县", "曲松镇", "措美县", "措美镇", "洛扎县", "洛扎镇", "加查县", "安绕镇", "隆子县", "隆子镇", "错那县", "错那镇", "浪卡子县", "浪卡子镇"]
+          },
+          {
+              name: "日喀则市",
+              districtAndCounty: ["日喀则市", "南木林县", "南木林镇", "江孜县", "江孜镇", "定日县", "协格尔镇", "萨迦县", "萨迦镇", "拉孜县", "曲下镇", "昂仁县", "卡嘎镇", "谢通门县", "卡嘎镇", "白朗县", "洛江镇", "仁布县", "德吉林镇", "康马县", "康马镇", "定结县", "江嘎镇", "仲巴县", "拉让乡", "亚东县", "下司马镇", "吉隆县", "宗嘎镇", "聂拉木县", "聂拉木镇", "萨嘎县", "加加镇", "岗巴县", "岗巴镇"]
+          },
+          {
+              name: "阿里地区",
+              districtAndCounty: ["噶尔县", "狮泉河镇", "普兰县", "普兰镇", "札达县", "托林镇", "日土县", "日土镇", "革吉县", "革吉镇", "改则县", "改则镇", "措勤县", "措勤镇", "林芝县人民政府驻地由林芝镇迁至八一镇"]
+          }
+      ]
+  },
+  {
+      name: "陕西省",
+      city: [
+          {
+              name: "西安市",
+              districtAndCounty: ["莲湖区", "新城区", "碑林区", "灞桥区", "未央区", "雁塔区", "阎良区", "临潼区", "长安区", "蓝田县", "蓝关镇", "周至县", "二曲镇", "户县", "甘亭镇", "高陵县", "鹿苑镇"]
+          },
+          {
+              name: "延安市",
+              districtAndCounty: ["宝塔区", "延长县", "七里村镇", "延川县", "延川镇", "子长县", "瓦窑堡镇", "安塞县", "真武洞镇", "志丹县", "保安镇", "吴起县", "吴旗镇", "甘泉县", "富县", "富城镇", "洛川县", "凤栖镇", "宜川县", "丹州镇", "黄龙县", "石堡镇", "黄陵县", "桥山镇"]
+          },
+          {
+              name: "铜川市",
+              districtAndCounty: ["耀州区", "王益区", "印台区", "宜君县"]
+          },
+          {
+              name: "渭南市",
+              districtAndCounty: ["临渭区", "华阴市", "韩城市", "华县", "华州镇", "潼关县", "大荔县", "蒲城县", "澄城县", "白水县", "合阳县", "富平县", "窦村镇"]
+          },
+          {
+              name: "咸阳市",
+              districtAndCounty: ["秦都区", "杨陵区", "渭城区", "兴平市", "三原县", "泾阳县", "泾干镇", "乾县", "礼泉县", "永寿县", "监军镇", "彬县", "长武县", "昭仁镇", "旬邑县", "淳化县", "武功县", "普集镇"]
+          },
+          {
+              name: "宝鸡市",
+              districtAndCounty: ["渭滨区", "金台区", "陈仓区", "凤翔县", "岐山县", "凤鸣镇", "扶风县", "眉县", "首善镇", "陇县", "千阳县", "麟游县", "九成宫镇", "凤县", "双石铺镇", "太白县", "嘴头镇"]
+          },
+          {
+              name: "汉中市",
+              districtAndCounty: ["汉台区", "南郑县", "城固县", "博望镇", "洋县", "洋州镇", "西乡县", "勉县", "勉阳镇", "宁强县", "汉源镇", "略阳县", "镇巴县", "泾洋镇", "留坝县", "佛坪县", "袁家庄镇"]
+          },
+          {
+              name: "榆林市",
+              districtAndCounty: ["榆阳区", "神木县", "神木镇", "府谷县", "府谷镇", "横山县", "横山镇", "靖边县", "张家畔镇", "定边县", "定边镇", "绥德县", "名州镇", "米脂县", "银州镇", "佳县", "佳芦镇", "吴堡县", "宋家川镇", "清涧县", "宽洲镇", "子洲县", "双湖峪镇"]
+          },
+          {
+              name: "安康市",
+              districtAndCounty: ["汉滨区", "汉阴县", "石泉县", "宁陕县", "紫阳县", "岚皋县", "平利县", "镇坪县", "旬阳县", "白河县"]
+          },
+          {
+              name: "商洛市",
+              districtAndCounty: ["商州区", "洛南县", "丹凤县", "龙驹寨镇", "商南县", "山阳县", "镇安县", "永乐镇", "柞水县", "乾佑镇"]
+          }
+      ]
+  },
+  {
+      name: "甘肃省",
+      city: [
+          {
+              name: "兰州市",
+              districtAndCounty: ["城关区", "七里河区", "西固区", "安宁区", "红古区", "永登县", "皋兰县", "石洞镇", "榆中县"]
+          },
+          {
+              name: "嘉峪关市",
+              districtAndCounty: ["金昌市", "金川区", "永昌县"]
+          },
+          {
+            name: "金昌市",
+            districtAndCounty: []
+          },
+          {
+              name: "白银市",
+              districtAndCounty: ["白银区", "平川区", "靖远县", "乌兰镇", "会宁县", "会师镇", "景泰县", "一条山镇"]
+          },
+          {
+              name: "天水市",
+              districtAndCounty: ["秦州区", "麦积区", "清水县", "永清镇", "秦安县", "兴国镇", "甘谷县", "大像山镇", "武山县", "张家川回族自治县", "张家川镇"]
+          },
+          {
+              name: "武威市",
+              districtAndCounty: ["凉州区", "民勤县", "古浪县", "古浪镇", "天祝藏族自治县", "华藏寺镇"]
+          },
+          {
+              name: "酒泉市",
+              districtAndCounty: ["肃州区", "玉门市", "敦煌市", "金塔县", "金塔镇", "安西县", "渊泉镇", "肃北蒙古族自治县", "党城湾镇", "阿克塞哈萨克族自治县", "红柳湾镇"]
+          },
+          {
+              name: "张掖市",
+              districtAndCounty: ["甘州区", "民乐县", "洪水镇", "临泽县", "沙河镇", "高台县", "山丹县", "清泉镇", "肃南裕固族自治县", "红湾寺镇"]
+          },
+          {
+              name: "庆阳市",
+              districtAndCounty: ["西峰区", "庆城县", "庆城镇", "环县", "环城镇", "华池县", "柔远镇", "合水县", "西华池镇", "正宁县", "山河镇", "宁县", "新宁镇", "镇原县"]
+          },
+          {
+              name: "平凉市",
+              districtAndCounty: ["崆峒区", "泾川县", "灵台县", "中台镇", "崇信县", "锦屏镇", "华亭县", "东华镇", "庄浪县", "水洛镇", "静宁县"]
+          },
+          {
+              name: "定西市",
+              districtAndCounty: ["安定区", "通渭县", "平襄镇", "临洮县", "洮阳镇", "漳县", "武阳镇", "岷县", "岷阳镇", "渭源县", "清源镇", "陇西县", "巩昌镇"]
+          },
+          {
+              name: "陇南市",
+              districtAndCounty: ["武都区", "成县", "宕昌县", "康县", "文县", "西和县", "汉源镇", "礼县", "两当县", "徽县"]
+          },
+          {
+              name: "临夏回族自治州",
+              districtAndCounty: ["临夏市", "临夏县", "韩集镇", "康乐县", "附城镇", "永靖县", "刘家峡镇", "广河县", "和政县", "东乡族自治县", "锁南坝镇", "积石山保安族东乡族撒拉族自治县", "吹麻滩镇"]
+          },
+          {
+              name: "甘南藏族自治州",
+              districtAndCounty: ["合作市", "临潭县", "卓尼县", "柳林镇", "舟曲县", "迭部县", "电尕镇", "玛曲县", "尼玛镇", "碌曲县", "玛艾镇", "夏河县", "拉卜楞镇"]
+          }
+      ]
+  },
+  {
+      name: "青海省",
+      city: [
+          {
+              name: "西宁市",
+              districtAndCounty: ["城中区", "城东区", "城西区", "城北区", "大通回族土族自治县", "桥头镇", "湟源县", "湟中县", "鲁沙尔镇"]
+          },
+          {
+              name: "海东市",
+              districtAndCounty: ["平安县", "平安镇", "乐都县", "碾伯镇", "民和回族土族自治县", "川口镇", "互助土族自治县", "威远镇", "化隆回族自治县", "巴燕镇", "循化撒拉族自治县", "积石镇"]
+          },
+          {
+              name: "海北藏族自治州",
+              districtAndCounty: ["海晏县", "三角城镇", "祁连县", "八宝镇", "刚察县", "沙柳河镇", "门源回族自治县", "浩门镇"]
+          },
+          {
+              name: "海南藏族自治州",
+              districtAndCounty: ["共和县", "恰卜恰镇", "同德县", "尕巴松多镇", "贵德县", "河阴镇", "兴海县", "子科滩镇", "贵南县", "茫曲镇"]
+          },
+          {
+              name: "黄南藏族自治州",
+              districtAndCounty: ["同仁县", "隆务镇", "尖扎县", "马克唐镇", "泽库县", "泽曲镇", "河南蒙古族自治县", "优干宁镇"]
+          },
+          {
+              name: "果洛藏族自治州",
+              districtAndCounty: ["玛沁县", "大武镇", "班玛县", "赛来塘镇", "甘德县", "柯曲镇", "达日县", "吉迈镇", "久治县", "智青松多镇", "玛多县", "黄河乡"]
+          },
+          {
+              name: "玉树藏族自治州",
+              districtAndCounty: ["玉树县", "结古镇", "杂多县", "萨呼腾镇", "称多县", "称文镇", "治多县", "加吉博洛镇", "囊谦县", "香达镇", "曲麻莱县", "约改镇"]
+          },
+          {
+              name: "海西蒙古族藏族自治州",
+              districtAndCounty: ["德令哈市", "格尔木市", "乌兰县", "希里沟镇", "都兰县", "察汗乌苏镇", "天峻县", "新源镇"]
+          }
+      ]
+  },
+  {
+      name: "宁夏回族自治区",
+      city: [
+          {
+              name: "银川市",
+              districtAndCounty: ["兴庆区", "金凤区", "西夏区", "灵武市", "永宁县", "杨和镇", "贺兰县", "习岗镇"]
+          },
+          {
+              name: "石嘴山市",
+              districtAndCounty: ["大武口区", "惠农区", "平罗县"]
+          },
+          {
+              name: "吴忠市",
+              districtAndCounty: ["利通区", "青铜峡市", "盐池县", "花马池镇", "同心县", "豫海镇"]
+          },
+          {
+              name: "固原市",
+              districtAndCounty: ["原州区", "西吉县", "吉强镇", "隆德县", "泾源县", "香水镇", "彭阳县", "白阳镇"]
+          },
+          {
+              name: "中卫市",
+              districtAndCounty: ["沙坡头区", "中宁县", "海原县"]
+          }
+      ]
+  },
+  {
+      name: "新疆维吾尔自治区",
+      city: [
+          {
+              name: "乌鲁木齐市",
+              districtAndCounty: ["天山区", "沙依巴克区", "新市区", "水磨沟区", "头屯河区", "达坂城区", "东山区", "乌鲁木齐县", "乌鲁木齐市水磨沟区"]
+          },
+          {
+              name: "克拉玛依市",
+              districtAndCounty: ["克拉玛依区", "独山子区", "白碱滩区", "乌尔禾区"]
+          },
+        //   {
+        //       name: "自治区直辖县级行政单位",
+        //       districtAndCounty: ["石河子市", "阿拉尔市", "图木舒克市", "五家渠市"]
+        //   },
+          {
+              name: "喀什地区",
+              districtAndCounty: ["喀什市", "疏附县", "托克扎克镇", "疏勒县", "疏勒镇", "英吉沙县", "英吉沙镇", "泽普县", "泽普镇", "莎车县", "莎车镇", "叶城县", "喀格勒克镇", "麦盖提县", "麦盖提镇", "岳普湖县", "岳普湖镇", "伽师县", "巴仁镇", "巴楚县", "巴楚镇", "塔什库尔干塔吉克自治县", "塔什库尔干镇"]
+          },
+          {
+              name: "阿克苏地区",
+              districtAndCounty: ["阿克苏市", "温宿县", "温宿镇", "库车县", "库车镇", "沙雅县", "沙雅镇", "新和县", "新和镇", "拜城县", "拜城镇", "乌什县", "乌什镇", "阿瓦提县", "阿瓦提镇", "柯坪县", "柯坪镇"]
+          },
+          {
+              name: "和田地区",
+              districtAndCounty: ["和田市", "和田县", "墨玉县", "喀拉喀什镇", "皮山县", "固玛镇", "洛浦县", "洛浦镇", "策勒县", "策勒镇", "于田县", "木尕拉镇", "民丰县", "尼雅镇"]
+          },
+          {
+              name: "吐鲁番市",
+              districtAndCounty: ["吐鲁番市", "鄯善县", "鄯善镇", "托克逊县", "托克逊镇"]
+          },
+          {
+              name: "哈密市",
+              districtAndCounty: ["哈密市", "伊吾县", "伊吾镇", "巴里坤哈萨克自治县", "巴里坤镇"]
+          },
+          {
+              name: "克孜勒苏柯尔克孜自治州",
+              districtAndCounty: ["阿图什市", "阿克陶县", "阿克陶镇", "阿合奇县", "阿合奇镇", "乌恰县", "乌恰镇"]
+          },
+          {
+              name: "博尔塔拉蒙古州",
+              districtAndCounty: ["博乐市", "精河县", "精河镇", "温泉县", "博格达尔镇"]
+          },
+          {
+              name: "昌吉回族自治州",
+              districtAndCounty: ["昌吉市", "阜康市", "米泉市", "呼图壁县", "呼图壁镇", "玛纳斯县", "玛纳斯镇", "奇台县", "奇台镇", "吉木萨尔县", "吉木萨尔镇", "木垒哈萨克自治县", "木垒镇"]
+          },
+          {
+              name: "巴音郭楞蒙古州",
+              districtAndCounty: ["库尔勒市", "轮台县", "轮台镇", "尉犁县", "尉犁镇", "若羌县", "若羌镇", "且末县", "且末镇", "和静县", "和静镇", "和硕县", "特吾里克镇", "博湖县", "博湖镇", "焉耆回族自治县", "焉耆镇"]
+          },
+          {
+              name: "伊犁哈萨克自治州",
+              districtAndCounty: ["伊宁市", "奎屯市", "伊宁县", "吉里于孜镇", "霍城县", "水定镇", "巩留县", "巩留镇", "新源县", "新源镇", "昭苏县", "昭苏镇", "特克斯县", "特克斯镇", "尼勒克县", "尼勒克镇", "察布查尔锡伯自治县", "察布查尔镇"]
+          },
+          {
+              name: "塔城地区",
+              districtAndCounty: ["塔城市", "乌苏市", "额敏县", "额敏镇", "沙湾县", "三道河子镇", "托里县", "托里镇", "裕民县", "哈拉布拉镇", "和布克赛尔蒙古自治县", "和布克赛尔镇"]
+          },
+          {
+              name: "阿勒泰地区",
+              districtAndCounty: ["阿勒泰市", "布尔津县", "布尔津镇", "富蕴县", "库额尔齐斯镇", "福海县", "哈巴河县", "青河县", "吉木乃县"]
+          }
+      ]
+  },
+  {
+      name: "香港特别行政区",
+      city: [
+          {
+              name: "香港岛",
+           },
+          {
+            name: "九龙",
+           },
+            {
+              name: "新界",
+              }
+      ]
+  },
+  {
+      name: "澳门特别行政区",
+      city: [
+          {
+              name: "澳门半岛",
+              districtAndCounty: ["澳门特别行政区"]
+          },
+          {
+            name: "离岛",
+            districtAndCounty: ["澳门特别行政区"]
+        }
+      ]
+  },
+  {
+      name: "台湾省",
+      city: [
+          {
+              name: "台北市",
+              districtAndCounty: []
+          },
+          {
+              name: "高雄市",
+              districtAndCounty: []
+          },
+          {
+              name: "台中市",
+              districtAndCounty: []
+          },
+          {
+              name: "花莲县",
+              districtAndCounty: []
+          },
+          {
+              name: "基隆市",
+              districtAndCounty: []
+          },
+          {
+            name: "新北市",
+            districtAndCounty: []
+          },
+          {
+            name: "嘉义市",
+            districtAndCounty: []
+          },
+          {
+              name: "嘉义县",
+              districtAndCounty: []
+          },
+          {
+              name: "金门县",
+              districtAndCounty: []
+          },
+          {
+              name: "连江县",
+              districtAndCounty: []
+          },
+          {
+              name: "苗栗县",
+              districtAndCounty: []
+          },
+          {
+              name: "南投县",
+              districtAndCounty: []
+          },
+          {
+              name: "澎湖县",
+              districtAndCounty: []
+          },
+          {
+              name: "屏东县",
+              districtAndCounty: []
+          },
+          {
+              name: "台东县",
+              districtAndCounty: []
+          },
+          {
+              name: "台南市",
+              districtAndCounty: []
+          },
+          {
+              name: "桃园县",
+              districtAndCounty: []
+          },
+          {
+              name: "新竹市",
+              districtAndCounty: []
+          },
+          {
+            name: "新竹县",
+            districtAndCounty: []
+          },
+          {
+              name: "宜兰县",
+              districtAndCounty: []
+          },
+          {
+              name: "云林县",
+              districtAndCounty: []
+          },
+          {
+              name: "彰化县",
+              districtAndCounty: []
+          }
+      ]
+  },{
+    name: "海外",
+    city: [
+        {
+            name: "其他市"
+        }
+    ]
+},
+];

+ 472 - 0
src/views/business_ETA_manage/addBusiness.vue

@@ -0,0 +1,472 @@
+<template>
+    <div class="add-business">
+        <!-- 自定义步骤条 -->
+        <Steps 
+            :activeStep="step"
+            :allowStepClick="false"
+        />
+        <div class="first-step-form-wrap" v-show="step===1">
+            <el-form 
+                :model="firstFormData" 
+                :rules="rules"
+                ref="firstFormEl" 
+                label-width="120px"
+                inline
+                class="first-step-form"
+            >
+                <div class="form-line">
+                    <el-form-item label="所属区域" prop="areaType">
+                        <el-radio-group v-model="firstFormData.areaType">
+                            <el-radio label="国内" border>国内</el-radio>
+                            <el-radio label="海外" border>海外</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                    <el-form-item label="商家名称" prop="name">
+                        <autocomplete
+                            ref="auto"
+                            v-model="firstFormData.name"
+                            :fetch-suggestions="callbackHandle"
+                            placeholder="请输入商家名称"
+                            @blur="checkCompany"
+                            @select="customNameSelect"
+                            @focus="checkCompanyfocus"
+                            :disabled='inquireSuccess'
+                            clearable
+                            value-key="value"
+                            style="width:360px"
+                            :popper-class="isCheck?'el-autocomplete-none':'el-autocomplete-suggestion-data-entry'"
+                            class="autocomplete-input"
+                        >
+                            <span 
+                                v-if="firstFormData.name.length > 3" 
+                                style="color:#409EFF;cursor: pointer;" slot="suffix"  
+                                @click="$refs.auto.search(firstFormData.name)"
+                            > 查询</span>
+                            <template slot-scope="scope">
+                                <div v-if="scope.item.KeyNo">{{scope.item.Name}}</div>
+                                <div v-else style="text-align:center">暂无数据</div>		 
+                            </template>
+                        </autocomplete>
+                        <!-- <el-input placeholder="请输入商家名称" v-model="firstFormData.name"/> -->
+                    </el-form-item>
+                </div>
+                <div class="form-line">
+                    <el-form-item label="社会信用码" prop="creditCode">
+                        <el-input disabled placeholder="请输入社会信用码" v-model="firstFormData.creditCode"/>
+                    </el-form-item>
+                    <el-form-item label="商家地址" prop="address" v-if="firstFormData.areaType=='国内'">
+                        <el-cascader 
+                            v-model="firstFormData.address"
+                            :props="locationProps"
+                            clearable 
+                            :options="locationOptions"  
+                            @change="selectRegion" 
+                            placeholder="请选择客户地址" 
+                        />
+                    </el-form-item>
+                    <el-form-item label="所属国家" prop="nation" v-else>
+                        <el-select v-model="firstFormData.nation" placeholder="请选择所属国家" filterable style="width: 360px;">
+                            <el-option :label="item.cnName" :value="item.cnName" v-for="item in countryData" :key="item.code" >
+                            <div style="display: flex;justify-content: space-between;">
+                                <span>{{ item.cnName }}</span>
+                                <span style="color: #8492a6; font-size: 13px">{{ item.code }}</span>
+                            </div>
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+                <div class="form-line">
+                    <el-form-item label="决策人" prop="decisionMaker">
+                        <el-input placeholder="请输入决策人" v-model="firstFormData.decisionMaker"/>
+                    </el-form-item>
+                    <el-form-item label="研究团队规模" prop="teamSize">
+                        <el-select 
+                            v-model="firstFormData.teamSize" 
+                            placeholder="请选择研究团队规模"
+                            clearable
+                        >
+                            <el-option
+                                v-for="item in teamSizeOpts"
+                                :key="item.val"
+                                :label="item.label"
+                                :value="item.val">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+                <div class="form-line">
+                    <el-form-item label="资金规模" prop="fundsize">
+                        <el-input placeholder="请输入资金规模" v-model="firstFormData.fundsize"/>
+                    </el-form-item>
+                    <el-form-item label="所属行业" prop="industry">
+                        <el-select 
+                            v-model="firstFormData.industry" 
+                            placeholder="请选择行业" 
+                            clearable
+                        >
+                            <el-option
+                                v-for="item in tradeArr"
+                                :key="item.IndustryId"
+                                :label="item.IndustryName"
+                                :value="item.IndustryId">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+                <div class="form-line">
+                    <el-form-item label="用户上限" prop="userMax">
+                        <el-input type="number" placeholder="请输入用户上限" v-model="firstFormData.userMax"/>
+                    </el-form-item>
+                    <el-form-item label="所属销售" prop="saller">
+                        <el-cascader
+                            ref="cascader"
+                            v-model="firstFormData.saller"
+                            :options="salesArr"
+                            :show-all-levels="false"
+                            :props="{
+                                expandTrigger: 'hover',
+                                children: 'Child',
+                                emitPath: false,
+                                label:'AdminName',
+                                value:'AdminId',
+                            }"
+                            filterable
+                            clearable
+                            placeholder="请选择销售"
+                        />
+                    </el-form-item>
+                </div>
+                
+            </el-form>
+        </div>
+        <div class="second-step-form-wrap" v-show="step===2">
+            <el-form 
+                :model="secondFormData" 
+                :rules="rules"
+                ref="secondFormEl" 
+                label-width="120px"
+                inline
+                class="second-step-form"
+            >
+                <div class="form-line">
+                    <el-form-item label="签约日期" prop="signDate">
+                        <el-date-picker
+                            v-model="secondFormData.signDate"
+                            type="date"
+                            placeholder="选择日期"
+                            value-format="yyyy-MM-dd"
+                        />
+                    </el-form-item>
+                    <el-form-item label="到期日期" prop="expirationDate">
+                        <el-date-picker
+                            v-model="secondFormData.expirationDate"
+                            type="date"
+                            placeholder="选择日期"
+                            value-format="yyyy-MM-dd"
+                        />
+                    </el-form-item>
+                </div>
+                
+            </el-form>
+        </div>
+
+        <div class="btns-box">
+            <el-button style="width:80px" type="primary" v-show="step===1" @click="handleStepSecond">下一步</el-button>
+            <el-button style="width:80px" type="primary" v-show="step===1" plain @click="$router.back()">取消</el-button>
+            <el-button style="width:80px" type="primary" v-show="step===2" plain @click="step--">上一步</el-button>
+            <el-button style="width:80px" type="primary" v-show="step===2" @click="handleAddBusiness">保存</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import { customInterence,roadshowInterence,businessCustomInterence } from '@/api/api.js'
+import autocomplete from "@/components/autocomplete.vue";
+import Steps from "./components/Steps.vue";
+import {locationOptions} from "@/views/custom_manage/customList/location"
+import country from "@/utils/countryData"
+export default {
+    components: {autocomplete,Steps},
+    data() {
+        this.countryData = country
+        return {
+            /* 城市地址数据 */
+            locationOptions,
+            locationProps:{
+                value:'name',
+                children:'city',
+                label:'name'
+            },
+
+            /* 自动输入社会信用码 */
+            isCheckCompanyInfo:false, 
+			checkCompanyfocusIs:false,
+			inquireSuccess:false,
+            nameRepeat:false,
+			codeRepeat:false,
+            isCheck:false,//检查客户弹窗
+			repeatId:'',//重复公司id
+			repeatName:'',//重复公司类型
+
+            salesArr:[],//销售员数据
+            tradeArr:[],//行业数据
+            step:1,//第几步
+
+            /* 研究团队规模数据 */
+            teamSizeOpts:[
+                {
+                    val:'50人及以下',
+                    label:'50人及以下'
+                },
+                {
+                    val:'200人及以下',
+                    label:'200人及以下'
+                },
+                {
+                    val:'超过200人',
+                    label:'超过200人'
+                }
+            ],
+            
+            rules:{
+                areaType:[{ required: true, message: '请选择所属区域', trigger: 'change' },],
+                name:[{ required: true, message: '请输入商家名称', trigger: 'blur' },],
+                creditCode:[{ required: true, message: '请输入社会信用码', trigger: 'blur' },],
+                address:[{ required: true, message: '请选择商家地址', trigger: 'change' },],
+                nation:[{ required: true, message: '请选择所属国家', trigger: 'change' },],
+                decisionMaker:[{required: true, message: '请输入决策人', trigger: 'blur' },],
+                teamSize:[{required: true, message: '请选择研究团队规模', trigger: 'change' },],
+                industry:[{required: true, message: '请选择所属行业', trigger: 'change' },],
+                userMax:[{required: true, message: '请输入用户上限', trigger: 'blur' },],
+                /* signDate:[{required: true, message: '请选择签署日期', trigger: 'change' },],
+                expirationDate:[{required: true, message: '请选择签署日期', trigger: 'change' },], */
+                saller:[{required: true, message: '请选择所属销售', trigger: 'change' },],
+            },
+
+            /* 表单初始值 */
+            firstFormData:{
+                areaType:'国内',
+                name:'',
+                creditCode:'',
+                address:'',
+                nation:'',
+                decisionMaker:'',
+                teamSize:'',
+                fundsize:'',
+                industry:'',
+                userMax:'',
+                saller:''
+            },
+            secondFormData:{
+                signDate:'',
+                expirationDate:''
+            }
+        }
+    },
+    watch:{
+        'firstFormData.areaType':{
+            handler(newVal){
+                console.log('watch?',newVal)
+                if(newVal==='海外'){
+                    this.firstFormData.creditCode = 'HZ' + new Date().getTime()
+                    // this.firstFormData.address = ['海外','其他市']
+                    // this.selectRegion(['海外','其他市'])
+                }else{
+                    this.firstFormData.creditCode = ''
+                    // this.firstFormData.address = []
+                }
+            }
+        }
+    },
+    created() {
+        this.getIndustry()
+        this.getSale()
+    },
+    methods: {
+        normalizingParams(params){
+            const cascaderNodes = this.$refs.cascader.getCheckedNodes({leafOnly:true})
+            const IndustryName = this.tradeArr.find(item=>item.IndustryId===params.industry).IndustryName
+            return {
+                BusinessName:params.name,
+                CreditCode:params.creditCode,
+                RegionType:params.areaType,
+                Province:params.province,
+                City:params.city,
+                Nation:params.nation,
+                SellerId:Number(cascaderNodes[0]?cascaderNodes[0].value:0),
+                SellerName:cascaderNodes[0]?cascaderNodes[0].label:'',
+                Leader:params.decisionMaker,
+                IndustryId:Number(params.industry),
+                IndustryName:IndustryName,
+                CapitalScale:params.fundsize,
+                ResearchTeamSize:params.teamSize,
+                UserMax:Number(params.userMax),
+                SigningTime:params.signDate||'',
+                ExpiredTime:params.expirationDate||''
+            }
+        },
+        //跳转到第二步
+        handleStepSecond(){
+            this.$refs.firstFormEl.validate((valid)=>{
+                if(valid){
+                    const params = this.normalizingParams(this.firstFormData)
+                    businessCustomInterence.addBusiness({
+                        IsCheck:true,
+                        ...params
+                    }).then(res=>{
+                        if(res.Ret!==200) return 
+                        this.step++
+                    })
+                }
+            })
+        },
+        //保存商家
+        handleAddBusiness(){
+            this.$refs.secondFormEl.validate((valid)=>{
+                if(valid){
+                    const params = this.normalizingParams({...this.firstFormData,...this.secondFormData})
+                    businessCustomInterence.addBusiness({
+                        IsCheck:false,
+                        ...params
+                    }).then(res=>{
+                        if(res.Ret!==200) return 
+                        this.$message.success('添加成功')
+                        this.$router.push('/businessETAList')
+                    })
+                }
+            })
+        },
+
+        async callbackHandle(data,cb) {
+            if (data) {
+                this.isCheckCompanyInfo =true
+                cb([]);
+                let res = await customInterence.companyQccSearch({ KeyWord: data});
+                if (res.Ret === 200) {
+                    this.isCheckCompanyInfo =false;
+                    if (res.Data && res.Data.length > 0) {
+                        let arr = res.Data.map((item) => {
+                            return { value:item.Name, ...item };
+                        });
+                        cb(arr);
+                    }else{
+                        cb([{}]);
+                        // this.checkCompany()
+                    }	
+                }	
+            }
+		},
+
+        checkCompanyfocus(){
+			this.checkCompanyfocusIs =true;
+			setTimeout(() => {
+			    this.checkCompanyfocusIs =false;
+			},500)
+		},
+
+        //选中后增加社会信用码
+		customNameSelect(value) {
+			this.firstFormData.creditCode = value.CreditCode
+			//this.inquireSuccess = true;
+			setTimeout(async()=>{
+				this.checkCompany()
+			},10)
+		},
+
+        /* 客户名称/信用码失焦时校验客户名称是否存在 存在就提示 */
+		checkCompany() {	
+			setTimeout(()=>{
+                if(this.checkCompanyfocusIs) return
+                if((!this.firstFormData.name && !this.firstFormData.creditCode) || (this.isCheckCompanyInfo && this.firstFormData.name)) return
+                    customInterence.checkCompanyInfo({
+                        CompanyName:this.firstFormData.name,
+                        CreditCode:this.firstFormData.creditCode
+                    }).then(res =>{
+                        if(res.Ret === 200){
+                            if(res.Data.RepeatStatus > 0) {
+                                this.repeatId = res.Data.CompanyId;
+                                this.repeatName = res.Data.ProductName;
+                                this.nameRepeat = res.Data.RepeatStatus
+                                this.codeRepeat = res.Data.Status
+                                this.isCheck = true;
+                            }else {
+                                this.nameRepeat = 0
+                                this.isCheck = false;
+                            }
+                        }
+                    })
+			},500)
+		},
+
+        selectRegion(e){
+            this.firstFormData.province=e[0]
+            this.firstFormData.city=e[1]
+        },
+        /* 根据类型获取行业 */
+		getIndustry() {
+			customInterence.getindustry({
+				Classify:'ficc'
+			}).then(res => {
+				if(res.Ret === 200) {
+					this.tradeArr = res.Data.List || [];
+				}
+			})
+		},
+        /* 获取销售 */
+        async getSale() {
+            const res = await roadshowInterence.getSellerList();
+            if(res.Ret!==200) return 
+            this.salesArr = res.Data.List||[]
+            this.salesArr = this.salesArr.map(i=>{
+                if(!i.AdminName){
+                    i.AdminName = i.GroupName
+                }
+                if(!i.AdminId){
+                    i.AdminId = i.GroupId
+                }
+                return i
+            })
+        },
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.add-business{
+    padding:30px;
+    box-sizing: border-box;
+    background-color: #fff;
+    min-width: 1100px;
+    height: calc(100vh - 120px);
+    .first-step-form-wrap,.second-step-form-wrap{
+        margin-top:60px;
+        border-top: 1px solid #DCDCDC;
+        width:70%;
+    }
+    .el-form{
+        .form-line{
+            margin:30px 0;
+            border-bottom: 1px solid #DCDCDC;
+            .el-input,.el-select,.el-cascader,.el-radio-group{
+                width:360px;
+            }
+            .el-radio-group{
+                display: flex;
+                justify-content: space-between;
+                .el-radio{
+                    width: 165px;
+                    text-align: center;
+                }
+            }
+        }
+    }
+}
+.btns-box{
+    position: fixed;
+    left: 50%;
+    bottom: 100px;
+    transform: translateX(-50%);
+    width: 200px;
+    z-index: 99;
+}
+</style>

+ 367 - 0
src/views/business_ETA_manage/businessAuth.vue

@@ -0,0 +1,367 @@
+<template>
+    <div class="business-auth-wrap">
+        <div class="header">
+            <div class="name">{{$route.query.name||''}}</div>
+            <div class="btn-wrap">
+                <el-button @click="handleBtnClik('cancel')">取消</el-button>
+                <el-button type="primary" @click="handleBtnClik('save')">保存</el-button>
+            </div>
+        </div>
+        <div class="model-wrap">
+            <el-button :type="model==='auth'?'primary':''" @click="model='auth'">菜单权限</el-button>
+        </div>
+        <div class="auth-wrap" v-show="model==='auth'">
+            <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" style="margin-bottom: 20px;">全选</el-checkbox>
+            <el-tree 
+                v-loading="treeLoading"
+                ref="checkboxTree"
+                :data="authList" 
+                :props="{label:'Name',children:'Children'}" 
+                :default-expand-all="false"
+                show-checkbox 
+                node-key="MenuId"
+                :default-checked-keys="defaultCheckedKeys"
+                @check-change="()=>{handleCheckChange()}">
+            </el-tree>
+        </div>
+        <!-- <div class="interence-wrap" v-show="model==='interence'">
+            <div class="interence-item">
+                <span>研报审批</span>
+                <el-radio-group v-model="isApprove">
+                    <el-radio :label="0">否</el-radio>
+                    <el-radio :label="1">是</el-radio>
+                </el-radio-group>
+                <el-checkbox-group v-model="approveList" v-show="isApprove===1">
+                    <el-checkbox :label="2">智能研报</el-checkbox>
+                    <el-checkbox :label="1">研报列表</el-checkbox>
+                </el-checkbox-group>
+            </div>
+        </div> -->
+    </div>
+</template>
+
+<script>
+import {businessCustomInterence} from '@/api/api.js'
+export default {
+    data() {
+        return {
+            authList:[],
+            defaultCheckedKeys:[],
+            treeLoading:false,
+            checkAll:false,
+            isIndeterminate:false,
+            model:'auth',
+            isApprove:'',
+            approveList:[],
+            checkList:[]
+        };
+    },
+    watch:{
+        checkAll(newVal){
+            if(newVal){
+                const topLevelNodes = this.authList.map(i=>i.MenuId)
+                this.$refs.checkboxTree.setCheckedKeys(topLevelNodes)
+            }else{
+                if(!this.isIndeterminate){
+                    this.$refs.checkboxTree.setCheckedKeys([])
+                }
+            }
+        },
+        isApprove(newVal){
+            if(newVal===0){
+                this.approveList=[]
+            }
+        }
+    },
+    methods: {
+        getBusinessConfigList(){
+            const EtaBusinessId = this.$route.query.id
+            if(!EtaBusinessId) return 
+            businessCustomInterence.getConfigList({
+                EtaBusinessId:Number(EtaBusinessId)
+            }).then(res=>{
+                if(res.Ret!==200) return
+                const list = res.Data||[]
+                const approveItem = list.find(i=>i.ConfigCode==='approval_flow')
+                if(!approveItem) return
+                if(!approveItem.ConfigValue.length){
+                    this.isApprove = approveItem.ConfigValue
+                    return
+                }
+                if(Number(approveItem.ConfigValue)===0){
+                    this.isApprove = Number(approveItem.ConfigValue)
+                    return
+                }
+                if(Number(approveItem.ConfigValue)>0){
+                    this.isApprove = 1
+                    this.approveList = approveItem.ConfigValue==3?[1,2]:[Number(approveItem.ConfigValue)]
+                }
+            })
+        },
+        getBusinessAuthList(){
+            const EtaBusinessId = this.$route.query.id
+            if(!EtaBusinessId) return 
+            this.treeLoading = true
+            businessCustomInterence.getAuthList({
+                EtaBusinessId:Number(EtaBusinessId)
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                this.treeLoading = false
+                if(!res.Data) return
+                const {List,ChoiceList=[],HalfChoiceList=[]} = res.Data
+                this.authList = List||[]
+                this.checkList = ChoiceList
+                this.authList.forEach(item=>{
+                    this.checkTree(item)
+                })
+                //this.defaultCheckedKeys = ChoiceList.filter((item)=>!HalfChoiceList.some((halfItem)=>item===halfItem))
+                this.$nextTick(()=>{
+                    this.authList.forEach(item=>{
+                        this.checkTree(item)
+                    })
+                    this.defaultCheckedKeys = this.checkList
+                    this.handleCheckChange(this.defaultCheckedKeys)
+                })
+                
+            })
+        },
+        checkTree(data){
+            //非叶子节点递归
+            if(data.Children && data.Children.length){
+                data.Children = data.Children.map(i=>{
+                    return this.checkTree(i)
+                })
+            }
+            //叶子节点向上检查MenuId
+            if(!data.Children||data.Children&&data.Children.length===0){
+                this.checkDataList(data)
+            }
+            return data
+        },
+        //根据MenuId找到对应节点
+        findTreeNode(MenuId){
+            return this.$refs.checkboxTree.getNode(MenuId)
+        },
+        checkDataList(data){
+            //获取data的MenuId 和 checkList对比 
+            //如果MenuId不在checkList里,检查data.ParentId在不在checkList里,若在,则从checkList里去除
+            if(!this.checkList.includes(data.MenuId)&&this.checkList.includes(data.ParentId)){
+                const index = this.checkList.indexOf(data.ParentId)
+                index!==-1&&this.checkList.splice(index,1)
+                console.log('应该去除的节点',data.ParentId)
+            }
+            //向上检查MenuId
+            const parentNode = this.findTreeNode(data.ParentId)
+            if(parentNode){
+                this.checkDataList(parentNode.data)
+            }
+        },
+        async handleBtnClik(type){
+            if(type==='save'){
+                //获取树形列表选择的项 getCheckedKeys getHalfCheckedKeys
+                const keys = this.$refs.checkboxTree.getCheckedKeys()
+                const halfKeys = this.$refs.checkboxTree.getHalfCheckedKeys()
+                if(!keys.length&&!halfKeys.length){
+                    this.$message.warning('请至少选择一个权限')
+                    return
+                }
+                //合成一个数组并去重
+                const ChoiceList = Array.from(new Set([...keys,...halfKeys]))
+                //请求接口
+                const res = await businessCustomInterence.setAuthList({
+                    EtaBusinessId:Number(this.$route.query.id),
+                    MenuIds:ChoiceList,
+                    HalfMenuIds:halfKeys
+                })
+                if(res.Ret!==200) return 
+                this.$message.success('权限设置成功')
+
+                /* if(typeof(this.isApprove)==='string'){
+                    this.$message.warning('请配置接口权限')
+                    this.model='interence'
+                    return
+                }else{
+                    if(this.isApprove&&!this.approveList.length){
+                        this.$message.warning('请选择接口权限')
+                        return
+                    }
+                    let configValue = ''
+                    if(this.isApprove){
+                        configValue = this.approveList.length>1?"3":this.approveList[0]+"" //3表示全选
+                    }else{
+                        configValue = this.isApprove+""
+                    }
+                    const list = [{ConfigCode:"approval_flow",ConfigValue:configValue}] //目前只有一项
+                    const interenceRes = await businessCustomInterence.setConfigList({
+                        EtaBusinessId:Number(this.$route.query.id),
+                        List:list
+                    })
+                    if(interenceRes.Ret!==200) return 
+                    this.$message.success('接口权限设置成功')
+                } */
+            }
+            this.$router.push('/businessETAList')
+        },
+        handleCheckChange(choiceList/* ,HalfChoiceList */){
+            const keys = choiceList||this.$refs.checkboxTree.getCheckedKeys()
+            //const halfKeys = HalfChoiceList||this.$refs.checkboxTree.getHalfCheckedKeys()
+            const ChoiceList = Array.from(new Set([...keys]))
+            const topLevelNodes = this.authList.map(i=>i.MenuId)
+            let nodeLength = 0
+            topLevelNodes.forEach(i=>{
+                if(ChoiceList.includes(i)){nodeLength++}
+                if(!ChoiceList.includes(i)){nodeLength--}
+            })
+            if(nodeLength===topLevelNodes.length){
+                this.checkAll = true
+                this.isIndeterminate = false
+            }else{
+                this.checkAll = false
+                this.isIndeterminate = Boolean(ChoiceList.length)
+            }
+        }
+    },
+    mounted(){
+        this.getBusinessConfigList()
+        this.getBusinessAuthList()
+    }
+};
+</script>
+
+<style lang="scss">
+.business-auth-wrap{
+    .el-tree {
+        border-top: 1px solid #E5E7ED;
+        border-left: 1px solid #E5E7ED;
+        border-right: 1px solid #E5E7ED;
+        width: 98%;
+        margin-bottom: 40px;
+        .el-tree-node__label{
+            margin:10px;
+        }
+        .el-tree-node__content{
+            min-width: 200px;
+            width: 200px;
+            white-space: normal;
+            box-sizing: border-box;
+        }
+        .el-tree-node{
+            .el-tree-node{
+                .el-tree-node__children{
+                    width: 100%;
+                }
+                .el-tree-node{
+                    &:not(:first-child){
+                    /* .el-tree-node__content{
+                        border-right: 1px solid #E5E7ED;
+                    } */
+                        border-top: 1px solid #E5E7ED;
+                    }
+                    .el-tree-node__content{
+                        border-right: 1px solid #E5E7ED;
+                    }
+                }
+    
+            }
+        }
+        .el-tree-node__content {
+            padding: 5px 10px !important;
+            height: auto;
+            .el-tree-node__expand-icon.el-icon-caret-right {
+            //display: none;
+            }
+        }
+        > .el-tree-node {
+            padding: 0 !important;
+            display: flex;
+            border-bottom: 1px solid #E5E7ED;
+
+            > .el-tree-node__children {
+            width: 100%;
+            > .el-tree-node {
+                &:not(:first-child) {
+                border-top: 1px solid #E5E7ED;
+                }
+                >.el-tree-node__content{
+                    border-left: 1px solid #E5E7ED;
+                    border-right: 1px solid #E5E7ED;
+                }
+            }
+            }
+        }
+        .el-tree-node__children {
+            display: flex;
+            flex-direction: column;
+            .el-tree-node {
+                display: flex;
+                flex: 1;
+                padding: 0px !important;
+                .el-tree-node__content {
+                    border-bottom: none;
+                    .custom-tree-node {
+                    height: 24px;
+                    display: flex;
+                    align-items: center;
+                    .tree-btn {
+                        margin-left: 10px;
+                        display: none;
+                    }
+                    .el-button {
+                        padding: 0px !important;
+                        border-radius: 4px;
+                        background: #363554;
+                        color: #ffffff;
+                    }
+                    }
+                }
+                .el-tree-node__children {
+                    .el-tree-node {
+                    &:not(:first-child) {
+                        .el-tree-node__content {
+                        //border-left: none;
+                        }
+                    }
+                    }
+                }
+            }
+        }
+    }
+
+}
+</style>
+<style scoped lang="scss">
+.business-auth-wrap{
+    border: 1px solid #ECECEC;
+    padding: 20px 30px;
+    background: #fff;
+    border-radius: 4px;
+    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
+    .header{
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .name{
+            font-size: 18px;
+            font-weight: bold;
+        }
+    }
+    .model-wrap{
+        display: flex;
+        gap:20px;
+        align-items: center;
+        .block{
+            display: inline-block;
+            height:20px;
+            width:1px;
+            background-color: #333;
+        }
+    }
+    .auth-wrap,.interence-wrap{
+        margin-top:20px;
+    }
+    .interence-item{
+        display: flex;
+        gap:25px;
+    }
+}
+</style>

+ 372 - 0
src/views/business_ETA_manage/businessDetail.vue

@@ -0,0 +1,372 @@
+<template>
+    <div class="business-detail-wrap">
+        <div class="business-detail">
+            <Steps 
+                :activeStep="step"
+                :stepsArr="stepsArr"
+                @changeActiveStep="changeActiveStep"
+            />
+            <div class="first-step-form-wrap" v-show="step===1">
+                <el-form 
+                    :model="firstFormData" 
+                    ref="firstFormEl" 
+                    label-width="120px"
+                    inline
+                    :rules="rules"
+                    :disabled="true"
+                    class="first-step-form"
+                >
+                    <div class="form-line">
+                        <el-form-item label="商家名称" prop="BusinessName">
+                            <el-input disabled placeholder="请输入商家名称" v-model="firstFormData.BusinessName"/>
+                        </el-form-item>
+                        <el-form-item label="商家ID" prop="BusinessCode">
+                            <el-input disabled placeholder="请输入商家ID" v-model="firstFormData.BusinessCode"/>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="所属区域" prop="RegionType">
+                            <el-radio-group v-model="firstFormData.RegionType" disabled>
+                                <el-radio label="国内" border>国内</el-radio>
+                                <el-radio label="海外" border>海外</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                        <el-form-item label="商家地址" prop="address" v-if="firstFormData.RegionType=='国内'">
+                            <el-cascader 
+                                v-model="firstFormData.address"
+                                :props="locationProps"
+                                clearable 
+                                :options="locationOptions"  
+                                @change="selectRegion" 
+                                placeholder="请选择客户地址" 
+                            />
+                        </el-form-item>
+                        <el-form-item label="所属国家" prop="Nation" v-else>
+                            <el-select v-model="firstFormData.Nation" placeholder="请选择所属国家" filterable style="width: 360px;">
+                                <el-option :label="item.cnName" :value="item.cnName" v-for="item in countryData" :key="item.code" >
+                                <div style="display: flex;justify-content: space-between;">
+                                    <span>{{ item.cnName }}</span>
+                                    <span style="color: #8492a6; font-size: 13px">{{ item.code }}</span>
+                                </div>
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="社会信用码" prop="CreditCode">
+                            <el-input disabled placeholder="请输入社会信用码" v-model="firstFormData.CreditCode"/>
+                        </el-form-item>
+                        <el-form-item label="研究团队规模" prop="ResearchTeamSize">
+                            <el-select 
+                                v-model="firstFormData.ResearchTeamSize" 
+                                placeholder="请选择研究团队规模"
+                                clearable
+                            >
+                                <el-option
+                                    v-for="item in teamSizeOpts"
+                                    :key="item.val"
+                                    :label="item.label"
+                                    :value="item.val">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="决策人" prop="Leader">
+                            <el-input placeholder="请输入决策人" v-model="firstFormData.Leader"/>
+                        </el-form-item>
+                        <el-form-item label="所属行业" prop="IndustryId">
+                            <el-select 
+                                v-model="firstFormData.IndustryId" 
+                                placeholder="请选择行业" 
+                                clearable
+                            >
+                                <el-option
+                                    v-for="item in tradeArr"
+                                    :key="item.IndustryId"
+                                    :label="item.IndustryName"
+                                    :value="item.IndustryId">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="资金规模" prop="CapitalScale">
+                            <el-input placeholder="请输入资金规模" v-model="firstFormData.CapitalScale"/>
+                        </el-form-item>
+                        <el-form-item label="用户上限" prop="UserMax">
+                            <el-input type="number" placeholder="请输入用户上限" v-model="firstFormData.UserMax"/>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="所属销售" prop="SellerName">
+                            <el-input disabled placeholder="请输入销售" v-model="firstFormData.SellerName"/>
+                        </el-form-item>
+                    </div>
+                    
+                </el-form>
+            </div>
+            <div class="second-step-form-wrap" v-show="step===2">
+                <el-table :data="recordData" border>
+                    <el-table-column
+                        v-for="item in tableColOpts"
+                        :key="item.key"
+                        :prop="item.key"
+                        :label="item.label"
+                        align="center"
+                    >
+                    </el-table-column>
+                </el-table>
+            </div>
+        </div>
+        <div class="business-other">
+            <div class="btn-wrap">
+                    <el-button type="primary" @click="$router.push({
+                        path:'/editETABusiness',
+                        query:{
+                            id:firstFormData.EtaBusinessId
+                        }
+                    })">编辑</el-button>
+            </div>
+            <div class="time-line-wrap">
+                <el-timeline>
+                    <el-timeline-item
+                        v-for="(activity, index) in activities"
+                        :key="index"
+                        color="#409EFF" 
+                        :timestamp="activity.CreateTime">
+                        <template slot="dot">
+                            <div class="dot-wrap">
+                                <div class="dot-inner"></div>
+                            </div>
+                        </template>
+                        {{activity.OperationRemark}}
+                    </el-timeline-item>
+                </el-timeline>
+            </div>
+        </div>
+
+        <!-- 添加续约 -->
+        <el-dialog
+            title="添加续约"
+            :visible.sync="showRenewal"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            @closed="showRenewal=false"
+            width="580px"
+        >
+            <AddRenewal 
+                @addRenewal="handleAddRenewal"
+                @close="showRenewal=false"/>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { customInterence , businessCustomInterence} from '@/api/api.js'
+import Steps from "./components/Steps.vue";
+import AddRenewal from "./components/AddRenewal";
+import {locationOptions} from "@/views/custom_manage/customList/location"
+import country from "@/utils/countryData"
+export default {
+    components: {Steps,AddRenewal},
+    data() {
+        this.countryData = country
+        return {
+            locationOptions,
+            locationProps:{
+                value:'name',
+                children:'city',
+                label:'name'
+            },
+
+            step:1,//第几步
+            teamSizeOpts:[
+                {
+                    val:'50人及以下',
+                    label:'50人及以下'
+                },
+                {
+                    val:'200人及以下',
+                    label:'200人及以下'
+                },
+                {
+                    val:'超过200人',
+                    label:'超过200人'
+                }
+            ],
+            tradeArr:[],
+            firstFormData:{
+                RegionType:'',//1国内 2国外
+                BusinessName:'',
+                CreditCode:'',
+                Address:'',
+                Nation:'',
+                Leader:'',
+                ResearchTeamSize:'',
+                CapitalScale:'',
+                IndustryId:'',
+                UserMax:'',
+                SellerId:'',
+            },
+            rules:{
+                address:[{ required: true, message: '请选择商家地址', trigger: 'change' },],
+                decisionMaker:[{required: true, message: '请输入决策人', trigger: 'blur' },],
+                teamSize:[{required: true, message: '请选择研究团队规模', trigger: 'change' },],
+                industry:[{required: true, message: '请选择所属行业', trigger: 'change' },],
+                userMax:[{required: true, message: '请输入用户上限', trigger: 'blur' },],
+                saller:[{required: true, message: '请选择所属销售', trigger: 'change' },],
+            },
+            recordData:[],
+            tableColOpts:[
+                {
+                    label:'签约时间',
+                    key:'SigningTime'
+                },{
+                    label:'到期时间',
+                    key:'ExpiredTime'
+                },{
+                    label:'到期天数',
+                    key:'ExpireDay'
+                }
+            ],
+            activities:[],
+        }
+    },
+    created() {
+        this.getIndustry()
+        this.getBusinessDetail()
+    },
+    methods: {
+        selectRegion(e){
+            this.firstFormData.province=e[0]
+            this.firstFormData.city=e[1]
+        },
+        /* 根据类型获取行业 */
+		getIndustry() {
+			customInterence.getindustry({
+				Classify:'ficc'
+			}).then(res => {
+				if(res.Ret === 200) {
+					this.tradeArr = res.Data.List || [];
+				}
+			})
+		},
+        changeActiveStep(index){
+            this.step = index + 1
+        },
+        // 获取商家详情
+        getBusinessDetail(){
+            //query id
+            businessCustomInterence.getBusinessDetail({
+                EtaBusinessId:Number(this.$route.query.id)
+            }).then(res=>{
+                if(res.Ret !== 200)return 
+                this.firstFormData = res.Data||{}
+                this.firstFormData.address = [res.Data.Province||'',res.Data.City||'']
+            })
+            //获取签约详情
+            this.getTableData(Number(this.$route.query.id))
+            //获取操作日志列表
+            this.getTimeLineData(Number(this.$route.query.id))
+        },
+        // 获取签约详情
+        getTableData(id){
+            businessCustomInterence.getContractList({
+                EtaBusinessId:id
+            }).then(res=>{
+                if(res.Ret !== 200) return 
+                this.recordData = res.Data||[]
+            })
+        },
+
+        // 获取操作日志详情
+        getTimeLineData(id){
+            businessCustomInterence.getTimeLineList({
+                EtaBusinessId:id
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                this.activities = res.Data||[]
+            })
+        },
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.business-detail-wrap{
+    display: flex;
+    background-color: #fff;
+    min-width: 1100px;
+    min-height: calc(100vh - 120px);
+    padding:30px;
+    box-sizing: border-box;
+    gap:10%;
+    .business-detail{
+        width:70%;
+        .first-step-form-wrap,.second-step-form-wrap{
+            margin-top:60px;
+            border-top: 1px solid #DCDCDC;
+        }
+        .el-form{
+            .form-line{
+                margin:30px 0;
+                border-bottom: 1px solid #DCDCDC;
+                .el-input,.el-select,.el-cascader,.el-radio-group{
+                    width:360px;
+                }
+                .el-radio-group{
+                    display: flex;
+                    justify-content: space-between;
+                    .el-radio{
+                        width: 165px;
+                        text-align: center;
+                    }
+                }
+            }
+        }
+        .el-table{
+            margin-top: 30px;
+        }
+    }
+    .business-other{
+        flex: 1;
+        .btn-wrap{
+            display: flex;
+            gap:30px;
+            .el-button{
+                flex:1;
+            }
+        }
+        .time-line-wrap{
+            margin-top:30px;
+            border:1px solid #DCDFE6;
+            border-radius: 4px;
+            box-sizing: border-box;
+            padding: 30px;
+            max-height: calc(100vh - 250px);
+            overflow-y: auto;
+            .dot-wrap{
+                width:12px;
+                height:12px;
+                border:6px solid #fff;
+                background-color: #3385FF;
+                position: absolute;
+                left:-6px;
+                top:0;
+                border-radius: 50%;
+                .dot-inner{
+                    position: absolute;
+                    left:3px;
+                    top:3px;
+                    width:6px;
+                    height: 6px;
+                    border-radius: 50%;
+                    background-color: #fff;
+                }
+            }
+        }
+    }
+}
+
+</style>

+ 449 - 0
src/views/business_ETA_manage/businessEdit.vue

@@ -0,0 +1,449 @@
+<template>
+    <div class="business-detail-wrap">
+        <div class="business-detail">
+            <Steps 
+                :activeStep="step"
+                :stepsArr="stepsArr"
+                @changeActiveStep="changeActiveStep"
+            />
+            <div class="first-step-form-wrap" v-show="step===1">
+                <el-form 
+                    :model="firstFormData" 
+                    ref="firstFormEl" 
+                    label-width="120px"
+                    inline
+                    :rules="rules"
+                    class="first-step-form"
+                >
+                    <div class="form-line">
+                        <el-form-item label="商家名称" prop="BusinessName">
+                            <el-input disabled placeholder="请输入商家名称" v-model="firstFormData.BusinessName"/>
+                        </el-form-item>
+                        <el-form-item label="商家ID" prop="BusinessCode">
+                            <el-input disabled placeholder="请输入商家ID" v-model="firstFormData.BusinessCode"/>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="所属区域" prop="RegionType">
+                            <el-radio-group v-model="firstFormData.RegionType" disabled>
+                                <el-radio label="国内" border>国内</el-radio>
+                                <el-radio label="海外" border>海外</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                        <el-form-item label="商家地址" prop="address" v-if="firstFormData.RegionType=='国内'">
+                            <el-cascader 
+                                v-model="firstFormData.address"
+                                :props="locationProps"
+                                clearable 
+                                :options="locationOptions"  
+                                @change="selectRegion" 
+                                placeholder="请选择客户地址" 
+                            />
+                        </el-form-item>
+                        <el-form-item label="所属国家" prop="Nation" v-else>
+                            <el-select v-model="firstFormData.Nation" placeholder="请选择所属国家" filterable style="width: 360px;">
+                                <el-option :label="item.cnName" :value="item.cnName" v-for="item in countryData" :key="item.code" >
+                                <div style="display: flex;justify-content: space-between;">
+                                    <span>{{ item.cnName }}</span>
+                                    <span style="color: #8492a6; font-size: 13px">{{ item.code }}</span>
+                                </div>
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="社会信用码" prop="CreditCode">
+                            <el-input disabled placeholder="请输入社会信用码" v-model="firstFormData.CreditCode"/>
+                        </el-form-item>
+                        <el-form-item label="研究团队规模" prop="ResearchTeamSize">
+                            <el-select 
+                                v-model="firstFormData.ResearchTeamSize" 
+                                placeholder="请选择研究团队规模"
+                                clearable
+                            >
+                                <el-option
+                                    v-for="item in teamSizeOpts"
+                                    :key="item.val"
+                                    :label="item.label"
+                                    :value="item.val">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="决策人" prop="Leader">
+                            <el-input placeholder="请输入决策人" v-model="firstFormData.Leader"/>
+                        </el-form-item>
+                        <el-form-item label="所属行业" prop="IndustryId">
+                            <el-select 
+                                v-model="firstFormData.IndustryId" 
+                                placeholder="请选择行业" 
+                                clearable
+                            >
+                                <el-option
+                                    v-for="item in tradeArr"
+                                    :key="item.IndustryId"
+                                    :label="item.IndustryName"
+                                    :value="item.IndustryId">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="资金规模" prop="CapitalScale">
+                            <el-input placeholder="请输入资金规模" v-model="firstFormData.CapitalScale"/>
+                        </el-form-item>
+                        <el-form-item label="用户上限" prop="UserMax">
+                            <el-input type="number" placeholder="请输入用户上限" v-model="firstFormData.UserMax"/>
+                        </el-form-item>
+                    </div>
+                    <div class="form-line">
+                        <el-form-item label="所属销售" prop="SellerName">
+                            <el-input disabled placeholder="请输入销售" v-model="firstFormData.SellerName"/>
+                        </el-form-item>
+                    </div>
+                </el-form>
+            </div>
+            <div class="second-step-form-wrap" v-show="step===2">
+                <el-button type="primary" @click="addRenewalHandle" style="margin-top: 15px;">添加续约</el-button>
+                <el-table :data="recordData" border>
+                    <el-table-column
+                        v-for="item in tableColOpts"
+                        :key="item.key"
+                        :prop="item.key"
+                        :label="item.label"
+                        align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column label="操作" align="center">
+                        <template slot-scope="scope">
+                            <span class="editsty" @click="editRenewal(scope.row)" style="padding: 0 3px;">编辑</span>
+                            <span class="deletesty" @click="deleteRenewal(scope.row)" style="padding: 0 3px;">删除</span>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <!-- <el-button type="text" @click="showRenewal=true">添加续约</el-button> -->
+            </div>
+        </div>
+        <div class="business-other">
+            <div class="btn-wrap">
+                <el-button type="primary" @click="handleSaveDetail">保存</el-button>
+                <el-button type="primary" plain @click="$router.push('/businessETAList')">取消</el-button>
+            </div>
+            <div class="time-line-wrap">
+                <el-timeline>
+                    <el-timeline-item
+                        v-for="(activity, index) in activities"
+                        :key="index"
+                        color="#409EFF" 
+                        :timestamp="activity.CreateTime">
+                        <template slot="dot">
+                            <div class="dot-wrap">
+                                <div class="dot-inner"></div>
+                            </div>
+                        </template>
+                        {{activity.OperationRemark}}
+                    </el-timeline-item>
+                </el-timeline>
+            </div>
+        </div>
+
+        <!-- 添加续约 -->
+        <el-dialog
+            :title="renewalDiaTitle"
+            :visible.sync="showRenewal"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            @closed="showRenewal=false"
+            width="580px"
+        >
+            <AddRenewal 
+                @addRenewal="handleAddRenewal"
+                @close="showRenewal=false"
+                :renewalForm="renewalForm"/>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { customInterence , businessCustomInterence} from '@/api/api.js'
+import Steps from "./components/Steps.vue";
+import AddRenewal from "./components/AddRenewal";
+import {locationOptions} from "@/views/custom_manage/customList/location"
+import country from "@/utils/countryData"
+export default {
+    components: {Steps,AddRenewal},
+    data() {
+        this.countryData = country
+        return {
+            locationOptions,
+            locationProps:{
+                value:'name',
+                children:'city',
+                label:'name'
+            },
+
+            step:1,//第几步
+            teamSizeOpts:[
+                {
+                    val:'50人及以下',
+                    label:'50人及以下'
+                },
+                {
+                    val:'200人及以下',
+                    label:'200人及以下'
+                },
+                {
+                    val:'超过200人',
+                    label:'超过200人'
+                }
+            ],
+            tradeArr:[],
+            firstFormData:{
+                RegionType:'',//1国内 2国外
+                BusinessName:'',
+                CreditCode:'',
+                Address:'',
+                Nation:'',
+                Leader:'',
+                ResearchTeamSize:'',
+                CapitalScale:'',
+                IndustryId:'',
+                UserMax:'',
+                SellerId:'',
+                Province:'',
+                City:''
+            },
+            rules:{
+                Nation:[{ required: true, message: '请选择所属国家', trigger: 'change' },],
+                address:[{ required: true, message: '请选择商家地址', trigger: 'change' },],
+                decisionMaker:[{required: true, message: '请输入决策人', trigger: 'blur' },],
+                teamSize:[{required: true, message: '请选择研究团队规模', trigger: 'change' },],
+                industry:[{required: true, message: '请选择所属行业', trigger: 'change' },],
+                userMax:[{required: true, message: '请输入用户上限', trigger: 'blur' },],
+                saller:[{required: true, message: '请选择所属销售', trigger: 'change' },],
+            },
+            recordData:[],
+            tableColOpts:[
+                {
+                    label:'运维时间',
+                    key:'SigningTime'
+                },{
+                    label:'到期时间',
+                    key:'ExpiredTime'
+                },{
+                    label:'到期天数',
+                    key:'ExpireDay'
+                }
+            ],
+            activities:[],
+            showRenewal:false,
+            renewalDiaTitle:"添加续约",
+            renewalForm:{}
+        }
+    },
+    created() {
+        this.getIndustry()
+        this.getBusinessDetail()
+    },
+    methods: {
+        selectRegion(e){
+            this.firstFormData.Province=e[0]
+            this.firstFormData.City=e[1]
+        },
+        /* 根据类型获取行业 */
+		getIndustry() {
+			customInterence.getindustry({
+				Classify:'ficc'
+			}).then(res => {
+				if(res.Ret === 200) {
+					this.tradeArr = res.Data.List || [];
+				}
+			})
+		},
+        changeActiveStep(index){
+            this.step = index + 1
+        },
+        // 获取商家详情
+        getBusinessDetail(){
+            //query id
+            businessCustomInterence.getBusinessDetail({
+                EtaBusinessId:Number(this.$route.query.id)
+            }).then(res=>{
+                if(res.Ret !== 200)return 
+                this.firstFormData = res.Data||{}
+                this.firstFormData.address = [res.Data.Province||'',res.Data.City||'']
+            })
+            //获取签约详情
+            this.getTableData(Number(this.$route.query.id))
+            //获取操作日志列表
+            this.getTimeLineData(Number(this.$route.query.id))
+        },
+        // 获取签约详情
+        getTableData(id){
+            businessCustomInterence.getContractList({
+                EtaBusinessId:id
+            }).then(res=>{
+                if(res.Ret !== 200) return 
+                this.recordData = res.Data||[]
+            })
+        },
+
+        // 获取操作日志详情
+        getTimeLineData(id){
+            businessCustomInterence.getTimeLineList({
+                EtaBusinessId:id
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                this.activities = res.Data||[]
+            })
+        },
+        // 保存商家
+        handleSaveDetail(){
+            const {EtaBusinessId,CapitalScale,
+                   address,Leader,IndustryId,Nation,
+                   ResearchTeamSize,UserMax} = this.firstFormData
+            const IndustryName = this.tradeArr.find(item=>item.IndustryId===IndustryId).IndustryName
+            businessCustomInterence.editBusiness({
+                EtaBusinessId,Leader,
+                IndustryName,CapitalScale,
+                ResearchTeamSize,Nation,
+                IndustryId:Number(IndustryId),
+                UserMax:Number(UserMax),
+                Province:address[0],
+                City:address[1]
+            }).then(res=>{
+                if(res.Ret!==200) return
+                this.$message.success('保存成功')
+                this.getBusinessDetail()
+            })
+        },
+        // 添加续约
+        addRenewalHandle(){
+            this.renewalForm={}
+            this.renewalDiaTitle="添加续约"
+            this.showRenewal=true
+        },
+        // 编辑续约
+        editRenewal(row){
+            this.renewalDiaTitle="编辑续约"
+            this.renewalForm={
+                id:row.EtaBusinessContractId,
+                signDate:row.SigningTime,
+                expirationDate:row.ExpiredTime
+            }
+            this.showRenewal=true
+        },
+        deleteRenewal(row){
+            this.$confirm("是否确认删除该签约信息?", "提示", {
+                type: "warning"
+            }).then(() => {
+                businessCustomInterence.
+                removeContract({EtaBusinessContractId:row.EtaBusinessContractId})
+                .then(res=>{
+                    if(res.Ret == 200){
+                        this.$message.success("删除成功")
+                        this.getTableData(Number(this.$route.query.id))
+                        this.getTimeLineData(Number(this.$route.query.id))
+                    }
+                })
+            }).catch(() => {});
+        },
+        //添加续约-保存
+        handleAddRenewal({signDate,expirationDate,id}){
+            // id-商家合约ID
+            let api = Number(id) ? 'editContract' : 'addNewContract'
+            businessCustomInterence[api]({
+                EtaBusinessId:Number(this.$route.query.id),
+                EtaBusinessContractId:Number(id),
+                SigningTime:signDate,
+                ExpiredTime:expirationDate
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                this.$message.success(this.renewalDiaTitle+'成功')
+                this.showRenewal=false
+                this.getTableData(Number(this.$route.query.id))
+                this.getTimeLineData(Number(this.$route.query.id))
+            })
+        }
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.business-detail-wrap{
+    display: flex;
+    background-color: #fff;
+    min-width: 1100px;
+    min-height: calc(100vh - 120px);
+    padding:30px;
+    box-sizing: border-box;
+    gap:10%;
+    .business-detail{
+        width:70%;
+        .first-step-form-wrap,.second-step-form-wrap{
+            margin-top:60px;
+            border-top: 1px solid #DCDCDC;
+        }
+        .el-form{
+            .form-line{
+                margin:30px 0;
+                border-bottom: 1px solid #DCDCDC;
+                .el-input,.el-select,.el-cascader,.el-radio-group{
+                    width:360px;
+                }
+                .el-radio-group{
+                    display: flex;
+                    justify-content: space-between;
+                    .el-radio{
+                        width: 165px;
+                        text-align: center;
+                    }
+                }
+            }
+        }
+        .el-table{
+            margin-top: 15px;
+        }
+    }
+    .business-other{
+        flex: 1;
+        .btn-wrap{
+            display: flex;
+            gap:30px;
+            .el-button{
+                flex:1;
+            }
+        }
+        .time-line-wrap{
+            margin-top:30px;
+            border:1px solid #DCDFE6;
+            border-radius: 4px;
+            box-sizing: border-box;
+            padding: 30px;
+            max-height: calc(100vh - 250px);
+            overflow-y: auto;
+            .dot-wrap{
+                width:12px;
+                height:12px;
+                border:6px solid #fff;
+                background-color: #3385FF;
+                position: absolute;
+                left:-6px;
+                top:0;
+                border-radius: 50%;
+                .dot-inner{
+                    position: absolute;
+                    left:3px;
+                    top:3px;
+                    width:6px;
+                    height: 6px;
+                    border-radius: 50%;
+                    background-color: #fff;
+                }
+            }
+        }
+    }
+}
+
+</style>

+ 474 - 0
src/views/business_ETA_manage/businessList.vue

@@ -0,0 +1,474 @@
+<template>
+    <div class="business-ETA-list">
+      <div class="top-filter-box">
+        <div>
+          <t-button theme="primary" @click="navigateToAdd">新增</t-button>
+          <!-- <t-input
+            placeholder="商家名称/社会信用码/商家ID"
+            v-model="searchTxt"
+            @change="changeSelectOptions('search')"
+            clearable
+            style="maxWidth: 500px; float: right"
+          > -->
+          <t-input
+                style="width: 310px; margin-left: auto"
+                placeholder="商家名称/社会信用码/商家ID"
+                @change="changeSelectOptions('search')"
+            >
+            <template #prefixIcon><SearchIcon /></template>
+          </t-input>
+        </div>
+      </div>
+      <div class="table-wrap">
+        <div class="select-wrap">
+          <t-select
+            v-model="trade"
+            placeholder="请选择行业"
+            clearable
+            @change="changeSelectOptions('trade')"
+          >
+            <t-option
+              v-for="item in tradeArr"
+              :key="item.IndustryId"
+              :label="item.IndustryName"
+              :value="item.IndustryId"
+            />
+          </t-select>
+          <t-cascader
+            v-model="sales"
+            :options="salesArr"
+            :show-all-levels="false"
+            :props="cascaderProps"
+            multiple
+            collapse-tags
+            filterable
+            clearable
+            placeholder="请选择销售"
+            @change="changeSelectOptions('sales')"
+          />
+          <t-cascader
+            v-model="valueLocation"
+            :options="locationOptionsList"
+            :props="locationProps"
+            collapse-tags
+            clearable
+            placeholder="请选择客户地址"
+            @change="changeSelectOptions('location')"
+          />
+          <t-select
+            v-model="nation"
+            placeholder="请选择所属国家"
+            filterable
+            clearable
+            @change="changeSelectOptions('nation')"
+          >
+            <t-option
+              v-for="item in countryData"
+              :key="item.code"
+              :label="item.cnName"
+              :value="item.cnName"
+            >
+              <div style="display: flex; justify-content: space-between;">
+                <span>{{ item.cnName }}</span>
+                <span style="color: #8492a6; font-size: 13px">{{ item.code }}</span>
+              </div>
+            </t-option>
+          </t-select>
+          <t-select
+            v-model="signStatus"
+            placeholder="请选择签约状态"
+            clearable
+            @change="changeSelectOptions('signStatus')"
+          >
+            <t-option
+              v-for="item in signStatusOpts"
+              :key="item.val"
+              :label="item.label"
+              :value="item.val"
+            />
+          </t-select>
+        </div>
+        <t-table
+          :columns="tableColOpts"
+          :data-source="tableData"
+          row-key="id"
+          :loading="isTableLoading"
+          @sort-change="sortChangeHandle"
+        >
+          <template v-slot:default="{ row, column }">
+            <span v-if="column.key === 'SigningStatus'">
+              {{ signStatusOpts[row.SigningStatus - 1].label }}
+              {{ !row.Enable ? '(禁用)' : '' }}
+            </span>
+            <span
+              v-else-if="column.key === 'BusinessName'"
+              class="link"
+              @click="handleShowDetail(row)"
+            >
+              {{ row.BusinessName }}
+            </span>
+            <span v-else-if="column.key === 'Address'">
+              {{
+                row.RegionType === '海外'
+                  ? row.Nation || row.Address
+                  : row.Address
+              }}
+            </span>
+            <span v-else>{{ row[column.key] }}</span>
+          </template>
+          <template v-slot:action="{ row }">
+            <div class="table-opt-btns">
+              <span @click="handleEdit(row)">编辑</span>
+              <span @click="handleShowRenewal(row)">添加续约</span>
+              <t-dropdown>
+                <t-button type="text" @click="toggleDropdown(row)">
+                  <t-icon name="more" />
+                </t-button>
+                <t-dropdown-menu v-model:visible="dropdownVisible[row.id]">
+                  <t-dropdown-item @click="itemClickHandle('setAuth', row)">权限设置</t-dropdown-item>
+                  <t-dropdown-item @click="itemClickHandle('modifySale', row)">修改销售</t-dropdown-item>
+                  <t-dropdown-item @click="itemClickHandle('disable', row)">
+                    {{ row.Enable ? '禁用' : '启用' }}
+                  </t-dropdown-item>
+                </t-dropdown-menu>
+              </t-dropdown>
+            </div>
+          </template>
+        </t-table>
+        <div style="text-align: right; margin-top: 20px">
+          <t-pagination
+            :current-page="page"
+            :page-size="pageSize"
+            :total="total"
+            @change="handleCurrentChange"
+          />
+        </div>
+      </div>
+  
+      <!-- 添加续约 -->
+      <t-dialog
+        title="添加续约"
+        :visible.sync="showRenewal"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+        @close="showRenewal = false"
+      >
+        <template v-slot:content>
+          <AddRenewal @addRenewal="handleAddRenewal" @close="showRenewal = false" />
+        </template>
+      </t-dialog>
+  
+      <!-- 修改销售 -->
+      <t-dialog
+        title="修改销售"
+        :visible.sync="showModifySaller"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+        @close="showModifySaller = false"
+      >
+        <template v-slot:content>
+          <ModifySaller
+            :salesArr="salesArr"
+            :data="modifyData"
+            @modifySaller="handleModifySaller"
+            @close="showModifySaller = false"
+          />
+        </template>
+      </t-dialog>
+    </div>
+  </template>
+  
+  <script>
+//   import { ref, onMounted } from 'vue';
+//   import { AddRenewal, ModifySaller } from './components';
+//   import countryData from '@/utils/countryData';
+  import { ref, onMounted } from 'vue';
+import { customInterence, businessCustomInterence, roadshowInterence } from '@/api/api.js';
+import { locationOptions } from '@/utils/location';
+import AddRenewal from './components/AddRenewal.vue';
+import ModifySaller from './components/ModifySaller.vue';
+import countryData from '@/utils/countryData';
+import { SearchIcon } from 'tdesign-icons-vue-next';
+
+  
+  export default {
+    components: { AddRenewal, ModifySaller, SearchIcon },
+    setup() {
+      const searchTxt = ref('');
+      const trade = ref('');
+      const tradeArr = ref([]);
+      const sales = ref([]);
+      const salesArr = ref([]);
+      const valueLocation = ref([]);
+      const nation = ref('');
+      const locationProps = ref({
+        multiple: true,
+        value: 'name',
+        children: 'city',
+        label: 'name',
+      });
+      const locationOptionsList = ref(locationOptions);
+      const cascaderProps = ref({
+        expandTrigger: 'hover',
+        children: 'Child',
+        emitPath: false,
+        label: 'AdminName',
+        value: 'AdminId',
+        multiple: true,
+      });
+      const signStatus = ref('');
+      const signStatusOpts = ref([
+        { label: '首次签约', val: 1 },
+        { label: '续约中', val: 2 },
+        { label: '已终止', val: 3 },
+        { label: '待签约', val: 4 },
+      ]);
+      const tableColOpts = ref([
+        { label: '商家名称', key: 'BusinessName' },
+        { label: '商家ID', key: 'BusinessCode' },
+        { label: '商家地址/所属国家', key: 'Address' },
+        { label: '销售', key: 'SellerName' },
+        { label: '签约状态', key: 'SigningStatus' },
+        { label: '运维开始时间', key: 'SigningTime', sortable: true },
+        { label: '到期时间', key: 'ExpiredTime', sortable: true },
+        { label: '创建时间', key: 'CreateTime', sortable: true },
+        { label: '用户上限', key: 'UserMax', sortable: true },
+      ]);
+      const tableData = ref([]);
+      const isTableLoading = ref(false);
+      const page = ref(1);
+      const pageSize = ref(20);
+      const total = ref(0);
+      const showRenewal = ref(false);
+      const showModifySaller = ref(false);
+      const modifyData = ref({});
+      const dropdownVisible = ref({});
+  
+      const navigateToAdd = () => {
+        // 使用 Vue Router 导航到添加页面
+        // this.$router.push('/addETABusiness');
+      };
+  
+      const changeSelectOptions = (option) => {
+        if (option === 'location') {
+          const provinceArr = [];
+          const cityArr = [];
+          valueLocation.value.forEach((item) => {
+            provinceArr.push(item[0]);
+            cityArr.push(item[1]);
+          });
+          // provinceArr 需要去重
+          const provinceValue = [...new Set(provinceArr)].join(',');
+          const cityValue = cityArr.join(',');
+          // 这里可以添加对 provinceValue 和 cityValue 的处理逻辑
+        }
+        fetchBusinessList();
+      };
+  
+      const sortChangeHandle = (params) => {
+        // 处理排序逻辑
+      };
+  
+      const fetchBusinessList = async () => {
+        isTableLoading.value = true;
+        try {
+          // 假设 businessCustomInterence 是一个已经定义好的 API 服务
+          const res = await businessCustomInterence.getBusinessList({
+            Keyword: searchTxt.value,
+            SellerIds: sales.value.join(','),
+            SigningStatus: Number(signStatus.value),
+            // ... 其他参数
+          });
+          if (res.Ret !== 200) return;
+          tableData.value = res.Data.List;
+          total.value = res.Data.Paging.Totals;
+        } finally {
+          isTableLoading.value = false;
+        }
+      };
+  
+      const handleShowDetail = (data) => {
+        // 导航到详情页面
+        // this.$router.push({ path: '/businessETADetail', query: { id: data.EtaBusinessId } });
+      };
+  
+      const handleEdit = (data) => {
+        // 导航到编辑页面
+        // this.$router.push({ path: '/editETABusiness', query: { id: data.EtaBusinessId } });
+      };
+  
+      const handleShowRenewal = (data) => {
+        modifyData.value = data;
+        showRenewal.value = true;
+      };
+  
+      const handleAddRenewal = ({ signDate, expirationDate }) => {
+        // 处理添加续约逻辑
+      };
+  
+      const handleModifySaller = ({ saller, sallerName }) => {
+        // 处理修改销售逻辑
+      };
+  
+      const changeBusinessStatus = (data) => {
+        // 处理启用/禁用商家逻辑
+      };
+  
+      const itemClickHandle = (type, data) => {
+        if (type === 'modifySale') {
+          modifyData.value = data;
+          showModifySaller.value = true;
+        } else if (type === 'disable') {
+          changeBusinessStatus(data);
+        } else if (type === 'setAuth') {
+          // 处理权限设置逻辑
+        }
+      };
+  
+      const toggleDropdown = (row) => {
+        dropdownVisible[row.id] = !dropdownVisible[row.id];
+      };
+  
+      const getIndustry = async () => {
+        try {
+          // 假设 customInterence 是一个已经定义好的 API 服务
+          const res = await customInterence.getindustry({ Classify: 'ficc' });
+          if (res.Ret === 200) {
+            tradeArr.value = res.Data.List || [];
+          }
+        } catch (error) {
+          console.error('获取行业数据失败:', error);
+        }
+      };
+  
+      const getSale = async () => {
+        try {
+          // 假设 roadshowInterence 是一个已经定义好的 API 服务
+          const res = await roadshowInterence.getSellerList();
+          if (res.Ret !== 200) return;
+          salesArr.value = res.Data.List.map((item) => ({
+            ...item,
+            AdminName: item.AdminName || item.GroupName,
+            AdminId: item.AdminId || item.GroupId,
+          }));
+        } catch (error) {
+          console.error('获取销售数据失败:', error);
+        }
+      };
+  
+      const handleCurrentChange = (newPage) => {
+        page.value = newPage;
+        fetchBusinessList();
+      };
+  
+      onMounted(async () => {
+        await getIndustry();
+        await getSale();
+        fetchBusinessList();
+      });
+  
+      return {
+        searchTxt,
+        trade,
+        tradeArr,
+        sales,
+        salesArr,
+        valueLocation,
+        nation,
+        locationProps,
+        cascaderProps,
+        signStatus,
+        signStatusOpts,
+        tableColOpts,
+        tableData,
+        isTableLoading,
+        page,
+        pageSize,
+        total,
+        showRenewal,
+        showModifySaller,
+        modifyData,
+        dropdownVisible,
+        toggleDropdown,
+        countryData,
+        navigateToAdd,
+        changeSelectOptions,
+        sortChangeHandle,
+        fetchBusinessList,
+        handleShowDetail,
+        handleEdit,
+        handleShowRenewal,
+        handleAddRenewal,
+        handleModifySaller,
+        changeBusinessStatus,
+        itemClickHandle,
+        getIndustry,
+        getSale,
+        handleCurrentChange,
+      };
+    },
+  };
+  </script>
+  
+  <style lang="scss">
+  .business-ETA-list {
+    .top-filter-box {
+      .t-cascader__search-input {
+        min-width: 30px;
+      }
+    }
+  }
+  </style>
+  
+  <style lang="scss" scoped>
+  .top-filter-box {
+    border: 1px solid #ececec;
+    padding: 20px 30px;
+    background: #fff;
+    border-radius: 4px;
+    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
+  }
+  
+  .table-wrap {
+    margin-top: 30px;
+    border: 1px solid #ececec;
+    padding: 20px 30px;
+    background: #fff;
+    border-radius: 4px;
+    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
+  
+    .select-wrap {
+      display: flex;
+      gap: 20px;
+      align-items: center;
+      margin-bottom: 20px;
+  
+      .t-select,
+      .t-cascader {
+        width: 240px;
+      }
+    }
+  
+    .link {
+      color: #4099ef;
+      cursor: pointer;
+  
+      &:hover {
+        text-decoration: underline;
+      }
+    }
+  
+    .table-opt-btns {
+      color: #4099ef;
+      display: flex;
+      align-content: center;
+      justify-content: center;
+      align-items: center;
+  
+      span {
+        margin: 0 3px;
+        cursor: pointer;
+      }
+    }
+  }
+  </style>

+ 97 - 0
src/views/business_ETA_manage/components/AddRenewal.vue

@@ -0,0 +1,97 @@
+<template>
+    <div class="add-renewal-wrap">
+        <el-form 
+            :model="ruleForm" 
+            :rules="rules" 
+            ref="ruleForm" 
+            label-width="100px" 
+            class="demo-ruleForm"
+        >
+            <el-form-item label="运维时间" prop="signDate">
+                <el-date-picker
+                    v-model="ruleForm.signDate"
+                    type="date"
+                    placeholder="选择日期"
+                    value-format="yyyy-MM-dd"
+                />
+            </el-form-item>
+            <el-form-item label="到期时间" prop="expirationDate">
+                <el-date-picker
+                    v-model="ruleForm.expirationDate"
+                    type="date"
+                    placeholder="选择日期"
+                    value-format="yyyy-MM-dd"
+                />
+            </el-form-item>
+            <div style="text-align:center;margin:30px 0">
+                <el-button type="primary" plain @click="handleClose">取消</el-button>
+                <el-button type="primary" @click="handleSave">保存</el-button>
+            </div>
+        </el-form>
+    </div>
+</template>
+
+<script>
+export default {
+    props:{
+        renewalForm:{
+            type:Object,
+            default:()=>{
+                return {}
+            }
+        }
+    },
+    watch:{
+        renewalForm:{
+            handler:function(value){
+                if(value.id){
+                    this.ruleForm.id = value.id || 0
+                    this.ruleForm.signDate = value.signDate || ''
+                    this.ruleForm.expirationDate = value.expirationDate || ''
+                }
+            },
+            immediate:true
+        }
+    },
+    data() {
+        return {
+            rules:{
+                signDate:[{required: true, message: '请选择运维时间', trigger: 'change' },],
+                expirationDate:[{required: true, message: '请选择到期时间', trigger: 'change' },],
+            },
+            ruleForm:{
+                id:0,
+                signDate:'',
+                expirationDate:''
+            }
+        }
+    },
+    methods: {
+        handleSave(){
+            this.$refs.ruleForm.validate((valid)=>{
+                if(valid){
+                    const flag=this.$moment(this.ruleForm.signDate).isBefore(this.ruleForm.expirationDate);
+                    if(!flag){
+                        this.$message.warning('到期时间不得早于运维时间')
+                        return
+                    }
+                    this.$emit('addRenewal',this.ruleForm)
+                    this.initForm()
+                }
+            })
+        },
+        initForm(){
+            this.ruleForm.id = 0
+            this.ruleForm.signDate = ''
+            this.ruleForm.expirationDate = ''
+            this.$nextTick(()=>{
+                this.$refs.ruleForm.clearValidate();
+            })
+        },
+        handleClose(){
+            this.initForm()
+            this.$emit('close')
+        }
+    },
+}
+</script>

+ 95 - 0
src/views/business_ETA_manage/components/ModifySaller.vue

@@ -0,0 +1,95 @@
+<template>
+    <div class="modify-saller-wrap">
+        <el-form 
+            :model="ruleForm" 
+            :rules="rules" 
+            ref="ruleForm" 
+            label-width="100px" 
+            class="demo-ruleForm"
+        >
+            <el-form-item label="商家名称">
+                <span>{{data.BusinessName||''}}</span>
+            </el-form-item>
+            <el-form-item label="当前销售">
+                <span>{{data.SellerName||''}}</span>
+            </el-form-item>
+            <el-form-item label="移至销售" prop="saller">
+                <el-cascader
+                    ref="cascader"
+                    v-model="ruleForm.saller"
+                    :options="salesArr"
+                    :show-all-levels="false"
+                    :props="{
+                        expandTrigger: 'hover',
+                        children: 'Child',
+                        emitPath: false,
+                        label:'AdminName',
+                        value:'AdminId',
+                    }"
+                    collapse-tags
+                    filterable
+                    clearable
+                    placeholder="请选择销售"
+                />
+            </el-form-item>
+            <div style="text-align:center;margin:30px 0">
+                <el-button type="primary" plain @click="handleClose">取消</el-button>
+                <el-button type="primary" @click="handleSave">保存</el-button>
+            </div>
+        </el-form>
+    </div>
+</template>
+
+<script>
+export default {
+    props:{
+        salesArr:{ //销售数据
+            type:Array,
+            default:()=>{return []}
+        },
+        data:{ //正在编辑的数据
+            type:Object,
+            default:()=>{return {}}
+        }
+    },
+    data() {
+        return {
+            salesArr:[],
+            rules:{
+                saller:[{required: true, message: '请选择所属销售', trigger: 'change' },],
+            },
+            ruleForm:{
+                saller:''
+            }
+        }
+    },
+    created() {},
+    methods: {
+        handleSave(){
+            this.$refs.ruleForm.validate((valid)=>{
+                if(valid){
+                    const cascaderNodes = this.$refs.cascader.getCheckedNodes({leafOnly:true})
+                    this.$emit('modifySaller',{
+                        saller:Number(cascaderNodes[0]?cascaderNodes[0].value:0),
+                        sallerName:cascaderNodes[0]?cascaderNodes[0].label:''
+                    })
+                    this.initForm()
+
+                }
+            })
+        },
+        initForm(){
+            this.ruleForm.saller = ''
+            this.$refs.ruleForm.resetFields();
+        },
+        handleClose(){
+            this.initForm()
+            this.$emit('close')
+        },
+    },
+}
+</script>
+
+<style>
+
+</style>

+ 106 - 0
src/views/business_ETA_manage/components/Steps.vue

@@ -0,0 +1,106 @@
+<template>
+    <div class="step-wrap">
+        <div class="step-item" :class="{'active':activeStep===index+1}"
+            v-for="(step,index) in stepsArr" :key="index"
+            @click="changeActiveStep(index)">
+            <div class="step-line"></div>
+            <div class="step-icon" v-if="(activeStep<=index+1)||allowStepClick">{{index+1}}</div>
+            <div class="step-icon finished" v-else><i class="el-icon-check"></i></div>
+            <div class="step-text">{{step.text}}</div>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props:{
+        allowStepClick:{ //是否允许点击切换步骤
+            type:Boolean,
+            default:true
+        },
+        activeStep:{ //激活的步骤
+            type:Number,
+            default:0
+        },
+        stepsArr:{ //步骤数组
+            type:Array,
+            default:()=>{
+                return [
+                    {
+                        text:'基础信息'
+                    },{
+                        text:'签约信息'
+                    }
+                ]
+            }
+        }
+    },
+    data() {
+        return {
+
+        };
+    },
+    methods: {
+        changeActiveStep(index){
+            if(!this.allowStepClick) return 
+            this.$emit('changeActiveStep',index)
+        }
+    },
+};
+</script>
+
+<style scoped lang="scss">
+.step-wrap{
+    display: flex;
+    .step-item{
+        position: relative;
+        display: flex;
+        align-items: center;
+        gap:16px;
+        color:rgba(0, 0, 0, 0.4);
+        cursor: pointer;
+        .step-line{
+            flex: 1;
+            height:2px;
+            background-color: #DCDCDC;
+            min-width: 270px;
+        }
+        .step-icon{
+            width:24px;
+            height:24px;
+            border-radius: 50%;
+            border:2px solid rgba(0, 0, 0, 0.4);
+            text-align: center;
+            line-height: 24px;
+            font-size: 16px;
+            &.finished{
+                border-color: #3385FF;
+                i{
+                    color:#3385FF;
+                    font-weight: bold;
+                }
+            }
+        }
+        .step-text{
+            margin-right: 16px;
+        }
+        &:first-child{
+            .step-line{
+                display: none;
+            }
+        }
+
+        &.active{
+            color:#3385FF;
+            .step-icon{
+                background-color: #3385FF;
+                color:#fff;
+                border-color: transparent;
+            }
+            .step-line{
+                background-color: #3385FF;
+            }
+        }
+    }
+}
+</style>

+ 3 - 1
vite.config.js

@@ -92,7 +92,9 @@ export default defineConfig(({ mode }) => {
       port:8900,
       proxy:{
         '/v1': {
-          target: 'http://192.168.20.10:8912/v1',
+          // target: 'http://192.168.20.10:8912/v1',
+          // target: 'http://8.136.199.33:8900/v1',
+          target: 'http://8.136.199.33:7777/adminapi/',
           changeOrigin: true,
           rewrite: (path) => path.replace(/^\/v1/, ''),
         }