scorpioyq 2 years ago
parent
commit
7bf4a1bd96

+ 149 - 2
src/views/home/component/dispatch.vue

@@ -1,12 +1,159 @@
 <template>
-  <basic-container>项目调度</basic-container>
+  <basic-container>
+    <div class="flex flex-col padding-left" style="width: 95%">
+      <div class="text-left grey-6 font-18 bold">2023年1月项目进度信息填报</div>
+      <!------进度描述------>
+      <div>
+        <div class="flex flex-center flex-justify-between mt-20">
+          <span class="bold font-18 main-color">进度描述</span>
+          <div class="flex flex-center">
+            <base-button type="0" title="批量导出" icon="upload"/>
+            <base-button class="ml-10" title="编辑" icon="upload"/>
+          </div>
+        </div>
+        <div class="mt-20">
+          <el-input
+              v-model="progress"
+              :rows="10"
+              type="textarea"
+              placeholder="填写项目进度信息"
+          />
+        </div>
+      </div>
+      <!------相关文件------>
+      <div class="mt-20">
+        <div class="flex flex-center flex-justify-between mt-20">
+          <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"
+            @row-del="rowDel"
+            @on-load="onLoad"
+        >
+          <template #menu="{ row }">
+            <el-button
+                icon="Upload"
+                type="primary"
+                text
+                @click="report(row)"
+            >
+              上传
+            </el-button>
+            <el-button
+                text
+                type="primary"
+                icon="Download"
+                @click="projectReport(row)"
+            >下载
+            </el-button
+            >
+          </template>
+        </avue-crud>
+      </div>
+      <!------现场图片------>
+      <div class="mb-20">
+        <div class="flex flex-center flex-justify-between mt-20">
+          <span class="bold font-18 main-color">施工现场图</span>
+          <div class="flex flex-center">
+            <base-button type="0" title="上传" icon="upload"/>
+          </div>
+        </div>
+        <div class="mt-20">
+          <el-carousel :interval="4000" type="card" height="200px">
+            <el-carousel-item v-for="item in 6" :key="item">
+            </el-carousel-item>
+          </el-carousel>
+        </div>
+      </div>
+    </div>
+  </basic-container>
 </template>
 
 <script>
 import BasicContainer from '@/components/basic-container/main.vue'
+import baseButton from '@/components/base-button.vue'
+
 export default {
   name: 'dispatch',
-  components: { BasicContainer }
+  components: {BasicContainer, baseButton},
+  data() {
+    return {
+      progress: '',
+      loading: false,
+      data: [
+        {
+          fileName: '支付情况表'
+        },
+        {
+          fileName: '工程完工月报表'
+        },
+        {
+          fileName: '工程量清单'
+        },
+      ],
+      form: {},
+      option: {
+        menuBtnTitle: '操作',
+        refreshBtn: false,
+        tip: false,
+        columnBtn: false,
+        selection: false,
+        editBtn: true,
+        editBtnText: '打开',
+        editBtnIcon: 'FolderOpened',
+        addBtn: false,
+        delBtn: true,
+        border: true,
+        reserveSelection: true,
+        align: 'center',
+        viewBtn: true,
+        menuWidth: 500,
+        viewBtnText: '预览',
+        dialogClickModal: false,
+        column: [
+          {
+            label: '文件名称',
+            prop: 'fileName',
+          },
+          {
+            label: '上传状态',
+            prop: 'year',
+          },
+          {
+            label: '上传时间',
+            prop: 'year',
+          },
+        ]
+      },
+      images: []
+    }
+  },
+  methods: {
+    rowDel(row, index, done) {
+      this.$confirm('确定将选择数据删除?', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        return this.$api.inspect.remove({ids: row.id})
+      }).then(() => {
+        this.$message({
+          type: 'success',
+          message: '操作成功!'
+        })
+        // 数据回调进行刷新
+        done(row)
+        this.onLoad()
+      }).catch(() => {
+      })
+    }
+  }
 }
 </script>
 

+ 93 - 35
src/views/home/component/pro_left.vue

@@ -1,33 +1,33 @@
 <template>
   <div>
     <div
-      class="white-bg top full-height flex flex-col hide-scrollbar"
-      style="overflow-y: auto"
+        class="white-bg 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,36 +35,44 @@
         <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: 50vh; 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>
         </div>
         <div v-else>
-          <month />
+          <div
+              class="flex flex-center grey-9 font-15 bold pointer"
+              :class="active === index ? 'box-s' : 'box'"
+              v-for="(item, index) in month"
+              :key="item"
+              @click="change(index)"
+          >
+            {{ item.value }}
+          </div>
         </div>
       </div>
     </div>
     <pro-relation
-      :showRelation="showRelation"
-      :projectId="data.id"
-      @close="showRelation = false"
-      @success="updateLot"
+        :showRelation="showRelation"
+        :projectId="data.id"
+        @close="showRelation = false"
+        @success="updateLot"
     />
   </div>
 </template>
@@ -75,7 +83,7 @@ import month from '@/views/home/component/month.vue'
 
 export default {
   name: 'pro_left',
-  components: { proRelation, month },
+  components: {proRelation, month},
   props: {
     data: Object,
     code: {
@@ -111,7 +119,57 @@ export default {
       showRelation: false,
       projectId: '',
       resultList: [],
-      projectStage: ''
+      projectStage: '',
+      month: [
+        {
+          value: '1月',
+          index: 0
+        },
+        {
+          value: '2月',
+          index: 1
+        },
+        {
+          value: '3月',
+          index: 2
+        },
+        {
+          value: '4月',
+          index: 3
+        },
+        {
+          value: '5月',
+          index: 4
+        },
+        {
+          value: '6月',
+          index: 5
+        },
+        {
+          value: '7月',
+          index: 6
+        },
+        {
+          value: '8月',
+          index: 7
+        },
+        {
+          value: '9月',
+          index: 8
+        },
+        {
+          value: '10月',
+          index: 9
+        },
+        {
+          value: '11月',
+          index: 10
+        },
+        {
+          value: '12月',
+          index: 11
+        },
+      ]
     }
   },
   created() {
@@ -124,7 +182,7 @@ export default {
       this.$bus.on('scorll', e => {
         const scrollTop = e.target.scrollTop
         const index = this.scorllTopList.findIndex(
-          e => scrollTop >= e.start && scrollTop < e.end
+            e => scrollTop >= e.start && scrollTop < e.end
         )
         this.active = index
         if (e.target.scrollTop === 0) {
@@ -133,12 +191,12 @@ export default {
       })
     },
     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]
@@ -151,9 +209,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,
@@ -174,7 +232,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)

+ 17 - 15
src/views/home/pro_detail.vue

@@ -2,10 +2,10 @@
   <div class="flex flex-justify-start">
     <div class="full-height">
       <pro-left
-        :data="data"
-        :code="code"
-        @success="listSucc"
-        @change="changeIndex"
+          :data="data"
+          :code="code"
+          @success="listSucc"
+          @change="changeIndex"
       />
     </div>
     <div style="margin-left: 300px" class="full-width" ref="content">
@@ -22,24 +22,26 @@
       <div v-if="currentTab.value === 1">
         <basic-container v-for="(item, index) in resultList" :key="item.id">
           <div class="full-width padding-top" :id="`header` + (index + 1)">
-            <params1 v-if="item.dictKey === '1'" :info="item" :detail="data" />
-            <params2 v-if="item.dictKey === '2'" :info="item" :detail="data" />
-            <params7 v-if="item.dictKey === '3'" :info="item" :detail="data" />
-            <params4 v-if="item.dictKey === '4'" :info="item" :detail="data" />
-            <params5 v-if="item.dictKey === '5'" :info="item" :detail="data" />
-            <params6 v-if="item.dictKey === '6'" :info="item" :detail="data" />
+            <params1 v-if="item.dictKey === '1'" :info="item" :detail="data"/>
+            <params2 v-if="item.dictKey === '2'" :info="item" :detail="data"/>
+            <params7 v-if="item.dictKey === '3'" :info="item" :detail="data"/>
+            <params4 v-if="item.dictKey === '4'" :info="item" :detail="data"/>
+            <params5 v-if="item.dictKey === '5'" :info="item" :detail="data"/>
+            <params6 v-if="item.dictKey === '6'" :info="item" :detail="data"/>
           </div>
         </basic-container>
       </div>
       <div v-else-if="currentTab.value === 2">
         <basic-container v-for="(item, index) in resultList" :key="item.id">
           <div class="full-width" :id="`header` + (index + 1)">
-            <inspect1 :info="item" />
+            <inspect1 :info="item"/>
           </div>
         </basic-container>
       </div>
       <div v-else-if="currentTab.value === 3">
-        <dispatch />
+        <div class="full-width">
+          <dispatch/>
+        </div>
       </div>
     </div>
   </div>
@@ -84,9 +86,9 @@ export default {
       id: '',
       data: {},
       tabs: [
-        { name: '项目信息管理', value: 1, code: 'params_type' },
-        { name: '项目督查情况', value: 2, code: 'inspect_type' },
-        { name: '项目调度', value: 3, code: 'project_dispatch' }
+        {name: '项目信息管理', value: 1, code: 'params_type'},
+        {name: '项目督查情况', value: 2, code: 'inspect_type'},
+        {name: '项目调度', value: 3, code: 'project_dispatch'}
         // { name: '项目数据明细管理', value: 3 }
       ],
       currentTab: null,