Browse Source

Project Init

yigeren911 2 years ago
parent
commit
ff4405ea19

+ 7 - 0
src/assets/css/style.css

@@ -1,3 +1,5 @@
+
+
 :root {
   font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
   line-height: 1.5;
@@ -19,6 +21,7 @@ a {
   color: #646cff;
   text-decoration: inherit;
 }
+
 a:hover {
   color: #535bf2;
 }
@@ -47,9 +50,11 @@ button {
   cursor: pointer;
   transition: border-color 0.25s;
 }
+
 button:hover {
   border-color: #646cff;
 }
+
 button:focus,
 button:focus-visible {
   outline: 4px auto -webkit-focus-ring-color;
@@ -71,9 +76,11 @@ button:focus-visible {
     color: #213547;
     background-color: #ffffff;
   }
+
   a:hover {
     color: #747bff;
   }
+
   button {
     background-color: #f9f9f9;
   }

BIN
src/assets/font/AlibabaPuHuiTi-2-45-Light.ttf


BIN
src/assets/font/AlibabaPuHuiTi-2-55-Regular.ttf


BIN
src/assets/font/AlimamaDongFangDaKai-Regular.ttf


BIN
src/assets/font/AlimamaShuHeiTi-Bold.ttf


+ 78 - 70
src/components/pictureUpload/multiple.vue

@@ -1,86 +1,94 @@
 <template>
-    <div v-for="(item ,index) in previewUrl" style="position:relative;">
-        <!-- <img v-if="previewUrl?.length>0" :src="item" class="box" style="cursor: pointer" @click="clickImg(item)"/> -->
-        <el-image ref="imageRef" :preview-teleported="true" :preview-src-list="previewUrl" :initial-index="index"
-                  :src="item" class="box"/>
-        <el-icon
-            style="position: absolute;top: 10px;right: 7px;color: red;cursor: pointer" @click="del(index)">
-            <Delete/>
-        </el-icon>
-    </div>
-    <el-upload
-        class="box"
-        action="#"
-        :show-file-list="false"
-        :http-request="upload"
-        accept=".jpg, .jpeg, .png"
-        v-if="previewUrl?.length<limit"
-    >
-        <el-icon class="avatar-uploader-icon">
-            <Plus/>
-        </el-icon>
-    </el-upload>
+  <div v-for="(item ,index) in previewUrl" style="position:relative;">
+    <!-- <img v-if="previewUrl?.length>0" :src="item" class="box" style="cursor: pointer" @click="clickImg(item)"/> -->
+    <el-image ref="imageRef" :preview-teleported="true" :preview-src-list="previewUrl" :initial-index="index"
+              :src="item" class="box" />
+    <el-icon
+      style="position: absolute;top: 10px;right: 7px;color: red;cursor: pointer" @click="del(index)">
+      <Delete />
+    </el-icon>
+  </div>
+  <el-upload
+    class="box"
+    action="#"
+    :show-file-list="false"
+    :http-request="upload"
+    accept=".jpg, .jpeg, .png"
+    v-if="previewUrl?.length<limit"
+  >
+    <el-icon class="avatar-uploader-icon">
+      <Plus />
+    </el-icon>
+  </el-upload>
 
 </template>
 
 <script setup lang="ts">
-import {onBeforeMount, onMounted, ref} from 'vue'
-import {fileUpload} from '/@/api/common'
-import {Delete, Download, Plus, ZoomIn} from '@element-plus/icons-vue'
-import {ElNotification} from "element-plus/es";
+import { onBeforeMount, onMounted, ref, watch } from "vue";
+import { fileUpload } from "/@/api/common";
+import { Delete, Download, Plus, ZoomIn } from "@element-plus/icons-vue";
+import { ElNotification } from "element-plus/es";
 
 
-const disabled = ref(false)
+const disabled = ref(false);
 
 const props = defineProps({
-    fileUrl: {
-        type: String,
-        default: ''
-    },
-    limit: {
-        type: Number,
-        default: 1
-    },
-    size: {
-        type: Number,
-        default: 1000000
-    }
-})
-
-const imageRef = ref()
+  fileUrl: {
+    type: String,
+    default: ""
+  },
+  limit: {
+    type: Number,
+    default: 1
+  },
+  size: {
+    type: Number,
+    default: 1000000
+  }
+});
+
+const imageRef = ref();
 
 onMounted(() => {
-    if (props.fileUrl?.length>0) {
-        previewUrl.value = JSON.parse(props.fileUrl)
-    }else{
-        previewUrl.value = []
-    }
-})
+  if (props.fileUrl?.length > 0) {
+    previewUrl.value = JSON.parse(props.fileUrl);
+  } else {
+    previewUrl.value = [];
+  }
+});
 
+watch(() => props.fileUrl, () => {
+  if (props.fileUrl?.length > 0) {
+    previewUrl.value = JSON.parse(props.fileUrl);
+  } else {
+    previewUrl.value = [];
+  }
+});
 
-const emit = defineEmits(['update:fileUrl'])
+
+const emit = defineEmits(["update:fileUrl"]);
 
 
 //上传图片路径
-let previewUrl = ref<Array<any>>([])
+let previewUrl = ref<Array<any>>([]);
 
 function upload(file: any) {
-    //大小限制为0时为不限制
-    if (file.file.size > props.size && props.size > 0) {
-        ElNotification({type: 'error', message: "文件大小不能超过1MB",})
-        return
-    }
-    let fd = new FormData()
-    fd.append('file', file.file)
-    fileUpload(fd).then(res => {
-        previewUrl.value.push(res.data.previewUrl)
-        emit('update:fileUrl', JSON.stringify(previewUrl.value))
-    })
+  //大小限制为0时为不限制
+  if (file.file.size > props.size && props.size > 0) {
+    ElNotification({ type: "error", message: "文件大小不能超过1MB" });
+    return;
+  }
+  let fd = new FormData();
+  fd.append("file", file.file);
+  fileUpload(fd).then(res => {
+    previewUrl.value.push(res.data.previewUrl);
+    emit("update:fileUrl", JSON.stringify(previewUrl.value));
+  });
 }
 
 function del(index: number) {
-    previewUrl.value.splice(index, 1)
-    emit('update:fileUrl', JSON.stringify(previewUrl.value))
+  previewUrl.value.splice(index, 1);
+  emit("update:fileUrl", JSON.stringify(previewUrl.value));
 }
 
 
@@ -88,13 +96,13 @@ function del(index: number) {
 
 <style scoped>
 .box {
-    height: 90px;
-    width: 90px;
-    border: #bfc0c2 1px dashed;
-    border-radius: 10px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin: 0 23px 10px 0;
+  height: 90px;
+  width: 90px;
+  border: #bfc0c2 1px dashed;
+  border-radius: 10px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin: 0 23px 10px 0;
 }
 </style>

+ 3 - 1
src/index.css

@@ -1,5 +1,7 @@
 #app {
-  font-family: Avenir, Helvetica, Arial, sans-serif;
+
+
+  /*font-family: Avenir, Helvetica, Arial, sans-serif;*/
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
   text-align: center;

+ 19 - 1
src/styles/app.scss

@@ -1,4 +1,23 @@
 /* 基本样式 */
+@font-face {
+  font-family: Alibaba-55;
+  src: url('../assets/font/AlibabaPuHuiTi-2-55-Regular.ttf') format("truetype");
+}
+
+@font-face {
+  font-family: Alimama-ShuHeiTi;
+  src: url('../assets/font/AlimamaShuHeiTi-Bold.ttf') format("truetype");
+}
+
+@font-face {
+  font-family: Alimama-DaKai;
+  src: url('../assets/font/AlimamaDongFangDaKai-Regular.ttf') format("truetype");
+}
+
+* {
+  font-family: Alibaba-55;
+}
+
 * {
     margin: 0;
     padding: 0;
@@ -13,7 +32,6 @@ body,
     padding: 0;
     width: 100%;
     height: 100%;
-    font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
     font-weight: 400;
     -webkit-font-smoothing: antialiased;
     -webkit-tap-highlight-color: transparent;

+ 9 - 1
src/views/backend/enterprise/coupons/couponstheme/index.vue

@@ -56,6 +56,14 @@ const baTable = new baTableClass(
         operator: "=",
         replaceValue: { 0: "不限定", 1: "首页投放", 2: "商家派发", 3: "营销活动" }
       },
+      {
+        label: "限定使用",
+        prop: "limitedUse",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        replaceValue: { 0: "否", 1: "是" }
+      },
       { label: "发行数量", prop: "issuesNumber", align: "center", operator: "LIKE" },
       {
         label: "状态",
@@ -67,7 +75,7 @@ const baTable = new baTableClass(
         replaceValue: { 0: "可用", 1: "停用" }
       },
       { label: "创建人", prop: "creatorName", align: "center", width: "120", operator: false },
-      { label: "创建时间", prop: "createTime", align: "center", width: "160", operator: false },
+      { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false },
       {
         label: "操作",
         align: "center",

+ 4 - 1
src/views/backend/enterprise/coupons/couponstheme/popupForm.vue

@@ -158,7 +158,10 @@ const rules: Partial<Record<string, FormItemRule[]>> = reactive({
   limitedUse: [{ required: true, message: "请输入", trigger: "blur" }],
   validityType: [{ required: true, message: "请输入", trigger: "blur" }],
   couponStatus: [{ required: true, message: "请输入", trigger: "blur" }],
-
+  deductionAmount: [{ required: true, message: "请输入", trigger: "blur" }],
+  discountValue: [{ required: true, message: "请输入", trigger: "blur" }],
+  specialOffer: [{ required: true, message: "请输入", trigger: "blur" }],
+  validityPeriod: [{ required: true, message: "请输入", trigger: "blur" }],
 
 });
 

+ 2 - 1
src/views/backend/enterprise/project/building/index.vue

@@ -39,6 +39,7 @@ const baTable = new baTableClass(
         dblClickNotEditColumn: [undefined, 'status'],
         column: [
             {type: 'selection', align: 'center', operator: false},
+            {label: '所在区县', prop: 'districtName', align: 'left', operator: 'LIKE'},
             {label: '小区名称', prop: 'communityName', align: 'left', operator: 'LIKE'},
             {label: '楼号', prop: 'buildingNumber', align: 'center', operator: false},
             { label: "现有车位", prop: "carportCount", align: "center",width:"100", operator: false },
@@ -46,7 +47,7 @@ const baTable = new baTableClass(
             { label: "现有车库", prop: "garageCount", align: "center",width:"100", operator: false },
             { label: "剩余车库", prop: "garageReminderCount", align: "center",width:"100", operator: false },
             {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '160', operator: false},
+            {label: '创建时间', prop: 'createTime', align: 'center', width: '180', operator: false},
             {
                 label: '操作',
                 align: 'center',

+ 6 - 6
src/views/backend/enterprise/project/building/popupForm.vue

@@ -15,12 +15,12 @@
         <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="communityId" label="小区名称">
-<!--            <el-tree-select v-model="baTable.form.items!.communityId" placeholder="请选择" :data="treeDate"-->
-<!--                            :props="defaultProps"-->
-<!--                            style="width: 100%"-->
-<!--                            clearable>-->
-<!--            </el-tree-select>-->
+          <el-form-item prop="communityId" label="所在小区">
+            <!--            <el-tree-select v-model="baTable.form.items!.communityId" placeholder="请选择" :data="treeDate"-->
+            <!--                            :props="defaultProps"-->
+            <!--                            style="width: 100%"-->
+            <!--                            clearable>-->
+            <!--            </el-tree-select>-->
             <el-select v-model="baTable.form.items!.communityId" placeholder="请选择" style="width: 100%">
               <el-option-group v-for="i in treeDate" :label="i.label">
                 <el-option v-for="j in i.children" :label="j.label" :value="j.id"></el-option>

+ 1 - 1
src/views/backend/enterprise/project/community/index.vue

@@ -46,7 +46,7 @@ const baTable = new baTableClass(
             { label: "现有车库", prop: "garageCount", align: "center",width:"100", operator: false },
             { label: "剩余车库", prop: "garageReminderCount", align: "center",width:"100", operator: false },
             { label: "创建人", prop: "creatorName", align: "center", width: "120", operator: false },
-            { label: "创建时间", prop: "createTime", align: "center", width: "160", operator: false },
+            { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false },
             {
                 label: "操作",
                 align: "center",

+ 4 - 3
src/views/backend/enterprise/project/community/popupForm.vue

@@ -15,14 +15,15 @@
         <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
                  label-position="right" :label-width="'100px'" :rules="rules"
                  v-if="!baTable.form.loading">
-          <el-form-item prop="communityName" label="小区名称">
-            <el-input v-model="baTable.form.items!.communityName" placeholder="请输入"></el-input>
-          </el-form-item>
           <el-form-item prop="districtId" label="所在区(县)">
             <el-select v-model="baTable.form.items!.districtId" placeholder="请选择" style="width: 100%" clearable>
               <el-option :label="item.districtName" :value="item.id" v-for="item in districtList" />
             </el-select>
           </el-form-item>
+          <el-form-item prop="communityName" label="小区名称">
+            <el-input v-model="baTable.form.items!.communityName" placeholder="请输入"></el-input>
+          </el-form-item>
+
         </el-form>
       </div>
     </el-scrollbar>

+ 28 - 2
src/views/backend/enterprise/project/map/index.vue

@@ -32,8 +32,34 @@ import PopupForm from './popupForm.vue'
 import {baTableApi} from '/@/api/common'
 import baTableClass from '/@/utils/baTable'
 
+class newBaTable extends baTableClass{
 
-const baTable = new baTableClass(
+  public mapInfo = ref({})
+
+  requestEdit = (id: string) => {
+    if (this.runBefore('requestEdit', {id}) === false) return
+    this.form.loading = true
+    this.form.items = {}
+    return this.api
+      .edit({
+        id: id,
+      })
+      .then((res) => {
+        this.form.loading = false
+        // this.form.items =  Object.assign(res.data.row, this.form.defaultItems)
+        this.form.items = res.data.row
+        if (res.data.row.hasOwnProperty('status')) {
+          this.form.items!.status = res.data.row.status + ''
+        }
+        this.mapInfo.value = res.data.row
+        this.runAfter('requestEdit', {res})
+
+      })
+  }
+}
+
+
+const baTable = new newBaTable(
     new baTableApi(map),
     {
         dblClickNotEditColumn: [undefined, 'status'],
@@ -43,7 +69,7 @@ const baTable = new baTableClass(
             {label: '小区名称', prop: 'communityName', align: 'left', operator: 'LIKE'},
             {label: '关联楼号', prop: 'buildingName', align: 'left', operator: false},
             {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '160', operator: false},
+            {label: '创建时间', prop: 'createTime', align: 'center', width: '180', operator: false},
             {
                 label: '操作',
                 align: 'center',

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

@@ -15,15 +15,15 @@
         <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
                  label-position="right" :label-width="'100px'" :rules="rules"
                  v-if="!baTable.form.loading">
-          <el-form-item label="所在区(县)">
+          <el-form-item label="所在区(县)" v-if="baTable.form.operate == 'add'">
             <el-select v-model="districtId" placeholder="请选择" style="width: 100%" @change="selectDstrict"
-                       :disabled="baTable.form.operate == 'edit' ">
+            >
               <el-option v-for="item in districtList" :label="item.districtName" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item prop="communityId" label="所在小区">
             <el-select v-model="baTable.form.items!.communityId" placeholder="请选择" style="width: 100%"
-                       @change="selectCommunity" :disabled="baTable.form.operate == 'edit' ">
+                       @change="selectCommunity">
               <el-option v-for="item in communityList" :label="item.communityName" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
@@ -64,6 +64,8 @@ import request from "/@/api/request";
 const formRef = ref<InstanceType<typeof ElForm>>();
 const baTable = inject("baTable") as baTableClass;
 
+console.log(baTable.mapInfo);
+
 
 const rules: Partial<Record<string, FormItemRule[]>> = reactive({
   communityId: [
@@ -94,13 +96,11 @@ onMounted(() => {
 });
 
 
-defineExpose({
-  editInit
-})
-
-function editInit(){
-
-}
+watch(() => baTable.mapInfo.value, (nValue, oValue) => {
+  if (baTable.form.operate == "edit") {
+    selectCommunity(nValue.communityId);
+  }
+});
 
 //区县列表
 let districtList = ref([]);

+ 1 - 0
src/views/backend/enterprise/project/parking/mapSetting.vue

@@ -103,6 +103,7 @@ function setImgSize() {
   const m = document.getElementById("mapContainer");
   let img = new Image();
   img.src = props.imgUrl;
+  console.log(img);
   width.value = m.clientWidth;
   height.value = m.clientWidth * (img.height / img.width);
 }