Commit da7b0e06 by 李宁

1

1 parent 525f13f3
......@@ -4,7 +4,6 @@ html{
html,body{
width: 100%;
height: 100%;
background: red;
}
body{
min-height: 100vh;
......
......@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录</title>
<link rel="stylesheet" href="css/login.css?9941">
<link rel="stylesheet" href="css/login.css?99341">
</head>
<body>
<div id="app" v-cloak>
......
......@@ -5,8 +5,8 @@
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>视频质检系统</title>
<script type="module" crossorigin src="./assets/index-BJJz899K.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-KGZYoaHH.css">
<script type="module" crossorigin src="./assets/index-DqoDLtuq.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-Ck6T8htw.css">
</head>
<body>
<div id="app"></div>
......
......@@ -192,7 +192,17 @@
<h3 class="section-title">质检详情</h3>
<el-table :data="detailForm.data.items" border style="width: 100%;">
<el-table-column prop="dec" label="检查项" width="200"></el-table-column>
<el-table-column prop="result" label="检查结果" width="150"></el-table-column>
<el-table-column prop="result" label="检查结果" width="150">
<template #default="scope">
<span>{{scope.row.result}}</span>
<el-button v-if="scope.row.result=='noShow'" size="small" type="text" @click="checkReason(scope.row.content)">查看原因</el-button>
</template>
</el-table-column>
<el-table-column prop="robot" label="识别方式" width="200">
<template #default="scope">
<span>{{scope.row.robot=='auto'?'自动识别':'手动填写'}}</span>
</template>
</el-table-column>
<el-table-column prop="picUrl" label="现场快照">
<template #default="scope">
<el-image
......@@ -235,7 +245,7 @@
<script setup>
import { ref, reactive, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import { ElMessage ,ElMessageBox} from 'element-plus'
import { getQualityResults , getQualityResultsDetail} from '../utils/api'
const router = useRouter()
......@@ -346,6 +356,12 @@ const getResultText = (result,status) => {
return ret
}
const checkReason = (value) =>{
ElMessageBox.alert(value, '提示', {
confirmButtonText: '知道了',
})
}
const getResultTagType = (result,status) => {
const typeMap = {
0: 'info',
......@@ -367,7 +383,6 @@ const viewDetail = async (row) => {
res.data.items.forEach(item=>{
item.picArr = item.picUrl.split(',')
//item.picArr = ['https://hhzj.lgyzpt.com/huaiHuaPc/assets/logo-D9UGterv.png','https://hhzj.lgyzpt.com/huaiHuaPc/assets/bg-C097ZT0U.png']
item.furl = item.picArr[0]||''
})
......@@ -381,6 +396,12 @@ const handlePageChange = (page) => {
}
const handleClose = () => {
const videos = document.querySelectorAll('video');
videos.forEach(video => {
video.pause();
video.currentTime = 0;
});
detailForm.isShow = false
}
......
......@@ -397,7 +397,7 @@ html,body{
left: 0;
top: 0;
background: rgb(0, 0, 0, 0.5);
z-index: 99999;
z-index: 999;
display: none;
}
.waittingDiv .inner{
......
......@@ -7,7 +7,7 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>江苏移动</title>
<link rel="stylesheet" href="https://xpo.oss-cn-beijing.aliyuncs.com/huaian/css/vant.css"/>
<link rel="stylesheet" href="css/demo.css?0909019011131">
<link rel="stylesheet" href="css/demo.css?67676">
</head>
<body>
......
import request from '../../request'
/**
*
*/
export function queryAllMissionRecord() {
return request({
url: 'hallserver/companyJob/queryAllCompanyJob',
data: {}
})
}
\ No newline at end of file
import request from '../../request'
/**
* 全部商机-列表查询
*/
export function queryAllBusi(data) {
return request({
url: '/compass/api/opportunity/page',
data,
})
}
/**
* 全部商机-数据统计
*/
export function queryAllBusiStatistics(data) {
return request({
url: '/compass/api/opportunity/statistics',
data,
})
}
/**
* 全部商机-查询商机标签列表
*/
export function queryBusiLabel(data) {
return request({
url: '/compass/api/opportunity/tag/page',
data,
})
}
\ No newline at end of file
import request from '../../request'
/**
* 查询区域列表
* 1-省级,2-市级,3-区级,4-网格级
*/
export function queryAllArea(data) {
return request({
url: '/compass/api/common/areas/level?areaLevel='+data.areaLevel+'&parentAreaCode='+data.parentAreaCode,
method: 'GET'
})
}
/**
* 当前用户权限获取下级区域层级结构
*/
export function queryUserArea(data) {
return request({
url: '/compass/api/system/area/permission/hierarchy',
data,
})
}
/**
* 商机状态列表
*/
export function queryBusiStatus(data) {
return request({
url: '/compass/api/common/enums/opportunity-statuses',
method: 'GET',
data,
})
}
\ No newline at end of file
import request from '../../request'
/**
* 资金管理-发票管理-开票订单查询
* @returns {AxiosPromise}
*/
export function queryTicketOrderList() {
return request({
url: 'hallserver/v1/invoiceApply/queryCompanyOrder',
data: {}
})
}
\ No newline at end of file
import * as business from './business'
import * as grid from './grid'
import * as person from './person'
import * as account from './account'
import * as login from '../login'
import * as common from './common'
export default {
...account,
...business,
...person,
...login,
...grid,
...common
}
\ No newline at end of file
import request from '../../request'
/**
*
*/
export function companyInfoQuery(companyId) {
return request({
url: 'hallserver/hallCompanyInfo/getCompanyInfo',
data: {
'companyId': companyId
}
})
}
import request from './request'
/**
* 退出登录
*/
export function logout() {
return request({
url: 'hallserver/admin/logout',
data: {}
})
}
/**
* 登录
* @param loginName
* @param password
*/
export function login(data) {
return request({
url: 'compass/api/auth/login',
data,
})
}
/**
* 获取登录验证码
* @param loginName
* @param password
*/
export function loginCode(data) {
return request({
url: 'hallserver/admin/loginCode',
data,
})
}
/**
* 获取路由权限
* @returns {AxiosPromise}
*/
export function getMenus() {
return request({
url: 'hallserver/admin/function',
data: {}
})
}
import axios from "axios";
import { MessageBox } from "element-ui";
import router from "@/router";
const service = axios.create({
baseURL: '/',
method: "post",
timeout: 150000,
withCredentials: true,
});
//请求拦截
service.interceptors.request.use(
(config) => {
if (!config.headers["Content-Type"])
config.headers["Content-Type"] = "application/json;charset=utf-8";
if (localStorage.pcUserInfo) {
let userInfo = JSON.parse(localStorage.pcUserInfo);
config.headers["x-access-token"] = userInfo.token
}
return config;
},
(error) => {
Promise.reject(error);
}
);
let ifCanShow = true; //为了防止页面有异常情况时,多个接口请求导致弹窗多次的问题
let catchFun = function (msg) {
if (!ifCanShow) {
return;
}
ifCanShow = false;
MessageBox.confirm(msg, "提示", {
showClose: false,
closeOnPressEscape: false,
closeOnClickModal: false,
showCancelButton: false,
}).then(() => {
ifCanShow = true;
router.push({ path: "/login" });
});
};
//响应拦截
service.interceptors.response.use(
(response) => {
console.log(response);
if (response.status === 200) {
if (response.data.code == "401") {
//登陆失效,重新登陆
catchFun("账户状态异常");
} else if (response.data.code == "133") {
//灰名单
MessageBox.alert(response.data.msg, "状态异常/错误提示", {
dangerouslyUseHTMLString: true,
});
} else {
if (response.data instanceof Blob) {
return new Promise(function (resolve, reject) {
var r = new FileReader();
var resData = response.data;
if (response.config.url.indexOf("poster/createPoster") >= 0) {
if (resData.type == "application/json") {
r.readAsText(resData);
} else {
r.readAsDataURL(resData);
}
} else {
r.readAsText(resData);
}
r.onload = function () {
let res = {};
//PK 为二进制压缩包(ZIP)导出数据流
if (
escape(r.result).indexOf("%u") == 0 ||
escape(r.result).indexOf("PK") == 0 ||
r.result.indexOf("pdf") >= 0 ||
r.result.indexOf("PDF") >= 0 ||
r.result.indexOf("data:image") >= 0
) {
res.type = "blob";
res.value = resData;
} else {
res.type = "object";
res.value = JSON.parse(r.result);
}
resolve(res);
};
}).catch((e) => {});
} else {
return {
url: response.config.url,
...response.data,
};
}
}
} else if (response.status === 302) {
catchFun("登陆失效,请重新登陆");
} else if (response.status === 401 || response.status == 403) {
catchFun("账户状态异常");
} else {
if (sessionStorage.notFirstIn) {
catchFun("网络异常,请稍后再试");
}
}
},
(error) => {
if (sessionStorage.notFirstIn) {
catchFun("网络异常,请稍后再试");
}
}
);
export default service;
import axios from 'axios'
import {
MessageBox
} from 'element-ui'
export default {
/**
* 数组元素查询——针对数组元素中object某一项值
* @param val
* @param store
* @param findKey
*/
arrayFind: function(val, store, findKey) {
let res = ''
if(!store) {
return val
}
if(!findKey) {
findKey = 'value'
}
try {
store.forEach(function(item, index) {
if(item[findKey] == val) {
let curItem = JSON.parse(JSON.stringify(item))
curItem.findIndex = index
res = curItem
throw new Error('end forEach')
}
})
} catch(e) {
if(e.message = 'end forEach') {
console.log(e.message)
}
}
return res
},
/**
* 枚举渲染
* @param ename
* @param store
* @returns {*}
*/
globalRender: function(ename, store, checkFlag) {
let val = ''
if (!checkFlag) {
val = ename
}
if (!store) {
return val
}
if (store.length != 0) {
for (let i = 0; i < store.length; i++) {
if (ename == store[i].key) {
return store[i].value || store[i].key
} else if (i == store.length - 1) {
return val;
}
}
} else {
return val;
}
},
/**
* 时间戳转字符串
* @param num
* @returns {*}
*/
detailTime: function(num) {
if (num == null) {
return '';
} else {
num = Number(num);
let d = new Date(num);
let year = d.getFullYear();
let month = d.getMonth() + 1;
let date = d.getDate();
let hour = d.getHours();
let minute = d.getMinutes();
let second = d.getSeconds();
month < 10 ? month = '0' + month : month;
date < 10 ? date = '0' + date : date;
hour < 10 ? hour = '0' + hour : hour;
minute < 10 ? minute = '0' + minute : minute;
second < 10 ? second = '0' + second : second;
return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
}
},
/**
* 文件后缀时间戳
* @param {*} num
* @returns
*/
fileTimeStamp: function(num) {
if (num == null) {
return '';
} else {
num = Number(num);
let d = new Date(num);
let year = d.getFullYear();
let month = d.getMonth() + 1;
let date = d.getDate();
let hour = d.getHours();
let minute = d.getMinutes();
let second = d.getSeconds();
month < 10 ? month = '0' + month : month;
date < 10 ? date = '0' + date : date;
hour < 10 ? hour = '0' + hour : hour;
minute < 10 ? minute = '0' + minute : minute;
second < 10 ? second = '0' + second : second;
return year + "-" + month + "-" + date + "-" + hour + "" + minute + "" + second;
}
},
/**
* 浮点数加法,用于解决精度丢失问题
* @param {*} num1
* @param {*} num2
* @returns
*/
addStr: function(num1, num2) {
var r1, r2, m;
try {
r1 = num1.toString().split('.')[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = num2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m = Math.pow(10, Math.max(r1, r2));
return Math.round(num1 * m + num2 * m) / m;
},
/**
* 浮点数减法,用于解决精度丢失问题
* @param {*} arg1
* @param {*} arg2
* @returns
*/
subStr: function(arg1, arg2) {
var r1, r2, m, n;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2));
n = (r1 >= r2) ? r1 : r2;
return ((arg1 * m - arg2 * m) / m).toFixed(n);
},
/**
* 浮点数乘法,用于解决精度丢失问题
* @param {*} arg1
* @param {*} arg2
* @param {*} n 保留位数
* @returns
*/
mulStr: function(arg1, arg2, n) {
var m = 0,
s1 = arg1.toString(),
s2 = arg2.toString();
try {
m += s1.split('.')[1].length
} catch (e) {
//TODO handle the exception
}
try {
m += s2.split('.')[1].length
} catch (e) {}
var val = Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m)
if(n) {
val = val.toFixed(n)
}
return val
},
/**
* 浮点数除法,用于解决精度丢失问题
* @param {*} arg1
* @param {*} arg2
* @param {*} n 保留位数
* @returns
*/
divStr: function(arg1, arg2, n) {
var t1 = 0,
t2 = 0,
r1, r2;
try {
t1 = arg1.toString().split('.')[1].length
} catch (e) {
//TODO handle the exception
}
try {
t2 = arg2.toString().split('.')[1].length
} catch (e) {
//TODO handle the exception
}
r1 = Number(arg1.toString().replace('.', ''));
r2 = Number(arg2.toString().replace('.', ''));
var val = (r1 / r2) * Math.pow(10, t2 - t1)
if(n) {
val = val.toFixed(n)
}
return val
},
/**
* 隐藏身份证号
* @param {*} idCard
* @returns
*/
hideIdNumber: function(idCard) {
if (idCard.length === 18) {
return idCard.substr(0, 6) + '********' + idCard.substr(-4, 4)
} else if (idCard.length === 15) {
return idCard.substr(0, 6) + '******' + idCard.substr(-3, 3)
} else {
return idCard
}
},
/**
* 隐藏手机号
* @param {*} phone
* @returns
*/
hidePhone: function(phone) {
if(phone.length == 11) {
return phone.substr(0,3) + '*****' + phone.substr(-3,3)
} else {
return phone
}
},
/**
* 导出excel
* @param content
* @param fileName
* @param fileParam
* @param blobType
* @param fileType
* */
exportExcel: function({
content,
fileName,
fileParam,
blobType,
fileType
}) {
let __this = this
if (!content) return
if (!blobType) blobType = 'application/vnd.ms-excel'
if (!fileName) fileName = '导出文件'
if (!fileType) fileType = 'xls'
if (!fileParam) fileParam = ''
let fileNames = fileName + fileParam
__this.createBlob(content, blobType, fileNames, fileType)
},
/**
* 下载本地文件
* @param fileJson
* */
downloadLocalFile: function(fileSrc, blobType, fileName, fileType) {
let __this = this
let getUrl = fileSrc
if (getUrl.indexOf('?') < 0) getUrl = fileSrc + '?' + new Date().getTime()
console.log(getUrl)
axios.create().get(getUrl, {
responseType: 'blob'
}).then(response => {
if (window.navigator.msSaveBlob) { //ie浏览器不支持通过a标签下载文件
try {
window.navigator.msSaveBlob(response.data, (fileName + '-' + __this.fileTimeStamp(new Date().getTime()) +
'.' + fileType))
} catch (e) {
MessageBox.confirm('该浏览器内核不支持下载此文件,推荐使用谷歌浏览器访问本平台', '提示', {
confirmButtonText: "确定",
showClose: false,
showCancelButton: false,
callback: function(action) {
// window.location.reload()
}
})
}
} else {
__this.createBlob(response.data, blobType, fileName, fileType)
}
})
},
/**
* 创建blob,用于下载文件
* @param {*} content
* @param {*} blobType
* @param {*} fileName
* @param {*} fileType
*/
createBlob: function(content, blobType, fileName, fileType) {
let __this = this
let blob = new Blob([content], {
type: blobType
})
let filename = fileName + '-' + __this.fileTimeStamp(new Date().getTime()) + '.' + fileType
if ('download' in document.createElement('a')) {
let eleLink = document.createElement('a')
eleLink.download = filename
eleLink.style.display = 'none'
eleLink.href = URL.createObjectURL(blob)
document.body.appendChild(eleLink)
eleLink.click()
URL.revokeObjectURL(eleLink.href)
document.body.removeChild(eleLink)
} else {
navigator.msSaveBlob(blob, filename)
}
},
/**
* 通过url下载文件
* @param {*} url
*/
downloadFile(url) {
let urlParam = '';
if (url.indexOf('?') >= 0) {
urlParam = url.split('?')[1]
url = url.split('?')[0]
}
let splitArr = url.split('/')
let fileName = splitArr[splitArr.length - 1].slice(0, -4)
let fileType = splitArr[splitArr.length - 1].slice(-4)
if (fileType.indexOf('.') < 0) {
fileName = fileName.slice(0, -1)
} else {
fileType = fileType.replace(/./, '')
}
let lastType = fileType
fileType = fileType.toLowerCase()
console.log(fileName, fileType)
let blobType = ''
switch (fileType) {
case 'xls':
case 'xlsx':
blobType = 'application/vnd.ms-excel'
break;
// case 'xlsx':
// blobType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.'
// break;
case 'doc':
case 'docx':
blobType = 'application/msword'
break;
case 'ppt':
case 'pptx':
blobType = 'application/vnd.ms-powerpoint'
break;
case 'txt':
blobType = 'text/plain'
break;
case 'jpg':
case 'jpeg':
blobType = 'image/jpeg'
break;
case 'png':
blobType = 'image/png'
break;
case 'pdf':
blobType = 'application/pdf'
break;
case 'zip':
blobType = 'application/zip'
break;
}
let imgType = '.jpg,.jpeg,.png'
if (imgType.indexOf(fileType) >= 0) {
let image = new Image()
image.setAttribute("crossOrigin", "anonymous");
image.onload = function() {
let canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
let context = canvas.getContext("2d");
context.drawImage(image, 0, 0, image.width, image.height);
let url = canvas.toDataURL(blobType, 1.0); //得到图片的base64编码数据
let a = document.createElement("a"); // 生成一个a元素
let event = new MouseEvent("click"); // 创建一个单击事件
// let filename = fileName + '-' + fileTimeStamp(new Date().getTime()) + '.' + fileType
let filename = fileName + '.' + lastType
a.download = filename; // 设置图片名称
a.href = url; // 将生成的URL设置为a.href属性
a.dispatchEvent(event); // 触发a的单击事件
};
image.src = url;
} else {
let fileSrc = splitArr.slice(0, -1).join('/') + '/' + encodeURIComponent(fileName) + '.' + fileType
if (fileType == 'txt') {
console.log(fileSrc, url)
downloadLocalFile(fileSrc, blobType, fileName, fileType)
} else {
let form = document.createElement('form')
form.method = 'get'
form.action = urlParam ? (fileSrc + '?' + urlParam) : fileSrc
document.body.append(form)
form.submit()
form.remove()
}
}
}
}
\ No newline at end of file
const addressData = [
{
name: '南京市',
value: '320100',
children: [
{ name: '玄武区', value: '320102' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '秦淮区', value: '320104' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '建邺区', value: '320105' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '鼓楼区', value: '320106' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '浦口区', value: '320111' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '栖霞区', value: '320113' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '雨花台区', value: '320114' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '江宁区', value: '320115' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '六合区', value: '320116' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '溧水区', value: '320117' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '高淳区', value: '320118' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '无锡市',
value: '320200',
children: [
{ name: '梁溪区', value: '320205' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '锡山区', value: '320211' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '惠山区', value: '320213' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '滨湖区', value: '320214' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '江阴市', value: '320281' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '宜兴市', value: '320282' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '徐州市',
value: '320300',
children: [
{ name: '鼓楼区', value: '320302' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '云龙区', value: '320303' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '贾汪区', value: '320305' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '泉山区', value: '320311' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '铜山区', value: '320312' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '丰县', value: '320321' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '沛县', value: '320322' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '睢宁县', value: '320324' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '新沂市', value: '320381' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '邳州市', value: '320382' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '常州市',
value: '320400',
children: [
{ name: '天宁区', value: '320402' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '钟楼区', value: '320404' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '新北区', value: '320411' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '武进区', value: '320412' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '金坛区', value: '320413' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '溧阳市', value: '320481' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '苏州市',
value: '320500',
children: [
{ name: '虎丘区', value: '320505' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '吴中区', value: '320506' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '相城区', value: '320507' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '姑苏区', value: '320508' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '吴江区', value: '320509' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '常熟市', value: '320581' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '张家港市', value: '320582' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '昆山市', value: '320583' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '太仓市', value: '320585' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '南通市',
value: '320600',
children: [
{
name: '崇川区',
value: '320602',
children: [
{ name: '城中网格', value: '18281' },
{ name: '城西网格', value: '18288' },
{ name: '观音山网格', value: '18287' },
{ name: '文峰网格', value: '18285' },
{ name: '新区网格', value: '18286' }
]
},
{
name: '港闸区',
value: '320611',
children: [
{ name: '秦幸网格', value: '12382' },
{ name: '唐闸网格', value: '12380' },
{ name: '港天网格', value: '12378' },
{ name: '陈桥网格', value: '12381' }
]
},
{
name: '海安市',
value: '320685',
children: [
{ name: '李堡网格', value: '11357' }
]
},
{
name: '海门区',
value: '320614',
children: [
{ name: '常乐网格', value: '12401' },
{ name: '临江网格', value: '12405' },
{ name: '正余网格', value: '12409' },
{ name: '三厂网格', value: '12400' },
{ name: '三星网格', value: '12397' },
{ name: '开发区网格', value: '12396' },
{ name: '港新区网格', value: '12408' },
{ name: '余东网格', value: '12413' },
{ name: '城南网格', value: '18524' }
]
},
{
name: '开发区',
value: '320671',
children: [
{ name: '中兴网格', value: '12384' },
{ name: '新开网格', value: '12385' },
{ name: '竹海网格', value: '12386' },
{ name: '苏锡通网格', value: '12388' },
{ name: '张芝山网格', value: '11337' }
]
},
{
name: '启东市',
value: '320681',
children: [
{ name: '近海网格', value: '11510' },
{ name: '寅阳网格', value: '11506' },
{ name: '城北网格', value: '12747' },
{ name: '王合网格', value: '11513' },
{ name: '南海网格', value: '11509' },
{ name: '北新网格', value: '11516' },
{ name: '吕四网格', value: '11511' }
]
},
{
name: '如东县',
value: '320623',
children: [
{ name: '双甸网格', value: '11528' },
{ name: '曹埠网格', value: '11525' },
{ name: '掘港网格', value: '11522' },
{ name: '大豫网格', value: '11534' },
{ name: '河口网格', value: '11530' },
{ name: '洋口网格', value: '11531' }
]
},
{
name: '如皋市',
value: '320682',
children: [
{ name: '高新区网格', value: '12754' },
{ name: '长江网格', value: '11307' },
{ name: '丁堰网格', value: '11316' },
{ name: '东陈网格', value: '11317' }
]
},
{
name: '通州区',
value: '320612',
children: [
{ name: '金新网格', value: '18393' },
{ name: '石港网格', value: '11333' },
{ name: '通州湾网格', value: '11345' },
{ name: '金沙网格', value: '18392' }
]
}
]
},
{
name: '连云港市',
value: '320700',
children: [
{ name: '连云区', value: '320703' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '海州区', value: '320706' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '赣榆区', value: '320707' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '东海县', value: '320722' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '灌云县', value: '320723' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '灌南县', value: '320724' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '淮安市',
value: '320800',
children: [
{ name: '淮安区', value: '320803' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '淮阴区', value: '320804' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '清江浦区', value: '320812' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '洪泽区', value: '320813' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '涟水县', value: '320826' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '盱眙县', value: '320830' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '金湖县', value: '320831' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '盐城市',
value: '320900',
children: [
{ name: '亭湖区', value: '320902' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '盐都区', value: '320903' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '大丰区', value: '320904' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '响水县', value: '320921' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '滨海县', value: '320922' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '阜宁县', value: '320923' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '射阳县', value: '320924' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '建湖县', value: '320925' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '东台市', value: '320981' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '扬州市',
value: '321000',
children: [
{ name: '广陵区', value: '321002' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '邗江区', value: '321003' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '江都区', value: '321012' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '宝应县', value: '321023' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '仪征市', value: '321081' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '高邮市', value: '321084' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '镇江市',
value: '321100',
children: [
{ name: '京口区', value: '321102' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '润州区', value: '321111' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '丹徒区', value: '321112' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '丹阳市', value: '321181' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '扬中市', value: '321182' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '句容市', value: '321183' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '泰州市',
value: '321200',
children: [
{ name: '海陵区', value: '321202' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '高港区', value: '321203' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '姜堰区', value: '321204' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '兴化市', value: '321281' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '靖江市', value: '321282' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '泰兴市', value: '321283' ,children: [{ name: '默认网格', value: 'moren' }]}
]
},
{
name: '宿迁市',
value: '321300',
children: [
{ name: '宿城区', value: '321302' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '宿豫区', value: '321311' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '沭阳县', value: '321322' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '泗阳县', value: '321323' ,children: [{ name: '默认网格', value: 'moren' }]},
{ name: '泗洪县', value: '321324',children: [{ name: '默认网格', value: 'moren' }] }
]
}
]
export default addressData
\ No newline at end of file
const addressData = [
{
name: '南京市',
value: '320100',
children: [
{ name: '玄武区', value: '320102', children: [{ name: '玄武区A网格', value: '120102' }] },
{ name: '秦淮区', value: '320104', children: [{ name: '秦淮区A网格', value: '120104' }] },
{ name: '建邺区', value: '320105', children: [{ name: '建邺区A网格', value: '120105' }] },
{ name: '鼓楼区', value: '320106', children: [{ name: '鼓楼区A网格', value: '120106' }] },
{ name: '浦口区', value: '320111', children: [{ name: '浦口区A网格', value: '120111' }] },
{ name: '栖霞区', value: '320113', children: [{ name: '栖霞区A网格', value: '120113' }] },
{ name: '雨花台区', value: '320114', children: [{ name: '雨花台区A网格', value: '120114' }] },
{ name: '江宁区', value: '320115', children: [{ name: '江宁区A网格', value: '120115' }] },
{ name: '六合区', value: '320116', children: [{ name: '六合区A网格', value: '120116' }] },
{ name: '溧水区', value: '320117', children: [{ name: '溧水区A网格', value: '120117' }] },
{ name: '高淳区', value: '320118', children: [{ name: '高淳区A网格', value: '120118' }] }
]
},
{
name: '无锡市',
value: '320200',
children: [
{ name: '梁溪区', value: '320205', children: [{ name: '梁溪区A网格', value: '120205' }] },
{ name: '锡山区', value: '320211', children: [{ name: '锡山区A网格', value: '120211' }] },
{ name: '惠山区', value: '320213', children: [{ name: '惠山区A网格', value: '120213' }] },
{ name: '滨湖区', value: '320214', children: [{ name: '滨湖区A网格', value: '120214' }] },
{ name: '江阴市', value: '320281', children: [{ name: '江阴市A网格', value: '120281' }] },
{ name: '宜兴市', value: '320282', children: [{ name: '宜兴市A网格', value: '120282' }] }
]
},
{
name: '徐州市',
value: '320300',
children: [
{ name: '鼓楼区', value: '320302', children: [{ name: '鼓楼区A网格', value: '120302' }] },
{ name: '云龙区', value: '320303', children: [{ name: '云龙区A网格', value: '120303' }] },
{ name: '贾汪区', value: '320305', children: [{ name: '贾汪区A网格', value: '120305' }] },
{ name: '泉山区', value: '320311', children: [{ name: '泉山区A网格', value: '120311' }] },
{ name: '铜山区', value: '320312', children: [{ name: '铜山区A网格', value: '120312' }] },
{ name: '丰县', value: '320321', children: [{ name: '丰县A网格', value: '120321' }] },
{ name: '沛县', value: '320322', children: [{ name: '沛县A网格', value: '120322' }] },
{ name: '睢宁县', value: '320324', children: [{ name: '睢宁县A网格', value: '120324' }] },
{ name: '新沂市', value: '320381', children: [{ name: '新沂市A网格', value: '120381' }] },
{ name: '邳州市', value: '320382', children: [{ name: '邳州市A网格', value: '120382' }] }
]
},
{
name: '常州市',
value: '320400',
children: [
{ name: '天宁区', value: '320402', children: [{ name: '天宁区A网格', value: '120402' }] },
{ name: '钟楼区', value: '320404', children: [{ name: '钟楼区A网格', value: '120404' }] },
{ name: '新北区', value: '320411', children: [{ name: '新北区A网格', value: '120411' }] },
{ name: '武进区', value: '320412', children: [{ name: '武进区A网格', value: '120412' }] },
{ name: '金坛区', value: '320413', children: [{ name: '金坛区A网格', value: '120413' }] },
{ name: '溧阳市', value: '320481', children: [{ name: '溧阳市A网格', value: '120481' }] }
]
},
{
name: '苏州市',
value: '320500',
children: [
{ name: '虎丘区', value: '320505', children: [{ name: '虎丘区A网格', value: '120505' }] },
{ name: '吴中区', value: '320506', children: [{ name: '吴中区A网格', value: '120506' }] },
{ name: '相城区', value: '320507', children: [{ name: '相城区A网格', value: '120507' }] },
{ name: '姑苏区', value: '320508', children: [{ name: '姑苏区A网格', value: '120508' }] },
{ name: '吴江区', value: '320509', children: [{ name: '吴江区A网格', value: '120509' }] },
{ name: '常熟市', value: '320581', children: [{ name: '常熟市A网格', value: '120581' }] },
{ name: '张家港市', value: '320582', children: [{ name: '张家港市A网格', value: '120582' }] },
{ name: '昆山市', value: '320583', children: [{ name: '昆山市A网格', value: '120583' }] },
{ name: '太仓市', value: '320585', children: [{ name: '太仓市A网格', value: '120585' }] }
]
},
{
name: '南通市',
value: '320600',
children: [
{
name: '崇川区',
value: '320602',
children: [
{ name: '城中网格', value: '18281' },
{ name: '城西网格', value: '18288' },
{ name: '观音山网格', value: '18287' },
{ name: '文峰网格', value: '18285' },
{ name: '新区网格', value: '18286' }
]
},
{
name: '港闸区',
value: '320611',
children: [
{ name: '秦幸网格', value: '12382' },
{ name: '唐闸网格', value: '12380' },
{ name: '港天网格', value: '12378' },
{ name: '陈桥网格', value: '12381' }
]
},
{
name: '海安市',
value: '320685',
children: [
{ name: '李堡网格', value: '11357' }
]
},
{
name: '海门区',
value: '320614',
children: [
{ name: '常乐网格', value: '12401' },
{ name: '临江网格', value: '12405' },
{ name: '正余网格', value: '12409' },
{ name: '三厂网格', value: '12400' },
{ name: '三星网格', value: '12397' },
{ name: '开发区网格', value: '12396' },
{ name: '港新区网格', value: '12408' },
{ name: '余东网格', value: '12413' },
{ name: '城南网格', value: '18524' }
]
},
{
name: '开发区',
value: '320671',
children: [
{ name: '中兴网格', value: '12384' },
{ name: '新开网格', value: '12385' },
{ name: '竹海网格', value: '12386' },
{ name: '苏锡通网格', value: '12388' },
{ name: '张芝山网格', value: '11337' }
]
},
{
name: '启东市',
value: '320681',
children: [
{ name: '近海网格', value: '11510' },
{ name: '寅阳网格', value: '11506' },
{ name: '城北网格', value: '12747' },
{ name: '王合网格', value: '11513' },
{ name: '南海网格', value: '11509' },
{ name: '北新网格', value: '11516' },
{ name: '吕四网格', value: '11511' }
]
},
{
name: '如东县',
value: '320623',
children: [
{ name: '双甸网格', value: '11528' },
{ name: '曹埠网格', value: '11525' },
{ name: '掘港网格', value: '11522' },
{ name: '大豫网格', value: '11534' },
{ name: '河口网格', value: '11530' },
{ name: '洋口网格', value: '11531' }
]
},
{
name: '如皋市',
value: '320682',
children: [
{ name: '高新区网格', value: '12754' },
{ name: '长江网格', value: '11307' },
{ name: '丁堰网格', value: '11316' },
{ name: '东陈网格', value: '11317' }
]
},
{
name: '通州区',
value: '320612',
children: [
{ name: '金新网格', value: '18393' },
{ name: '石港网格', value: '11333' },
{ name: '通州湾网格', value: '11345' },
{ name: '金沙网格', value: '18392' }
]
}
]
},
{
name: '连云港市',
value: '320700',
children: [
{ name: '连云区', value: '320703', children: [{ name: '连云区A网格', value: '120703' }] },
{ name: '海州区', value: '320706', children: [{ name: '海州区A网格', value: '120706' }] },
{ name: '赣榆区', value: '320707', children: [{ name: '赣榆区A网格', value: '120707' }] },
{ name: '东海县', value: '320722', children: [{ name: '东海县A网格', value: '120722' }] },
{ name: '灌云县', value: '320723', children: [{ name: '灌云县A网格', value: '120723' }] },
{ name: '灌南县', value: '320724', children: [{ name: '灌南县A网格', value: '120724' }] }
]
},
{
name: '淮安市',
value: '320800',
children: [
{ name: '淮安区', value: '320803', children: [{ name: '淮安区A网格', value: '120803' }] },
{ name: '淮阴区', value: '320804', children: [{ name: '淮阴区A网格', value: '120804' }] },
{ name: '清江浦区', value: '320812', children: [{ name: '清江浦区A网格', value: '120812' }] },
{ name: '洪泽区', value: '320813', children: [{ name: '洪泽区A网格', value: '120813' }] },
{ name: '涟水县', value: '320826', children: [{ name: '涟水县A网格', value: '120826' }] },
{ name: '盱眙县', value: '320830', children: [{ name: '盱眙县A网格', value: '120830' }] },
{ name: '金湖县', value: '320831', children: [{ name: '金湖县A网格', value: '120831' }] }
]
},
{
name: '盐城市',
value: '320900',
children: [
{ name: '亭湖区', value: '320902', children: [{ name: '亭湖区A网格', value: '120902' }] },
{ name: '盐都区', value: '320903', children: [{ name: '盐都区A网格', value: '120903' }] },
{ name: '大丰区', value: '320904', children: [{ name: '大丰区A网格', value: '120904' }] },
{ name: '响水县', value: '320921', children: [{ name: '响水县A网格', value: '120921' }] },
{ name: '滨海县', value: '320922', children: [{ name: '滨海县A网格', value: '120922' }] },
{ name: '阜宁县', value: '320923', children: [{ name: '阜宁县A网格', value: '120923' }] },
{ name: '射阳县', value: '320924', children: [{ name: '射阳县A网格', value: '120924' }] },
{ name: '建湖县', value: '320925', children: [{ name: '建湖县A网格', value: '120925' }] },
{ name: '东台市', value: '320981', children: [{ name: '东台市A网格', value: '120981' }] }
]
},
{
name: '扬州市',
value: '321000',
children: [
{ name: '广陵区', value: '321002', children: [{ name: '广陵区A网格', value: '121002' }] },
{ name: '邗江区', value: '321003', children: [{ name: '邗江区A网格', value: '121003' }] },
{ name: '江都区', value: '321012', children: [{ name: '江都区A网格', value: '121012' }] },
{ name: '宝应县', value: '321023', children: [{ name: '宝应县A网格', value: '121023' }] },
{ name: '仪征市', value: '321081', children: [{ name: '仪征市A网格', value: '121081' }] },
{ name: '高邮市', value: '321084', children: [{ name: '高邮市A网格', value: '121084' }] }
]
},
{
name: '镇江市',
value: '321100',
children: [
{ name: '京口区', value: '321102', children: [{ name: '京口区A网格', value: '121102' }] },
{ name: '润州区', value: '321111', children: [{ name: '润州区A网格', value: '121111' }] },
{ name: '丹徒区', value: '321112', children: [{ name: '丹徒区A网格', value: '121112' }] },
{ name: '丹阳市', value: '321181', children: [{ name: '丹阳市A网格', value: '121181' }] },
{ name: '扬中市', value: '321182', children: [{ name: '扬中市A网格', value: '121182' }] },
{ name: '句容市', value: '321183', children: [{ name: '句容市A网格', value: '121183' }] }
]
},
{
name: '泰州市',
value: '321200',
children: [
{ name: '海陵区', value: '321202', children: [{ name: '海陵区A网格', value: '121202' }] },
{ name: '高港区', value: '321203', children: [{ name: '高港区A网格', value: '121203' }] },
{ name: '姜堰区', value: '321204', children: [{ name: '姜堰区A网格', value: '121204' }] },
{ name: '兴化市', value: '321281', children: [{ name: '兴化市A网格', value: '121281' }] },
{ name: '靖江市', value: '321282', children: [{ name: '靖江市A网格', value: '121282' }] },
{ name: '泰兴市', value: '321283', children: [{ name: '泰兴市A网格', value: '121283' }] }
]
},
{
name: '宿迁市',
value: '321300',
children: [
{ name: '宿城区', value: '321302', children: [{ name: '宿城区A网格', value: '121302' }] },
{ name: '宿豫区', value: '321311', children: [{ name: '宿豫区A网格', value: '121311' }] },
{ name: '沭阳县', value: '321322', children: [{ name: '沭阳县A网格', value: '121322' }] },
{ name: '泗阳县', value: '321323', children: [{ name: '泗阳县A网格', value: '121323' }] },
{ name: '泗洪县', value: '321324', children: [{ name: '泗洪县A网格', value: '121324' }] }
]
}
]
const choAddressData = [
{
code: '320100',
name: '南京市',
districts: [
{ code: '320102', name: '玄武区', streets: [{ code: '320102001', name: '新街口街道' }, { code: '320102002', name: '梅园新村街道' }, { code: '320102003', name: '玄武门街道' }, { code: '320102004', name: '锁金村街道' }, { code: '320102005', name: '红山街道' }, { code: '320102006', name: '孝陵卫街道' }, { code: '320102007', name: '玄武湖街道' }] },
{ code: '320104', name: '秦淮区', streets: [{ code: '320104001', name: '秦虹街道' }, { code: '320104002', name: '红花街道' }, { code: '320104003', name: '夫子庙街道' }, { code: '320104004', name: '双塘街道' }, { code: '320104005', name: '中华门街道' }, { code: '320104006', name: '月牙湖街道' }, { code: '320104007', name: '光华路街道' }, { code: '320104008', name: '瑞金路街道' }, { code: '320104009', name: '朝天宫街道' }, { code: '320104010', name: '五老村街道' }, { code: '320104011', name: '洪武路街道' }, { code: '320104012', name: '建康路街道' }] },
{ code: '320105', name: '建邺区', streets: [{ code: '320105001', name: '莫愁湖街道' }, { code: '320105002', name: '南湖街道' }, { code: '320105003', name: '兴隆街道' }, { code: '320105004', name: '南苑街道' }, { code: '320105005', name: '沙洲街道' }, { code: '320105006', name: '双闸街道' }, { code: '320105007', name: '江心洲街道' }] },
{ code: '320106', name: '鼓楼区', streets: [{ code: '320106001', name: '宁海路街道' }, { code: '320106002', name: '华侨路街道' }, { code: '320106003', name: '湖南路街道' }, { code: '320106004', name: '中央门街道' }, { code: '320106005', name: '挹江门街道' }, { code: '320106006', name: '江东街道' }, { code: '320106007', name: '凤凰街道' }, { code: '320106008', name: '热河南路街道' }, { code: '320106009', name: '下关街道' }, { code: '320106010', name: '建宁路街道' }, { code: '320106011', name: '宝塔桥街道' }, { code: '320106012', name: '小市街道' }, { code: '320106013', name: '幕府山街道' }] },
{ code: '320111', name: '浦口区', streets: [{ code: '320111001', name: '泰山街道' }, { code: '320111002', name: '顶山街道' }, { code: '320111003', name: '沿江街道' }, { code: '320111004', name: '江浦街道' }, { code: '320111005', name: '汤泉街道' }, { code: '320111006', name: '永宁街道' }, { code: '320111007', name: '盘城街道' }, { code: '320111008', name: '星甸街道' }, { code: '320111009', name: '桥林街道' }] },
{ code: '320113', name: '栖霞区', streets: [{ code: '320113001', name: '龙潭街道' }, { code: '320113002', name: '靖安街道' }, { code: '320113003', name: '八卦洲街道' }, { code: '320113004', name: '西岗街道' }, { code: '320113005', name: '栖霞街道' }, { code: '320113006', name: '尧化街道' }, { code: '320113007', name: '迈皋桥街道' }, { code: '320113008', name: '燕子矶街道' }, { code: '320113009', name: '马群街道' }, { code: '320113010', name: '仙林街道' }] },
{ code: '320114', name: '雨花台区', streets: [{ code: '320114001', name: '雨花街道' }, { code: '320114002', name: '赛虹桥街道' }, { code: '320114003', name: '西善桥街道' }, { code: '320114004', name: '板桥街道' }, { code: '320114005', name: '铁心桥街道' }, { code: '320114006', name: '宁南街道' }, { code: '320114007', name: '梅山街道' }, { code: '320114008', name: '古雄街道' }] },
{ code: '320115', name: '江宁区', streets: [{ code: '320115001', name: '东山街道' }, { code: '320115002', name: '秣陵街道' }, { code: '320115003', name: '汤山街道' }, { code: '320115004', name: '淳化街道' }, { code: '320115005', name: '禄口街道' }, { code: '320115006', name: '江宁街道' }, { code: '320115007', name: '谷里街道' }, { code: '320115008', name: '湖熟街道' }, { code: '320115009', name: '横溪街道' }, { code: '320115010', name: '麒麟街道' }] },
{ code: '320116', name: '六合区', streets: [{ code: '320116001', name: '雄州街道' }, { code: '320116002', name: '龙池街道' }, { code: '320116003', name: '马鞍街道' }, { code: '320116004', name: '横梁街道' }, { code: '320116005', name: '程桥街道' }, { code: '320116006', name: '金牛湖街道' }, { code: '320116007', name: '冶山街道' }, { code: '320116008', name: '竹镇镇' }, { code: '320116009', name: '马鞍镇' }] },
{ code: '320117', name: '溧水区', streets: [{ code: '320117001', name: '永阳街道' }, { code: '320117002', name: '白马镇' }, { code: '320117003', name: '东屏镇' }, { code: '320117004', name: '晶桥镇' }, { code: '320117005', name: '和凤镇' }, { code: '320117006', name: '洪蓝镇' }, { code: '320117007', name: '石湫镇' }, { code: '320117008', name: '柘塘镇' }] },
{ code: '320118', name: '高淳区', streets: [{ code: '320118001', name: '淳溪街道' }, { code: '320118002', name: '古柏街道' }, { code: '320118003', name: '漆桥镇' }, { code: '320118004', name: '固城镇' }, { code: '320118005', name: '东坝镇' }, { code: '320118006', name: '桠溪镇' }, { code: '320118007', name: '阳江镇' }, { code: '320118008', name: '砖墙镇' }, { code: '320118009', name: '荆溪镇' }] }
]
},
{
code: '320200',
name: '无锡市',
districts: [
{ code: '320205', name: '梁溪区', streets: [{ code: '320205001', name: '崇安寺街道' }, { code: '320205002', name: '清名桥街道' }, { code: '320205003', name: '迎龙桥街道' }, { code: '320205004', name: '南禅寺街道' }, { code: '320205005', name: '惠山街道' }, { code: '320205006', name: '北大街街道' }, { code: '320205007', name: '广瑞路街道' }, { code: '320205008', name: '扬名街道' }, { code: '320205009', name: '黄巷街道' }, { code: '320205010', name: '山北街道' }, { code: '320205011', name: '瞻江街道' }] },
{ code: '320211', name: '锡山区', streets: [{ code: '320211001', name: '东亭街道' }, { code: '320211002', name: '安镇街道' }, { code: '320211003', name: '厚桥街道' }, { code: '320211004', name: '东北塘街道' }, { code: '320211005', name: '锡北镇' }, { code: '320211006', name: '东港镇' }, { code: '320211007', name: '羊尖镇' }, { code: '320211008', name: '鹅湖镇' }] },
{ code: '320213', name: '惠山区', streets: [{ code: '320213001', name: '堰桥街道' }, { code: '320213002', name: '长安街道' }, { code: '320213003', name: '钱桥街道' }, { code: '320213004', name: '前洲街道' }, { code: '320213005', name: '玉祁街道' }, { code: '320213006', name: '洛社镇' }, { code: '320213007', name: '阳山镇' }] },
{ code: '320214', name: '滨湖区', streets: [{ code: '320214001', name: '河埒街道' }, { code: '320214002', name: '蠡湖街道' }, { code: '320214003', name: '荣巷街道' }, { code: '320214004', name: '蠡园街道' }, { code: '320214005', name: '华庄街道' }, { code: '320214006', name: '太湖街道' }, { code: '320214007', name: '雪浪街道' }, { code: '320214008', name: '马山街道' }] },
{ code: '320281', name: '江阴市', streets: [{ code: '320281001', name: '澄江街道' }, { code: '320281002', name: '南闸街道' }, { code: '320281003', name: '云亭街道' }, { code: '320281004', name: '夏港街道' }, { code: '320281005', name: '申港街道' }, { code: '320281006', name: '利港街道' }, { code: '320281007', name: '璜土镇' }, { code: '320281008', name: '月城镇' }, { code: '320281009', name: '青阳镇' }, { code: '320281010', name: '徐霞客镇' }, { code: '320281011', name: '华士镇' }, { code: '320281012', name: '周庄镇' }, { code: '320281013', name: '新桥镇' }, { code: '320281014', name: '长泾镇' }, { code: '320281015', name: '顾山镇' }, { code: '320281016', name: '祝塘镇' }] },
{ code: '320282', name: '宜兴市', streets: [{ code: '320282001', name: '宜城街道' }, { code: '320282002', name: '屺亭街道' }, { code: '320282003', name: '新街街道' }, { code: '320282004', name: '新庄街道' }, { code: '320282005', name: '张渚镇' }, { code: '320282006', name: '西渚镇' }, { code: '320282007', name: '太华镇' }, { code: '320282008', name: '徐舍镇' }, { code: '320282009', name: '官林镇' }, { code: '320282010', name: '杨巷镇' }, { code: '320282011', name: '新建镇' }, { code: '320282012', name: '和桥镇' }, { code: '320282013', name: '高塍镇' }, { code: '320282014', name: '万石镇' }, { code: '320282015', name: '周铁镇' }, { code: '320282016', name: '芳桥镇' }, { code: '320282017', name: '丁蜀镇' }] }
]
},
{
code: '320300',
name: '徐州市',
districts: [
{ code: '320302', name: '鼓楼区', streets: [{ code: '320302001', name: '黄楼街道' }, { code: '320302002', name: '丰财街道' }, { code: '320302003', name: '琵琶街道' }, { code: '320302004', name: '牌楼街道' }, { code: '320302005', name: '铜沛街道' }, { code: '320302006', name: '环城街道' }] },
{ code: '320303', name: '云龙区', streets: [{ code: '320303001', name: '彭城街道' }, { code: '320303002', name: '子房街道' }, { code: '320303003', name: '黄山街道' }, { code: '320303004', name: '骆驼山街道' }, { code: '320303005', name: '大郭庄街道' }, { code: '320303006', name: '翠屏山街道' }, { code: '320303007', name: '大龙湖街道' }, { code: '320303008', name: '潘塘街道' }] },
{ code: '320305', name: '贾汪区', streets: [{ code: '320305001', name: '老矿街道' }, { code: '320305002', name: '大泉街道' }, { code: '320305003', name: '大吴街道' }, { code: '320305004', name: '潘安湖街道' }, { code: '320305005', name: '青山泉镇' }, { code: '320305006', name: '紫庄镇' }, { code: '320305007', name: '塔山镇' }, { code: '320305008', name: '汴塘镇' }, { code: '320305009', name: '江庄镇' }] },
{ code: '320311', name: '泉山区', streets: [{ code: '320311001', name: '王陵街道' }, { code: '320311002', name: '七里沟街道' }, { code: '320311003', name: '永安街道' }, { code: '320311004', name: '湖滨街道' }, { code: '320311005', name: '段庄街道' }, { code: '320311006', name: '翟山街道' }, { code: '320311007', name: '奎山街道' }, { code: '320311008', name: '和平街道' }, { code: '320311009', name: '金山街道' }, { code: '320311010', name: '泰山街道' }] },
{ code: '320312', name: '铜山区', streets: [{ code: '320312001', name: '铜山街道' }, { code: '320312002', name: '新区街道' }, { code: '320312003', name: '三堡街道' }, { code: '320312004', name: '何桥镇' }, { code: '320312005', name: '黄集镇' }, { code: '320312006', name: '马坡镇' }, { code: '320312007', name: '郑集镇' }, { code: '320312008', name: '柳新镇' }, { code: '320312009', name: '刘集镇' }, { code: '320312010', name: '大彭镇' }, { code: '320312011', name: '汉王镇' }, { code: '320312012', name: '棠张镇' }, { code: '320312013', name: '张集镇' }, { code: '320312014', name: '房村镇' }, { code: '320312015', name: '伊庄镇' }, { code: '320312016', name: '单集镇' }, { code: '320312017', name: '利国镇' }, { code: '320312018', name: '大许镇' }, { code: '320312019', name: '茅村镇' }, { code: '320312020', name: '柳泉镇' }] },
{ code: '320321', name: '丰县', streets: [{ code: '320321001', name: '中阳里街道' }, { code: '320321002', name: '凤城街道' }, { code: '320321003', name: '孙楼街道' }, { code: '320321004', name: '首羡镇' }, { code: '320321005', name: '顺河镇' }, { code: '320321006', name: '常店镇' }, { code: '320321007', name: '欢口镇' }, { code: '320321008', name: '师寨镇' }, { code: '320321009', name: '华山镇' }, { code: '320321010', name: '梁寨镇' }, { code: '320321011', name: '范楼镇' }, { code: '320321012', name: '宋楼镇' }, { code: '320321013', name: '大沙河镇' }, { code: '320321014', name: '王沟镇' }, { code: '320321015', name: '赵庄镇' }] },
{ code: '320322', name: '沛县', streets: [{ code: '320322001', name: '沛城街道' }, { code: '320322002', name: '大屯街道' }, { code: '320322003', name: '汉源街道' }, { code: '320322004', name: '汉兴街道' }, { code: '320322005', name: '龙固镇' }, { code: '320322006', name: '杨屯镇' }, { code: '320322007', name: '胡寨镇' }, { code: '320322008', name: '魏庙镇' }, { code: '320322009', name: '五段镇' }, { code: '320322010', name: '张庄镇' }, { code: '320322011', name: '张寨镇' }, { code: '320322012', name: '敬安镇' }, { code: '320322013', name: '河口镇' }, { code: '320322014', name: '栖山镇' }, { code: '320322015', name: '鹿楼镇' }, { code: '320322016', name: '朱寨镇' }, { code: '320322017', name: '安国镇' }] },
{ code: '320324', name: '睢宁县', streets: [{ code: '320324001', name: '睢城街道' }, { code: '320324002', name: '金城街道' }, { code: '320324003', name: '睢河街道' }, { code: '320324004', name: '王集镇' }, { code: '320324005', name: '双沟镇' }, { code: '320324006', name: '岚山镇' }, { code: '320324007', name: '李集镇' }, { code: '320324008', name: '桃园镇' }, { code: '320324009', name: '官山镇' }, { code: '320324010', name: '高作镇' }, { code: '320324011', name: '沙集镇' }, { code: '320324012', name: '凌城镇' }, { code: '320324013', name: '邱集镇' }, { code: '320324014', name: '古邳镇' }, { code: '320324015', name: '姚集镇' }, { code: '320324016', name: '魏集镇' }, { code: '320324017', name: '梁集镇' }, { code: '320324018', name: '庆安镇' }] },
{ code: '320381', name: '新沂市', streets: [{ code: '320381001', name: '新安街道' }, { code: '320381002', name: '北沟街道' }, { code: '320381003', name: '墨河街道' }, { code: '320381004', name: '唐店街道' }, { code: '320381005', name: '瓦窑镇' }, { code: '320381006', name: '港头镇' }, { code: '320381007', name: '合沟镇' }, { code: '320381008', name: '草桥镇' }, { code: '320381009', name: '窑湾镇' }, { code: '320381010', name: '棋盘镇' }, { code: '320381011', name: '马陵山镇' }, { code: '320381012', name: '新店镇' }, { code: '320381013', name: '邵店镇' }, { code: '320381014', name: '时集镇' }, { code: '320381015', name: '高流镇' }, { code: '320381016', name: '阿湖镇' }, { code: '320381017', name: '双塘镇' }] },
{ code: '320382', name: '邳州市', streets: [{ code: '320382001', name: '东湖街道' }, { code: '320382002', name: '运河街道' }, { code: '320382003', name: '戴圩街道' }, { code: '320382004', name: '炮车街道' }, { code: '320382005', name: '邳城镇' }, { code: '320382006', name: '官湖镇' }, { code: '320382007', name: '四户镇' }, { code: '320382008', name: '宿羊山镇' }, { code: '320382009', name: '八义集镇' }, { code: '320382010', name: '土山镇' }, { code: '320382011', name: '碾庄镇' }, { code: '320382012', name: '港上镇' }, { code: '320382013', name: '邹庄镇' }, { code: '320382014', name: '占城镇' }, { code: '320382015', name: '新河镇' }, { code: '320382016', name: '八路镇' }, { code: '320382017', name: '铁富镇' }, { code: '320382018', name: '岔河镇' }, { code: '320382019', name: '戴庄镇' }, { code: '320382020', name: '车辐山镇' }, { code: '320382021', name: '燕子埠镇' }, { code: '320382022', name: '赵墩镇' }, { code: '320382023', name: '议堂镇' }, { code: '320382024', name: '邢楼镇' }, { code: '320382025', name: '陈楼镇' }] }
]
},
{
code: '320400',
name: '常州市',
districts: [
{ code: '320402', name: '天宁区', streets: [{ code: '320402001', name: '雕庄街道' }, { code: '320402002', name: '青龙街道' }, { code: '320402003', name: '茶山街道' }, { code: '320402004', name: '红梅街道' }, { code: '320402005', name: '天宁街道' }, { code: '320402006', name: '兰陵街道' }, { code: '320402007', name: '郑陆镇' }] },
{ code: '320404', name: '钟楼区', streets: [{ code: '320404001', name: '五星街道' }, { code: '320404002', name: '永红街道' }, { code: '320404003', name: '北港街道' }, { code: '320404004', name: '西林街道' }, { code: '320404005', name: '南大街街道' }, { code: '320404006', name: '荷花池街道' }, { code: '320404007', name: '新闸街道' }, { code: '320404008', name: '邹区镇' }] },
{ code: '320411', name: '新北区', streets: [{ code: '320411001', name: '河海街道' }, { code: '320411002', name: '三井街道' }, { code: '320411003', name: '龙虎塘街道' }, { code: '320411004', name: '春江街道' }, { code: '320411005', name: '孟河镇' }, { code: '320411006', name: '新桥街道' }, { code: '320411007', name: '薛家镇' }, { code: '320411008', name: '罗溪镇' }, { code: '320411009', name: '西夏墅镇' }, { code: '320411010', name: '奔牛镇' }] },
{ code: '320412', name: '武进区', streets: [{ code: '320412001', name: '湖塘镇' }, { code: '320412002', name: '牛塘镇' }, { code: '320412003', name: '洛阳镇' }, { code: '320412004', name: '遥观镇' }, { code: '320412005', name: '横林镇' }, { code: '320412006', name: '横山桥镇' }, { code: '320412007', name: '雪堰镇' }, { code: '320412008', name: '前黄镇' }, { code: '320412009', name: '礼嘉镇' }, { code: '320412010', name: '嘉泽镇' }, { code: '320412011', name: '湟里镇' }, { code: '320412012', name: '西湖街道' }, { code: '320412013', name: '南夏墅街道' }, { code: '320412014', name: '戚墅堰街道' }, { code: '320412015', name: '丁堰街道' }] },
{ code: '320413', name: '金坛区', streets: [{ code: '320413001', name: '西城街道' }, { code: '320413002', name: '金城镇' }, { code: '320413003', name: '儒林镇' }, { code: '320413004', name: '直溪镇' }, { code: '320413005', name: '朱林镇' }, { code: '320413006', name: '薛埠镇' }, { code: '320413007', name: '指前镇' }, { code: '320413008', name: '尧塘街道' }] },
{ code: '320481', name: '溧阳市', streets: [{ code: '320481001', name: '溧城街道' }, { code: '320481002', name: '古县街道' }, { code: '320481003', name: '昆仑街道' }, { code: '320481004', name: '埭头镇' }, { code: '320481005', name: '上黄镇' }, { code: '320481006', name: '戴埠镇' }, { code: '320481007', name: '天目湖镇' }, { code: '320481008', name: '别桥镇' }, { code: '320481009', name: '上兴镇' }, { code: '320481010', name: '竹箦镇' }, { code: '320481011', name: '南渡镇' }, { code: '320481012', name: '社渚镇' }] }
]
},
{
code: '320500',
name: '苏州市',
districts: [
{ code: '320505', name: '虎丘区', streets: [{ code: '320505001', name: '狮山街道' }, { code: '320505002', name: '横塘街道' }, { code: '320505003', name: '枫桥街道' }, { code: '320505004', name: '镇湖街道' }, { code: '320505005', name: '东渚街道' }, { code: '320505006', name: '通安镇' }, { code: '320505007', name: '浒墅关镇' }, { code: '320505008', name: '浒墅关经济技术开发区' }] },
{ code: '320506', name: '吴中区', streets: [{ code: '320506001', name: '长桥街道' }, { code: '320506002', name: '越溪街道' }, { code: '320506003', name: '郭巷街道' }, { code: '320506004', name: '横泾街道' }, { code: '320506005', name: '香山街道' }, { code: '320506006', name: '城南街道' }, { code: '320506007', name: '太湖街道' }, { code: '320506008', name: '甪直镇' }, { code: '320506009', name: '木渎镇' }, { code: '320506010', name: '胥口镇' }, { code: '320506011', name: '东山镇' }, { code: '320506012', name: '光福镇' }, { code: '320506013', name: '金庭镇' }, { code: '320506014', name: '临湖镇' }] },
{ code: '320507', name: '相城区', streets: [{ code: '320507001', name: '元和街道' }, { code: '320507002', name: '太平街道' }, { code: '320507003', name: '黄桥街道' }, { code: '320507004', name: '望亭镇' }, { code: '320507005', name: '黄埭镇' }, { code: '320507006', name: '渭塘镇' }, { code: '320507007', name: '阳澄湖镇' }, { code: '320507008', name: '北桥街道' }] },
{ code: '320508', name: '姑苏区', streets: [{ code: '320508001', name: '双塔街道' }, { code: '320508002', name: '沧浪街道' }, { code: '320508003', name: '胥江街道' }, { code: '320508004', name: '吴门桥街道' }, { code: '320508005', name: '葑门街道' }, { code: '320508006', name: '友新街道' }, { code: '320508007', name: '观前街道' }, { code: '320508008', name: '平江街道' }, { code: '320508009', name: '苏锦街道' }, { code: '320508010', name: '娄门街道' }, { code: '320508011', name: '城北街道' }, { code: '320508012', name: '桃花坞街道' }, { code: '320508013', name: '石路街道' }, { code: '320508014', name: '金阊街道' }, { code: '320508015', name: '留园街道' }, { code: '320508016', name: '虎丘街道' }, { code: '320508017', name: '白洋湾街道' }] },
{ code: '320509', name: '吴江区', streets: [{ code: '320509001', name: '松陵街道' }, { code: '320509002', name: '横扇街道' }, { code: '320509003', name: '八坼街道' }, { code: '320509004', name: '江陵街道' }, { code: '320509005', name: '平望镇' }, { code: '320509006', name: '盛泽镇' }, { code: '320509007', name: '七都镇' }, { code: '320509008', name: '震泽镇' }, { code: '320509009', name: '桃源镇' }, { code: '320509010', name: '黎里镇' }, { code: '320509011', name: '同里镇' }] },
{ code: '320581', name: '常熟市', streets: [{ code: '320581001', name: '虞山街道' }, { code: '320581002', name: '常福街道' }, { code: '320581003', name: '琴川街道' }, { code: '320581004', name: '莫城街道' }, { code: '320581005', name: '碧溪街道' }, { code: '320581006', name: '东南街道' }, { code: '320581007', name: '梅李镇' }, { code: '320581008', name: '海虞镇' }, { code: '320581009', name: '古里镇' }, { code: '320581010', name: '沙家浜镇' }, { code: '320581011', name: '支塘镇' }, { code: '320581012', name: '董浜镇' }, { code: '320581013', name: '尚湖镇' }, { code: '320581014', name: '辛庄镇' }] },
{ code: '320582', name: '张家港市', streets: [{ code: '320582001', name: '杨舍镇' }, { code: '320582002', name: '塘桥镇' }, { code: '320582003', name: '金港镇' }, { code: '320582004', name: '锦丰镇' }, { code: '320582005', name: '乐余镇' }, { code: '320582006', name: '凤凰镇' }, { code: '320582007', name: '南丰镇' }, { code: '320582008', name: '大新镇' }, { code: '320582009', name: '常阴沙现代农业示范园区' }] },
{ code: '320583', name: '昆山市', streets: [{ code: '320583001', name: '玉山镇' }, { code: '320583002', name: '巴城镇' }, { code: '320583003', name: '周市镇' }, { code: '320583004', name: '陆家镇' }, { code: '320583005', name: '花桥镇' }, { code: '320583006', name: '淀山湖镇' }, { code: '320583007', name: '张浦镇' }, { code: '320583008', name: '周庄镇' }, { code: '320583009', name: '千灯镇' }, { code: '320583010', name: '锦溪镇' }] },
{ code: '320585', name: '太仓市', streets: [{ code: '320585001', name: '城厢镇' }, { code: '320585002', name: '沙溪镇' }, { code: '320585003', name: '浏河镇' }, { code: '320585004', name: '浮桥镇' }, { code: '320585005', name: '璜泾镇' }, { code: '320585006', name: '双凤镇' }, { code: '320585007', name: '娄东街道' }, { code: '320585008', name: '陆渡街道' }] }
]
},
{
code: '320600',
name: '南通市',
districts: [
{ code: '320602', name: '崇川区', streets: [{ code: '320602001', name: '城东街道' }, { code: '320602002', name: '和平桥街道' }, { code: '320602003', name: '任港街道' }, { code: '320602004', name: '新城桥街道' }, { code: '320602005', name: '虹桥街道' }, { code: '320602006', name: '学田街道' }, { code: '320602007', name: '钟秀街道' }, { code: '320602008', name: '文峰街道' }, { code: '320602009', name: '观音山街道' }, { code: '320602010', name: '狼山镇街道' }, { code: '320602011', name: '永兴街道' }, { code: '320602012', name: '天生港镇街道' }, { code: '320602013', name: '幸福街道' }, { code: '320602014', name: '陈桥街道' }, { code: '320602015', name: '秦灶街道' }, { code: '320602016', name: '唐闸镇街道' }] },
{ code: '320611', name: '港闸区', streets: [{ code: '320611001', name: '永兴街道' }, { code: '320611002', name: '唐闸镇街道' }, { code: '320611003', name: '天生港镇街道' }, { code: '320611004', name: '秦灶街道' }, { code: '320611005', name: '陈桥街道' }, { code: '320611006', name: '幸福街道' }] },
{ code: '320612', name: '通州区', streets: [{ code: '320612001', name: '金沙街道' }, { code: '320612002', name: '金新街道' }, { code: '320612003', name: '兴东街道' }, { code: '320612004', name: '先锋街道' }, { code: '320612005', name: '西亭镇' }, { code: '320612006', name: '二甲镇' }, { code: '320612007', name: '东社镇' }, { code: '320612008', name: '三余镇' }, { code: '320612009', name: '十总镇' }, { code: '320612010', name: '石港镇' }, { code: '320612011', name: '刘桥镇' }, { code: '320612012', name: '平潮镇' }, { code: '320612013', name: '五接镇' }, { code: '320612014', name: '兴仁镇' }, { code: '320612015', name: '张芝山镇' }, { code: '320612016', name: '川姜镇' }] },
{ code: '320623', name: '如东县', streets: [{ code: '320623001', name: '掘港街道' }, { code: '320623002', name: '城中街道' }, { code: '320623003', name: '苴镇街道' }, { code: '320623004', name: '长沙镇' }, { code: '320623005', name: '洋口镇' }, { code: '320623006', name: '栟茶镇' }, { code: '320623007', name: '河口镇' }, { code: '320623008', name: '袁庄镇' }, { code: '320623009', name: '双甸镇' }, { code: '320623010', name: '新店镇' }, { code: '320623011', name: '马塘镇' }, { code: '320623012', name: '丰利镇' }, { code: '320623013', name: '曹埠镇' }, { code: '320623014', name: '大豫镇' }] },
{ code: '320681', name: '启东市', streets: [{ code: '320681001', name: '汇龙镇' }, { code: '320681002', name: '北新镇' }, { code: '320681003', name: '惠萍镇' }, { code: '320681004', name: '寅阳镇' }, { code: '320681005', name: '东海镇' }, { code: '320681006', name: '近海镇' }, { code: '320681007', name: '南阳镇' }, { code: '320681008', name: '海复镇' }, { code: '320681009', name: '合作镇' }, { code: '320681010', name: '王鲍镇' }, { code: '320681011', name: '吕四港镇' }, { code: '320681012', name: '启隆镇' }] },
{ code: '320682', name: '如皋市', streets: [{ code: '320682001', name: '如城街道' }, { code: '320682002', name: '城北街道' }, { code: '320682003', name: '城南街道' }, { code: '320682004', name: '东陈镇' }, { code: '320682005', name: '丁堰镇' }, { code: '320682006', name: '白蒲镇' }, { code: '320682007', name: '下原镇' }, { code: '320682008', name: '九华镇' }, { code: '320682009', name: '石庄镇' }, { code: '320682010', name: '长江镇' }, { code: '320682011', name: '吴窑镇' }, { code: '320682012', name: '江安镇' }, { code: '320682013', name: '搬经镇' }, { code: '320682014', name: '磨头镇' }] },
{ code: '320684', name: '海门市', streets: [{ code: '320684001', name: '海门街道' }, { code: '320684002', name: '滨江街道' }, { code: '320684003', name: '三厂街道' }, { code: '320684004', name: '三星镇' }, { code: '320684005', name: '常乐镇' }, { code: '320684006', name: '悦来镇' }, { code: '320684007', name: '四甲镇' }, { code: '320684008', name: '余东镇' }, { code: '320684009', name: '正余镇' }, { code: '320684010', name: '包场镇' }, { code: '320684011', name: '临江镇' }, { code: '320684012', name: '海永镇' }] },
{ code: '320685', name: '海安市', streets: [{ code: '320685001', name: '海安街道' }, { code: '320685002', name: '胡集街道' }, { code: '320685003', name: '孙庄街道' }, { code: '320685004', name: '隆政街道' }, { code: '320685005', name: '城东镇' }, { code: '320685006', name: '曲塘镇' }, { code: '320685007', name: '李堡镇' }, { code: '320685008', name: '角斜镇' }, { code: '320685009', name: '大公镇' }, { code: '320685010', name: '雅周镇' }, { code: '320685011', name: '白甸镇' }, { code: '320685012', name: '南莫镇' }, { code: '320685013', name: '墩头镇' }] }
]
},
{
code: '320700',
name: '连云港市',
districts: [
{ code: '320703', name: '连云区', streets: [{ code: '320703001', name: '墟沟街道' }, { code: '320703002', name: '连云街道' }, { code: '320703003', name: '云山街道' }, { code: '320703004', name: '板桥街道' }, { code: '320703005', name: '连岛街道' }, { code: '320703006', name: '徐圩街道' }, { code: '320703007', name: '海州湾街道' }, { code: '320703008', name: '宿城街道' }, { code: '320703009', name: '高公岛街道' }, { code: '320703010', name: '前三岛乡' }] },
{ code: '320706', name: '海州区', streets: [{ code: '320706001', name: '朐阳街道' }, { code: '320706002', name: '浦西街道' }, { code: '320706003', name: '新东街道' }, { code: '320706004', name: '新南街道' }, { code: '320706005', name: '路南街道' }, { code: '320706006', name: '新海街道' }, { code: '320706007', name: '花果山街道' }, { code: '320706008', name: '洪门街道' }, { code: '320706009', name: '宁海街道' }, { code: '320706010', name: '幸福路街道' }, { code: '320706011', name: '浦南镇' }, { code: '320706012', name: '新坝镇' }, { code: '320706013', name: '锦屏镇' }, { code: '320706014', name: '板浦镇' }] },
{ code: '320707', name: '赣榆区', streets: [{ code: '320707001', name: '青口镇' }, { code: '320707002', name: '柘汪镇' }, { code: '320707003', name: '石桥镇' }, { code: '320707004', name: '金山镇' }, { code: '320707005', name: '黑林镇' }, { code: '320707006', name: '厉庄镇' }, { code: '320707007', name: '海头镇' }, { code: '320707008', name: '塔山镇' }, { code: '320707009', name: '赣马镇' }, { code: '320707010', name: '班庄镇' }, { code: '320707011', name: '城头镇' }, { code: '320707012', name: '城西镇' }, { code: '320707013', name: '宋庄镇' }, { code: '320707014', name: '沙河镇' }] },
{ code: '320722', name: '东海县', streets: [{ code: '320722001', name: '牛山街道' }, { code: '320722002', name: '石榴街道' }, { code: '320722003', name: '白塔埠镇' }, { code: '320722004', name: '黄川镇' }, { code: '320722005', name: '石梁河镇' }, { code: '320722006', name: '青湖镇' }, { code: '320722007', name: '温泉镇' }, { code: '320722008', name: '双店镇' }, { code: '320722009', name: '桃林镇' }, { code: '320722010', name: '洪庄镇' }, { code: '320722011', name: '安峰镇' }, { code: '320722012', name: '房山镇' }, { code: '320722013', name: '平明镇' }, { code: '320722014', name: '驼峰乡' }, { code: '320722015', name: '李埝乡' }, { code: '320722016', name: '山左口乡' }, { code: '320722017', name: '石湖乡' }, { code: '320722018', name: '曲阳乡' }, { code: '320722019', name: '张湾乡' }] },
{ code: '320723', name: '灌云县', streets: [{ code: '320723001', name: '伊山镇' }, { code: '320723002', name: '杨集镇' }, { code: '320723003', name: '燕尾港镇' }, { code: '320723004', name: '同兴镇' }, { code: '320723005', name: '四队镇' }, { code: '320723006', name: '圩丰镇' }, { code: '320723007', name: '龙苴镇' }, { code: '320723008', name: '图河镇' }, { code: '320723009', name: '下车镇' }, { code: '320723010', name: '东王集镇' }, { code: '320723011', name: '侍庄街道' }, { code: '320723012', name: '小伊镇' }, { code: '320723013', name: '南岗镇' }] },
{ code: '320724', name: '灌南县', streets: [{ code: '320724001', name: '新安镇' }, { code: '320724002', name: '堆沟港镇' }, { code: '320724003', name: '田楼镇' }, { code: '320724004', name: '北陈集镇' }, { code: '320724005', name: '张店镇' }, { code: '320724006', name: '三口镇' }, { code: '320724007', name: '孟兴庄镇' }, { code: '320724008', name: '汤沟镇' }, { code: '320724009', name: '百禄镇' }, { code: '320724010', name: '新集镇' }, { code: '320724011', name: '李集镇' }] }
]
},
{
code: '320800',
name: '淮安市',
districts: [
{ code: '320803', name: '淮安区', streets: [{ code: '320803001', name: '淮城街道' }, { code: '320803002', name: '河下街道' }, { code: '320803003', name: '山阳街道' }, { code: '320803004', name: '平桥镇' }, { code: '320803005', name: '朱桥镇' }, { code: '320803006', name: '施河镇' }, { code: '320803007', name: '车桥镇' }, { code: '320803008', name: '流均镇' }, { code: '320803009', name: '博里镇' }, { code: '320803010', name: '复兴镇' }, { code: '320803011', name: '苏嘴镇' }, { code: '320803012', name: '钦工镇' }, { code: '320803013', name: '顺河镇' }, { code: '320803014', name: '季桥镇' }, { code: '320803015', name: '席桥镇' }, { code: '320803016', name: '林集镇' }, { code: '320803017', name: '南闸镇' }, { code: '320803018', name: '范集镇' }, { code: '320803019', name: '建淮乡' }, { code: '320803020', name: '茭陵乡' }, { code: '320803021', name: '宋集乡' }, { code: '320803022', name: '城东乡' }, { code: '320803023', name: '三堡乡' }] },
{ code: '320804', name: '淮阴区', streets: [{ code: '320804001', name: '王家营街道' }, { code: '320804002', name: '长江路街道' }, { code: '320804003', name: '新渡口街道' }, { code: '320804004', name: '古清口街道' }, { code: '320804005', name: '南陈集镇' }, { code: '320804006', name: '丁集镇' }, { code: '320804007', name: '渔沟镇' }, { code: '320804008', name: '三树镇' }, { code: '320804009', name: '徐溜镇' }, { code: '320804010', name: '刘老庄镇' }, { code: '320804011', name: '高家堰镇' }, { code: '320804012', name: '马头镇' }, { code: '320804013', name: '码头镇' }] },
{ code: '320812', name: '清江浦区', streets: [{ code: '320812001', name: '府前街道' }, { code: '320812002', name: '长西街道' }, { code: '320812003', name: '淮海街道' }, { code: '320812004', name: '长东街道' }, { code: '320812005', name: '柳树湾街道' }, { code: '320812006', name: '水渡口街道' }, { code: '320812007', name: '清河街道' }, { code: '320812008', name: '清浦街道' }, { code: '320812009', name: '闸口街道' }, { code: '320812010', name: '浦楼街道' }, { code: '320812011', name: '武墩街道' }, { code: '320812012', name: '盐河街道' }, { code: '320812013', name: '和平镇' }, { code: '320812014', name: '黄码镇' }, { code: '320812015', name: '宁连路办事处' }] },
{ code: '320813', name: '洪泽区', streets: [{ code: '320813001', name: '高良涧街道' }, { code: '320813002', name: '朱坝街道' }, { code: '320813003', name: '黄集街道' }, { code: '320813004', name: '蒋坝镇' }, { code: '320813005', name: '岔河镇' }, { code: '320813006', name: '西顺河镇' }, { code: '320813007', name: '老子山镇' }, { code: '320813008', name: '三河镇' }, { code: '320813009', name: '东双沟镇' }] },
{ code: '320826', name: '涟水县', streets: [{ code: '320826001', name: '涟城街道' }, { code: '320826002', name: '朱码街道' }, { code: '320826003', name: '陈师街道' }, { code: '320826004', name: '保滩街道' }, { code: '320826005', name: '高沟镇' }, { code: '320826006', name: '唐集镇' }, { code: '320826007', name: '大东镇' }, { code: '320826008', name: '五港镇' }, { code: '320826009', name: '梁岔镇' }, { code: '320826010', name: '石湖镇' }, { code: '320826011', name: '岔庙镇' }, { code: '320826012', name: '东胡集镇' }, { code: '320826013', name: '南集镇' }, { code: '320826014', name: '义兴镇' }, { code: '320826015', name: '成集镇' }, { code: '320826016', name: '红窑镇' }, { code: '320826017', name: '黄营镇' }] },
{ code: '320830', name: '盱眙县', streets: [{ code: '320830001', name: '盱城街道' }, { code: '320830002', name: '太和街道' }, { code: '320830003', name: '古桑街道' }, { code: '320830004', name: '马坝镇' }, { code: '320830005', name: '官滩镇' }, { code: '320830006', name: '桂五镇' }, { code: '320830007', name: '管镇镇' }, { code: '320830008', name: '河桥镇' }, { code: '320830009', name: '鲍集镇' }, { code: '320830010', name: '黄花塘镇' }, { code: '320830011', name: '明祖陵镇' }, { code: '320830012', name: '铁佛镇' }, { code: '320830013', name: '淮河镇' }, { code: '320830014', name: '仇集镇' }, { code: '320830015', name: '观音寺镇' }, { code: '320830016', name: '天泉湖镇' }, { code: '320830017', name: '维桥乡' }, { code: '320830018', name: '穆店乡' }, { code: '320830019', name: '兴隆乡' }] },
{ code: '320831', name: '金湖县', streets: [{ code: '320831001', name: '黎城街道' }, { code: '320831002', name: '戴楼街道' }, { code: '320831003', name: '金北街道' }, { code: '320831004', name: '金南镇' }, { code: '320831005', name: '塔集镇' }, { code: '320831006', name: '前锋镇' }, { code: '320831007', name: '吕良镇' }, { code: '320831008', name: '银涂镇' }, { code: '320831009', name: '闵桥镇' }, { code: '320831010', name: '涂沟镇' }] }
]
},
{
code: '320900',
name: '盐城市',
districts: [
{ code: '320902', name: '亭湖区', streets: [{ code: '320902001', name: '五星街道' }, { code: '320902002', name: '文峰街道' }, { code: '320902003', name: '先锋街道' }, { code: '320902004', name: '毓龙街道' }, { code: '320902005', name: '大洋街道' }, { code: '320902006', name: '新洋街道' }, { code: '320902007', name: '黄海街道' }, { code: '320902008', name: '新城街道' }, { code: '320902009', name: '便仓镇' }, { code: '320902010', name: '南洋镇' }, { code: '320902011', name: '新兴镇' }, { code: '320902012', name: '盐东镇' }, { code: '320902013', name: '黄尖镇' }, { code: '320902014', name: '步凤镇' }, { code: '320902015', name: '环保产业园' }, { code: '320902016', name: '开发区' }] },
{ code: '320903', name: '盐都区', streets: [{ code: '320903001', name: '张庄街道' }, { code: '320903002', name: '盐龙街道' }, { code: '320903003', name: '潘黄街道' }, { code: '320903004', name: '滨湖街道' }, { code: '320903005', name: '北龙港街道' }, { code: '320903006', name: '楼王镇' }, { code: '320903007', name: '学富镇' }, { code: '320903008', name: '尚庄镇' }, { code: '320903009', name: '秦南镇' }, { code: '320903010', name: '龙冈镇' }, { code: '320903011', name: '郭猛镇' }, { code: '320903012', name: '大冈镇' }, { code: '320903013', name: '新区' }] },
{ code: '320904', name: '大丰区', streets: [{ code: '320904001', name: '大中街道' }, { code: '320904002', name: '丰华街道' }, { code: '320904003', name: '南阳镇' }, { code: '320904004', name: '万盈镇' }, { code: '320904005', name: '小海镇' }, { code: '320904006', name: '大桥镇' }, { code: '320904007', name: '草庙镇' }, { code: '320904008', name: '西团镇' }, { code: '320904009', name: '白驹镇' }, { code: '320904010', name: '刘庄镇' }, { code: '320904011', name: '新丰镇' }, { code: '320904012', name: '三龙镇' }, { code: '320904013', name: '草堰镇' }] },
{ code: '320921', name: '响水县', streets: [{ code: '320921001', name: '响水镇' }, { code: '320921002', name: '陈家港镇' }, { code: '320921003', name: '小尖镇' }, { code: '320921004', name: '黄圩镇' }, { code: '320921005', name: '大有镇' }, { code: '320921006', name: '双港镇' }, { code: '320921007', name: '南河镇' }, { code: '320921008', name: '运河镇' }, { code: '320921009', name: '县开发区' }, { code: '320921010', name: '生态化工园区' }] },
{ code: '320922', name: '滨海县', streets: [{ code: '320922001', name: '东坎街道' }, { code: '320922002', name: '坎南街道' }, { code: '320922003', name: '坎北街道' }, { code: '320922004', name: '五汛镇' }, { code: '320922005', name: '蔡桥镇' }, { code: '320922006', name: '正红镇' }, { code: '320922007', name: '通榆镇' }, { code: '320922008', name: '界牌镇' }, { code: '320922009', name: '八巨镇' }, { code: '320922010', name: '八滩镇' }, { code: '320922011', name: '滨淮镇' }, { code: '320922012', name: '天场镇' }, { code: '320922013', name: '陈涛镇' }, { code: '320922014', name: '滨海港镇' }] },
{ code: '320923', name: '阜宁县', streets: [{ code: '320923001', name: '阜城街道' }, { code: '320923002', name: '吴滩街道' }, { code: '320923003', name: '花园街道' }, { code: '320923004', name: '金沙湖街道' }, { code: '320923005', name: '沟墩镇' }, { code: '320923006', name: '陈良镇' }, { code: '320923007', name: '三灶镇' }, { code: '320923008', name: '郭墅镇' }, { code: '320923009', name: '新沟镇' }, { code: '320923010', name: '陈集镇' }, { code: '320923011', name: '羊寨镇' }, { code: '320923012', name: '芦蒲镇' }, { code: '320923013', name: '板湖镇' }, { code: '320923014', name: '东沟镇' }, { code: '320923015', name: '益林镇' }, { code: '320923016', name: '古河镇' }, { code: '320923017', name: '罗桥镇' }] },
{ code: '320924', name: '射阳县', streets: [{ code: '320924001', name: '合德镇' }, { code: '320924002', name: '临海镇' }, { code: '320924003', name: '千秋镇' }, { code: '320924004', name: '四明镇' }, { code: '320924005', name: '海河镇' }, { code: '320924006', name: '海通镇' }, { code: '320924007', name: '兴桥镇' }, { code: '320924008', name: '新坍镇' }, { code: '320924009', name: '长荡镇' }, { code: '320924010', name: '盘湾镇' }, { code: '320924011', name: '特庸镇' }, { code: '320924012', name: '洋马镇' }, { code: '320924013', name: '黄沙港镇' }, { code: '320924014', name: '县经济开发区' }] },
{ code: '320925', name: '建湖县', streets: [{ code: '320925001', name: '近湖街道' }, { code: '320925002', name: '塘河街道' }, { code: '320925003', name: '钟庄街道' }, { code: '320925004', name: '建阳镇' }, { code: '320925005', name: '九龙口镇' }, { code: '320925006', name: '恒济镇' }, { code: '320925007', name: '颜单镇' }, { code: '320925008', name: '沿河镇' }, { code: '320925009', name: '芦沟镇' }, { code: '320925010', name: '庆丰镇' }, { code: '320925011', name: '上冈镇' }, { code: '320925012', name: '高作镇' }, { code: '320925013', name: '宝塔镇' }, { code: '320925014', name: '冈西镇' }] },
{ code: '320981', name: '东台市', streets: [{ code: '320981001', name: '东台镇' }, { code: '320981002', name: '溱东镇' }, { code: '320981003', name: '时堰镇' }, { code: '320981004', name: '五烈镇' }, { code: '320981005', name: '梁垛镇' }, { code: '320981006', name: '安丰镇' }, { code: '320981007', name: '南沈灶镇' }, { code: '320981008', name: '富安镇' }, { code: '320981009', name: '唐洋镇' }, { code: '320981010', name: '新街镇' }, { code: '320981011', name: '许河镇' }, { code: '320981012', name: '三仓镇' }, { code: '320981013', name: '头灶镇' }, { code: '320981014', name: '弶港镇' }, { code: '320981015', name: '东台经济开发区' }, { code: '320981016', name: '沿海经济区' }, { code: '320981017', name: '西溪景区' }, { code: '320981018', name: '黄海森林公园' }] }
]
},
{
code: '321000',
name: '扬州市',
districts: [
{ code: '321002', name: '广陵区', streets: [{ code: '321002001', name: '东关街道' }, { code: '321002002', name: '汶河街道' }, { code: '321002003', name: '文峰街道' }, { code: '321002004', name: '曲江街道' }, { code: '321002005', name: '汤汪街道' }, { code: '321002006', name: '李典镇' }, { code: '321002007', name: '沙头镇' }, { code: '321002008', name: '头桥镇' }, { code: '321002009', name: '湾头镇' }, { code: '321002010', name: '杭集镇' }, { code: '321002011', name: '泰安镇' }, { code: '321002012', name: '产业园' }] },
{ code: '321003', name: '邗江区', streets: [{ code: '321003001', name: '邗上街道' }, { code: '321003002', name: '蒋王街道' }, { code: '321003003', name: '汊河街道' }, { code: '321003004', name: '双桥街道' }, { code: '321003005', name: '梅岭街道' }, { code: '321003006', name: '甘泉街道' }, { code: '321003007', name: '新盛街道' }, { code: '321003008', name: '竹西街道' }, { code: '321003009', name: '西湖街道' }, { code: '321003010', name: '施桥镇' }, { code: '321003011', name: '八里镇' }, { code: '321003012', name: '朴席镇' }, { code: '321003013', name: '槐泗镇' }, { code: '321003014', name: '瓜洲镇' }, { code: '321003015', name: '杨庙镇' }, { code: '321003016', name: '杨寿镇' }, { code: '321003017', name: '方巷镇' }] },
{ code: '321012', name: '江都区', streets: [{ code: '321012001', name: '仙女镇' }, { code: '321012002', name: '小纪镇' }, { code: '321012003', name: '武坚镇' }, { code: '321012004', name: '樊川镇' }, { code: '321012005', name: '真武镇' }, { code: '321012006', name: '宜陵镇' }, { code: '321012007', name: '丁沟镇' }, { code: '321012008', name: '郭村镇' }, { code: '321012009', name: '邵伯镇' }, { code: '321012010', name: '丁伙镇' }, { code: '321012011', name: '大桥镇' }, { code: '321012012', name: '吴桥镇' }, { code: '321012013', name: '浦头镇' }] },
{ code: '321023', name: '宝应县', streets: [{ code: '321023001', name: '安宜镇' }, { code: '321023002', name: '氾水镇' }, { code: '321023003', name: '夏集镇' }, { code: '321023004', name: '柳堡镇' }, { code: '321023005', name: '射阳湖镇' }, { code: '321023006', name: '广洋湖镇' }, { code: '321023007', name: '鲁垛镇' }, { code: '321023008', name: '小官庄镇' }, { code: '321023009', name: '望直港镇' }, { code: '321023010', name: '曹甸镇' }, { code: '321023011', name: '西安丰镇' }, { code: '321023012', name: '山阳镇' }, { code: '321023013', name: '黄塍镇' }, { code: '321023014', name: '泾河镇' }] },
{ code: '321081', name: '仪征市', streets: [{ code: '321081001', name: '真州镇' }, { code: '321081002', name: '新集镇' }, { code: '321081003', name: '新城镇' }, { code: '321081004', name: '马集镇' }, { code: '321081005', name: '刘集镇' }, { code: '321081006', name: '陈集镇' }, { code: '321081007', name: '大仪镇' }, { code: '321081008', name: '月塘镇' }, { code: '321081009', name: '青山镇' }, { code: '321081010', name: '枣林湾' }] },
{ code: '321084', name: '高邮市', streets: [{ code: '321084001', name: '高邮街道' }, { code: '321084002', name: '龙虬镇' }, { code: '321084003', name: '汤庄镇' }, { code: '321084004', name: '卸甲镇' }, { code: '321084005', name: '三垛镇' }, { code: '321084006', name: '甘垛镇' }, { code: '321084007', name: '界首镇' }, { code: '321084008', name: '周山镇' }, { code: '321084009', name: '临泽镇' }, { code: '321084010', name: '送桥镇' }, { code: '321084011', name: '菱塘回族乡' }, { code: '321084012', name: '城南经济新区' }, { code: '321084013', name: '马棚街道' }] }
]
},
{
code: '321100',
name: '镇江市',
districts: [
{ code: '321102', name: '京口区', streets: [{ code: '321102001', name: '正东路街道' }, { code: '321102002', name: '健康路街道' }, { code: '321102003', name: '大市口街道' }, { code: '321102004', name: '四牌楼街道' }, { code: '321102005', name: '象山街道' }, { code: '321102006', name: '谏壁街道' }, { code: '321102007', name: '丁卯街道' }, { code: '321102008', name: '大港街道' }, { code: '321102009', name: '姚桥镇' }, { code: '321102010', name: '大路镇' }, { code: '321102011', name: '丁岗镇' }] },
{ code: '321111', name: '润州区', streets: [{ code: '321111001', name: '宝塔路街道' }, { code: '321111002', name: '和平路街道' }, { code: '321111003', name: '金山街道' }, { code: '321111004', name: '七里甸街道' }, { code: '321111005', name: '蒋乔街道' }, { code: '321111006', name: '官塘桥街道' }, { code: '321111007', name: '韦岗街道' }, { code: '321111008', name: '南山街道' }] },
{ code: '321112', name: '丹徒区', streets: [{ code: '321112001', name: '高资街道' }, { code: '321112002', name: '高桥镇' }, { code: '321112003', name: '辛丰镇' }, { code: '321112004', name: '谷阳镇' }, { code: '321112005', name: '上党镇' }, { code: '321112006', name: '宝堰镇' }, { code: '321112007', name: '世业镇' }, { code: '321112008', name: '宜城街道' }, { code: '321112009', name: '江心洲生态农业园区' }] },
{ code: '321181', name: '丹阳市', streets: [{ code: '321181001', name: '云阳街道' }, { code: '321181002', name: '曲阿街道' }, { code: '321181003', name: '司徒镇' }, { code: '321181004', name: '延陵镇' }, { code: '321181005', name: '珥陵镇' }, { code: '321181006', name: '导墅镇' }, { code: '321181007', name: '皇塘镇' }, { code: '321181008', name: '吕城镇' }, { code: '321181009', name: '陵口镇' }, { code: '321181010', name: '访仙镇' }, { code: '321181011', name: '界牌镇' }, { code: '321181012', name: '丹北镇' }, { code: '321181013', name: '经济开发区' }] },
{ code: '321182', name: '扬中市', streets: [{ code: '321182001', name: '三茅街道' }, { code: '321182002', name: '新坝镇' }, { code: '321182003', name: '油坊镇' }, { code: '321182004', name: '八桥镇' }, { code: '321182005', name: '西来桥镇' }, { code: '321182006', name: '经济开发区' }] },
{ code: '321183', name: '句容市', streets: [{ code: '321183001', name: '华阳街道' }, { code: '321183002', name: '下蜀镇' }, { code: '321183003', name: '白兔镇' }, { code: '321183004', name: '边城镇' }, { code: '321183005', name: '茅山镇' }, { code: '321183006', name: '后白镇' }, { code: '321183007', name: '郭庄镇' }, { code: '321183008', name: '天王镇' }, { code: '321183009', name: '宝华镇' }, { code: '321183010', name: '黄梅街道' }, { code: '321183011', name: '茅山管委会' }] }
]
},
{
code: '321200',
name: '泰州市',
districts: [
{ code: '321202', name: '海陵区', streets: [{ code: '321202001', name: '城东街道' }, { code: '321202002', name: '城西街道' }, { code: '321202003', name: '城南街道' }, { code: '321202004', name: '城中街道' }, { code: '321202005', name: '城北街道' }, { code: '321202006', name: '京泰路街道' }, { code: '321202007', name: '红旗街道' }, { code: '321202008', name: '凤凰街道' }, { code: '321202009', name: '寺巷街道' }, { code: '321202010', name: '明珠街道' }, { code: '321202011', name: '九龙镇' }, { code: '321202012', name: '苏陈镇' }, { code: '321202013', name: '罡杨镇' }, { code: '321202014', name: '华港镇' }] },
{ code: '321203', name: '高港区', streets: [{ code: '321203001', name: '口岸街道' }, { code: '321203002', name: '刁铺街道' }, { code: '321203003', name: '许庄街道' }, { code: '321203004', name: '永安洲镇' }, { code: '321203005', name: '白马镇' }, { code: '321203006', name: '胡庄镇' }, { code: '321203007', name: '大泗镇' }, { code: '321203008', name: '野徐镇' }] },
{ code: '321204', name: '姜堰区', streets: [{ code: '321204001', name: '罗塘街道' }, { code: '321204002', name: '三水街道' }, { code: '321204003', name: '天目山街道' }, { code: '321204004', name: '梁徐街道' }, { code: '321204005', name: '溱潼镇' }, { code: '321204006', name: '蒋垛镇' }, { code: '321204007', name: '顾高镇' }, { code: '321204008', name: '大伦镇' }, { code: '321204009', name: '张甸镇' }, { code: '321204010', name: '淤溪镇' }, { code: '321204011', name: '白米镇' }, { code: '321204012', name: '娄庄镇' }, { code: '321204013', name: '沈高镇' }, { code: '321204014', name: '兴泰镇' }, { code: '321204015', name: '俞垛镇' }, { code: '321204016', name: '华港镇' }, { code: '321204017', name: '桥头镇' }, { code: '321204018', name: '开发区' }] },
{ code: '321281', name: '兴化市', streets: [{ code: '321281001', name: '昭阳街道' }, { code: '321281002', name: '临城街道' }, { code: '321281003', name: '垛田街道' }, { code: '321281004', name: '戴窑镇' }, { code: '321281005', name: '合陈镇' }, { code: '321281006', name: '永丰镇' }, { code: '321281007', name: '新垛镇' }, { code: '321281008', name: '安丰镇' }, { code: '321281009', name: '海南镇' }, { code: '321281010', name: '钓鱼镇' }, { code: '321281011', name: '大邹镇' }, { code: '321281012', name: '沙沟镇' }, { code: '321281013', name: '中堡镇' }, { code: '321281014', name: '李中镇' }, { code: '321281015', name: '西鲍乡' }, { code: '321281016', name: '周奋乡' }, { code: '321281017', name: '缸顾乡' }, { code: '321281018', name: '下圩镇' }, { code: '321281019', name: '昌荣镇' }, { code: '321281020', name: '茅山镇' }, { code: '321281021', name: '周庄镇' }, { code: '321281022', name: '陈堡镇' }, { code: '321281023', name: '戴南镇' }, { code: '321281024', name: '张郭镇' }, { code: '321281025', name: '陶庄镇' }, { code: '321281026', name: '大垛镇' }, { code: '321281027', name: '竹泓镇' }, { code: '321281028', name: '沈伦镇' }, { code: '321281029', name: '大营镇' }, { code: '321281030', name: '荻垛镇' }, { code: '321281031', name: '千垛镇' }, { code: '321281032', name: '兴东镇' }] },
{ code: '321282', name: '靖江市', streets: [{ code: '321282001', name: '靖城街道' }, { code: '321282002', name: '新桥镇' }, { code: '321282003', name: '东兴镇' }, { code: '321282004', name: '斜桥镇' }, { code: '321282005', name: '西来镇' }, { code: '321282006', name: '季市镇' }, { code: '321282007', name: '孤山镇' }, { code: '321282008', name: '生祠镇' }, { code: '321282009', name: '马桥镇' }, { code: '321282010', name: '城南办事处' }, { code: '321282011', name: '城北园区' }, { code: '321282012', name: '江阴园区' }] },
{ code: '321283', name: '泰兴市', streets: [{ code: '321283001', name: '济川街道' }, { code: '321283002', name: '延令街道' }, { code: '321283003', name: '姚王街道' }, { code: '321283004', name: '虹桥镇' }, { code: '321283005', name: '张桥镇' }, { code: '321283006', name: '曲霞镇' }, { code: '321283007', name: '广陵镇' }, { code: '321283008', name: '滨江镇' }, { code: '321283009', name: '宣堡镇' }, { code: '321283010', name: '河失镇' }, { code: '321283011', name: '新街镇' }, { code: '321283012', name: '珊瑚镇' }, { code: '321283013', name: '古溪镇' }, { code: '321283014', name: '分界镇' }, { code: '321283015', name: '黄桥镇' }, { code: '321283016', name: '元竹镇' }, { code: '321283017', name: '根思乡' }] }
]
},
{
code: '321300',
name: '宿迁市',
districts: [
{ code: '321302', name: '宿城区', streets: [{ code: '321302001', name: '幸福街道' }, { code: '321302002', name: '项里街道' }, { code: '321302003', name: '河滨街道' }, { code: '321302004', name: '古城街道' }, { code: '321302005', name: '双庄街道' }, { code: '321302006', name: '支口街道' }, { code: '321302007', name: '耿车镇' }, { code: '321302008', name: '埠子镇' }, { code: '321302009', name: '龙河镇' }, { code: '321302010', name: '洋北镇' }, { code: '321302011', name: '中扬镇' }, { code: '321302012', name: '陈集镇' }, { code: '321302013', name: '蔡集镇' }, { code: '321302014', name: '王官集镇' }, { code: '321302015', name: '屠园镇' }, { code: '321302016', name: '开发区' }] },
{ code: '321311', name: '宿豫区', streets: [{ code: '321311001', name: '顺河街道' }, { code: '321311002', name: '豫新街道' }, { code: '321311003', name: '下相街道' }, { code: '321311004', name: '仰化镇' }, { code: '321311005', name: '大兴镇' }, { code: '321311006', name: '丁嘴镇' }, { code: '321311007', name: '来龙镇' }, { code: '321311008', name: '陆集镇' }, { code: '321311009', name: '关庙镇' }, { code: '321311010', name: '侍岭镇' }, { code: '321311011', name: '新庄镇' }, { code: '321311012', name: '晓店镇' }, { code: '321311013', name: '皂河镇' }, { code: '321311014', name: '曹集乡' }, { code: '321311015', name: '保安乡' }, { code: '321311016', name: '井头乡' }, { code: '321311017', name: '黄墩镇' }, { code: '321311018', name: '骆马湖旅游度假区' }] },
{ code: '321322', name: '沭阳县', streets: [{ code: '321322001', name: '沭城街道' }, { code: '321322002', name: '南湖街道' }, { code: '321322003', name: '梦溪街道' }, { code: '321322004', name: '十字街道' }, { code: '321322005', name: '章集街道' }, { code: '321322006', name: '七雄街道' }, { code: '321322007', name: '汤涧镇' }, { code: '321322008', name: '胡集镇' }, { code: '321322009', name: '钱集镇' }, { code: '321322010', name: '塘沟镇' }, { code: '321322011', name: '马厂镇' }, { code: '321322012', name: '沂涛镇' }, { code: '321322013', name: '庙头镇' }, { code: '321322014', name: '韩山镇' }, { code: '321322015', name: '华冲镇' }, { code: '321322016', name: '桑墟镇' }, { code: '321322017', name: '悦来镇' }, { code: '321322018', name: '刘集镇' }, { code: '321322019', name: '李恒镇' }, { code: '321322020', name: '扎下镇' }, { code: '321322021', name: '颜集镇' }, { code: '321322022', name: '潼阳镇' }, { code: '321322023', name: '龙庙镇' }, { code: '321322024', name: '高墟镇' }, { code: '321322025', name: '耿圩镇' }, { code: '321322026', name: '汤涧镇' }, { code: '321322027', name: '新河镇' }, { code: '321322028', name: '贤官镇' }, { code: '321322029', name: '吴集镇' }, { code: '321322030', name: '湖东镇' }, { code: '321322031', name: '青伊湖镇' }, { code: '321322032', name: '北丁集乡' }, { code: '321322033', name: '周集乡' }, { code: '321322034', name: '东小店乡' }, { code: '321322035', name: '张圩乡' }, { code: '321322036', name: '茆圩乡' }, { code: '321322037', name: '西圩乡' }, { code: '321322038', name: '万匹乡' }, { code: '321322039', name: '官墩乡' }] },
{ code: '321323', name: '泗阳县', streets: [{ code: '321323001', name: '众兴街道' }, { code: '321323002', name: '城厢街道' }, { code: '321323003', name: '来安街道' }, { code: '321323004', name: '王集镇' }, { code: '321323005', name: '新袁镇' }, { code: '321323006', name: '李口镇' }, { code: '321323007', name: '临河镇' }, { code: '321323008', name: '穿城镇' }, { code: '321323009', name: '爱园镇' }, { code: '321323010', name: '庄圩乡' }, { code: '321323011', name: '里仁乡' }, { code: '321323012', name: '三庄乡' }, { code: '321323013', name: '南刘集乡' }, { code: '321323014', name: '八集乡' }, { code: '321323015', name: '张家圩镇' }, { code: '321323016', name: '高渡镇' }, { code: '321323017', name: '卢集镇' }, { code: '321323018', name: '裴圩镇' }] },
{ code: '321324', name: '泗洪县', streets: [{ code: '321324001', name: '青阳街道' }, { code: '321324002', name: '大楼街道' }, { code: '321324003', name: '重岗街道' }, { code: '321324004', name: '双沟镇' }, { code: '321324005', name: '上塘镇' }, { code: '321324006', name: '魏营镇' }, { code: '321324007', name: '临淮镇' }, { code: '321324008', name: '半城镇' }, { code: '321324009', name: '孙园镇' }, { code: '321324010', name: '梅花镇' }, { code: '321324011', name: '归仁镇' }, { code: '321324012', name: '金锁镇' }, { code: '321324013', name: '朱湖镇' }, { code: '321324014', name: '界集镇' }, { code: '321324015', name: '太平镇' }, { code: '321324016', name: '龙集镇' }, { code: '321324017', name: '四河乡' }, { code: '321324018', name: '峰山乡' }, { code: '321324019', name: '天岗湖乡' }, { code: '321324020', name: '车门乡' }, { code: '321324021', name: '瑶沟乡' }, { code: '321324022', name: '石集乡' }, { code: '321324023', name: '城头乡' }, { code: '321324024', name: '陈圩乡' }, { code: '321324025', name: '曹庙乡' }, { code: '321324026', name: '西南岗经济开发区' }] }
]
}
]
const storesData = {
addressData,
choAddressData
}
export default storesData
\ No newline at end of file
......@@ -60,7 +60,7 @@
<el-dialog
:title="editingAccount ? '编辑账号' : '添加账号'"
:visible.sync="isAddDialogOpen"
width="600px"
width="800px"
>
<el-form :model="accountForm" :rules="accountRules" ref="accountForm" label-width="100px">
<el-row :gutter="20">
......@@ -95,11 +95,11 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属区域" prop="region">
<el-input
v-model="accountForm.region"
placeholder="请输入所属区域"
></el-input>
<el-form-item label="状态" prop="region">
<el-select v-model="accountForm.status">
<el-option label="启用" value="active"></el-option>
<el-option label="禁用" value="inactive"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
......@@ -124,12 +124,58 @@
</el-col>
</el-row>
<el-form-item label="状态" prop="status">
<el-select v-model="accountForm.status" style="width: 100%;">
<el-option label="启用" value="active"></el-option>
<el-option label="禁用" value="inactive"></el-option>
<el-row :gutter="20">
<el-col :span="30">
<el-form-item label="所属区域" prop="region">
<template v-if="accountForm.cityArr.length>0">
<el-select
v-model="accountForm.city"
placeholder="选择地市"
@change="(value)=>{cityChange(value,'person')}"
:disabled="getData.city!=''"
style="margin-right: 10px"
clearable>
<el-option
v-for="item in accountForm.cityArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
<template v-if="accountForm.countyArr.length>0">
<el-select
v-model="accountForm.county"
placeholder="选择区县"
@change="(value)=>{countyChange(value,'person')}"
:disabled="getData.county!=''"
style="margin-right: 10px"
clearable>
<el-option
v-for="item in accountForm.countyArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
<template v-if="accountForm.gridArr.length>0">
<el-select
v-model="accountForm.grid"
placeholder="选择网格"
:disabled="getData.grid!=''"
clearable>
<el-option
v-for="item in accountForm.gridArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -162,6 +208,14 @@ export default {
region: '',
phone: '',
email: '',
city: '',
cityArr: this.addressStoreData,
county: '',
countyArr: [],
grid: '',
gridArr: [],
status: 'active'
},
accountRules: {
......@@ -174,10 +228,75 @@ export default {
region: [
{ required: true, message: '请输入所属区域', trigger: 'blur' }
]
}
},
getData:{
city: '',
cityName: '',
county: '',
countyName: '',
grid: '',
gridName: '',
},
}
},
created(){
this.setAddressShow()
},
methods: {
setAddressShow(){
let ad = this.accountForm
let gd = this.getData
if(gd.city){
ad.city = gd.city
ad.cityArr.forEach(item=>{
if(item.value == ad.city){
ad.countyArr = item.children
}
})
if(gd.county){
ad.county = gd.county
ad.countyArr.forEach(item=>{
if(item.value == ad.county){
ad.gridArr = item.children
}
})
if(ad.gridArr.length == 1){
gd.grid = 'moren'
}
if(gd.grid){
ad.grid = gd.grid
}
}
}
},
cityChange(value){
let ad = this.accountForm
ad.city = value
ad.county = ''
ad.grid = ''
ad.cityArr.forEach(item=>{
if(item.value == ad.city){
ad.countyArr = item.children
}
})
},
countyChange(value){
let ad = this.accountForm
ad.county = value
ad.grid = ''
ad.countyArr.forEach(item=>{
if(item.value == ad.county){
ad.gridArr = item.children
}
})
},
editAccount(account) {
this.editingAccount = account
this.accountForm = { ...account }
......
......@@ -22,20 +22,56 @@
<el-option label="装维师傅" value="installer"></el-option>
<el-option label="营销人员" value="sales"></el-option>
</el-select>
<el-select v-model="filterRegion" placeholder="所在区域筛选" class="filter-select">
<el-option label="全部区域" value=""></el-option>
<el-option label="玄武区" value="玄武区"></el-option>
<el-option label="秦淮区" value="秦淮区"></el-option>
<el-option label="建邺区" value="建邺区"></el-option>
<el-option label="鼓楼区" value="鼓楼区"></el-option>
<template v-if="addressStore.cityArr.length>0">
<el-select
v-model="addressStore.city"
class="filter-select"
placeholder="选择地市"
@change="cityChange"
:disabled="getData.city!=''"
clearable>
<el-option
v-for="item in addressStore.cityArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
<template v-if="addressStore.countyArr.length>0">
<el-select
v-model="addressStore.county"
class="filter-select"
placeholder="选择区县"
@change="countyChange"
:disabled="getData.county!=''"
clearable>
<el-option
v-for="item in addressStore.countyArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
<template v-if="addressStore.gridArr.length>0">
<el-select
v-model="addressStore.grid"
class="filter-select"
placeholder="选择网格"
:disabled="getData.grid!=''"
clearable>
<el-option
v-for="item in addressStore.gridArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
</div>
<div class="toolbar-right">
<el-button @click="handleExport" type="default" size="small">
<i class="el-icon-upload2"></i>
导出
</el-button>
<el-button @click="isImportDialogOpen = true" type="default" size="small">
<i class="el-icon-download"></i>
批量导入
......@@ -120,8 +156,7 @@
<el-dialog
:title="editingPersonnel ? '编辑人员' : '添加人员'"
:visible.sync="isAddDialogOpen"
width="600px"
>
width="800px">
<el-form :model="personnelForm" :rules="personnelRules" ref="personnelForm" label-width="100px">
<el-row :gutter="20">
<el-col :span="12">
......@@ -157,24 +192,16 @@
</el-row>
<el-row :gutter="20">
<!-- 当选择装维师傅时显示关联营销人员字段 -->
<el-col :span="12">
<el-form-item label="所属区域" prop="region">
<el-select v-model="personnelForm.type" @change="handlePersonnelTypeChange" style="width: 100%;">
<el-option label="装维师傅" value="installer"></el-option>
<el-option label="营销人员" value="sales"></el-option>
</el-select>
<el-select v-model="personnelForm.type" @change="handlePersonnelTypeChange" style="width: 100%;">
<el-option label="装维师傅" value="installer"></el-option>
<el-option label="营销人员" value="sales"></el-option>
</el-select>
<el-select v-model="personnelForm.type" @change="handlePersonnelTypeChange" style="width: 100%;">
<el-option label="装维师傅" value="installer"></el-option>
<el-option label="营销人员" value="sales"></el-option>
<el-form-item label="状态" prop="status">
<el-select v-model="personnelForm.status" style="width: 100%;">
<el-option label="启用" value="active"></el-option>
<el-option label="禁用" value="inactive"></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- 当选择装维师傅时显示关联营销人员字段 -->
<el-col :span="12" v-if="personnelForm.type === 'installer'">
<el-form-item label="关联营销人员" prop="associatedSales">
<el-select v-model="personnelForm.associatedSales" placeholder="请选择营销人员" style="width: 100%;">
......@@ -187,40 +214,57 @@
</el-select>
</el-form-item>
</el-col>
<!-- 当选择营销人员时显示网格名称 -->
<el-col :span="12" v-else>
<el-form-item label="网格名称" prop="gridName">
<el-input v-model="personnelForm.gridName" placeholder="如:A网格"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 网格名称 + 状态 -->
<el-row :gutter="20" v-if="personnelForm.type === 'installer'">
<el-col :span="12">
<el-form-item label="网格名称" prop="gridName">
<el-input v-model="personnelForm.gridName" placeholder="如:A网格"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-select v-model="personnelForm.status" style="width: 100%;">
<el-option label="启用" value="active"></el-option>
<el-option label="禁用" value="inactive"></el-option>
<el-row :gutter="20">
<el-col :span="30">
<el-form-item label="所属区域" prop="region">
<template v-if="personnelForm.cityArr.length>0">
<el-select
v-model="personnelForm.city"
placeholder="选择地市"
@change="(value)=>{cityChange(value,'person')}"
:disabled="getData.city!=''"
style="margin-right: 10px"
clearable>
<el-option
v-for="item in personnelForm.cityArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<!-- 当选择营销人员时,状态单独一行 -->
<el-row :gutter="20" v-if="personnelForm.type === 'sales'">
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-select v-model="personnelForm.status" style="width: 100%;">
<el-option label="启用" value="active"></el-option>
<el-option label="禁用" value="inactive"></el-option>
</template>
<template v-if="personnelForm.countyArr.length>0">
<el-select
v-model="personnelForm.county"
placeholder="选择区县"
@change="(value)=>{countyChange(value,'person')}"
:disabled="getData.county!=''"
style="margin-right: 10px"
clearable>
<el-option
v-for="item in personnelForm.countyArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
<template v-if="personnelForm.gridArr.length>0">
<el-select
v-model="personnelForm.grid"
placeholder="选择网格"
:disabled="getData.grid!=''"
clearable>
<el-option
v-for="item in personnelForm.gridArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</template>
</el-form-item>
</el-col>
</el-row>
......@@ -324,6 +368,26 @@ export default {
name: 'PersonnelManagement',
data() {
return {
addressStore:{
city: '',
cityName: '',
cityArr: this.addressStoreData,
county: '',
countyName: '',
countyArr: [],
grid: '',
gridName: '',
gridArr: []
},
getData:{
city: '320200',
cityName: '',
county: '',
countyName: '',
grid: '',
gridName: '',
},
personnelTypeMap,
personnel: mockPersonnel,
searchTerm: '',
......@@ -341,8 +405,14 @@ export default {
workId: '',
phone: '',
type: 'installer',
region: '',
gridName: '',
city: '',
cityArr: this.addressStoreData,
county: '',
countyArr: [],
grid: '',
gridArr: [],
status: 'active',
associatedSales: ''
},
......@@ -387,7 +457,71 @@ export default {
return this.personnel.filter(person => person.type === 'sales' && person.status === 'active')
}
},
created(){
this.setAddressShow()
},
methods: {
setAddressShow(){
let ad = this.addressStore
let pd = this.personnelForm
let gd = this.getData
if(gd.city){
ad.city = gd.city
ad.cityArr.forEach(item=>{
if(item.value == ad.city){
ad.countyArr = item.children
}
})
if(gd.county){
ad.county = gd.county
ad.countyArr.forEach(item=>{
if(item.value == ad.county){
ad.gridArr = item.children
}
})
if(ad.gridArr.length == 1){
gd.grid = 'moren'
}
if(gd.grid){
ad.grid = gd.grid
}
}
}
pd.city = ad.city
pd.countyArr = ad.countyArr
pd.county = ad.county
pd.gridArr = ad.gridArr
pd.grid = ad.grid
},
cityChange(value,type){
let ad = type=='person'?this.personnelForm:this.addressStore
ad.city = value
ad.county = ''
ad.grid = ''
ad.cityArr.forEach(item=>{
if(item.value == ad.city){
ad.countyArr = item.children
}
})
},
countyChange(value,type){
let ad = type=='person'?this.personnelForm:this.addressStore
ad.county = value
ad.grid = ''
ad.countyArr.forEach(item=>{
if(item.value == ad.county){
ad.gridArr = item.children
}
})
},
handlePersonnelTypeChange(value) {
// 当人员类型改变时,重置关联字段
if (value === 'sales') {
......@@ -528,9 +662,6 @@ export default {
this.isImportDialogOpen = false
this.selectedFile = null
},
handleExport() {
this.$message.success('人员数据导出成功')
},
getAssociatedSalesPerson(associatedSalesId) {
if (!associatedSalesId) return null
return this.personnel.find(p => p.id === associatedSalesId)
......@@ -559,7 +690,7 @@ export default {
.search-wrapper {
position: relative;
width: 220px;
width: 160px;
.search-icon {
position: absolute;
......@@ -568,10 +699,6 @@ export default {
transform: translateY(-50%);
color: #c0c4cc;
}
.search-input {
padding-left: 30px;
}
}
.filter-select {
......
......@@ -18,8 +18,13 @@ Vue.component('Pagination', Pagination)
Vue.component('CascadingRegionSelector', CascadingRegionSelector)
Vue.component('ThreeLevelRegionSelector', ThreeLevelRegionSelector)
import addressData from '@/assets/js/stores/addressData'
Vue.prototype.addressStoreData = addressData
import storesData from '@/assets/js/stores/index'
import apiInterface from '@/assets/js/api/interface'
import common from '@/assets/js/const/common'
Vue.prototype.storesData = storesData
Vue.prototype.apiReq = apiInterface
Vue.prototype.common = common
Vue.config.productionTip = false
......
......@@ -73,7 +73,7 @@ const router = new VueRouter({
// 路由守卫
router.beforeEach((to, from, next) => {
// 检查是否已登录(演示模式下允许访问)
const isAuthenticated = localStorage.getItem('user') || sessionStorage.getItem('demoMode')
const isAuthenticated = localStorage.getItem('tokenInfo')
if (to.path !== '/login' && !isAuthenticated) {
next('/login')
......
......@@ -22,17 +22,6 @@
<div class="filter-content">
<el-row :gutter="24">
<el-col :span="3">
<el-cascader
v-model="selectedRegion"
:options="regionOptions"
:props="{ checkStrictly: true, value: 'name', label: 'name' }"
placeholder="请选择区域"
clearable
class="region-cascader"
></el-cascader>
</el-col>
<el-col :span="3">
<div class="search-wrapper">
<el-input
v-model="selectedGridName"
......@@ -53,6 +42,37 @@
/>
</div>
</el-col>
<el-col :span="3" v-if="addressStore.cityArr.length>0">
<el-select
v-model="addressStore.city"
placeholder="选择地市"
@change="cityChange"
:disabled="getData.city!=''"
clearable>
<el-option
v-for="item in addressStore.cityArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-col>
<el-col :span="3" v-if="addressStore.countyArr.length>0">
<el-select
v-model="addressStore.county"
placeholder="选择区县"
@change="countyChange"
:disabled="getData.county!=''"
clearable>
<el-option
v-for="item in addressStore.countyArr"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-col>
</el-row>
</div>
</el-card>
......@@ -96,11 +116,25 @@ export default {
name: 'GridQuery',
data() {
return {
addressStore:{
city: '',
cityName: '',
cityArr: this.addressStoreData,
county: '',
countyName: '',
countyArr: [],
},
getData:{
city: '',
cityName: '',
county: '',
countyName: ''
},
selectedRegion: [],
selectedGrid: '',
selectedGridName: '',
tableData: [],
pageStore:{
currentPage: 1,
......@@ -110,9 +144,52 @@ export default {
}
},
created(){
this.regionOptions = this.addressStoreData
},
methods: {
setAddressShow(){
let ad = this.addressStore
let gd = this.getData
if(gd.city){
ad.city = gd.city
ad.cityArr.forEach(item=>{
if(item.value == ad.city){
ad.countyArr = item.children
}
})
if(gd.county){
ad.county = gd.county
ad.countyArr.forEach(item=>{
if(item.value == ad.county){
ad.gridArr = item.children
}
})
if(ad.gridArr.length == 1){
gd.grid = 'moren'
}
if(gd.grid){
ad.grid = gd.grid
}
}
}
},
cityChange(value){
let ad = this.addressStore
ad.city = value
ad.county = ''
ad.grid = ''
ad.cityArr.forEach(item=>{
if(item.value == ad.city){
ad.countyArr = item.children
}
})
},
handleQuery() {
this.currentPage = 1
this.$message.success('查询成功')
......
......@@ -233,24 +233,6 @@
<el-button @click="isForgotPasswordDialogVisible = false">确定</el-button>
</span>
</el-dialog>
<div class="login-demo-info">
<p class="login-demo-title">测试账号:</p>
<div class="login-demo-accounts">
<p>网格管理员: grid001 / 123456</p>
<p>区县管理员: county001 / 123456</p>
<p>地市管理员: city001 / 123456</p>
<p>省级管理员: province001 / 123456</p>
</div>
<p class="login-demo-title" style="margin-top: 16px;">手机验证码登录:</p>
<div class="login-demo-accounts">
<p>手机号: 13812345678 (对应网格管理员)</p>
<p>手机号: 13887654321 (对应区县管理员)</p>
<p>手机号: 13765432109 (对应地市管理员)</p>
<p>手机号: 13654321098 (对应省级管理员)</p>
<p style="color: #E6A23C;">验证码统一为: 123456</p>
</div>
</div>
</div>
</div>
</div>
......@@ -323,20 +305,27 @@ export default {
methods: {
...mapActions(['login']),
async handleLogin() {
let ld = this.loginForm
try {
await this.$refs.loginForm.validate()
this.loading = true
await this.login({
username: this.loginForm.username,
password: this.loginForm.password
})
this.$message.success('登录成功')
this.apiReq.login({
username: ld.username,
password: ld.password
}).then(res=>{
if(res.code == '200'){
localStorage.setItem('accountInfo',JSON.stringify(res.data.account))
localStorage.setItem('tokenInfo',JSON.stringify(res.data.tokenInfo))
this.$router.push('/')
}else{
this.$message.error(res.message)
}
})
} catch (error) {
console.error('Login error:', error)
this.$message.error(error.message || '登录失败,请稍后重试')
} finally {
this.loading = false
}
......@@ -730,28 +719,6 @@ export default {
font-weight: 500;
}
.login-demo-info {
padding: 20px;
background-color: #f5f7fa;
border-radius: 8px;
.login-demo-title {
font-size: 14px;
margin: 0 0 10px 0;
color: #606266;
}
.login-demo-accounts {
font-size: 12px;
color: #909399;
line-height: 1.8;
p {
margin: 0 0 5px 0;
}
}
}
// 忘记密码弹窗样式
.forgot-password-content {
text-align: center;
......
......@@ -15,7 +15,7 @@
<span class="card-title">总计</span>
</div>
<div class="card-content">
<div class="card-value">{{ stats.total }}</div>
<div class="card-value">{{ statsStore.totalCount }}</div>
</div>
<img
src="../assets/icons/ad61df2f28f6b51d5f386829473ab1b592fd14e0.png"
......@@ -30,7 +30,7 @@
<span class="card-title">成单待审核</span>
</div>
<div class="card-content">
<div class="card-value">{{ stats.pendingReview }}</div>
<div class="card-value">{{ statsStore.pendingAuditCount }}</div>
</div>
<img
src="../assets/icons/1b66793397a66bf54212d266505eb98e3377a354.png"
......@@ -45,7 +45,7 @@
<span class="card-title">处理中</span>
</div>
<div class="card-content">
<div class="card-value text-[rgb(10,10,10)]">{{ stats.processing }}</div>
<div class="card-value text-[rgb(10,10,10)]">{{ statsStore.processingCount }}</div>
</div>
<img
src="../assets/icons/eb05b4822d67dff64c5712d0777f069d241ecc13.png"
......@@ -60,7 +60,7 @@
<span class="card-title">已完结</span>
</div>
<div class="card-content">
<div class="card-value text-[rgb(10,10,10)]">{{ stats.completed }}</div>
<div class="card-value text-[rgb(10,10,10)]">{{ statsStore.completedCount }}</div>
</div>
<img
src="../assets/icons/a8703fd7713f624a505aed79bcf30eb245a86d9c.png"
......@@ -99,20 +99,37 @@
<div class="filter-content">
<el-row :gutter="24">
<el-col :span="4">
<el-col :span="3">
<div class="search-wrapper">
<el-input
v-model="formData.customerPhone"
placeholder="用户账号"
style="padding-left: 0;"
/>
</div>
</el-col>
<el-col :span="3">
<div class="search-wrapper">
<el-input
v-model="searchTerm"
placeholder="用户账号/师傅名字/营销人员名字"
v-model="formData.maintenanceStaffName"
placeholder="师傅名字"
style="padding-left: 0;"
/>
</div>
</el-col>
<el-col :span="3">
<div class="search-wrapper">
<el-input
v-model="formData.marketingStaffName"
placeholder="营销人员名字"
style="padding-left: 0;"
@keyup.enter.native="handleFilter"
/>
</div>
</el-col>
<el-col :span="6">
<el-col :span="7">
<el-date-picker
v-model="dateRange"
v-model="formData.createTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
......@@ -125,32 +142,16 @@
<el-col :span="3">
<el-select
v-model="selectedStatus"
v-model="formData.status"
placeholder="选择状态"
clearable
>
<el-option label="全部状态" value="all"></el-option>
<el-option
v-for="(status, key) in statusMap"
:key="key"
:label="status.label"
:value="key"
></el-option>
</el-select>
</el-col>
<el-col :span="3">
<el-select
v-model="selectedTag"
placeholder="商机标签"
clearable
>
<el-option label="全部标签" value="all"></el-option>
<el-option
v-for="tag in opportunityTags"
:key="tag"
:label="tag"
:value="tag"
v-for="item in statusStore"
:key="item.key"
:label="item.value"
:value="item.key"
></el-option>
</el-select>
</el-col>
......@@ -210,7 +211,7 @@
<!-- 商机列表 -->
<el-card class="list-card">
<div class="list-header">
<h3 class="list-title">商机列表 ({{ filteredOpportunities.length }})</h3>
<h3 class="list-title">商机列表</h3>
<div class="list-actions">
<el-button
size="small"
......@@ -225,18 +226,18 @@
<div class="list-content">
<el-table
:data="paginatedOpportunities" border
:data="tableData" border
v-loading="loading">
<el-table-column prop="id" label="商机ID" width="150"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="180"></el-table-column>
<el-table-column prop="createTime" label="创建时间" :formatter="timeRender" width="180"></el-table-column>
<el-table-column prop="customerAddress" label="客户地址" width="230" show-overflow-tooltip></el-table-column>
<el-table-column prop="customerPhone" label="用户账号" width="120"></el-table-column>
<el-table-column prop="installerName" label="装维师傅姓名" width="120"></el-table-column>
<el-table-column prop="assignedToName" label="营销人员姓名" width="120"></el-table-column>
<el-table-column prop="maintenanceStaffName" label="装维师傅姓名" width="120"></el-table-column>
<el-table-column prop="marketingStaffName" label="营销人员姓名" width="120"></el-table-column>
<el-table-column label="商机标签" width="250">
<template slot-scope="scope">
<el-tag
v-for="tag in scope.row.tags"
v-for="tag in scope.row.tagNames"
:key="tag"
size="mini"
type="info"
......@@ -246,17 +247,8 @@
</el-tag>
</template>
</el-table-column>
<el-table-column label="当前状态" width="100">
<template slot-scope="scope">
<el-tag
:type="getStatusType(scope.row.status)"
size="mini"
>
{{ statusMap[scope.row.status].label }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="lastFollowTime" label="最新跟进" width="180"></el-table-column>
<el-table-column label="当前状态" width="100" prop="status" :formatter="statusRender"></el-table-column>
<el-table-column prop="latestFollowTime" label="最新跟进" width="180" :formatter="timeRender"></el-table-column>
<el-table-column label="操作" min-width="200">
<template slot-scope="scope">
<el-button type="text" size="small" @click="checkDetail(scope.row)">查看详情</el-button>
......@@ -270,11 +262,11 @@
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:current-page="pageStore.currentPage"
:page-sizes="[20, 50, 100]"
:page-size="pageSize"
:page-size="pageStore.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="filteredOpportunities.length"
:total="pageStore.total"
>
</el-pagination>
</div>
......@@ -285,8 +277,7 @@
<el-dialog
title="新增商机"
:visible.sync="isCreateDialogOpen"
width="500px"
>
width="500px">
<el-form :model="newOpportunity" :rules="opportunityRules" ref="opportunityForm" label-width="120px">
<el-form-item label="用户账号" prop="customerAccount" required>
<el-input v-model="newOpportunity.customerAccount" placeholder="请输入用户账号"></el-input>
......@@ -327,8 +318,7 @@
<el-dialog
title="商机审核"
:visible.sync="isAuditDialogOpen"
width="500px"
>
width="500px">
<el-form :model="auditForm" label-width="100px">
<el-form-item label="审核结果" required>
<el-radio-group v-model="auditForm.result">
......@@ -370,7 +360,6 @@ const statusMap = {
const opportunityTags = [
'网络升级', '家庭安防', '智能家居', '宽带套餐', '移动套餐', '融合套餐', '企业业务'
]
// 营销人员列表
const mockSalesPersons = [
{ id: 'SALE001', name: '张营销', gridName: 'A网格', phone: '13812345001' },
......@@ -380,100 +369,23 @@ const mockSalesPersons = [
{ id: 'SALE005', name: '王营销', gridName: 'B网格', phone: '13812345005' }
]
// 生成模拟商机数据的函数
function generateMockOpportunities() {
const opportunities = []
const regions = ['南京市玄武区', '南京市秦淮区', '南京市建邺区', '南京市鼓楼区']
const grids = ['A网格', 'B网格', 'C网格', 'D网格', 'E网格']
const streets = ['中山路', '太平北路', '珠江路', '北京东路', '龙蟠中路', '成贤街', '锁金村', '进香河路', '新街口', '汉中路']
const installers = [
{ id: 'INS001', name: '王师傅', phone: '186****2001' },
{ id: 'INS002', name: '李师傅', phone: '186****2002' },
{ id: 'INS003', name: '赵师傅', phone: '186****2003' },
{ id: 'INS004', name: '孙师傅', phone: '186****2004' },
{ id: 'INS005', name: '周师傅', phone: '186****2005' },
{ id: 'INS006', name: '吴师傅', phone: '186****2006' },
{ id: 'INS007', name: '郑师傅', phone: '186****2007' },
{ id: 'INS008', name: '钱师傅', phone: '186****2008' },
]
const sales = [
{ id: 'SALE001', name: '张营销', gridName: 'A网格' },
{ id: 'SALE002', name: '陈营销', gridName: 'B网格' },
{ id: 'SALE003', name: '刘营销', gridName: 'C网格' },
{ id: 'SALE004', name: '赵营销', gridName: 'A网格' },
{ id: 'SALE005', name: '王营销', gridName: 'B网格' }
]
const statuses = ['assigned', 'following', 'completed', 'closed']
const descriptions = [
'用户反馈家中网络卡顿,希望升级宽带套餐',
'用户询问移动手机号和宽带的融合套餐优惠',
'用户对家庭监控摄像头很感兴趣',
'用户对当前手机套餐不满意,希望更换更优惠的套餐',
'小型公司需要企业宽带和通信解决方案',
'用户希望安装更高速的宽带并了解智能家居方案',
'用户咨询家庭安防监控系统的安装和费用',
'客户反馈网速慢,需要技术支持',
'用户想了解最新的5G套餐',
'家里准备装修,咨询智能家居全套方案'
]
for (let i = 1; i <= 65; i++) {
const installer = installers[Math.floor(Math.random() * installers.length)]
const sales_person = sales[Math.floor(Math.random() * sales.length)]
const status = statuses[Math.floor(Math.random() * statuses.length)]
const region = regions[Math.floor(Math.random() * regions.length)]
const grid = grids[Math.floor(Math.random() * grids.length)]
const street = streets[Math.floor(Math.random() * streets.length)]
// 随机选择1-3个标签
const numTags = Math.floor(Math.random() * 3) + 1
const shuffledTags = [...opportunityTags].sort(() => Math.random() - 0.5)
const tags = shuffledTags.slice(0, numTags)
// 生成日期(最近30天内)
const daysAgo = Math.floor(Math.random() * 30)
const createDate = new Date()
createDate.setDate(createDate.getDate() - daysAgo)
const createTime = `${createDate.getFullYear()}-${String(createDate.getMonth() + 1).padStart(2, '0')}-${String(createDate.getDate()).padStart(2, '0')} ${String(createDate.getHours()).padStart(2, '0')}:${String(createDate.getMinutes()).padStart(2, '0')}:${String(createDate.getSeconds()).padStart(2, '0')}`
const opportunity = {
id: `OP2025${String(10000 + i).slice(-5)}`,
createTime,
customerAddress: `${region}${street}${Math.floor(Math.random() * 200) + 1}**号`,
installerId: installer.id,
installerName: installer.name,
installerPhone: installer.phone,
tags,
status,
assignedTo: sales_person.id,
assignedToName: sales_person.name,
customerPhone: `13${Math.floor(Math.random() * 10)}****${String(Math.floor(Math.random() * 10000)).padStart(4, '0')}`,
description: descriptions[Math.floor(Math.random() * descriptions.length)],
region,
gridName: grid,
}
// 如果状态是 following 或 completed,添加跟进时间
if (status === 'following' || status === 'completed' || status === 'closed') {
const followDate = new Date(createDate)
followDate.setHours(followDate.getHours() + Math.floor(Math.random() * 48))
opportunity.lastFollowTime = `${followDate.getFullYear()}-${String(followDate.getMonth() + 1).padStart(2, '0')}-${String(followDate.getDate()).padStart(2, '0')} ${String(followDate.getHours()).padStart(2, '0')}:${String(followDate.getMinutes()).padStart(2, '0')}:${String(followDate.getSeconds()).padStart(2, '0')}`
}
opportunities.push(opportunity)
}
return opportunities.sort((a, b) => new Date(b.createTime).getTime() - new Date(a.createTime).getTime())
}
export default {
name: 'OpportunityManagement',
data() {
return {
busiLabelStore: [],
formData:{
customerPhone: '18277777766',
maintenanceStaffName: '',
marketingStaffName: '',
createTime: '',
status: '',
areaCode: ''
},
addressStore:{
city: '',
cityName: '',
cityArr: this.addressStoreData,
cityArr: this.storesData.addressData,
county: '',
countyName: '',
countyArr: [],
......@@ -489,12 +401,37 @@ export default {
grid: '',
gridName: '',
},
statsStore:{},
statusStore:[],
tableData: [],
pageStore:{
currentPage: 1,
pageSize: 20,
total: 0
},
newOpportunity: {
customerAccount: '',
address: {
city: '',
cityName: '',
cityArr: this.storesData.choAddressData,
county: '',
countyName: '',
countyArr: [],
streets: '',
streetsName: '',
streetsArr: [],
detail: ''
},
installerWorkId: '',
businessType: '',
description: ''
},
loading: false,
statusMap,
opportunityTags,
mockSalesPersons,
opportunities: generateMockOpportunities(),
activeTab: 'all',
searchTerm: '',
selectedRegion: '',
......@@ -502,13 +439,7 @@ export default {
selectedTag: '',
dateRange: [],
isCreateDialogOpen: false,
newOpportunity: {
customerAccount: '',
customerAddress: '',
installerWorkId: '',
businessType: '',
description: ''
},
opportunityRules: {
customerAccount: [
{ required: true, message: '请输入用户账号', trigger: 'blur' }
......@@ -533,102 +464,20 @@ export default {
},
created(){
this.setAddressShow()
this.queryBusi()
this.queryStatistics()
this.queryStatus()
this.queryAllBusiLabel()
this.apiReq.queryAllArea({
areaLevel: 1,
parentAreaCode: ''
})
},
computed: {
...mapGetters(['user']),
// 根据用户权限过滤商机数据
filteredByPermission() {
if (!this.user) return []
// 根据用户角色过滤数据
switch (this.user.role) {
case 'grid_manager':
// 网格管理员只能看到自己网格的商机
return this.opportunities.filter(opp =>
opp.gridName === this.user.region.split('区')[1]
)
case 'county_admin':
// 区县管理员能看到整个区县的商机
return this.opportunities.filter(opp =>
opp.region.includes(this.user.region)
)
case 'city_admin':
// 地市管理员能看到整个地市的商机
return this.opportunities.filter(opp =>
opp.region.includes(this.user.region)
)
case 'province_admin':
// 省级管理员能看到所有商机
return this.opportunities
default:
return []
}
},
// 根据筛选条件过滤商机
filteredOpportunities() {
let filtered = this.filteredByPermission
// 按状态标签过滤
if (this.activeTab !== 'all') {
const statusFilters = {
'processing': ['assigned', 'following'],
'completed': ['completed', 'closed']
}
filtered = filtered.filter(opp =>
statusFilters[this.activeTab]?.includes(opp.status)
)
}
// 搜索过滤
if (this.searchTerm) {
filtered = filtered.filter(opp =>
opp.id.toLowerCase().includes(this.searchTerm.toLowerCase()) ||
opp.customerAddress.toLowerCase().includes(this.searchTerm.toLowerCase()) ||
opp.installerName.toLowerCase().includes(this.searchTerm.toLowerCase()) ||
opp.installerPhone.toLowerCase().includes(this.searchTerm.toLowerCase()) ||
(opp.assignedToName && opp.assignedToName.toLowerCase().includes(this.searchTerm.toLowerCase()))
)
}
// 其他筛选条件
if (this.selectedRegion && this.selectedRegion !== 'all') {
filtered = filtered.filter(opp => opp.region.includes(this.selectedRegion))
}
if (this.selectedStatus && this.selectedStatus !== 'all') {
filtered = filtered.filter(opp => opp.status === this.selectedStatus)
}
if (this.selectedTag && this.selectedTag !== 'all') {
filtered = filtered.filter(opp => opp.tags.includes(this.selectedTag))
}
// 日期范围过滤
if (this.dateRange && this.dateRange.length === 2) {
const [start, end] = this.dateRange
filtered = filtered.filter(opp => {
const oppDate = new Date(opp.createTime.split(' ')[0])
const startDate = new Date(start)
const endDate = new Date(end)
return oppDate >= startDate && oppDate <= endDate
})
}
return filtered
},
// 分页数据
paginatedOpportunities() {
const startIndex = (this.currentPage - 1) * this.pageSize
const endIndex = startIndex + this.pageSize
return this.filteredOpportunities.slice(startIndex, endIndex)
},
// 统计数据
stats() {
const total = this.filteredByPermission.length
const pendingReview = this.filteredByPermission.filter(o => o.status === 'completed').length
const processing = this.filteredByPermission.filter(o => ['assigned', 'following'].includes(o.status)).length
const completed = this.filteredByPermission.filter(o => ['completed', 'closed'].includes(o.status)).length
return { total, pendingReview, processing, completed }
},
// 是否有筛选条件
hasFilters() {
return this.searchTerm ||
......@@ -639,6 +488,22 @@ export default {
}
},
methods: {
queryAllBusiLabel(){
this.apiReq.queryBusiLabel({
pageNum: 1,
pageSize: 20,
}).then(res=>{
if(res.code == 200){
this.busiLabelStore = res.data.records
}
})
},
timeRender(row,column){
return this.common.detailTime(new Date(row[column.property]).getTime())
},
statusRender(row,column){
return this.common.globalRender(row.status,this.statusStore)
},
setAddressShow(){
let ad = this.addressStore
let gd = this.getData
......@@ -692,6 +557,62 @@ export default {
}
})
},
queryBusi(){
let d = this.formData
if (d.createTime) {
d.startDate = new Date(d.createTime[0]).getTime()
d.endDate = new Date(d.createTime[1]).getTime() + 24 * 60 * 60 * 1000 - 1000
} else {
d.startDate = ''
d.endDate = ''
}
this.apiReq.queryAllBusi({
pageNum: 1,
pageSize: 20,
...d
}).then(res=>{
if(res.code == 200){
this.tableData = res.data.records
this.pageStore.total = res.total
}else{
this.$message.error(res.message)
}
})
},
handleSizeChange(size) {
this.pageSize = size
this.currentPage = 1
this.queryBusi()
},
handleCurrentChange(page) {
this.currentPage = page
this.queryBusi()
},
queryStatistics(){
this.apiReq.queryAllBusiStatistics().then(res=>{
if(res.code == 200){
this.statsStore = res.data
}
})
},
queryStatus(){
this.apiReq.queryBusiStatus().then(res=>{
if(res.code == 200){
this.statusStore = res.data
}
})
},
getStatusType(status) {
const typeMap = {
'assigned': 'info',
......@@ -705,6 +626,8 @@ export default {
handleFilter() {
// 重新计算筛选结果
this.currentPage = 1
this.queryBusi()
},
clearFilters() {
this.searchTerm = ''
......@@ -729,48 +652,7 @@ export default {
return
}
// 生成新的商机ID
const newId = 'OP' + new Date().toISOString().slice(0, 10).replace(/-/g, '') +
String(Math.floor(Math.random() * 100)).padStart(2, '0')
// 模拟获取装维师傅信息
const installerName = `装维师傅${this.newOpportunity.installerWorkId.slice(-2)}`
// 创建新商机对象
const createdOpportunity = {
id: newId,
createTime: new Date().toLocaleString('zh-CN'),
customerAddress: this.newOpportunity.customerAddress,
installerId: this.newOpportunity.installerWorkId,
installerName: installerName,
installerPhone: '138****' + Math.floor(Math.random() * 10000).toString().padStart(4, '0'),
customerPhone: this.newOpportunity.customerAccount,
tags: this.newOpportunity.businessType ? [this.newOpportunity.businessType] : [],
status: 'assigned',
assignedTo: '',
assignedToName: '',
description: this.newOpportunity.description,
region: this.user?.region || '南京市玄武区',
gridName: this.user?.region?.split('区')[1] || 'A网格',
lastFollowTime: ''
}
// 添加到商机列表
this.opportunities.unshift(createdOpportunity)
// 重置表单
this.newOpportunity = {
customerAccount: '',
customerAddress: '',
installerWorkId: '',
businessType: '',
description: ''
}
// 关闭弹窗
this.isCreateDialogOpen = false
this.$message.success('商机创建成功')
}
})
},
......@@ -806,13 +688,6 @@ export default {
result: '',
reason: ''
}
},
handleSizeChange(size) {
this.pageSize = size
this.currentPage = 1
},
handleCurrentChange(page) {
this.currentPage = page
}
}
}
......
......@@ -8,12 +8,19 @@ module.exports = {
lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false,
devServer: {
port: 8080,
open: true,
overlay: {
warnings: false,
errors: true
proxy: {
'/compass': {
target: 'http://39.107.104.220:8899',
//target: 'https://hall.51xinpai.cn',
changeOrigin: true,
pathRewrite: {
'^/compass': 'compass'
}
}
},
host: '0.0.0.0',
port: '8080',
open: false
},
configureWebpack: {
resolve: {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!