density.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div class="hc-page-box">
  3. <HcCard>
  4. <template #header>
  5. <HcTooltip keys="tentative_parameter_density_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_density_edit">
  12. <el-button :disabled="tableCheckedKeys.length <= 0" hc-btn type="primary" color="#12C060" style="color: white;" @click="editFormModalClick">
  13. <HcIcon name="edit" />
  14. <span>编辑</span>
  15. </el-button>
  16. </HcTooltip>
  17. <HcTooltip keys="tentative_parameter_density_del">
  18. <el-button :disabled="tableCheckedKeys.length <= 0" hc-btn color="#e03997" @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="温度" prop="temperature">
  42. <el-input v-model="addEditFormModel.temperature" />
  43. </el-form-item>
  44. <el-form-item label="水密度" prop="waterDensity">
  45. <el-input v-model="addEditFormModel.waterDensity" />
  46. </el-form-item>
  47. </el-form>
  48. </HcDialog>
  49. </div>
  50. </template>
  51. <script setup>
  52. import { onMounted, ref } from 'vue'
  53. import { useAppStore } from '~src/store'
  54. import dataApi from '~api/tentative/parameter/density'
  55. import { arrToId, formValidate, getArrValue } from 'js-fast-way'
  56. import { delMessageV2 } from '~com/message/index.js'
  57. //初始变量
  58. const useAppState = useAppStore()
  59. //全局变量
  60. const projectId = ref(useAppState.getProjectId)
  61. const contractId = ref(useAppState.getContractId)
  62. //渲染完成
  63. onMounted(() => {
  64. getTableData()
  65. })
  66. //搜索表单
  67. const searchForm = ref({
  68. queryValue: null, current: 1, size: 20, total: 0,
  69. })
  70. //回车搜索
  71. const keyUpEvent = (e) => {
  72. if (e.key === 'Enter') {
  73. searchForm.value.current = 1
  74. getTableData()
  75. }
  76. }
  77. //搜索
  78. const searchClick = () => {
  79. searchForm.value.current = 1
  80. getTableData()
  81. }
  82. //分页被点击
  83. const pageChange = ({ current, size }) => {
  84. searchForm.value.current = current
  85. searchForm.value.size = size
  86. getTableData()
  87. }
  88. //表格数据
  89. const tableRef = ref(null)
  90. const tableColumn = ref([
  91. { key: 'temperature', name: '温度' },
  92. { key: 'waterDensity', name: '密度' },
  93. ])
  94. //获取数据
  95. const tableLoading = ref(false)
  96. const tableData = ref([])
  97. const getTableData = async () => {
  98. tableLoading.value = true
  99. const { error, code, data } = await dataApi.queryPage({
  100. ...searchForm.value,
  101. projectId: projectId.value,
  102. contractId: contractId.value,
  103. })
  104. //处理数据
  105. tableLoading.value = false
  106. if (!error && code === 200) {
  107. tableData.value = getArrValue(data['records'])
  108. searchForm.value.total = data.total || 0
  109. } else {
  110. tableData.value = []
  111. searchForm.value.total = 0
  112. }
  113. }
  114. //多选
  115. const tableCheckedKeys = ref([])
  116. const tableSelection = (rows) => {
  117. tableCheckedKeys.value = rows
  118. }
  119. //新增/编辑 材料进场
  120. const addEditFormModal = ref(false)
  121. const addFormModalClick = () => {
  122. addEditFormModel.value = {}
  123. addEditFormModal.value = true
  124. }
  125. const editFormModalClick = () => {
  126. const keys = tableCheckedKeys.value
  127. if (keys.length === 1) {
  128. addEditFormModel.value = keys[0]
  129. addEditFormModal.value = true
  130. } else if (keys.length > 1) {
  131. window?.$message?.warning('只能选择一条数据编辑')
  132. }
  133. }
  134. const addEditFormModalClose = () => {
  135. addEditFormModal.value = false
  136. }
  137. //新增/编辑 表单
  138. const addEditFormRef = ref(null)
  139. const addEditFormModel = ref({})
  140. const addEditFormRules = {
  141. temperature: {
  142. required: true,
  143. trigger: 'blur',
  144. message: '请输入温度',
  145. },
  146. waterDensity: {
  147. required: true,
  148. trigger: 'blur',
  149. message: '请输入密度',
  150. },
  151. }
  152. //新增/编辑 保存
  153. const addEditFormLoading = ref(false)
  154. const addEditFormClick = async () => {
  155. const validate = await formValidate(addEditFormRef.value)
  156. if (validate) {
  157. addEditFormLoading.value = true
  158. //发起请求
  159. const { error, code } = await dataApi.submitForm({
  160. ...addEditFormModel.value,
  161. projectId: projectId.value,
  162. contractId: contractId.value,
  163. })
  164. //处理数据
  165. if (!error && code === 200) {
  166. window?.$message?.success('操作成功')
  167. addEditFormModal.value = false
  168. addEditFormLoading.value = false
  169. await getTableData()
  170. }
  171. }
  172. }
  173. //删除
  174. const delModalClick = () => {
  175. delMessageV2(async (action, instance, done) => {
  176. if (action === 'confirm') {
  177. instance.confirmButtonLoading = true
  178. await tableRemoveData()
  179. instance.confirmButtonLoading = false
  180. done()
  181. } else {
  182. done()
  183. }
  184. })
  185. }
  186. //批量删除
  187. const tableRemoveData = async () => {
  188. const rows = tableCheckedKeys.value
  189. if (rows.length > 0) {
  190. const ids = arrToId(rows)
  191. //删除请求
  192. const { error, code } = await dataApi.removeData({
  193. projectId: projectId.value,
  194. contractId: contractId.value,
  195. ids: ids,
  196. })
  197. //处理数据
  198. if (!error && code === 200) {
  199. window?.$message?.success('操作成功')
  200. searchClick()
  201. }
  202. }
  203. }
  204. </script>
  205. <style lang="scss" scoped>
  206. </style>