scorpio 2 tahun lalu
induk
melakukan
438bff3b85

+ 0 - 1
package.json

@@ -23,7 +23,6 @@
     "pinia-plugin-persistedstate": "^2.1.1",
     "vite-plugin-pages": "^0.25.0",
     "vite-plugin-vue-layouts": "^0.7.0",
-    "vite-plugin-windicss": "^1.8.7",
     "vue": "^3.2.37",
     "vue-qr": "^4.0.9",
     "vue-router": "^4.1.2",

+ 24 - 0
src/api/contract/index.js

@@ -47,6 +47,30 @@ export default {
             'json'
         )
     },
+    /**
+     * 修改台账
+     * @param params
+     * @returns {Promise<unknown>}
+     */
+    ledgerUpdate(params) {
+        return fetch(
+            '/blade-project-manage-v2/accountinformation/update',
+            params,
+            'post',
+            'json'
+        )
+    },
+    /**
+     * 删除凭证
+     * @param params
+     */
+    voucherDel(params) {
+        return fetch(
+            '/blade-project-manage-v2/accountinformationfile/remove',
+            params,
+            'post',
+        )
+    },
     /**
      * 删除合同
      * @param params

+ 16 - 12
src/components/uploads.vue

@@ -18,7 +18,6 @@
       :on-remove="remove"
       :on-error="onError"
       :on-success="success"
-      :before-upload="beforeUp"
       :show-file-list="showList"
       style="width: 100%"
     >
@@ -36,7 +35,7 @@
           plain
           size="mini"
           type="primary"
-          >{{ btnText }}
+          >{{ btn }}
         </el-button>
       </div>
       <slot></slot>
@@ -66,10 +65,6 @@ export default {
       default: false
     },
     data: Object,
-    loading: {
-      type: Boolean,
-      default: false
-    },
     auto: {
       type: Boolean,
       default: false
@@ -101,8 +96,18 @@ export default {
       }
     }
   },
+  watch: {
+    btnText: {
+      handler(val) {
+        this.btn = val
+      },
+      immediate: true
+    }
+  },
   data() {
     return {
+      loading: false,
+      btn: '点击上传',
       tmpFileList: [],
       fileList: [],
       headers: {
@@ -135,15 +140,12 @@ export default {
       this.fileList = files
     },
     progress(event, file, fileList) {
-      // this.$message.info('上传中')
-      console.log(file.percentage)
-      if (file.percentage === 100) {
-        console.log(file)
-      }
-      if (file.status === 'uploading') {
+      if (file.status === 'ready') {
         this.loading = true
+        this.btn = '正在上传'
       } else if (file.status === 'success') {
         this.loading = false
+        this.btn = '点击上传'
       }
 
       this.$emit('progress')
@@ -166,6 +168,8 @@ export default {
       this.$emit('before', file)
     },
     success() {
+      this.loading = false
+      this.btn = '点击上传'
       const finishList = this.tmpFileList.filter(
         sub => sub.status === 'success'
       )

+ 66 - 6
src/views/contract/component/info2.vue

@@ -12,6 +12,7 @@
         :before-open="beforeOpen"
         @row-del="rowDel"
         @row-save="handleRowSave"
+        @row-update="rowUpdate"
         @on-load="onLoad"
       >
         <template #fileIds-form="{ row, type }">
@@ -26,6 +27,30 @@
               <el-button text type="primary" plain>查看</el-button>
             </div>
           </div>
+          <div v-else-if="type === 'edit'">
+            <div
+              v-if="
+                form.accountInformationFileList &&
+                form.accountInformationFileList.length === 0
+              "
+            >
+              <uploads :max="9" @success="uploadSucc" :auto="true" />
+              <div>
+                <div v-for="item in fileList" :key="item.id">
+                  {{ item.originalFileName }}
+                </div>
+              </div>
+            </div>
+            <div
+              v-for="i in form.accountInformationFileList"
+              :key="i.id"
+              class="pointer"
+              @click="removeFile(i)"
+            >
+              {{ i.title }}
+              <el-button text type="primary" plain>删除</el-button>
+            </div>
+          </div>
           <div v-else>
             <uploads :max="9" @success="uploadSucc" :auto="true" />
             <div>
@@ -64,15 +89,14 @@ export default {
       option: {
         align: 'center',
         menuAlign: 'center',
-        menuWidth: 220,
+        menuWidth: 250,
         height: 480,
         size: 'mini',
         addBtn: true,
-        editBtn: false,
+        editBtn: true,
         editBtnText: '支付凭证',
-        editBtnIcon: 'Plus',
         viewBtn: true,
-        delBtn: false,
+        delBtn: true,
         refreshBtn: false,
         columnBtn: false,
         labelWidth: 140,
@@ -207,7 +231,7 @@ export default {
       if (type === 'view') {
         done()
       } else if (type === 'edit') {
-        this.show = true
+        done()
       } else {
         done()
       }
@@ -225,6 +249,42 @@ export default {
         this.showImage = true
       }
     },
+    removeFile(item) {
+      this.$confirm('请确认是否删除该条支付凭证!', {
+        type: 'warning'
+      }).then(res => {
+        if (res === 'confirm') {
+          console.log(item)
+          this.$api.contract.voucherDel({ ids: item.id }).then(res => {
+            if (res.code === 200) {
+              this.form.accountInformationFileList =
+                this.form.accountInformationFileList.filter(
+                  sub => sub.id !== item.id
+                )
+            }
+          })
+        }
+      })
+    },
+    rowUpdate(row, index, done, loading) {
+      loading()
+      const data = Object.assign(this.form, { contractId: this.id })
+      this.$api.contract.ledgerUpdate(data).then(
+        res => {
+          if (res.code === 200) {
+            this.$message.success(res.msg)
+          } else {
+            this.$message.error(res.msg)
+          }
+          done(row)
+          this.onLoad()
+        },
+        error => {
+          window.console.log(error)
+          loading()
+        }
+      )
+    },
     handleRowSave(row, done, loading) {
       loading()
       const data = Object.assign(row, { contractId: this.id })
@@ -245,7 +305,7 @@ export default {
       })
     },
     rowDel(row, index, done) {
-      this.$confirm('确认删除该内容?', {
+      this.$confirm('请确认是否删除该条台账信息?', {
         type: 'warning'
       }).then(res => {
         if (res === 'confirm') {

+ 54 - 49
src/views/contract/index.vue

@@ -4,61 +4,61 @@
       <div class="flex">
         <div class="flex flex-center mt-15 mr-10">
           <el-form-item
-            label="关键字"
-            class="full-width"
-            style="margin-left: -50px"
+              label="关键字"
+              class="full-width"
+              style="margin-left: -50px"
           >
             <el-input
-              v-model="params.name"
-              placeholder="输入合同关键字"
-              prefix-icon="Search"
-              clearable
+                v-model="params.name"
+                placeholder="输入合同关键字"
+                prefix-icon="Search"
+                clearable
             />
           </el-form-item>
           <el-form-item class="full-width" label="合同类别">
             <el-select v-model="params.type" clearable>
               <el-option
-                v-for="item in typelist"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+                  v-for="item in typelist"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
               />
             </el-select>
           </el-form-item>
           <el-form-item class="full-width" label="合同状态">
             <el-select v-model="params.status" clearable>
               <el-option
-                v-for="item in dicList"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+                  v-for="item in dicList"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
               />
             </el-select>
           </el-form-item>
         </div>
         <div class="flex flex-center ml-20">
-          <base-button type="0" title="重置" icon="Refresh" @click="clearUp" />
-          <base-button class="ml-20" @click="onLoad" />
+          <base-button type="0" title="重置" icon="Refresh" @click="clearUp"/>
+          <base-button class="ml-20" @click="onLoad"/>
         </div>
       </div>
     </el-form>
     <avue-crud
-      :option="option"
-      :data="data"
-      ref="crud"
-      v-model="form"
-      v-model:page="page"
-      :before-open="beforeOpen"
-      @row-del="rowDel"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
+        :option="option"
+        :data="data"
+        ref="crud"
+        v-model="form"
+        v-model:page="page"
+        :before-open="beforeOpen"
+        @row-del="rowDel"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
     >
       <template #title="{ row }">
         <div>{{ row.fileFolder.title }}</div>
       </template>
       <template #menu-left>
-        <div class="grey-6 ml-10">单位:万元</div>
+        <div class="main-color ml-10 bold font-15">金额单位:万元</div>
       </template>
     </avue-crud>
   </el-card>
@@ -67,14 +67,19 @@
 <route>
 {
 name: '合同管理',
+<<<<<<< HEAD
 meta: { layout: 'empty','path':'/home/details','title':'资料管理','showMsg' : "请先通过资料管理,在对应的相关合同类别下上传合同文件,系统将自动识别所有相关文件并展示在以下列表中。"}
+=======
+meta: { layout: 'empty','path':'/home/details','title':'资料管理','showMsg' :
+"请先通过资料管理,在对应的相关合同类别下上传合同文件,系统将自动识别所有相关文件并展示在以下列表中。"}
+>>>>>>> develop
 }
 </route>
 <script>
 import BaseButton from '@/components/base-button.vue'
 
 export default {
-  components: { BaseButton },
+  components: {BaseButton},
   data() {
     return {
       projectId: '',
@@ -138,7 +143,7 @@ export default {
             label: '合同状态',
             prop: 'contractsStatus',
             dicUrl:
-              '/api/blade-system/dict-biz/dictionary?code=contract-status',
+                '/api/blade-system/dict-biz/dictionary?code=contract-status',
             props: {
               label: 'dictValue',
               value: 'dictKey'
@@ -172,7 +177,7 @@ export default {
   },
   methods: {
     getDic(code) {
-      this.$api.common.dicList({ code }).then(res => {
+      this.$api.common.dicList({code}).then(res => {
         if (res.code === 200) {
           if (code === 'contract-status') {
             this.dicList = res.data
@@ -184,24 +189,24 @@ export default {
     },
     onLoad() {
       this.loading = true
-      const data = Object.assign(this.params, { projectId: this.projectId })
+      const data = Object.assign(this.params, {projectId: this.projectId})
       this.$api.contract
-        .contractList(Object.assign(this.page, data))
-        .then(res => {
-          this.data = res.data.records.map(ele => {
-            if (ele.contractsStatus === -1) {
-              ele.contractsStatus = ''
-            }
-            if (ele.type === -1) {
-              ele.type = ''
-            }
-            return ele
+          .contractList(Object.assign(this.page, data))
+          .then(res => {
+            this.data = res.data.records.map(ele => {
+              if (ele.contractsStatus === -1) {
+                ele.contractsStatus = ''
+              }
+              if (ele.type === -1) {
+                ele.type = ''
+              }
+              return ele
+            })
+            this.page.total = res.data.total
+          })
+          .finally(() => {
+            this.loading = false
           })
-          this.page.total = res.data.total
-        })
-        .finally(() => {
-          this.loading = false
-        })
     },
     clearUp() {
       this.params.name = ''
@@ -213,7 +218,7 @@ export default {
       if (type === 'view') {
         const data = this.$router.resolve({
           path: '/contract/detail',
-          query: { id: this.form.id }
+          query: {id: this.form.id}
         })
         window.open(data.href, '_blank')
       }
@@ -224,7 +229,7 @@ export default {
       }).then(res => {
         console.log(res)
         if (res === 'confirm') {
-          this.$api.contract.contractRemove({ ids: row.id }).then(res => {
+          this.$api.contract.contractRemove({ids: row.id}).then(res => {
             if (res.code === 200) {
               this.$message.success(res.msg)
               this.onLoad()

+ 27 - 7
src/views/home/component/dash.vue

@@ -270,6 +270,7 @@
             >
               <el-input
                 v-model="projectForm.totalAmount"
+                type="number"
                 clearable
                 placeholder="输入项目总投(万元)"
               >
@@ -291,6 +292,21 @@
                 />
               </el-select>
             </el-form-item>
+            <el-form-item class="full-width" label="行业分类" prop="tags">
+              <el-select
+                v-model="projectForm.dictKey"
+                clearable
+                placeholder="选择行业分类"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in industryList"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+                />
+              </el-select>
+            </el-form-item>
             <el-form-item class="full-width" label="建设内容">
               <el-input
                 v-model="projectForm.introduction"
@@ -465,10 +481,15 @@ export default {
             width: 180
           },
           {
-            label: '子项目数量',
-            prop: 'lot',
+            label: '行业分类',
+            prop: 'dict_key',
             width: 120,
-            hide: true
+            dicUrl:
+              '/api/blade-system/dict-biz/dictionary?code=industry-classification',
+            props: {
+              label: 'dictValue',
+              value: 'dictKey'
+            }
           },
           {
             label: '是否入库',
@@ -543,13 +564,15 @@ export default {
       numList: [],
       typeList: [],
       tagsList: [],
+      industryList: [],
       num: '',
       projectForm: {
         name: '',
         totalAmount: '',
         projectType: '1589613582090166274',
         tags: '',
-        introduction: ''
+        introduction: '',
+        dictKey: ''
       },
       rules: {
         name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
@@ -580,17 +603,14 @@ export default {
   },
   created() {
     this.dev = sessionStorage.getItem('dev') === 'true'
-    const index = this.option.column.findIndex(sub => sub.prop === 'lot')
     const indexLabel = this.option.column.findIndex(
       sub => sub.prop === 'unit_name'
     )
     this.dataType = localStorage.getItem('data-type')
     if (this.user.info.viewStage === 1) {
       // 发改
-      this.option.column[index].hide = true
       this.option.column[indexLabel].label = '责任单位'
     } else {
-      this.option.column[index].hide = false
       this.option.column[indexLabel].label = '责任股(科)室'
     }
     this.$bus.on('serach', (res, type) => {

+ 59 - 59
src/views/home/component/dispatch.vue

@@ -10,27 +10,27 @@
           <span class="bold font-18 main-color">进度描述</span>
           <div class="flex flex-center">
             <base-button
-              type="0"
-              title="批量导出"
-              icon="upload"
-              @click="exportFile"
+                type="0"
+                title="批量导出"
+                icon="upload"
+                @click="exportFile"
             />
             <base-button
-              v-if="projectInfo.can_update"
-              class="ml-10"
-              :title="btnTitle"
-              icon="upload"
-              @click="edit"
+                v-if="projectInfo.can_update"
+                class="ml-10"
+                :title="btnTitle"
+                icon="upload"
+                @click="edit"
             />
           </div>
         </div>
         <div class="mt-20">
           <el-input
-            v-model="progress"
-            :rows="10"
-            type="textarea"
-            :disabled="btnTitle === '编辑'"
-            placeholder="填写项目进度信息"
+              v-model="progress"
+              :rows="10"
+              type="textarea"
+              :disabled="btnTitle === '编辑'"
+              placeholder="填写项目进度信息"
           />
         </div>
       </div>
@@ -40,40 +40,40 @@
           <span class="bold font-18 main-color">相关文件</span>
         </div>
         <avue-crud
-          ref="crud"
-          v-model="form"
-          v-model:page="page"
-          :data="data"
-          :option="option"
-          :table-loading="loading"
-          class="curd"
-          :before-open="beforeOpen"
-          @row-del="rowDel"
+            ref="crud"
+            v-model="form"
+            v-model:page="page"
+            :data="data"
+            :option="option"
+            :table-loading="loading"
+            class="curd"
+            :before-open="beforeOpen"
+            @row-del="rowDel"
         >
           <template #menu="{ row }">
             <el-button
-              v-if="projectInfo.can_update"
-              icon="Upload"
-              type="primary"
-              text
-              @click="openFile(row)"
+                v-if="projectInfo.can_update"
+                icon="Upload"
+                type="primary"
+                text
+                @click="openFile(row)"
             >
               上传
             </el-button>
             <el-button
-              text
-              type="primary"
-              icon="Download"
-              @click="fileDownload(row)"
-              >下载
+                text
+                type="primary"
+                icon="Download"
+                @click="fileDownload(row)"
+            >下载
             </el-button>
           </template>
           <template #menu-right>
             <div class="full-width">
               <el-button
-                icon="el-icon-refresh"
-                circle
-                @click="detail"
+                  icon="el-icon-refresh"
+                  circle
+                  @click="detail"
               ></el-button>
             </div>
           </template>
@@ -90,11 +90,11 @@
           <span class="bold font-18 main-color">施工现场图</span>
           <div class="flex flex-center">
             <base-button
-              type="0"
-              v-if="projectInfo.can_update"
-              title="上传"
-              icon="upload"
-              @click="
+                type="0"
+                v-if="projectInfo.can_update"
+                title="上传"
+                icon="upload"
+                @click="
                 openFile({
                   dispatchType: 4
                 })
@@ -103,20 +103,20 @@
           </div>
         </div>
         <div class="mt-20">
-          <el-empty description="暂无施工现场图" v-if="srcList.length === 0" />
+          <el-empty description="暂无施工现场图" v-if="srcList.length === 0"/>
           <el-carousel
-            v-else
-            autoplay
-            :interval="4000"
-            type="card"
-            height="400px"
-            :initial-index="0"
+              v-else
+              autoplay
+              :interval="4000"
+              type="card"
+              height="400px"
+              :initial-index="0"
           >
             <el-carousel-item v-for="(item, index) in srcList" :key="item">
               <el-image
-                :src="item"
-                fit="cover"
-                @click="showImageView(item, index)"
+                  :src="item"
+                  fit="cover"
+                  @click="showImageView(item, index)"
               />
             </el-carousel-item>
           </el-carousel>
@@ -124,10 +124,10 @@
       </div>
     </div>
     <el-image-viewer
-      v-if="showImage"
-      :url-list="preList"
-      :initial-index="imageIndex"
-      @close="showImage = false"
+        v-if="showImage"
+        :url-list="preList"
+        :initial-index="imageIndex"
+        @close="showImage = false"
     />
   </basic-container>
 </template>
@@ -139,7 +139,7 @@ import api from '@/api/index.js'
 
 export default {
   name: 'dispatch',
-  components: { BasicContainer, baseButton },
+  components: {BasicContainer, baseButton},
   props: {
     projectInfo: {
       type: Object,
@@ -219,7 +219,7 @@ export default {
         reserveSelection: true,
         align: 'center',
         viewBtn: true,
-        menuWidth: 500,
+        menuWidth: 350,
         viewBtnText: '预览',
         dialogClickModal: false,
         column: [
@@ -369,7 +369,7 @@ export default {
       if (api.offices.includes(item.fileFolder.suffix)) {
         const routeData = this.$router.resolve({
           path: '/home/file_detail',
-          query: { id: item.fileFolder.fileId }
+          query: {id: item.fileFolder.fileId}
         })
         window.open(routeData.href, '_blank')
       } else {
@@ -388,7 +388,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        this.$api.project.fileRemove({ ids: row.fileId, type: 2 }).then(res => {
+        this.$api.project.fileRemove({ids: row.fileId, type: 2}).then(res => {
           if (res.code === 200) {
             this.$message.success(res.msg)
             this.detail()

+ 4 - 1
src/views/home/component/folder_info.vue

@@ -252,7 +252,10 @@ export default {
     },
     getDict() {
       this.$api.project
-        .folderType({ stageId: this.projectStageId, projectId: this.projectId })
+        .folderType({
+          stageId: this.projectStageId,
+          projectId: this.$route.query.id
+        })
         .then(res => {
           if (res.code === 200) {
             this.folderType = res.data

+ 106 - 86
src/views/home/component/owner_serach.vue

@@ -6,30 +6,29 @@
         <div class="flex flex-col mr-10">
           <el-form-item class="full-width" label="项目名称">
             <el-input
-              v-model="form.projectName"
-              placeholder="输入项目关键字"
-              prefix-icon="Search"
-              clearable
+                v-model="form.projectName"
+                placeholder="输入项目关键字"
+                prefix-icon="Search"
             />
           </el-form-item>
           <div class="flex flex-center">
             <el-form-item class="full-width" label="是否开工">
-              <el-select v-model="form.isStart" style="width: 100%" clearable>
+              <el-select v-model="form.isStart" style="width: 100%">
                 <el-option
-                  v-for="item in start"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in start"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </el-form-item>
             <el-form-item class="full-width" label="是否入库">
-              <el-select v-model="form.isStorage" style="width: 100%" clearable>
+              <el-select v-model="form.isStorage" style="width: 100%">
                 <el-option
-                  v-for="item in storage"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in storage"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </el-form-item>
@@ -40,29 +39,27 @@
           <div class="flex flex-center">
             <el-form-item class="full-width" label="省重点">
               <el-select
-                v-model="form.isImportant"
-                style="width: 100%"
-                clearable
+                  v-model="form.isImportant"
+                  style="width: 100%"
               >
                 <el-option
-                  v-for="item in isimport"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in isimport"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </el-form-item>
             <el-form-item class="full-width" label="省集中开工">
               <el-select
-                v-model="form.isFocusStart"
-                style="width: 100%"
-                clearable
+                  v-model="form.isFocusStart"
+                  style="width: 100%"
               >
                 <el-option
-                  v-for="item in isfocus"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in isfocus"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </el-form-item>
@@ -70,16 +67,28 @@
           <div class="flex flex-center flex-justify-between">
             <el-form-item class="full-width" label="总投资额">
               <el-select
-                v-model="form.amount"
-                @change="changeAmount"
-                style="width: 100%"
-                clearable
+                  v-model="form.amount"
+                  @change="changeAmount"
+                  style="width: 100%"
               >
                 <el-option
-                  v-for="item in totalAmount"
-                  :key="item.value"
-                  :label="item.name"
-                  :value="item.value"
+                    v-for="item in totalAmount"
+                    :key="item.value"
+                    :label="item.name"
+                    :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item class="full-width" label="行业分类">
+              <el-select
+                  v-model="form.dictKey"
+                  style="width: 100%"
+              >
+                <el-option
+                    v-for="item in industryList"
+                    :key="item.dictKey"
+                    :label="item.dictValue"
+                    :value="item.dictKey"
                 />
               </el-select>
             </el-form-item>
@@ -90,55 +99,54 @@
         <div class="flex-child-average flex flex-center">
           <el-form-item class="full-width" label="项目状态">
             <el-select
-              v-model="form.reportType"
-              style="width: 98%; margin: 0; padding: 0"
+                v-model="form.reportType"
+                style="width: 98%; margin: 0; padding: 0"
             >
               <el-option
-                v-for="item in reportTypes"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
+                  v-for="item in reportTypes"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
               />
             </el-select>
           </el-form-item>
         </div>
         <div
-          class="flex-child-average flex flex-align-center flex-justify-end"
-          style="margin-bottom: 18px"
+            class="flex-child-average flex flex-align-center flex-justify-end"
+            style="margin-bottom: 18px"
         >
           <base-button
-            class="pointer"
-            icon="Delete"
-            title="清空"
-            type="0"
-            :width="130"
-            @click="clear"
+              class="pointer"
+              icon="Delete"
+              title="清空"
+              type="0"
+              :width="130"
+              @click="clear"
           />
-          <base-button class="pointer" width="130" @click="sure" />
+          <base-button class="pointer" width="130" @click="sure"/>
         </div>
       </div>
     </el-form>
     <!----机构选择----->
     <el-dialog
-      v-model="showOrg"
-      append-to-body
-      center
-      title="机构选择"
-      width="45%"
+        v-model="showOrg"
+        append-to-body
+        center
+        title="机构选择"
+        width="45%"
     >
       <div class="flex flex-col">
         <el-input
-          v-model="keyWords"
-          clearable
-          placeholder="机构快速搜索"
-          prefix-icon="Search"
-          @blur="change"
+            v-model="keyWords"
+            placeholder="机构快速搜索"
+            prefix-icon="Search"
+            @blur="change"
         />
       </div>
-      <el-divider />
+      <el-divider/>
       <div
-        class="hide-scrollbar full-width"
-        style="height: 40vh; overflow-x: scroll"
+          class="hide-scrollbar full-width"
+          style="height: 40vh; overflow-x: scroll"
       >
         <!--        <div v-if='attaches.length === 0' class='full-width flex flex-center '>-->
         <!--          <el-empty image-size='100'/>-->
@@ -147,20 +155,20 @@
           <span class="bold font-15 grey ml-5">部门</span>
         </div>
         <div
-          class="grid radius mt-15 padding"
-          style="border: 1px solid #dddfe6"
+            class="grid radius mt-15 padding"
+            style="border: 1px solid #dddfe6"
         >
           <div
-            v-for="(item, index) in deptList"
-            :key="item.id"
-            class="flex flex-center pointer padding"
-            :class="item.search ? 'org-search' : item.checked ? 'org-s' : 'org'"
-            @click="changeChecked(index)"
+              v-for="(item, index) in deptList"
+              :key="item.id"
+              class="flex flex-center pointer padding"
+              :class="item.search ? 'org-search' : item.checked ? 'org-s' : 'org'"
+              @click="changeChecked(index)"
           >
             <div :class="item.checked ? 'dot-checked' : 'dot'"></div>
             <div
-              class="ml-5 full-width"
-              :class="item.checked || item.search ? 'white' : ''"
+                class="ml-5 full-width"
+                :class="item.checked || item.search ? 'white' : ''"
             >
               {{ item.deptName }}
             </div>
@@ -168,12 +176,12 @@
         </div>
       </div>
       <div class="flex flex-center mt-20 mb-5">
-        <base-button title="重置" type="0" icon="Refresh" @click="orgRefresh" />
+        <base-button title="重置" type="0" icon="Refresh" @click="orgRefresh"/>
         <base-button
-          class="ml-20"
-          title="确定"
-          icon="Check"
-          @click="orgCheck"
+            class="ml-20"
+            title="确定"
+            icon="Check"
+            @click="orgCheck"
         />
       </div>
     </el-dialog>
@@ -182,12 +190,12 @@
 
 <script>
 import baseButton from '../../../components/base-button.vue'
-import { useStore } from '@/store/user.js'
+import {useStore} from '@/store/user.js'
 import confing from '@/config/website'
 
 export default {
   name: 'owner_serach',
-  components: { baseButton },
+  components: {baseButton},
   watch: {
     keyWords: {
       handler(val) {
@@ -200,7 +208,7 @@ export default {
   },
   setup() {
     const user = useStore()
-    return { user }
+    return {user}
   },
   data() {
     return {
@@ -215,7 +223,8 @@ export default {
         isImportant: '', // 是否省重点
         isFocusStart: '', // 是否集中开工
         type: true,
-        reportType: ''
+        reportType: '',
+        dictKey: '',
       },
       totalAmount: [
         {
@@ -272,6 +281,7 @@ export default {
         }
       ],
       typeList: [],
+      industryList: [],
       showOrg: false,
       keyWords: '',
       checked: false,
@@ -281,10 +291,19 @@ export default {
     }
   },
   created() {
+    this.getDic()
     this.reportTypes = confing.reportTypes
     this.getTypeList()
   },
   methods: {
+    getDic() {
+      this.$api.common.dicList({code: 'industry-classification'}).then(res => {
+        if (res.code === 200) {
+          this.industryList = res.data
+        }
+      })
+    },
+
     getTypeList() {
       this.$api.project.typeList().then(res => {
         this.typeList = res.data.records
@@ -300,7 +319,7 @@ export default {
       }
       if (this.form.isStart === 0) {
         this.form.planCommencementTime =
-          this.time1 === null ? '' : this.time1.join(',')
+            this.time1 === null ? '' : this.time1.join(',')
         this.form.startTime = ''
       } else if (this.form.isStart === 1 && this.time1 !== null) {
         this.form.planCommencementTime = ''
@@ -312,7 +331,7 @@ export default {
 
       if (this.form.isStorage === 0) {
         this.form.planStorageTime =
-          this.time2 === null ? '' : this.time2.join(',')
+            this.time2 === null ? '' : this.time2.join(',')
         this.form.storageTime = ''
       } else if (this.form.isStorage === 1 && this.time2 !== null) {
         this.form.planStorageTime = ''
@@ -353,6 +372,7 @@ export default {
       this.form.planStorageTime = ''
       this.form.storageTime = ''
       this.form.reportType = ''
+      this.form.dictKey = ''
       this.time1 = null
       this.time2 = null
       this.deptName = '机构选择'
@@ -396,8 +416,8 @@ export default {
         return
       }
       const tmp = this.deptList
-        .filter(sub => sub.deptName.indexOf(this.keyWords) > -1)
-        .map(sub => sub.id)
+          .filter(sub => sub.deptName.indexOf(this.keyWords) > -1)
+          .map(sub => sub.id)
       tmp.forEach(sub => {
         const index = this.deptList.findIndex(ele => ele.id === sub)
         this.deptList[index].search = true

+ 40 - 4
src/views/home/component/params/params1.vue

@@ -5,9 +5,9 @@
         <span class="full-width text-left bold mr-20">{{
           info.dictValue
         }}</span>
-        <el-tag>{{
-          detail.tags === 1 ? '政府投资项目' : '企业投资项目'
-        }}</el-tag>
+        <el-tag
+          >{{ detail.tags === 1 ? '政府投资项目' : '企业投资项目' }}
+        </el-tag>
       </div>
       <el-button
         v-if="detail.can_update"
@@ -108,7 +108,19 @@
             class="flex-child-average"
             style="flex: 1"
           >
-            <el-input v-model="form.industry" />
+            <el-select
+              v-model="form.dict_value"
+              placeholder="行业分类"
+              class="full-width"
+              @change="changeIndustry"
+            >
+              <el-option
+                v-for="item in industryList"
+                :key="item.dictKey"
+                :label="item.dictValue"
+                :value="item.dictKey"
+              />
+            </el-select>
           </el-form-item>
           <el-form-item label="建设起止时间" class="flex-child-average ml-20">
             <el-input
@@ -399,16 +411,35 @@ export default {
       ],
       deptDic: [],
       compDic: [],
+      industryList: [],
       dev: false
     }
   },
   mounted() {
     this.dev = sessionStorage.getItem('dev') === 'true'
+    this.getDic()
     this.areaList()
     this.getDepList()
     this.getCompList()
   },
   methods: {
+    getDic() {
+      this.$api.common
+        .dicList({ code: 'industry-classification' })
+        .then(res => {
+          if (res.code === 200) {
+            this.industryList = res.data
+            console.log(typeof this.form.dict_key)
+            const tmp = this.industryList.find(
+              ele => ele.dictKey === this.form.dict_key.toString()
+            )
+            if (tmp) {
+              this.form.dict_value = tmp.dictValue
+            }
+            console.log(tmp)
+          }
+        })
+    },
     getDepList() {
       const local = {
         label: this.user.info.deptName,
@@ -484,6 +515,11 @@ export default {
       if (res.item !== undefined) {
         this.form.competent_unit_name = res.item.label
       }
+    },
+    changeIndustry(res) {
+      const tmp = this.industryList.find(ele => ele.dictKey === res)
+      this.form.dict_key = Number.parseInt(tmp.dictKey)
+      delete this.form.dict_value
     }
   }
 }

+ 46 - 44
src/views/home/component/params/params4.vue

@@ -5,39 +5,39 @@
     </div>
     <div class="mt-10" style="width: 90%">
       <avue-crud
-        :option="option"
-        :data="data"
-        ref="crud"
-        v-model="form"
-        :before-open="beforeOpen"
-        @row-del="rowDel"
-        @row-save="rowSave"
-        @row-update="rowUpdate"
+          :option="option"
+          :data="data"
+          ref="crud"
+          v-model="form"
+          :before-open="beforeOpen"
+          @row-del="rowDel"
+          @row-save="rowSave"
+          @row-update="rowUpdate"
       >
         <template #menu-right>
           <div class="full-width">
             <el-button
-              icon="el-icon-refresh"
-              circle
-              @click="proInfo"
+                icon="el-icon-refresh"
+                circle
+                @click="proInfo"
             ></el-button>
           </div>
         </template>
         <template #menu="{ row }">
           <el-button
-            text
-            type="primary"
-            icon="el-icon-folder-checked"
-            @click="openFolder(row)"
-            >打开文件夹
+              text
+              type="primary"
+              icon="el-icon-folder-checked"
+              @click="openFolder(row)"
+          >打开文件夹
           </el-button>
           <el-button
-            text
-            type="primary"
-            icon="el-icon-view"
-            @click="edit(row)"
-            v-if="detail.can_update"
-            >文号提取
+              text
+              type="primary"
+              icon="el-icon-view"
+              @click="edit(row)"
+              v-if="detail.can_update"
+          >文号提取
           </el-button>
         </template>
         <template #file="{ row }">
@@ -56,22 +56,23 @@
       <div>
         <div class="bold font-16">{{ currentRow.file.originalFileName }}</div>
         <el-input
-          class="mt-20"
-          v-model="currentRow.file.copyNumber"
-          placeholder="附件清晰度或手写原因导致文号提取失败,请进行手动填写"
+            class="mt-20"
+            v-model="currentRow.file.copyNumber"
+            placeholder="附件清晰度或手写原因导致文号提取失败,请进行手动填写"
         ></el-input>
         <div class="mt-20 full-width flex flex-justify-end">
           <el-button plain type="primary" @click="show = false"
-            >取 消</el-button
+          >取 消
+          </el-button
           >
           <el-button type="primary" @click="updateCopyNumber">确定</el-button>
         </div>
       </div>
     </el-dialog>
     <el-image-viewer
-      v-if="showImage"
-      :url-list="preList"
-      @close="showImage = false"
+        v-if="showImage"
+        :url-list="preList"
+        @close="showImage = false"
     />
   </div>
 </template>
@@ -215,7 +216,8 @@ export default {
           {
             label: '审批事项(要件)类型',
             prop: 'name',
-            display: false
+            display: false,
+            width: 170
           },
           {
             label: '文件名称',
@@ -285,7 +287,7 @@ export default {
       if (api.offices.includes(item.file.suffix)) {
         const routeData = this.$router.resolve({
           path: '/home/file_detail',
-          query: { id: item.fileId }
+          query: {id: item.fileId}
         })
         window.open(routeData.href, '_blank')
       } else {
@@ -331,7 +333,7 @@ export default {
         type: 'warning'
       }).then(res => {
         if (res === 'confirm') {
-          this.$api.project.fileRemove({ ids: row.pid, type: 3 }).then(res => {
+          this.$api.project.fileRemove({ids: row.pid, type: 3}).then(res => {
             if (res.code === 200) {
               this.$message.success(res.msg)
               this.proInfo()
@@ -353,18 +355,18 @@ export default {
         return
       }
       this.$api.common
-        .fileUpdate({
-          id: this.currentRow.fileId,
-          copyNumber: this.currentRow.file.copyNumber
-        })
-        .then(res => {
-          if (res.code === 200) {
-            this.show = false
-            this.$message.success(res.msg)
-          } else {
-            this.$message.error(res.msg)
-          }
-        })
+          .fileUpdate({
+            id: this.currentRow.fileId,
+            copyNumber: this.currentRow.file.copyNumber
+          })
+          .then(res => {
+            if (res.code === 200) {
+              this.show = false
+              this.$message.success(res.msg)
+            } else {
+              this.$message.error(res.msg)
+            }
+          })
     }
   }
 }

+ 49 - 49
src/views/home/component/pro_left.vue

@@ -1,33 +1,33 @@
 <template>
   <div>
     <el-card
-      class="top full-height flex flex-col hide-scrollbar"
-      style="overflow-y: auto"
+        class="top full-height flex flex-col hide-scrollbar"
+        style="overflow-y: auto"
     >
       <div class="flex flex-col flex-center mt-15 padding">
         <span class="font-15 bold mb-10">{{ data.name }}</span>
         <span class="font-15 bold mt-5" style="color: #787c90"
-          >项目总投资额</span
+        >项目总投资额</span
         >
         <span class="mt-5 font-15 bold main-color"
-          >{{
+        >{{
             data.total_amount ? data.total_amount.toLocaleString() : '0'
           }}万元</span
         >
         <div class="flex flex-center mt-10">
           <!--          <span class="bold mr-15" style="color:#787C90;">{{ currentSituation.dictValue }}</span>-->
           <el-select
-            v-model="keyWords"
-            class="bold"
-            :placeholder="currentSituation.dictValue"
-            size="small"
-            @change="result"
+              v-model="keyWords"
+              class="bold"
+              :placeholder="currentSituation.dictValue"
+              size="small"
+              @change="result"
           >
             <el-option
-              v-for="item in dicList"
-              :key="item.dictKey"
-              :label="item.dictValue"
-              :value="item.dictKey"
+                v-for="item in dicList"
+                :key="item.dictKey"
+                :label="item.dictValue"
+                :value="item.dictKey"
             >
             </el-option>
           </el-select>
@@ -35,22 +35,22 @@
         <el-divider></el-divider>
         <div class="flex flex-center full-width">
           <span class="title pointer" @click="showRelation = !showRelation"
-            >已关联子项目<span class="bold blue font-16">{{ data.lot }}</span
-            >个</span
+          >已关联子项目<span class="bold blue font-16">{{ data.lot }}</span
+          >个</span
           >
         </div>
       </div>
       <div
-        class="flex flex-center flex-justify-between flex-col mt-15 hide-scrollbar"
-        style="height: 55vh; overflow-x: auto"
+          class="flex flex-center flex-justify-between flex-col mt-15 hide-scrollbar"
+          style="height: 55vh; overflow-x: auto"
       >
         <div v-if="dicList1 && dicList1.length > 0">
           <div
-            class="flex flex-center grey-9 font-15 bold pointer"
-            :class="active === index ? 'box-s' : 'box'"
-            v-for="(item, index) in dicList1"
-            :key="item.id"
-            @click="change(index)"
+              class="flex flex-center grey-9 font-15 bold pointer"
+              :class="active === index ? 'box-s' : 'box'"
+              v-for="(item, index) in dicList1"
+              :key="item.id"
+              @click="change(index)"
           >
             {{ item.dictValue }}
           </div>
@@ -58,25 +58,25 @@
         <div v-else>
           <div>
             <el-select
-              v-model="year"
-              placeholder="选择年份"
-              clearable
-              @change="yearSelect"
+                v-model="year"
+                placeholder="选择年份"
+                clearable
+                @change="yearSelect"
             >
               <el-option
-                v-for="item in years"
-                :key="item.value"
-                :label="item.value"
-                :value="item.value"
+                  v-for="item in years"
+                  :key="item.value"
+                  :label="item.value"
+                  :value="item.value"
               />
             </el-select>
           </div>
           <div
-            class="flex flex-center grey-9 font-15 bold pointer mt-5"
-            :class="active === index ? 'box-s' : 'box'"
-            v-for="(item, index) in month"
-            :key="item"
-            @click="change(index)"
+              class="flex flex-center grey-9 font-15 bold pointer mt-5"
+              :class="active === index ? 'box-s' : 'box'"
+              v-for="(item, index) in month"
+              :key="item"
+              @click="change(index)"
           >
             {{ item.value }}
           </div>
@@ -84,10 +84,10 @@
       </div>
     </el-card>
     <pro-relation
-      :showRelation="showRelation"
-      :projectId="data.id"
-      @close="showRelation = false"
-      @success="updateLot"
+        :showRelation="showRelation"
+        :projectId="data.id"
+        @close="showRelation = false"
+        @success="updateLot"
     />
   </div>
 </template>
@@ -97,7 +97,7 @@ import proRelation from '@/views/home/component/pro_relation.vue'
 
 export default {
   name: 'pro_left',
-  components: { proRelation },
+  components: {proRelation},
   props: {
     data: Object,
     code: {
@@ -203,8 +203,8 @@ export default {
     initYear() {
       this.years.length = 0
       this.year = new Date().getFullYear()
-      for (let i = 2017; i <= this.year; i++) {
-        const item = { label: i, value: i }
+      for (let i = 2015; i <= this.year; i++) {
+        const item = {label: i, value: i}
         this.years.push(item)
       }
       this.years.reverse()
@@ -216,24 +216,24 @@ export default {
       this.$bus.on('scorll', e => {
         const scrollTop = e
         const index = this.scorllTopList.findIndex(
-          e => scrollTop >= e.start && scrollTop < e.end
+            e => scrollTop >= e.start && scrollTop < e.end
         )
         if (this.code === 'project_dispatch') {
           return
         }
         this.active = index
-        if (e.target.scrollTop === 0) {
+        if (e.target && e.target.scrollTop === 0) {
           this.active = 0
         }
       })
     },
     getDic(code) {
-      this.$api.common.dicList({ code }).then(res => {
+      this.$api.common.dicList({code}).then(res => {
         if (res.code === 200) {
           if (code === 'project-situation') {
             this.dicList = res.data
             const local = this.dicList.filter(
-              e => e.dictKey === this.projectStage
+                e => e.dictKey === this.projectStage
             )
             if (local.length > 0) {
               this.currentSituation = local[0]
@@ -247,9 +247,9 @@ export default {
             setTimeout(() => {
               for (let i = 0; i < this.resultList.length; i++) {
                 const start =
-                  i === 0 ? 0 : document.getElementById('header' + i).offsetTop
+                    i === 0 ? 0 : document.getElementById('header' + i).offsetTop
                 const end = document.getElementById(
-                  'header' + (i + 1)
+                    'header' + (i + 1)
                 ).offsetTop
                 const data = {
                   index: i,
@@ -270,7 +270,7 @@ export default {
       this.$emit('typeChange1')
     },
     result(item) {
-      const data = { id: this.data.id, project_stage: Number.parseInt(item) }
+      const data = {id: this.data.id, project_stage: Number.parseInt(item)}
       this.$api.project.proUpdate(data).then(res => {
         if (res.code === 200) {
           this.$message.success(res.msg)

+ 2 - 54
yarn.lock

@@ -7,11 +7,6 @@
   resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
   integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
 
-"@antfu/utils@^0.7.2":
-  version "0.7.4"
-  resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.4.tgz#b1c11b95f89f13842204d3d83de01e10bb9257db"
-  integrity sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==
-
 "@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
   version "7.22.5"
   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea"
@@ -579,28 +574,6 @@
   dependencies:
     vue-demi "*"
 
-"@windicss/config@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/@windicss/config/-/config-1.9.0.tgz#a5cb18653477284095e1694e962b42442a770446"
-  integrity sha512-QO4+udbmDIgZwAi89tqUt5nGwBq3IgyELjLn83twZXiIqzOw+77ecCuM0oPSbzWmIbCqXq3wRQHd6Z1u5E/5zQ==
-  dependencies:
-    debug "^4.3.4"
-    jiti "^1.18.2"
-    windicss "^3.5.6"
-
-"@windicss/plugin-utils@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/@windicss/plugin-utils/-/plugin-utils-1.9.0.tgz#a38a5e37abf47ce43bb2cd8332cdecc647531f6a"
-  integrity sha512-omAacM5ExIr9XBUI2z47CyCXJBke4imJZqXW41YgHhRLbahTngbScFk5yxa6dXivDXUpUKqasOPXBJgA4bhHCg==
-  dependencies:
-    "@antfu/utils" "^0.7.2"
-    "@windicss/config" "1.9.0"
-    debug "^4.3.4"
-    fast-glob "^3.2.12"
-    magic-string "^0.30.0"
-    micromatch "^4.0.5"
-    windicss "^3.5.6"
-
 abbrev@^1.0.0, abbrev@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@@ -1743,7 +1716,7 @@ fast-diff@^1.1.2:
   resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
   integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
 
-fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9:
+fast-glob@^3.2.11, fast-glob@^3.2.9:
   version "3.2.12"
   resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
   integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
@@ -2396,11 +2369,6 @@ jackspeak@^2.0.3:
   optionalDependencies:
     "@pkgjs/parseargs" "^0.11.0"
 
-jiti@^1.18.2:
-  version "1.18.2"
-  resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd"
-  integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==
-
 js-base64@^3.7.2:
   version "3.7.5"
   resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca"
@@ -2475,11 +2443,6 @@ just-diff@^5.0.1:
   resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241"
   integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==
 
-kolorist@^1.8.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
-  integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
-
 levn@^0.4.1:
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -2723,7 +2686,7 @@ merge2@^1.3.0, merge2@^1.4.1:
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
   integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 
-micromatch@^4.0.4, micromatch@^4.0.5:
+micromatch@^4.0.4:
   version "4.0.5"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
   integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -4052,16 +4015,6 @@ vite-plugin-vue-layouts@^0.7.0:
     debug "^4.3.3"
     fast-glob "^3.2.11"
 
-vite-plugin-windicss@^1.8.7:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/vite-plugin-windicss/-/vite-plugin-windicss-1.9.0.tgz#0b635c3cf3557267d2f97bc42e3f9842a67360af"
-  integrity sha512-w0unPfcbVU5eaISAsFTLgIb41SLhmXoUF75Othu8NqFioe8+DEqiuvJ7/k/LRuEuvI8Rt/OKrY6cNzrB+dykaA==
-  dependencies:
-    "@windicss/plugin-utils" "1.9.0"
-    debug "^4.3.4"
-    kolorist "^1.8.0"
-    windicss "^3.5.6"
-
 vite@^3.0.0:
   version "3.2.7"
   resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.7.tgz#35a62826bd4d6b778ae5db8766d023bcd4e7bef3"
@@ -4199,11 +4152,6 @@ wide-align@^1.1.5:
   dependencies:
     string-width "^1.0.2 || 2 || 3 || 4"
 
-windicss@^3.5.6:
-  version "3.5.6"
-  resolved "https://registry.yarnpkg.com/windicss/-/windicss-3.5.6.tgz#30a34da76894d952a96c9a1921f2e91e13932183"
-  integrity sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==
-
 "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"