Ver código fonte

Project Init

yigeren911 2 anos atrás
pai
commit
686e45f778

+ 1 - 1
.env.development

@@ -5,6 +5,6 @@ ENV = 'development'
 VITE_BASE_PATH = './'
 
 # 本地环境接口地址 - 尾部无需带'/'
-VITE_AXIOS_BASE_URL = 'http://192.168.130.199:7001'
+VITE_AXIOS_BASE_URL = 'http://39.103.154.113:7001'
 
 SOCKET_OTC='ws:39.103.154.113:1070/ws'

+ 3 - 0
src/api/controllerUrls.ts

@@ -56,8 +56,11 @@ export const dataScreen = "/statistics/view/"; //数据大屏用户管理
 
 export const district_list = "/common/district"; //获取区县列表
 export const community_list = "/common/community"; //获取小区列表
+export const building_list = "/common/building"; //获取楼号列表
 
 
 export const community = "/community/"; //小区管理
 export const building = "/community/building/"; //楼宇管理
+export const map = "/map/"; //地图管理
+export const parking = "/parking/"; //车位管理
 

+ 2 - 1
src/utils/iconfont.ts

@@ -4,7 +4,8 @@ import * as elIcons from '@element-plus/icons-vue'
 
 const cssUrls: Array<string> = [
     '//at.alicdn.com/t/font_3135462_5axiswmtpj.css', // 示例链接,建议替换
-    '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
+    // '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
+    '//cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css',
 ]
 const jsUrls: Array<string> = []
 

+ 5 - 6
src/views/backend/enterprise/project/map/index.vue

@@ -24,7 +24,7 @@
 
 <script setup lang="ts">
 import {ref, onMounted, provide} from 'vue'
-import {orderExpress} from '/@/api/controllerUrls'
+import {map} from '/@/api/controllerUrls'
 import Table from '/@/components/table/index.vue'
 import TableHeader from '/@/components/table/header/index.vue'
 import {defaultOptButtons} from '/@/components/table'
@@ -34,15 +34,14 @@ import baTableClass from '/@/utils/baTable'
 
 
 const baTable = new baTableClass(
-    new baTableApi(orderExpress),
+    new baTableApi(map),
     {
         dblClickNotEditColumn: [undefined, 'status'],
         column: [
             {type: 'selection', align: 'center', operator: false},
-            {label: '所在区(县)', prop: 'expressName', align: 'left', operator: 'LIKE'},
-            {label: '小区名称', prop: 'expressName', align: 'left', operator: 'LIKE'},
-            {label: '楼号', prop: 'expressTypeName', align: 'center', operator: false},
-            {label: '地图', prop: 'expressTypeName', align: 'center', operator: false},
+            {label: '所在区(县)', prop: 'districtName', align: 'left', operator: 'LIKE'},
+            {label: '小区名称', prop: 'communityName', align: 'left', operator: 'LIKE'},
+            {label: '关联楼号', prop: 'buildingName', align: 'center', operator: false},
             {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
             {label: '创建时间', prop: 'createTime', align: 'center', width: '160', operator: false},
             {

+ 115 - 67
src/views/backend/enterprise/project/map/popupForm.vue

@@ -1,35 +1,38 @@
 <template>
   <!-- 对话框表单 -->
   <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
-    :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
-    width="30%"
-    >
+             :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
+             width="30%"
+  >
     <template #header>
       <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-        {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
+        {{ baTable.form.operate ? baTable.form.operate == "edit" ? "编辑" : "添加" : "无标题" }}
       </div>
     </template>
     <el-scrollbar v-loading="baTable.form.loading">
       <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
-        style="width: calc(100% - 40px);margin-bottom: 40px;">
+           style="width: calc(100% - 40px);margin-bottom: 40px;">
         <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
-          label-position="right" :label-width="'80px'" :rules="rules"
-          v-if="!baTable.form.loading">
-          <el-form-item prop="expressName" label="名称">
-            <el-input v-model="baTable.form.items!.expressName" placeholder="请输入标题"></el-input>
+                 label-position="right" :label-width="'100px'" :rules="rules"
+                 v-if="!baTable.form.loading">
+          <el-form-item label="所在区(县)">
+            <el-select v-model="districtId" placeholder="请选择" @change="selectDstrict">
+              <el-option v-for="item in districtList" :label="item.districtName" :value="item.id"></el-option>
+            </el-select>
           </el-form-item>
-          <el-form-item prop="expressType" label="类型">
-            <el-select v-model="baTable.form.items!.expressType" placeholder="请选择类型" style="width: 100%" clearable>
-              <el-option label="快递公司" :value='0' />
-              <el-option label="物流公司" :value='1' />
+          <el-form-item prop="id" label="所在小区">
+            <el-select v-model="baTable.form.items!.id" placeholder="请选择" @change="selectCommunity">
+              <el-option v-for="item in communityList" :label="item.communityName" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item prop="expressStatus" label="状态">
-            <el-select v-model="baTable.form.items!.expressStatus" placeholder="请选择状态" style="width: 100%" clearable>
-              <el-option label="正常" :value='0' />
-              <el-option label="启用" :value='1' />
+          <el-form-item prop="ids" label="相关楼号">
+            <el-select v-model="baTable.form.items!.ids" placeholder="请选择" style="width: 100%" clearable multiple>
+              <el-option v-for="item in buildingList" :label="item.buildingNumber" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
+          <el-form-item prop="url" label="上传地图">
+            <pictureUpload v-model:fileUrl="baTable.form.items!.url"></pictureUpload>
+          </el-form-item>
         </el-form>
       </div>
     </el-scrollbar>
@@ -37,7 +40,7 @@
       <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
         <el-button @click="baTable.toggleForm('')">取消</el-button>
         <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)" type="primary">
-          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
+          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? "保存并编辑下一项" : "保存" }}
         </el-button>
       </div>
     </template>
@@ -45,72 +48,117 @@
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, inject } from 'vue'
+import { ref, reactive, inject, onMounted } from "vue";
 
-import type baTableClass from '/@/utils/baTable'
-import type { ElForm, FormItemRule } from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import { orderExpress } from '/@/api/controllerUrls'
-import { ElNotification } from 'element-plus/es'
+import type baTableClass from "/@/utils/baTable";
+import type { ElForm, FormItemRule } from "element-plus";
+import FormItem from "/@/components/formItem/index.vue";
+import { building_list, community_list, district_list, orderExpress } from "/@/api/controllerUrls";
+import { ElNotification } from "element-plus/es";
+import pictureUpload from "/@/components/pictureUpload/multiple.vue";
+import request from "/@/api/request";
 
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
+const formRef = ref<InstanceType<typeof ElForm>>();
+const baTable = inject("baTable") as baTableClass;
 
 
 const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    expressName: [
-        {
-            required: true,
-            message: '请输入名称',
-            trigger: 'blur',
-        },
-    ],
-    expressType: [
-        {
-            required: true,
-            message: '请选择类型',
-            trigger: 'blur',
-        },
-    ],
-    expressStatus: [
-        {
-            required: true,
-            message: '请选择状态',
-            trigger: 'blur',
-        },
-    ],
-})
+  id: [
+    {
+      required: true,
+      message: "请选择",
+      trigger: "blur"
+    }
+  ],
+  ids: [
+    {
+      required: true,
+      message: "请选择",
+      trigger: "blur"
+    }
+  ],
+  url: [
+    {
+      required: true,
+      message: "请上传",
+      trigger: "blur"
+    }
+  ]
+});
+
+onMounted(() => {
+  getInitData();
+});
+
+//区县列表
+let districtList = ref([]);
+let districtId = ref("");
+
+function getInitData() {
+  request.index(district_list, {}, "").then((res: any) => {
+    if (res.code == 1) {
+      districtList.value = res.data;
+    }
+  });
+}
+
+//小区列表
+let communityList = ref([]);
+//选择区县,获取小区列表
+function selectDstrict(event: any) {
+  request.index(community_list, {
+    districtIds: event
+  }, "").then((res: any) => {
+    if (res.code == 1) {
+      communityList.value = res.data;
+    }
+  });
+}
+
+//楼号列表
+let buildingList = ref([]);
+//选择小区,获取楼号列表
+function selectCommunity(event: any) {
+  request.index(building_list, {
+    communityIds: event
+  }, "").then((res: any) => {
+    if (res.code == 1) {
+      buildingList.value = res.data;
+    }
+  });
+}
+
 </script>
 
 <style scoped lang="scss">
 .avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  border-radius: var(--el-border-radius-small);
+  box-shadow: var(--el-box-shadow-light);
+  border: 1px dashed var(--color-sub-1);
+  cursor: pointer;
+  overflow: hidden;
+  width: 110px;
+  height: 110px;
 }
 
 .avatar-uploader:hover {
-    border-color: var(--color-primary);
+  border-color: var(--color-primary);
 }
 
 .avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
+  width: 110px;
+  height: 110px;
+  display: block;
 }
 
 .image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
 }
 </style>

+ 34 - 0
src/views/backend/enterprise/project/parking/editDialog.vue

@@ -0,0 +1,34 @@
+<template>
+  <el-dialog v-model="showDialog">
+    <el-row :gutter="10">
+      <el-col :span="12"></el-col>
+      <el-col :span="12"></el-col>
+    </el-row>
+  </el-dialog>
+</template>
+
+<script setup>
+import { ref } from "vue";
+
+let showDialog = ref(false)
+let mapData = ref({})
+
+defineExpose({
+  open
+})
+
+function open(value){
+
+  showDialog.value = true
+}
+
+function getInitData(){
+
+}
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 3
src/views/backend/enterprise/project/parking/index.vue

@@ -23,18 +23,17 @@
 
 <script setup lang="ts">
 import { ref, onMounted, provide } from "vue";
-import { orderExpress } from "/@/api/controllerUrls";
+import { parking } from "/@/api/controllerUrls";
 import Table from "/@/components/table/index.vue";
 import TableHeader from "/@/components/table/header/index.vue";
 import { defaultOptButtons } from "/@/components/table";
-import PopupForm from "./popupForm.vue";
 import { baTableApi } from "/@/api/common";
 import baTableClass from "/@/utils/baTable";
 
 
 const tableRef = ref();
 const baTable = new baTableClass(
-  new baTableApi(orderExpress),
+  new baTableApi(parking),
   {
     dblClickNotEditColumn: [undefined, "status"],
     column: [

+ 0 - 116
src/views/backend/enterprise/project/parking/popupForm.vue

@@ -1,116 +0,0 @@
-<template>
-  <!-- 对话框表单 -->
-  <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
-    :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
-    width="30%"
-    >
-    <template #header>
-      <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-        {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-      </div>
-    </template>
-    <el-scrollbar v-loading="baTable.form.loading">
-      <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
-        style="width: calc(100% - 40px);margin-bottom: 40px;">
-        <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
-          label-position="right" :label-width="'80px'" :rules="rules"
-          v-if="!baTable.form.loading">
-          <el-form-item prop="expressName" label="名称">
-            <el-input v-model="baTable.form.items!.expressName" placeholder="请输入标题"></el-input>
-          </el-form-item>
-          <el-form-item prop="expressType" label="类型">
-            <el-select v-model="baTable.form.items!.expressType" placeholder="请选择类型" style="width: 100%" clearable>
-              <el-option label="快递公司" :value='0' />
-              <el-option label="物流公司" :value='1' />
-            </el-select>
-          </el-form-item>
-          <el-form-item prop="expressStatus" label="状态">
-            <el-select v-model="baTable.form.items!.expressStatus" placeholder="请选择状态" style="width: 100%" clearable>
-              <el-option label="正常" :value='0' />
-              <el-option label="启用" :value='1' />
-            </el-select>
-          </el-form-item>
-        </el-form>
-      </div>
-    </el-scrollbar>
-    <template #footer>
-      <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-        <el-button @click="baTable.toggleForm('')">取消</el-button>
-        <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)" type="primary">
-          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-        </el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, inject } from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import type { ElForm, FormItemRule } from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import { orderExpress } from '/@/api/controllerUrls'
-import { ElNotification } from 'element-plus/es'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    expressName: [
-        {
-            required: true,
-            message: '请输入名称',
-            trigger: 'blur',
-        },
-    ],
-    expressType: [
-        {
-            required: true,
-            message: '请选择类型',
-            trigger: 'blur',
-        },
-    ],
-    expressStatus: [
-        {
-            required: true,
-            message: '请选择状态',
-            trigger: 'blur',
-        },
-    ],
-})
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>