compactness.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <div class="hc-page-box">
  3. <HcCard>
  4. <template #header>
  5. <HcTooltip keys="tentative_parameter_compactness_add">
  6. <el-button hc-btn type="primary" @click="addFormModalClick">
  7. <HcIcon name="add-circle" />
  8. <span>新增</span>
  9. </el-button>
  10. </HcTooltip>
  11. <HcTooltip keys="tentative_parameter_compactness_edit">
  12. <el-button :disabled="tableCheckedKeys.length <= 0" hc-btn @click="editFormModalClick">
  13. <HcIcon name="edit" />
  14. <span>编辑</span>
  15. </el-button>
  16. </HcTooltip>
  17. <HcTooltip keys="tentative_parameter_compactness_del">
  18. <el-button :disabled="tableCheckedKeys.length <= 0" hc-btn @click="delModalClick">
  19. <HcIcon name="delete-bin-2" />
  20. <span>删除</span>
  21. </el-button>
  22. </HcTooltip>
  23. </template>
  24. <HcTable
  25. ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check
  26. border @selection-change="tableSelection"
  27. />
  28. <template #action>
  29. <HcPages :pages="searchForm" @change="pageChange" />
  30. </template>
  31. </HcCard>
  32. <!-- 新增/编辑 -->
  33. <HcDialog
  34. :loading="addEditFormLoading" :show="addEditFormModal" :title="`${addEditFormModel.id ? '编辑' : '新增'}压实度参数`"
  35. widths="30rem" @close="addEditFormModalClose" @save="addEditFormClick"
  36. >
  37. <el-form
  38. ref="addEditFormRef" :model="addEditFormModel" :rules="addEditFormRules" label-width="auto"
  39. size="large"
  40. >
  41. <el-form-item label="N值" prop="valueN">
  42. <el-input v-model="addEditFormModel.valueN" />
  43. </el-form-item>
  44. <el-form-item label="保证率99%" prop="assuranceRateNinetyNinePercent">
  45. <el-input v-model="addEditFormModel.assuranceRateNinetyNinePercent" />
  46. </el-form-item>
  47. <el-form-item label="保证率95%" prop="assuranceRateNinetyFivePercent">
  48. <el-input v-model="addEditFormModel.assuranceRateNinetyFivePercent" />
  49. </el-form-item>
  50. <el-form-item label="保证率90%" prop="assuranceRateNinetyPercent">
  51. <el-input v-model="addEditFormModel.assuranceRateNinetyPercent" />
  52. </el-form-item>
  53. </el-form>
  54. </HcDialog>
  55. </div>
  56. </template>
  57. <script setup>
  58. import { onMounted, ref } from 'vue'
  59. import { useAppStore } from '~src/store'
  60. import dataApi from '~api/tentative/parameter/compactness'
  61. import { arrToId, formValidate, getArrValue } from 'js-fast-way'
  62. import { delMessageV2 } from '~com/message/index.js'
  63. //初始变量
  64. const useAppState = useAppStore()
  65. //全局变量
  66. const projectId = ref(useAppState.getProjectId)
  67. const contractId = ref(useAppState.getContractId)
  68. //渲染完成
  69. onMounted(() => {
  70. getTableData()
  71. })
  72. //搜索表单
  73. const searchForm = ref({
  74. queryValue: null, current: 1, size: 20, total: 0,
  75. })
  76. //回车搜索
  77. const keyUpEvent = (e) => {
  78. if (e.key === 'Enter') {
  79. searchForm.value.current = 1
  80. getTableData()
  81. }
  82. }
  83. //搜索
  84. const searchClick = () => {
  85. searchForm.value.current = 1
  86. getTableData()
  87. }
  88. //分页被点击
  89. const pageChange = ({ current, size }) => {
  90. searchForm.value.current = current
  91. searchForm.value.size = size
  92. getTableData()
  93. }
  94. //表格数据
  95. const tableRef = ref(null)
  96. const tableColumn = ref([
  97. { key: 'valueN', name: 'N值' },
  98. { key: 'assuranceRateNinetyNinePercent', name: '保证率99%' },
  99. { key: 'assuranceRateNinetyFivePercent', name: '保证率95%' },
  100. { key: 'assuranceRateNinetyPercent', name: '保证率90%' },
  101. ])
  102. const tableData = ref([])
  103. //获取数据
  104. const tableLoading = ref(false)
  105. const getTableData = async () => {
  106. tableLoading.value = true
  107. const { error, code, data } = await dataApi.queryPage({
  108. ...searchForm.value,
  109. projectId: projectId.value,
  110. contractId: contractId.value,
  111. })
  112. //处理数据
  113. tableLoading.value = false
  114. if (!error && code === 200) {
  115. tableData.value = getArrValue(data['records'])
  116. searchForm.value.total = data.total || 0
  117. } else {
  118. tableData.value = []
  119. searchForm.value.total = 0
  120. }
  121. }
  122. //多选
  123. const tableCheckedKeys = ref([])
  124. const tableSelection = (rows) => {
  125. tableCheckedKeys.value = rows
  126. }
  127. //新增/编辑 材料进场
  128. const addEditFormModal = ref(false)
  129. const addFormModalClick = () => {
  130. addEditFormModel.value = {}
  131. addEditFormModal.value = true
  132. }
  133. const editFormModalClick = () => {
  134. const keys = tableCheckedKeys.value
  135. if (keys.length === 1) {
  136. addEditFormModel.value = keys[0]
  137. addEditFormModal.value = true
  138. } else if (keys.length > 1) {
  139. window?.$message?.warning('只能选择一条数据编辑')
  140. }
  141. }
  142. const addEditFormModalClose = () => {
  143. addEditFormModal.value = false
  144. }
  145. //新增/编辑 表单
  146. const addEditFormRef = ref(null)
  147. const addEditFormModel = ref({})
  148. const addEditFormRules = {
  149. valueN: {
  150. required: true,
  151. trigger: 'blur',
  152. message: '请输入N值',
  153. },
  154. assuranceRateNinetyNinePercent: {
  155. required: true,
  156. trigger: 'blur',
  157. message: '请输入保证率99%',
  158. },
  159. assuranceRateNinetyFivePercent: {
  160. required: true,
  161. trigger: 'blur',
  162. message: '请输入保证率95%',
  163. },
  164. assuranceRateNinetyPercent: {
  165. required: true,
  166. trigger: 'blur',
  167. message: '请输入保证率90%',
  168. },
  169. }
  170. //新增/编辑 保存
  171. const addEditFormLoading = ref(false)
  172. const addEditFormClick = async () => {
  173. const validate = await formValidate(addEditFormRef.value)
  174. if (validate) {
  175. //发起请求
  176. addEditFormLoading.value = true
  177. const { error, code } = await dataApi.submitForm({
  178. ...addEditFormModel.value,
  179. projectId: projectId.value,
  180. contractId: contractId.value,
  181. })
  182. //处理数据
  183. if (!error && code === 200) {
  184. window?.$message?.success('操作成功')
  185. addEditFormModal.value = false
  186. addEditFormLoading.value = false
  187. await getTableData()
  188. }
  189. }
  190. }
  191. //删除
  192. const delModalClick = () => {
  193. delMessageV2(async (action, instance, done) => {
  194. if (action === 'confirm') {
  195. instance.confirmButtonLoading = true
  196. tableRemoveData()
  197. instance.confirmButtonLoading = false
  198. done()
  199. } else {
  200. done()
  201. }
  202. })
  203. }
  204. //批量删除
  205. const tableRemoveData = async () => {
  206. const rows = tableCheckedKeys.value
  207. if (rows.length > 0) {
  208. const ids = arrToId(rows)
  209. //删除请求
  210. const { error, code } = await dataApi.removeData({
  211. projectId: projectId.value,
  212. contractId: contractId.value,
  213. ids: ids,
  214. })
  215. //处理数据
  216. if (!error && code === 200) {
  217. window?.$message?.success('操作成功')
  218. searchClick()
  219. }
  220. }
  221. }
  222. </script>
  223. <style lang="scss" scoped>
  224. </style>