diff --git a/enterprise-manager-ui/admin/src/assets/utils/globalComponents.js b/enterprise-manager-ui/admin/src/assets/utils/globalComponents.js index 08b454306a377de3a187c81f3bde729e0c982bb6..5d3641593f61fa7fa1197cdbb7b43804fe546044 100644 --- a/enterprise-manager-ui/admin/src/assets/utils/globalComponents.js +++ b/enterprise-manager-ui/admin/src/assets/utils/globalComponents.js @@ -15,6 +15,7 @@ import FileUpload from '@/components/FileUpload'; import Editor from '@/components/Editor'; import Map from '@/components/Map'; import MapDetail from '@/components/MapDetail'; +import AreaSelect from '@/components/AreaSelect'; const Prototype = function() {}; @@ -35,6 +36,7 @@ Prototype.install = (Vue, options) => { Vue.component('Editor', Editor) // 瀵屾枃鏈� Vue.component('Map', Map) // 鍦板浘 Vue.component('MapDetail', MapDetail) // 鍦板浘 + Vue.component('AreaSelect', AreaSelect) // 鍖哄煙閫夋嫨 } export default Prototype; diff --git a/enterprise-manager-ui/admin/src/components/AreaSelect.vue b/enterprise-manager-ui/admin/src/components/AreaSelect.vue new file mode 100644 index 0000000000000000000000000000000000000000..5309c0e84516ac3dc1bafbbd7bce9849e277ee0e --- /dev/null +++ b/enterprise-manager-ui/admin/src/components/AreaSelect.vue @@ -0,0 +1,373 @@ +<template> + <div id="addressHorizontalSelect"> + <el-row :gutter="10"> + <el-col + :span="span"> + <el-select + size="small" + v-model="provinceCode" + @focus="getProvinces" + @change="changeProvince" + placeholder="鐪�" + filterable> + <el-option + v-for="item in provinceList" + :key="item.iid" + :label="item.name" + :value="item.iid"> + </el-option> + </el-select> + </el-col> + <el-col + :span="span" + v-if="!hideCity"> + <el-select + size="small" + v-model="cityCode" + @focus="getCities" + @change="changeCity" + placeholder="甯�" + filterable> + <el-option + v-for="item in cityList" + :key="item.iid" + :label="item.name" + :value="item.iid"> + </el-option> + </el-select> + </el-col> + <el-col + :span="span" + v-if="!hideCity && !hideArea"> + <el-select + size="small" + v-model="areaCode" + @focus="getAreas" + @change="changeArea" + placeholder="鍖�/鍘�" + filterable> + <el-option + v-for="item in areaList" + :key="item.iid" + :label="item.name" + :value="item.iid"> + </el-option> + </el-select> + </el-col> + + <el-col + :span="span" + v-if="!hideCity && !hideArea&& !hideStreet"> + <el-select + size="small" + v-model="streetCode" + @focus="getStreet" + @change="changeStreet" + placeholder="琛楅亾" + filterable> + <el-option + v-for="item in streetList" + :key="item.iid" + :label="item.name" + :value="item.iid"> + </el-option> + </el-select> + </el-col> + + <el-col + :span="span" + v-if="!hideCity && !hideArea&& !hideStreet&& !hideStreet"> + <el-select + size="small" + v-model="communityCode" + @focus="getCommunity" + @change="changeCommunity" + placeholder="绀惧尯" + filterable> + <el-option + v-for="item in communityList" + :key="item.iid" + :label="item.name" + :value="item.iid"> + </el-option> + </el-select> + </el-col> + + </el-row> + </div> +</template> + +<script> +export default { + name: 'addressHorizontalSelect', + components: {}, + props: { + value: { + type: [String, Number, Array], + }, + hideCity: { // 闅愯棌甯� + type: Boolean, + default: false + }, + hideArea: { // 闅愯棌鍖�/鍘� + type: Boolean, + default: false + }, + hideStreet: { // 闅愯棌琛楅亾 + type: Boolean, + default: false + }, + + hideCommunity: { // 闅愯棌绀惧尯 + type: Boolean, + default: false + }, + addressCode: null // 鍦板潃缂栫爜 + }, + + model: { + prop: 'value', + event: 'addressSelect' + }, + + data() { + return { + provinceList: [], // 鐪佷唤鍒楄〃 + cityList: [], // 鍩庡競鍒楄〃 + areaList: [], // 鍖�/鍘垮垪琛� + streetList: [], // 琛楅亾鍒楄〃 + communityList: [], // 绀惧尯鍒楄〃 + provinceCode: '', // 鐪佷唤缂栫爜 + cityCode: '', // 鍩庡競缂栫爜 + areaCode: '', // 鍖�/鍘跨紪鐮� + streetCode: '', // 琛楅亾缂栫爜 + communityCode: '', // 绀惧尯缂栫爜 + cityFlag: false, // 閬垮厤閲嶅璇锋眰鐨勬爣蹇� + provinceFlag: false, + areaFlag: false, + streetFlag: false, + communityFlag: false, + } + }, + + computed: { + span() { + if (this.hideCity) { + return 24 + } + if (this.hideArea) { + return 12 + } + if (this.hideStreet) { + return 8 + } + if (this.hideCommunity) { + return 6 + } + return 4 + } + }, + created() { + this.getProvinces() + }, + + methods: { + + fetchData(array, code) { + var split = code.split("&"); + let parms = {pid: split[0], size: -1} + this.$post("/base/area/list", parms).then((res) => { + if (res.code == 1) { + array.splice(0, array.length); + res.data.data.map(i => { + let obj = {} + obj.name = i.name + obj.iid = i.iid + "&" + i.areaCode + array.push(obj) + return obj; + }) + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + }, + // 鏍规嵁鍥藉缂栫爜鑾峰彇鐪佷唤鍒楄〃 + getProvinces() { + if (this.provinceFlag) { + return + } + this.fetchData(this.provinceList, "0&510000000000") + this.provinceFlag = true + }, + // 鐪佷唤淇敼锛屾媺鍙栧搴斿煄甯傚垪琛� + changeProvince(val) { + this.fetchData(this.cityList, this.provinceCode) + this.cityFlag = true + this.cityCode = '' + this.areaCode = '' + this.streetCode = '' + this.communityCode = '' + + var split = val.split("&"); + this.$emit("input", split[1]); + this.$emit('addressSelect', split[1]) + }, + // 鏍规嵁鐪佷唤缂栫爜鑾峰彇鍩庡競鍒楄〃 + getCities() { + if (this.cityFlag) { + return + } + if (this.provinceCode) { + this.fetchData(this.cityList, this.provinceCode) + this.cityFlag = true + } + }, + // 鍩庡競淇敼锛屾媺鍙栧搴斿尯鍩熷垪琛� + changeCity(val) { + this.fetchData(this.areaList, this.cityCode) + this.areaFlag = true + this.areaCode = '' + this.streetCode = '' + this.communityCode = '' + var split = val.split("&"); + this.$emit("input", split[1]); + this.$emit('addressSelect', split[1]) + }, + // 鏍规嵁鍩庡競缂栫爜鑾峰彇鍖哄煙鍒楄〃 + getAreas() { + if (this.areaFlag) { + return + } + if (this.cityCode) { + this.fetchData(this.areaList, this.cityCode) + } + }, + // 鍖哄煙淇敼 + changeArea(val) { + this.fetchData(this.streetList, this.areaCode) + this.areaFlag = true + this.streetCode = '' + this.communityCode = '' + + var split = val.split("&"); + this.$emit("input", split[1]); + this.$emit('addressSelect', split[1]) + }, + + + // 鏍规嵁鍖哄煙缂栫爜鑾峰彇琛楅亾鍒楄〃 + getStreet() { + if (this.streetFlag) { + return + } + if (this.areaCode) { + this.fetchData(this.streetList, this.areaCode) + this.streetFlag = true + } + }, + // 琛楅亾淇敼锛屾媺鍙栧搴旂ぞ鍖哄垪琛� + changeStreet(val) { + this.fetchData(this.communityList, this.streetCode) + this.streetFlag = true + this.communityCode = '' + var split = val.split("&"); + this.$emit("input", split[1]); + this.$emit('addressSelect', split[1]) + }, + + + // 鏍规嵁鍖哄煙缂栫爜鑾峰彇琛楅亾鍒楄〃 + getCommunity() { + if (this.communityFlag) { + return + } + if (this.streetCode) { + this.fetchData(this.communityList, this.streetCode) + this.communityFlag = true + } + }, + // 绀惧尯淇敼锛屾媺鍙栫ぞ鍖哄垪琛� + changeCommunity(val) { + console.log("changeCommunity",val) + this.fetchData(this.communityList, this.streetCode) + this.communityFlag = true + var split = val.split("&"); + this.$emit("input", split[1]); + this.$emit('addressSelect', split[1]) + }, + + // 閲嶇疆鐪佸競鍖�/鍘跨紪鐮� + reset() { + this.provinceCode = '', + this.cityCode = '', + this.areaCode = '', + this.streetCode = '', + this.communityCode = '' + }, + // 鍦板潃缂栫爜杞崲鎴愮渷甯傚尯琛楅亾绀惧尯鍒楄〃 + addressCodeToList(addressCode) { + if (!addressCode) return false + let parms = {areaCode:addressCode} + this.$post("/base/area/list", parms).then((res) => { + if (res.code == 1) { + if(res.data.data.length>0){ + let area = res.data.data[0]; + let pid = area.pid + "&" + area.areaCode + + if(area.areaLevel=='1'){ + //鐪� + this.provinceCode = area.iid + "&" + area.areaCode + this.fetchData(this.provinceList, pid) + return + }else if(area.areaLevel=='2'){ + //甯� + this.cityCode = area.iid + "&" + area.areaCode + this.fetchData(this.cityList, pid) + }else if(area.areaLevel=='3'){ + //鍖哄幙 + this.areaCode = area.iid + "&" + area.areaCode + this.fetchData(this.areaList, pid) + }else if(area.areaLevel=='4'){ + //琛楅亾 + let pid = area.pid + "&" + area.areaCode + this.fetchData(this.streetList,pid) + this.streetCode = area.iid + "&" + area.areaCode + }else if(area.areaLevel=='5'){ + //绀惧尯 + this.fetchData(this.communityList, pid) + this.communityCode = area.iid + "&" + area.areaCode + } + this.$post("/base/area/list", {iid:area.pid}).then((res) => { + this.addressCodeToList(res.data.data[0].areaCode) + }) + } + } + }).catch((error) => { + this.$message.error(error.message); + }); + + } + }, + + watch: { + value: { + deep: true, + immediate: true, + handler(newVal) { + if (newVal) { + + this.addressCodeToList(newVal) + } else { + this.$nextTick(() => { + this.reset() + }) + } + } + } + } +} +</script> + +<style lang="less" scoped> +</style> diff --git a/enterprise-manager-ui/admin/src/views/company/drawershow.vue b/enterprise-manager-ui/admin/src/views/company/drawershow.vue index 2c721fc31a29a1cd20b4ad0a72e8719aba16ea38..628aab37f6ae0a697314650d98093bea8d98ed56 100644 --- a/enterprise-manager-ui/admin/src/views/company/drawershow.vue +++ b/enterprise-manager-ui/admin/src/views/company/drawershow.vue @@ -5,20 +5,33 @@ :visible.sync="open" :direction="direction" :destroy-on-close="true" - size="70%"> + size="80%"> <el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-row> - <Field label="鍏徃鍚嶇О" prop="companyName" v-model="form.companyName" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/> + <Field label="鍏徃鍚嶇О" prop="companyName" v-model="form.companyName" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/> <Field label="鍏徃缂栫爜" prop="companyCode" v-model="form.companyCode" placeholder="璇疯緭鍏ュ叕鍙哥紪鐮�"/> <Field label="娉ㄥ唽鍙�" prop="registrationNumber" v-model="form.registrationNumber" placeholder="璇疯緭鍏ユ敞鍐屽彿"/> <Field label="娉曞畾浠h〃浜�" prop="legalRepresentative" v-model="form.legalRepresentative" placeholder="璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉"/> <Field label="娉ㄥ唽璧勬湰" prop="registeredCapital" v-model="form.registeredCapital" placeholder="璇疯緭鍏ユ敞鍐岃祫鏈�"/> <Field label="鍏徃绫诲瀷" prop="companyType" v-model="form.companyType" placeholder="璇疯緭鍏ュ叕鍙哥被鍨�"/> <Field label="缁忚惀鑼冨洿" prop="businessScope" v-model="form.businessScope" placeholder="璇疯緭鍏ョ粡钀ヨ寖鍥�"/> - <Field label="缁忚惀鍦板潃" prop="businessAdress" v-model="form.businessAdress" placeholder="璇疯緭鍏ョ粡钀ュ湴鍧€"/> +<!-- <Field :span="24" label="缁忚惀鍦板潃" prop="businessAdress" v-model="form.businessAdress" placeholder="璇疯緭鍏ョ粡钀ュ湴鍧€"> + <p>褰撳墠閫変腑鐨勮鏀垮尯鍒掔紪鐮佷负锛� {{regionCodeList}}</p> + <el-cascader v-model="regionCodeList" :props="areaprops"></el-cascader> + </Field>--> + + <Field :span="24" label="缁忚惀鍦板潃" prop="businessAdress" v-model="form.businessAdress" placeholder="璇疯緭鍏ョ粡钀ュ湴鍧€"> + + <area-select v-model="form.areaCode" @addressSelect="addressSelect"></area-select> + + </Field> + + + <Field label="鎵€鍦ㄥ湴" prop="location" v-model="form.location" placeholder="璇疯緭鍏ユ墍鍦ㄥ湴"/> - <Field label="鎵€灞炲尯鍩熺紪鐮�" prop="areaCode" v-model="form.areaCode" placeholder="璇疯緭鍏ユ墍灞炲尯鍩熺紪鐮�"/> - <Field label="鎵€灞炲尯鍩熷悕绉�" prop="areaName" v-model="form.areaName" placeholder="璇疯緭鍏ユ墍灞炲尯鍩熷悕绉�"/> + + + <Field label="鑱旂郴鐢佃瘽" prop="contactPhone" v-model="form.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> <Field label="鐢靛瓙閭欢鍦板潃" prop="email" v-model="form.email" placeholder="璇疯緭鍏ョ數瀛愰偖浠跺湴鍧€"/> <Field label="鍏徃缃戠珯" prop="website" v-model="form.website" placeholder="璇疯緭鍏ュ叕鍙哥綉绔�"/> @@ -116,7 +129,36 @@ this.changePath("company") }, data() { + let that = this return { + + regionCodeList: [], + areaprops: { + // 鍗曢€� + checkStrictly: true, + // 鎳掑姞杞� + lazy: true, + lazyLoad(node, resolve) { + var param = { + pid:node.level===0?0:node.data.id, + size:-1 + }; + + that.$post("/base/area/list", param) + .then(res => { + console.log(res) + let nodes = res.data.data.map(item => { + return { + value: item.areaCode, + label: item.name, + id:item.iid, + leaf: item.haveSonArea === "False" + } + }) + resolve(nodes) + }) + } + }, // 瀛愯〃閫変腑鏁版嵁 checkedCompanyLabels: [], // 鍏徃鏍囨敞琛ㄦ牸鏁版嵁 @@ -177,6 +219,13 @@ }, methods: { + + addressSelect(val){ + + console.log("addressSelect",val) + + }, + /** 鍏徃鏍囨敞搴忓彿 */ rowCompanyLabelsIndex({ row, rowIndex }) { row.index = rowIndex + 1; diff --git a/enterprise-manager-ui/admin/src/views/company/list.vue b/enterprise-manager-ui/admin/src/views/company/list.vue index 87eae409e74cf54a2ec8f1064ecbd3edac447573..ad6b943dd66a0f6eb99735d351d3362cece1db2a 100644 --- a/enterprise-manager-ui/admin/src/views/company/list.vue +++ b/enterprise-manager-ui/admin/src/views/company/list.vue @@ -3,7 +3,6 @@ <LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable> - <drawer-show ref="drawerform" @ok="getData" /> </div> </template> @@ -21,24 +20,7 @@ created() { }, methods: { - renderTable(tableData) { - return ( - <el-table stripe data={tableData} class="total-table"> - {this.columnSet.map((item) => this.renderTableColumn(item))} - </el-table> - ); - }, - renderTableColumn(options) { - return ( - <el-table-column - prop={options.prop} - label={options.label} - width={options.width} - formatter={options.formatter} - > - </el-table-column> - ); - }, + /** 閲嶅啓鏂板鏂规硶 */ toAdd(row) { this.$refs.drawerform.add(row); @@ -55,81 +37,29 @@ }, data() { return { - /** 瀛愯〃鍒楀厓绱� */ - columnSet:[ - {label: "鏍囩Id", prop: "labelId", formatter: this.formatter}, - {label: "鍏徃鍚嶇О", prop: "labelName"}, - {label: "鍏徃Id", prop: "companyId", formatter: this.formatter}, - {label: "鍏徃鍚嶇О", prop: "companyName"}, - {label: "澶囨敞", prop: "remark"}, - ], + config: { search: [ + { + name: "companyName", + type: "text", + label: "鍏徃鍚嶇О", + fuzzy: true, + }, ], columns: [ - {type: "selection", width: 60}, {type: "index",label: "搴忓彿",width: 50}, {label: "鍏徃鍚嶇О", prop: "companyName"}, - {label: "鍏徃缂栫爜", prop: "companyCode"}, - - {label: "娉ㄥ唽鍙�", prop: "registrationNumber"}, - - {label: "娉曞畾浠h〃浜�", prop: "legalRepresentative"}, - - {label: "娉ㄥ唽璧勬湰", prop: "registeredCapital"}, - - {label: "鍏徃绫诲瀷", prop: "companyType"}, - - {label: "缁忚惀鑼冨洿", prop: "businessScope"}, - - {label: "缁忚惀鍦板潃", prop: "businessAdress"}, - - {label: "鎵€鍦ㄥ湴", prop: "location"}, - - {label: "鎵€灞炲尯鍩熺紪鐮�", prop: "areaCode"}, - - {label: "鎵€灞炲尯鍩熷悕绉�", prop: "areaName"}, - {label: "鑱旂郴鐢佃瘽", prop: "contactPhone"}, - {label: "鐢靛瓙閭欢鍦板潃", prop: "email"}, - - {label: "鍏徃缃戠珯", prop: "website"}, - - {label: "绋庡姟鐧昏鍙�", prop: "taxRegistrationNumber"}, - - {label: "绀句細淇$敤浠g爜", prop: "socialCreditCode"}, - - {label: "鍟嗘爣淇℃伅", prop: "trademarkInfo"}, - - {label: "缃戠珯鍘嗗彶澶囨淇℃伅", prop: "websiteRegistrationInfo"}, - - {label: "鍛樺伐鎬绘暟", prop: "totalEmployees",formatter: this.formatter}, - - {label: "杞欢钁椾綔鏉冩暟閲�", prop: "softNum",formatter: this.formatter}, + {label: "缁忚惀鍦板潃", prop: "businessAdress"}, - {label: "涓撳埄鏁伴噺", prop: "patentNum",formatter: this.formatter}, + {label: "鎻忚堪", prop: "companyIntroduction"}, - {label: "鍘嗗彶鍙戝睍", prop: "hisDevelop"}, + {label: "鏇存柊鏃堕棿", prop: "createTime", formatter: this.formatterDate}, - {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, - {label: "鍏徃鏍囨敞", - width: 120, - prop: "subColumns", - formatter: (row) => { - let widthsize = this.columnSet.reduce((pre, cur) => { - return pre + Number(cur.width); - }, 50); - return ( - <el-popover placement="right" width={widthsize} trigger="click"> - {this.renderTable(row.companyLabelsList)} - <el-button type="text" slot="reference">璇︾粏</el-button> - </el-popover> - ); - }, - }, { label: "鎿嶄綔", width: 240, @@ -144,4 +74,4 @@ }; } }; -</script> \ No newline at end of file +</script> diff --git a/enterprise-manager-ui/admin/src/views/login/login.vue b/enterprise-manager-ui/admin/src/views/login/login.vue index 1866a90f02eb7325a71ad17e4d69635db277958f..080dea242bed5e09e17f1b7dcda0282a12c712fa 100644 --- a/enterprise-manager-ui/admin/src/views/login/login.vue +++ b/enterprise-manager-ui/admin/src/views/login/login.vue @@ -80,6 +80,7 @@ export default { loginSuccess({ data }) { this.$store.commit("setUserData", data); console.log("userData", this.$store.state.userData); + console.log("redirect",this.redirect) this.$router.replace({ path: this.redirect });