|
@@ -2,117 +2,134 @@
|
|
|
<HcCard>
|
|
|
<template #header>
|
|
|
<div class="w-36">
|
|
|
- <el-select v-model="searchForm.projectType" block clearable placeholder="请选择区域" size="large">
|
|
|
- <el-option v-for="item in projectType" :label="item.name" :value="item.key"/>
|
|
|
+ <el-select v-model="searchForm.areaId" block clearable placeholder="请选择区域" size="large">
|
|
|
+ <el-option v-for="item in areaType" :label="item.name" :value="item.key" />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="w-36 ml-4">
|
|
|
- <el-date-picker class="block" v-model="searchForm.startTime" type="date" value-format="YYYY-MM-DD" placeholder="开始日期" clearable size="large"/>
|
|
|
+ <el-date-picker v-model="searchForm.startDate" class="block" type="date" value-format="YYYY-MM-DD" placeholder="开始日期" clearable size="large" />
|
|
|
+ </div>
|
|
|
+ <div class="mx-2">
|
|
|
+ ~
|
|
|
</div>
|
|
|
- <div class="mx-2">~</div>
|
|
|
<div class="w-36">
|
|
|
- <el-date-picker class="block" v-model="searchForm.endTime" type="date" value-format="YYYY-MM-DD" placeholder="结束日期" clearable size="large"/>
|
|
|
+ <el-date-picker v-model="searchForm.endDate" class="block" type="date" value-format="YYYY-MM-DD" placeholder="结束日期" clearable size="large" />
|
|
|
</div>
|
|
|
<div class="w-48 ml-2">
|
|
|
- <el-input v-model="searchForm.queryValue" clearable placeholder="请输入名称进行查询" size="large"/>
|
|
|
+ <el-input v-model="searchForm.name" clearable placeholder="请输入名称进行查询" size="large" />
|
|
|
</div>
|
|
|
<div class="ml-4">
|
|
|
- <el-button type="primary" @click="searchClick" size="large">
|
|
|
- <HcIcon name="search-2"/>
|
|
|
+ <el-button type="primary" size="large" @click="searchClick">
|
|
|
+ <HcIcon name="search-2" />
|
|
|
<span>搜索</span>
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #extra>
|
|
|
<el-button size="large" type="primary" hc-btn @click="addRowClick">
|
|
|
- <HcIcon name="add"/>
|
|
|
+ <HcIcon name="add" />
|
|
|
<span>新增</span>
|
|
|
</el-button>
|
|
|
<el-button size="large" type="danger" hc-btn>
|
|
|
- <HcIcon name="delete-bin"/>
|
|
|
+ <HcIcon name="delete-bin" />
|
|
|
<span>删除</span>
|
|
|
</el-button>
|
|
|
</template>
|
|
|
- <HcTable :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck @selection-change="tableSelectionChange">
|
|
|
- <template #action="{row,index}">
|
|
|
- <el-button size="small" type="warning">查看附件</el-button>
|
|
|
- <el-button size="small" type="primary" @click="editRowClick(row)">编辑</el-button>
|
|
|
- <el-button size="small" type="danger">删除</el-button>
|
|
|
+ <HcTable :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableSelectionChange">
|
|
|
+ <template #action="{ row, index }">
|
|
|
+ <el-button size="small" type="warning">
|
|
|
+ 查看附件
|
|
|
+ </el-button>
|
|
|
+ <el-button size="small" type="primary" @click="editRowClick(row)">
|
|
|
+ 编辑
|
|
|
+ </el-button>
|
|
|
+ <el-button size="small" type="danger">
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</HcTable>
|
|
|
<template #action>
|
|
|
- <HcPages :pages="searchForm" @change="pageChange"/>
|
|
|
+ <HcPages :pages="searchForm" @change="pageChange" />
|
|
|
</template>
|
|
|
|
|
|
- <!--新增/编辑-->
|
|
|
- <HcDialog isToBody bgColor="white" :show="rowModal" :title="formModel.id?'编辑':'新增'" widths="62rem" @save="rowModalSave" @close="rowModalClose">
|
|
|
+ <!-- 新增/编辑 -->
|
|
|
+ <HcDialog is-to-body bg-color="white" :show="rowModal" :title="formModel.id ? '编辑' : '新增'" widths="62rem" @save="rowModalSave" @close="rowModalClose">
|
|
|
<el-form ref="formRef" :model="formModel" :rules="formRules" label-position="left" label-width="auto" size="large">
|
|
|
<div class="flex">
|
|
|
<div class="flex-1 mr-4">
|
|
|
- <el-form-item label="编号" prop="key">
|
|
|
- <el-input v-model="formModel.key"/>
|
|
|
+ <el-form-item label="编号" prop="number">
|
|
|
+ <el-input v-model="formModel.number" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="名称" prop="key1">
|
|
|
- <el-input v-model="formModel.key1"/>
|
|
|
+ <el-form-item label="名称" prop="name">
|
|
|
+ <el-input v-model="formModel.name" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="所属区域:" prop="key2">
|
|
|
- <el-select block v-model="formModel.key2">
|
|
|
- <el-option label="选项1" value="选项1"/>
|
|
|
- <el-option label="选项2" value="选项2"/>
|
|
|
+ <el-form-item label="所属区域:" prop="areaId">
|
|
|
+ <el-select v-model="formModel.areaId" block>
|
|
|
+ <el-option label="选项1" value="选项1" />
|
|
|
+ <el-option label="选项2" value="选项2" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="多个文件">
|
|
|
- <HcFormUpload :src="formModel.key4" @item="formItemClick" @upload="formItemUpload" @change="formItemChange"/>
|
|
|
+ <HcFormUpload :src="formModel.pdfUrl" @item="formItemClick" @upload="formItemUpload" @change="formItemChange" />
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<div class="flex-1 ml-4">
|
|
|
<el-form-item label="备注:">
|
|
|
- <el-input type="textarea" v-model="formModel.key3" :autosize="{ minRows: 6, maxRows: 10 }"/>
|
|
|
+ <el-input v-model="formModel.remark" type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" />
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</HcDialog>
|
|
|
|
|
|
- <HcUploadFile ref="HcUploadFileRef" :options="UploadFileOptions" @success="HcUploadFileSuccess"/>
|
|
|
+ <HcUploadFile ref="HcUploadFileRef" :options="UploadFileOptions" :params="{ projectId }" @success="HcUploadFileSuccess" @error="HcUploadFileEroor" />
|
|
|
</HcCard>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import {ref} from "vue";
|
|
|
-import {useRouter} from 'vue-router'
|
|
|
-import {getTokenHeader} from "~src/api/request/header";
|
|
|
+import { onMounted, ref } from 'vue'
|
|
|
+import { getTokenHeader } from '~src/api/request/header'
|
|
|
+import policyApi from '~api/base/policy.js'
|
|
|
+import { useAppStore } from '~src/store'
|
|
|
+import { getArrValue } from 'js-fast-way'
|
|
|
|
|
|
-const router = useRouter()
|
|
|
+const useAppState = useAppStore()
|
|
|
+const projectId = ref(useAppState.getProjectId)
|
|
|
|
|
|
+onMounted(()=>{
|
|
|
+ getTableData()
|
|
|
+})
|
|
|
//上传配置
|
|
|
const HcUploadFileRef = ref(null)
|
|
|
const UploadFileOptions = {
|
|
|
- headers: getTokenHeader()
|
|
|
+ headers: getTokenHeader(),
|
|
|
+ url:'/api/blade-land/attachmentInfo/add-file',
|
|
|
+ accept_tip:'只能上传doc或pdf文件',
|
|
|
+ accept:'application/pdf,.doc,.docx,application/msword',
|
|
|
}
|
|
|
|
|
|
//项目类型
|
|
|
-const projectType = ref([
|
|
|
- {name: '二级路', key: '二级路'},
|
|
|
- {name: '国道', key: '国道'},
|
|
|
- {name: '水利水电', key: '水利水电'},
|
|
|
- {name: '市政', key: '市政'},
|
|
|
+const areaType = ref([
|
|
|
+ { name: '二级路', key: '二级路' },
|
|
|
+ { name: '国道', key: '国道' },
|
|
|
+ { name: '水利水电', key: '水利水电' },
|
|
|
+ { name: '市政', key: '市政' },
|
|
|
])
|
|
|
|
|
|
//搜索表单
|
|
|
const searchForm = ref({
|
|
|
- projectType: null, queryValue: null, startTime: null, endTime: null,
|
|
|
- current: 1, size: 20, total: 0
|
|
|
+ areaId: null, name: null, startDate: null, endDate: null,
|
|
|
+ current: 1, size: 20, total: 0,
|
|
|
})
|
|
|
|
|
|
//搜索
|
|
|
const searchClick = () => {
|
|
|
- searchForm.value.current = 1;
|
|
|
+ searchForm.value.current = 1
|
|
|
getTableData()
|
|
|
}
|
|
|
|
|
|
//分页被点击
|
|
|
-const pageChange = ({current, size}) => {
|
|
|
+const pageChange = ({ current, size }) => {
|
|
|
searchForm.value.current = current
|
|
|
searchForm.value.size = size
|
|
|
getTableData()
|
|
@@ -121,23 +138,36 @@ const pageChange = ({current, size}) => {
|
|
|
//获取数据
|
|
|
const tableLoading = ref(false)
|
|
|
const tableColumn = [
|
|
|
- {key: 'key', name: '编号', width: '120'},
|
|
|
- {key: 'key1', name: '名称'},
|
|
|
- {key: 'key2', name: '上传日期', width: '140', align: 'center'},
|
|
|
- {key: 'key3', name: '备注', width: '200', isTooltip: true},
|
|
|
- {key: 'action', name: '操作', width: '220', align: 'center'},
|
|
|
+ { key: 'number', name: '编号', width: '120' },
|
|
|
+ { key: 'name', name: '名称' },
|
|
|
+ { key: 'uploadDate', name: '上传日期', width: '140', align: 'center' },
|
|
|
+ { key: 'remark', name: '备注', width: '200', isTooltip: true },
|
|
|
+ { key: 'action', name: '操作', width: '220', align: 'center' },
|
|
|
]
|
|
|
const tableData = ref([
|
|
|
- {id: 1, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: ''},
|
|
|
- {id: 2, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: ''},
|
|
|
- {id: 3, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: ''},
|
|
|
- {id: 4, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: ''},
|
|
|
- {id: 5, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: ''},
|
|
|
- {id: 6, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: ''},
|
|
|
+ { id: 1, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: '' },
|
|
|
+ { id: 2, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: '' },
|
|
|
+ { id: 3, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: '' },
|
|
|
+ { id: 4, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: '' },
|
|
|
+ { id: 5, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: '' },
|
|
|
+ { id: 6, key: 'YS-01', key1: 'xxxx', key2: 'xxxx', key3: '65632', key4: '' },
|
|
|
])
|
|
|
|
|
|
-const getTableData = () => {
|
|
|
-
|
|
|
+const getTableData = async () => {
|
|
|
+ tableLoading.value = true
|
|
|
+ const { error, code, data } = await policyApi.getPage({
|
|
|
+ ...searchForm.value,
|
|
|
+ projectId: projectId.value,
|
|
|
+ type:1,
|
|
|
+ })
|
|
|
+ tableLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ tableData.value = getArrValue(data['records'])
|
|
|
+ searchForm.value.total = data['total'] || 0
|
|
|
+ } else {
|
|
|
+ tableData.value = []
|
|
|
+ searchForm.value.total = 0
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//多选事件
|
|
@@ -148,12 +178,12 @@ const tableSelectionChange = (rows) => {
|
|
|
//弹窗
|
|
|
const rowModal = ref(false)
|
|
|
const formRef = ref(null)
|
|
|
-const formModel = ref({})
|
|
|
+const formModel = ref({ pdfUrl:'key1' })
|
|
|
const formRules = {
|
|
|
- key: [{required: true, message: '请输入编号', trigger: 'blur'}],
|
|
|
- key1: [{required: true, message: '请输入名称', trigger: 'blur'}],
|
|
|
- key2: [{required: true, message: '请选择所属区域', trigger: 'change'}],
|
|
|
- key3: [{required: true, message: '请输入备注', trigger: 'blur'}],
|
|
|
+ number: [{ required: true, message: '请输入编号', trigger: 'blur' }],
|
|
|
+ name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
|
|
+ areaId: [{ required: true, message: '请选择所属区域', trigger: 'change' }],
|
|
|
+ remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
|
|
|
}
|
|
|
|
|
|
//新增
|
|
@@ -181,20 +211,24 @@ const rowModalClose = () => {
|
|
|
|
|
|
//上传
|
|
|
const formItemUpload = () => {
|
|
|
- HcUploadFileRef.value?.selectFile();
|
|
|
+ HcUploadFileRef.value?.selectFile()
|
|
|
}
|
|
|
|
|
|
// 文件上传成功的回调
|
|
|
const HcUploadFileSuccess = (res) => {
|
|
|
console.log('文件上传成功', res)
|
|
|
}
|
|
|
-
|
|
|
-const formItemClick = ({item, index}) => {
|
|
|
+//文件上传失败HcUploadFileEroor
|
|
|
+const HcUploadFileEroor = ({ resData }) => {
|
|
|
+ console.log('文件失败', resData.response.data.msg)
|
|
|
+}
|
|
|
+const formItemClick = ({ item, index }) => {
|
|
|
|
|
|
}
|
|
|
|
|
|
//文件变化
|
|
|
const formItemChange = (src) => {
|
|
|
- formModel.value.key5 = src
|
|
|
+ console.log(src, 'src')
|
|
|
+ formModel.value.pdfUrl = src
|
|
|
}
|
|
|
</script>
|