special.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <template>
  2. <HcPageLayout>
  3. <template #left>
  4. <div class="hc-layout-tree-box">
  5. <el-scrollbar>
  6. <HcTreeData @nodeTap="treeNodeTap" />
  7. </el-scrollbar>
  8. </div>
  9. </template>
  10. <HcCard>
  11. <template #header>
  12. <div class="w-52">
  13. <el-input v-model="searchForm.name" clearable placeholder="请输入名称进行查询" size="large" />
  14. </div>
  15. <div class="ml-4">
  16. <el-button type="primary" size="large" @click="searchClick">
  17. <HcIcon name="search-2" />
  18. <span>搜索</span>
  19. </el-button>
  20. </div>
  21. </template>
  22. <template #extra>
  23. <el-button size="large" type="primary" hc-btn @click="addRowClick">
  24. <HcIcon name="add" />
  25. <span>新增</span>
  26. </el-button>
  27. <el-button size="large" type="warning" hc-btn>
  28. <HcIcon name="add" />
  29. <span>打印</span>
  30. </el-button>
  31. <el-button size="large" type="danger" hc-btn :disabled="tableCheckedKeys.length < 1" @click="batchDel">
  32. <HcIcon name="delete-bin" />
  33. <span>删除</span>
  34. </el-button>
  35. </template>
  36. <HcTable :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check @selection-change="tableSelectionChange">
  37. <template #action="{ row, index }">
  38. <el-button size="small" type="primary" @click="editRowClick(row)">
  39. 修改
  40. </el-button>
  41. <el-button size="small" type="warning" @click="viewPdf(row)">
  42. 查看
  43. </el-button>
  44. <el-button size="small" type="danger" @click="delAgree(row)">
  45. 删除
  46. </el-button>
  47. </template>
  48. </HcTable>
  49. <template #action>
  50. <HcPages :pages="searchForm" @change="pageChange" />
  51. </template>
  52. </HcCard>
  53. </HcPageLayout>
  54. </template>
  55. <script setup>
  56. import { onActivated, ref } from 'vue'
  57. import { useRouter } from 'vue-router'
  58. import landApi from '~api/agree/land.js'
  59. import { useAppStore } from '~src/store'
  60. import { arrToId, getArrValue } from 'js-fast-way'
  61. import { delMessageV2 } from '~com/message/index.js'
  62. const useAppState = useAppStore()
  63. const projectId = ref(useAppState.getProjectId)
  64. const router = useRouter()
  65. const areaId = ref('')
  66. //树节点被点击
  67. const treeNodeTap = ({ node, data }) => {
  68. areaId.value = data.id
  69. searchForm.value.areaId = data.id
  70. getTableData()
  71. }
  72. onActivated(()=>{
  73. getTableData()
  74. })
  75. //搜索表单
  76. const searchForm = ref({
  77. projectType: null, name: null, startTime: null, endTime: null,
  78. current: 1, size: 20, total: 0,
  79. })
  80. //搜索
  81. const searchClick = () => {
  82. searchForm.value.current = 1
  83. getTableData()
  84. }
  85. //分页被点击
  86. const pageChange = ({ current, size }) => {
  87. searchForm.value.current = current
  88. searchForm.value.size = size
  89. getTableData()
  90. }
  91. //获取数据
  92. const tableLoading = ref(false)
  93. const tableColumn = [
  94. { key: 'number', name: '协议编号' },
  95. { key: 'name', name: '协议书名称' },
  96. { key: 'allMoney', name: '补偿总金额' },
  97. { key: 'removeUnit', name: '被拆迁单位' },
  98. { key: 'removeUnit', name: '拆迁日期' },
  99. { key: 'removeUnit', name: '施工单位' },
  100. { key: 'removeUnit', name: '甲方' },
  101. { key: 'removeUnit', name: '乙方' },
  102. { key: 'removeUnit', name: '丙方' },
  103. { key: 'action', name: '操作', width: '190', align: 'center' },
  104. ]
  105. const tableData = ref([
  106. ])
  107. const getTableData = async () => {
  108. tableLoading.value = true
  109. const { error, code, data } = await landApi.getPage({
  110. ...searchForm.value,
  111. projectId: projectId.value,
  112. type:3,
  113. })
  114. tableLoading.value = false
  115. if (!error && code === 200) {
  116. tableData.value = getArrValue(data['records'])
  117. searchForm.value.total = data['total'] || 0
  118. } else {
  119. tableData.value = []
  120. searchForm.value.total = 0
  121. }
  122. }
  123. //多选事件
  124. const tableCheckedKeys = ref([])
  125. const tableSelectionChange = (rows) => {
  126. tableCheckedKeys.value = rows
  127. }
  128. //新增
  129. const addRowClick = () => {
  130. router.push({
  131. name: 'lar-agree-land-form',
  132. query:{
  133. type:1,
  134. areaId:areaId.value,
  135. },
  136. })
  137. }
  138. //编辑
  139. const editRowClick = (row) => {
  140. router.push({
  141. name: 'lar-agree-land-form',
  142. query:{
  143. type:2,
  144. id:row.id,
  145. areaId:areaId.value,
  146. },
  147. })
  148. }
  149. //查看pdf
  150. const viewPdf = ({ mergePdfUrl }) => {
  151. if (mergePdfUrl) {
  152. window.open(mergePdfUrl, '_blank')
  153. } else {
  154. window.$message.error('暂无文件')
  155. }
  156. }
  157. const delAgree = (row)=>{
  158. delMessageV2(async (action, instance, done) => {
  159. if (action === 'confirm') {
  160. instance.confirmButtonLoading = true
  161. const { error, code, msg } = await landApi.remove({
  162. ids: row?.id,
  163. })
  164. if (!error && code === 200) {
  165. window?.$message?.success('删除成功')
  166. getTableData()
  167. } else {
  168. window?.$message?.warning(msg)
  169. }
  170. instance.confirmButtonLoading = false
  171. done()
  172. } else {
  173. done()
  174. }
  175. })
  176. }
  177. const batchDel = ()=>{
  178. const rows = tableCheckedKeys.value
  179. const ids = arrToId(rows)
  180. delMessageV2(async (action, instance, done) => {
  181. if (action === 'confirm') {
  182. instance.confirmButtonLoading = true
  183. const { error, code, msg } = await landApi.remove({
  184. ids,
  185. })
  186. if (!error && code === 200) {
  187. window?.$message?.success('删除成功')
  188. getTableData()
  189. } else {
  190. window?.$message?.warning(msg)
  191. }
  192. instance.confirmButtonLoading = false
  193. done()
  194. } else {
  195. done()
  196. }
  197. })
  198. }
  199. </script>
  200. <style lang="scss" scoped>
  201. .hc-layout-tree-box {
  202. position: relative;
  203. height: 100%;
  204. padding: 18px;
  205. }
  206. </style>