compactness.vue 7.0 KB

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