WorkspaceDrawer-shangfei.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <template>
  2. <div>
  3. <el-drawer
  4. class="test"
  5. :model-value="true"
  6. @close="() => emit('onClose')"
  7. with-header="true"
  8. size="35%"
  9. >
  10. <template #header="{ titleId }">
  11. <p :id="titleId">{{ title }}</p>
  12. </template>
  13. <el-form
  14. ref="ruleFormRef"
  15. :model="ruleForm"
  16. :rules="rules"
  17. label-width="120px"
  18. class="demo-ruleForm"
  19. size="default"
  20. status-icon
  21. >
  22. <el-form-item label="工位名称" prop="name">
  23. <el-select v-model="ruleForm.name" placeholder="请选择工位" style="width: 200px">
  24. <el-option
  25. v-for="item in workSpaceList"
  26. :key="item.workspaceCode"
  27. :label="item.workspaceName"
  28. :value="item.workspaceName"
  29. :disabled="!item.isEnable"
  30. @click="changeWorkSpaceCode(item.workspaceCode, item.isEnable)"
  31. />
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="所属车间" prop="seniorScene">
  35. <el-input v-model="ruleForm.seniorScene" disabled />
  36. </el-form-item>
  37. <el-form-item label="负责人" prop="principalName">
  38. <el-input v-model="ruleForm.principalName" />
  39. </el-form-item>
  40. <!-- <el-form-item label="状态">
  41. <el-switch
  42. v-model="ruleForm.isDisabled"
  43. :active-value="IS_DISABLED.FALSE"
  44. :inactive-value="IS_DISABLED.TRUE"
  45. class="switchUse"
  46. />
  47. </el-form-item> -->
  48. </el-form>
  49. <div style="position: absolute; left: 108px; bottom: 67px">
  50. <el-button v-if="!props.detail.id" @click="resetDraw">重置</el-button>
  51. <el-button v-if="!props.detail.id" type="primary" @click="addNewType(ruleFormRef)">
  52. 提交
  53. </el-button>
  54. <el-button v-if="props.detail.id" type="primary" @click="editedSub(ruleFormRef)">
  55. 提交
  56. </el-button>
  57. </div>
  58. </el-drawer>
  59. </div>
  60. </template>
  61. <script setup lang="ts">
  62. import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
  63. // import { IS_DISABLED } from '@/types/scene/constant.ts';
  64. import { type FormInstance, type FormRules } from 'element-plus';
  65. import { addWorkspace, editWorkspace } from '@/api/scene/scene.ts';
  66. import { getWorkSpaceInfoList } from '@/api/workShopData';
  67. const props = defineProps<{
  68. detail: {
  69. id?: number;
  70. name?: string;
  71. code?: string;
  72. seniorScene?: string;
  73. principalName?: string;
  74. // isDisabled?: IS_DISABLED;
  75. workshopId?: number;
  76. workshopCode?: string;
  77. };
  78. }>();
  79. type workSpaceListType = {
  80. isEnable: boolean;
  81. workspaceCode: string;
  82. workspaceName: string;
  83. };
  84. const workSpaceList = ref<workSpaceListType[]>([]);
  85. getWorkSpaceInfoList({ workshopCode: props.detail.workshopCode }).then((res) => {
  86. workSpaceList.value = res;
  87. });
  88. const changeWorkSpaceCode = (workspaceCode: string, isEnable: boolean) => {
  89. if (isEnable === false) return;
  90. ruleForm.code = workspaceCode;
  91. };
  92. const emit = defineEmits<{
  93. (e: 'onOk'): unknown;
  94. (e: 'onClose'): unknown;
  95. }>();
  96. const title = computed(() => {
  97. if (props.detail.principalName) {
  98. return '编辑工位';
  99. }
  100. return '添加工位';
  101. });
  102. //表格中的规则
  103. const ruleFormRef = ref<FormInstance>();
  104. interface RuleForm {
  105. name: string; //名称
  106. seniorScene: string; //上级场景
  107. code: string; //代码
  108. principalName?: string; //负责人
  109. // isDisabled?: IS_DISABLED;
  110. }
  111. const ruleForm = reactive<RuleForm>({
  112. name: '',
  113. seniorScene: '',
  114. code: '',
  115. principalName: '',
  116. // isDisabled: IS_DISAsBLED.FALSE,
  117. });
  118. const rules = reactive<FormRules>({
  119. name: [
  120. { required: true, message: '工位不能为空', trigger: 'blur' },
  121. { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
  122. ],
  123. // seniorScene: [
  124. // { required: true, message: '', trigger: 'blur' },
  125. // { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
  126. // ],
  127. principalName: [
  128. { required: true, message: '负责人不能为空', trigger: 'blur' },
  129. { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
  130. ],
  131. });
  132. watch(
  133. () => props.detail,
  134. (data) => {
  135. ruleForm.name = data.name!;
  136. ruleForm.seniorScene = data.seniorScene!;
  137. ruleForm.code = data.code!;
  138. ruleForm.principalName = data.principalName;
  139. // ruleForm.isDisabled = data.isDisabled;
  140. },
  141. { immediate: true },
  142. );
  143. //添加的提交
  144. const addNewType = (formEl: FormInstance | undefined) => {
  145. if (!formEl) return;
  146. formEl.validate((valid) => {
  147. if (!valid) {
  148. return;
  149. }
  150. const newAddData = {
  151. code: ruleForm.code,
  152. workshopId: props.detail.workshopId,
  153. name: ruleForm.name,
  154. principalName: ruleForm.principalName,
  155. // isDisabled: ruleForm.isDisabled,
  156. };
  157. addWorkspace(newAddData)
  158. .then(() => {
  159. console.log('成功添加车间');
  160. })
  161. .catch((err) => {
  162. console.log(err);
  163. })
  164. .finally(() => {
  165. emit('onOk');
  166. });
  167. });
  168. };
  169. //编辑时的提交
  170. const editedSub = (formEl: FormInstance | undefined) => {
  171. if (!formEl) return;
  172. formEl.validate((valid) => {
  173. if (!valid) {
  174. return;
  175. }
  176. const editNewWorkspaceData = {
  177. id: props.detail.id,
  178. code: ruleForm.code,
  179. name: ruleForm.name,
  180. principalName: ruleForm.principalName,
  181. // isDisabled: ruleForm.isDisabled,
  182. };
  183. //编辑并上传
  184. editWorkspace(editNewWorkspaceData)
  185. .then(() => {
  186. console.log('成功修改车间');
  187. })
  188. .catch((err) => {
  189. console.log(err);
  190. })
  191. .finally(() => {
  192. emit('onOk');
  193. });
  194. });
  195. };
  196. //重置编辑框
  197. const resetDraw = () => {
  198. ruleForm.name = '';
  199. ruleForm.code = '';
  200. // ruleForm.isDisabled = IS_DISABLED.FALSE;
  201. ruleForm.principalName = '';
  202. };
  203. </script>
  204. <style scoped>
  205. .tag-select {
  206. margin-right: 10px;
  207. margin-bottom: 10px;
  208. border-radius: 4px;
  209. border: 1px solid rgba(0, 0, 0, 0.15);
  210. }
  211. </style>