DetailedInformation.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. <script setup lang="ts">
  2. import { onMounted, ref } from 'vue';
  3. import dayjs from 'dayjs';
  4. import { useDictData } from '@/hooks/dict-data';
  5. import { useRequest } from '@/hooks/request';
  6. import { t } from '@/i18n';
  7. import { deviceAdd } from '@/api';
  8. import { DictCode } from '@/constants';
  9. import type { EquipmentInformationForm, UseGuideStepItemExpose, UseGuideStepItemProps } from '@/types';
  10. const { dictData: dcCsDType, getDictData: getDcCsDType } = useDictData(DictCode.DcCsDType);
  11. const { dictData: dcCsCasType, getDictData: getDcCsCasType } = useDictData(DictCode.DcCsCasType);
  12. const { dictData: dcCsCoolingType, getDictData: getDcCsCoolingType } = useDictData(DictCode.DcCsCoolingType);
  13. const { dictData: dcVfdType, getDictData: getDcVfdType } = useDictData(DictCode.DcVfdType);
  14. const props = defineProps<UseGuideStepItemProps<EquipmentInformationForm>>();
  15. const isLoading = ref<boolean>(false);
  16. const { handleRequest } = useRequest();
  17. const getDeviceDetail = () => {
  18. let data;
  19. const {
  20. chillerType,
  21. powerRating,
  22. refrigerantType,
  23. refrigerantDosage,
  24. nominalCoolingcapacity,
  25. nominalcalorificvalue,
  26. nominalCopRefrigeration,
  27. nominalCopHeating,
  28. chilledWaterRatedFlow,
  29. coolingWaterRatedFlow,
  30. motorCoolingMethod,
  31. copCorrectionFactor,
  32. numberUnitCircuits,
  33. singleLoopCompressor,
  34. frequencyConversion,
  35. ratedVoltage,
  36. inflowTemperature,
  37. waterOutletTemperature,
  38. relativeHumidityTemperature,
  39. fanNumber,
  40. waterFlowRate,
  41. coolingCapacity,
  42. inletPipeDiameter,
  43. outletPipeDiameter,
  44. ratedFlow,
  45. ratedHead,
  46. ratedCurrent,
  47. revolutions,
  48. } = props.form;
  49. if (props.form.deviceType === 2) {
  50. data = {
  51. chillerType,
  52. powerRating,
  53. refrigerantType,
  54. refrigerantDosage,
  55. nominalCoolingcapacity,
  56. nominalcalorificvalue,
  57. nominalCopRefrigeration,
  58. nominalCopHeating,
  59. chilledWaterRatedFlow,
  60. coolingWaterRatedFlow,
  61. motorCoolingMethod,
  62. copCorrectionFactor,
  63. numberUnitCircuits,
  64. singleLoopCompressor,
  65. };
  66. return JSON.stringify(data);
  67. } else if (props.form.deviceType === 9) {
  68. data = {
  69. frequencyConversion,
  70. powerRating,
  71. ratedVoltage,
  72. inflowTemperature,
  73. waterOutletTemperature,
  74. relativeHumidityTemperature,
  75. fanNumber,
  76. waterFlowRate,
  77. coolingCapacity,
  78. inletPipeDiameter,
  79. outletPipeDiameter,
  80. copCorrectionFactor,
  81. numberUnitCircuits,
  82. singleLoopCompressor,
  83. };
  84. return JSON.stringify(data);
  85. } else if (props.form.deviceType === 11 || props.form.deviceType === 12) {
  86. data = {
  87. frequencyConversion,
  88. powerRating,
  89. ratedFlow,
  90. ratedHead,
  91. ratedVoltage,
  92. ratedCurrent,
  93. revolutions,
  94. };
  95. return JSON.stringify(data);
  96. } else {
  97. return (data = '{}');
  98. }
  99. };
  100. const finish = async () => {
  101. try {
  102. isLoading.value = true;
  103. props.form.groupId = props.form.deviceData[1] ? props.form.deviceData[1] : props.form.deviceData[0];
  104. props.form.id = props.form.devId ? props.form.devId : undefined;
  105. props.form.devId = await deviceAdd({
  106. id: props.form.id,
  107. deviceName: props.form.deviceName,
  108. groupId: props.form.groupId,
  109. deviceType: props.form.deviceType,
  110. brand: props.form.brand,
  111. model: props.form.model,
  112. productionDate: dayjs(props.form.productionDate).format('YYYY-MM-DD'),
  113. deviceDetail: getDeviceDetail(),
  114. });
  115. // eslint-disable-next-line no-useless-catch
  116. } catch (err) {
  117. throw err;
  118. } finally {
  119. isLoading.value = false;
  120. }
  121. };
  122. defineExpose<UseGuideStepItemExpose>({
  123. finish,
  124. });
  125. onMounted(() => {
  126. handleRequest(async () => {
  127. await getDcCsDType();
  128. await getDcCsCasType();
  129. await getDcCsCoolingType();
  130. await getDcVfdType();
  131. });
  132. });
  133. </script>
  134. <template>
  135. <ASpin :spinning="isLoading">
  136. <div>
  137. <AFlex class="equipment-information" wrap="wrap" :gap="96">
  138. <AFormItem :label="$t('createDevice.brand')" name="brand">
  139. <AInput :placeholder="$t('common.pleaseEnter')" v-model:value="form.brand" />
  140. </AFormItem>
  141. <AFormItem :label="$t('createDevice.modelNumber')" name="model">
  142. <AInput :placeholder="$t('common.pleaseEnter')" v-model:value="form.model" />
  143. </AFormItem>
  144. <AFormItem :label="$t('createDevice.manufacturingDate')" name="productionDate">
  145. <ADatePicker :placeholder="$t('common.pleaseEnter')" v-model:value="form.productionDate">
  146. <template #suffixIcon> </template>
  147. </ADatePicker>
  148. </AFormItem>
  149. <AFormItem
  150. v-if="props.form.deviceType === 9 || props.form.deviceType === 11 || props.form.deviceType === 12"
  151. :label="$t('createDevice.frequencyConversion')"
  152. name="frequencyConversion"
  153. >
  154. <ASelect
  155. v-model:value="form.frequencyConversion"
  156. :options="dcVfdType"
  157. :placeholder="$t('common.plzSelect')"
  158. :field-names="{ label: 'dictValue', value: 'dictValue' }"
  159. />
  160. </AFormItem>
  161. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.chillerType')" name="chillerType">
  162. <ASelect
  163. v-model:value="form.chillerType"
  164. :options="dcCsDType"
  165. :placeholder="$t('common.plzSelect')"
  166. :field-names="{ label: 'dictValue', value: 'dictValue' }"
  167. />
  168. </AFormItem>
  169. <AFormItem
  170. v-if="
  171. props.form.deviceType === 2 ||
  172. props.form.deviceType === 9 ||
  173. props.form.deviceType === 11 ||
  174. props.form.deviceType === 12
  175. "
  176. :label="$t('createDevice.ratedPower')"
  177. name="powerRating"
  178. >
  179. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.powerRating" />
  180. </AFormItem>
  181. <AFormItem
  182. v-if="props.form.deviceType === 11 || props.form.deviceType === 12"
  183. :label="t('createDevice.ratedFlow')"
  184. name="ratedFlow"
  185. >
  186. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.ratedFlow" />
  187. </AFormItem>
  188. <AFormItem
  189. v-if="props.form.deviceType === 11 || props.form.deviceType === 12"
  190. :label="t('createDevice.ratedHead')"
  191. name="ratedHead"
  192. >
  193. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.ratedHead" />
  194. </AFormItem>
  195. <AFormItem
  196. v-if="props.form.deviceType === 9 || props.form.deviceType === 11 || props.form.deviceType === 12"
  197. :label="t('createDevice.ratedVoltage')"
  198. name="ratedVoltage"
  199. >
  200. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.ratedVoltage" />
  201. </AFormItem>
  202. <AFormItem
  203. v-if="props.form.deviceType === 11 || props.form.deviceType === 12"
  204. :label="t('createDevice.ratedCurrent')"
  205. name="ratedCurrent"
  206. >
  207. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.ratedCurrent" />
  208. </AFormItem>
  209. <AFormItem
  210. v-if="props.form.deviceType === 11 || props.form.deviceType === 12"
  211. :label="t('createDevice.revolutions')"
  212. name="revolutions"
  213. >
  214. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.revolutions" />
  215. </AFormItem>
  216. <AFormItem
  217. v-if="props.form.deviceType === 9"
  218. :label="t('createDevice.inflowTemperature')"
  219. name="inflowTemperature"
  220. >
  221. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.inflowTemperature" />
  222. </AFormItem>
  223. <AFormItem
  224. v-if="props.form.deviceType === 9"
  225. :label="t('createDevice.waterOutletTemperature')"
  226. name="waterOutletTemperature"
  227. >
  228. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.waterOutletTemperature" />
  229. </AFormItem>
  230. <AFormItem
  231. v-if="props.form.deviceType === 9"
  232. :label="t('createDevice.relativeHumidityTemperature')"
  233. name="relativeHumidityTemperature"
  234. >
  235. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.relativeHumidityTemperature" />
  236. </AFormItem>
  237. <AFormItem v-if="props.form.deviceType === 9" :label="t('createDevice.fanNumber')" name="fanNumber">
  238. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.fanNumber" />
  239. </AFormItem>
  240. <AFormItem v-if="props.form.deviceType === 9" :label="t('createDevice.waterFlowRate')" name="waterFlowRate">
  241. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.waterFlowRate" />
  242. </AFormItem>
  243. <AFormItem v-if="props.form.deviceType === 9" :label="t('createDevice.coolingCapacity')" name="coolingCapacity">
  244. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.coolingCapacity" />
  245. </AFormItem>
  246. <AFormItem
  247. v-if="props.form.deviceType === 9"
  248. :label="t('createDevice.inletPipeDiameter')"
  249. name="inletPipeDiameter"
  250. >
  251. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.inletPipeDiameter" />
  252. </AFormItem>
  253. <AFormItem
  254. v-if="props.form.deviceType === 9"
  255. :label="t('createDevice.outletPipeDiameter')"
  256. name="outletPipeDiameter"
  257. >
  258. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.outletPipeDiameter" />
  259. </AFormItem>
  260. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.refrigerantType')" name="refrigerantType">
  261. <ASelect
  262. v-model:value="form.refrigerantType"
  263. :options="dcCsCasType"
  264. :placeholder="$t('common.plzSelect')"
  265. :field-names="{ label: 'dictValue', value: 'dictValue' }"
  266. />
  267. </AFormItem>
  268. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.refrigerantDosage')">
  269. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.refrigerantDosage" />
  270. </AFormItem>
  271. <AFormItem
  272. v-if="props.form.deviceType === 2"
  273. :label="t('createDevice.nominalCoolingcapacity')"
  274. name="nominalCoolingcapacity"
  275. >
  276. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.nominalCoolingcapacity" />
  277. </AFormItem>
  278. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.nominalcalorificvalue')">
  279. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.nominalcalorificvalue" />
  280. </AFormItem>
  281. <AFormItem
  282. v-if="props.form.deviceType === 2"
  283. :label="t('createDevice.nominalCopRefrigeration')"
  284. name="nominalCopRefrigeration"
  285. >
  286. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.nominalCopRefrigeration" />
  287. </AFormItem>
  288. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.nominalCopHeating')">
  289. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.nominalCopHeating" />
  290. </AFormItem>
  291. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.chilledWaterRatedFlow')">
  292. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.chilledWaterRatedFlow" />
  293. </AFormItem>
  294. <AFormItem v-if="props.form.deviceType === 2" :label="t('createDevice.coolingWaterRatedFlow')">
  295. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.coolingWaterRatedFlow" />
  296. </AFormItem>
  297. <AFormItem
  298. v-if="props.form.deviceType === 2"
  299. :label="t('createDevice.motorCoolingMethod')"
  300. name="motorCoolingMethod"
  301. >
  302. <ASelect
  303. v-model:value="form.motorCoolingMethod"
  304. :options="dcCsCoolingType"
  305. :placeholder="$t('common.plzSelect')"
  306. :field-names="{ label: 'dictValue', value: 'dictValue' }"
  307. />
  308. </AFormItem>
  309. <AFormItem
  310. v-if="props.form.deviceType === 2 || props.form.deviceType === 9"
  311. :label="t('createDevice.copCorrectionFactor')"
  312. >
  313. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.copCorrectionFactor" />
  314. </AFormItem>
  315. <AFormItem
  316. v-if="props.form.deviceType === 2 || props.form.deviceType === 9"
  317. :label="t('createDevice.numberUnitCircuits')"
  318. name="numberUnitCircuits"
  319. >
  320. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.numberUnitCircuits" />
  321. </AFormItem>
  322. <AFormItem
  323. v-if="props.form.deviceType === 2 || props.form.deviceType === 9"
  324. :label="t('createDevice.singleLoopCompressor')"
  325. name="singleLoopCompressor"
  326. >
  327. <AInputNumber :placeholder="$t('common.pleaseEnter')" v-model:value="form.singleLoopCompressor" />
  328. </AFormItem>
  329. </AFlex>
  330. </div>
  331. </ASpin>
  332. </template>
  333. <style lang="scss" scoped>
  334. .information-prompt {
  335. width: 14px;
  336. height: 14px;
  337. margin-left: 13px;
  338. cursor: pointer;
  339. }
  340. .equipment-information {
  341. row-gap: 0 !important;
  342. margin-top: 40px;
  343. }
  344. .equipment-information div {
  345. width: 270px;
  346. }
  347. </style>