add.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div>
  3. <el-button
  4. :size="btn_size ? btn_size : 'small'"
  5. type="primary"
  6. @click="show"
  7. >
  8. {{ title_btn ? $t(title_btn) : $t("新 建") }}
  9. </el-button>
  10. <el-drawer
  11. :title="title_drawer ? $t(title_drawer) : $t(`新建服务工作项`)"
  12. :visible.sync="dialogFormVisible"
  13. direction="rtl"
  14. append-to-body
  15. :show-close="false"
  16. size="700px"
  17. @close="onCancel"
  18. >
  19. <div class="drawer__panel">
  20. <el-row :gutter="20">
  21. <el-form
  22. :model="form"
  23. :rules="rules"
  24. ref="form"
  25. :label-width="tool.onlyZh('170px')"
  26. label-position="right"
  27. size="mini"
  28. >
  29. <el-col :span="24">
  30. <el-form-item :label="$t('工作名:')" prop="workname">
  31. <el-input
  32. v-model="form.workname"
  33. :placeholder="$t('请输入工作名')"
  34. ></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="24">
  38. <el-form-item :label="$t('操作说明:')" prop="remarks">
  39. <el-input
  40. type="textarea"
  41. v-model="form.remarks"
  42. :placeholder="$t('请输入操作说明')"
  43. ></el-input>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="24">
  47. <el-form-item :label="$t('上传附件:')" prop="fileupload">
  48. <el-radio-group v-model="form.fileupload">
  49. <el-radio :label="11">{{ $t("必填") }}</el-radio>
  50. <el-radio :label="1">{{ $t("非必填") }}</el-radio>
  51. <el-radio :label="0">{{ $t("无") }}</el-radio>
  52. </el-radio-group>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="24">
  56. <el-form-item :label="$t('是否添加物料:')" prop="additem">
  57. <el-radio-group v-model="form.additem">
  58. <el-radio :label="11">{{ $t("必填") }}</el-radio>
  59. <el-radio :label="1">{{ $t("非必填") }}</el-radio>
  60. <el-radio :label="0">{{ $t("无") }}</el-radio>
  61. </el-radio-group>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="24">
  65. <el-form-item :label="$t('上传全景影像:')" prop="panorama">
  66. <el-radio-group v-model="form.panorama">
  67. <el-radio :label="11">{{ $t("必填") }}</el-radio>
  68. <el-radio :label="1">{{ $t("非必填") }}</el-radio>
  69. <el-radio :label="0">{{ $t("无") }}</el-radio>
  70. </el-radio-group>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="24">
  74. <el-form-item :label="$t('是否合格:')" prop="passcheck">
  75. <el-radio-group v-model="form.passcheck">
  76. <el-radio :label="11">{{ $t("必填") }}</el-radio>
  77. <el-radio :label="1">{{ $t("非必填") }}</el-radio>
  78. <el-radio :label="0">{{ $t("无") }}</el-radio>
  79. </el-radio-group>
  80. </el-form-item>
  81. </el-col>
  82. <el-col :span="24">
  83. <el-form-item :label="$t('是否客户签名:')" prop="signature">
  84. <el-radio-group v-model="form.signature">
  85. <el-radio :label="11">{{ $t("必填") }}</el-radio>
  86. <el-radio :label="1">{{ $t("非必填") }}</el-radio>
  87. <el-radio :label="0">{{ $t("无") }}</el-radio>
  88. </el-radio-group>
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="24">
  92. <el-form-item
  93. :label="$t('内容是否需要验证表单:')"
  94. prop="formcheck"
  95. >
  96. <el-radio-group v-model="form.formcheck">
  97. <el-radio :label="1">{{ $t("是") }}</el-radio>
  98. <el-radio :label="0">{{ $t("否") }}</el-radio>
  99. </el-radio-group>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24">
  103. <el-form-item
  104. :label="$t('是否必填服务节点:')"
  105. prop="servicenode"
  106. >
  107. <el-radio-group v-model="form.servicenode">
  108. <el-radio :label="1">{{ $t("是") }}</el-radio>
  109. <el-radio :label="0">{{ $t("否") }}</el-radio>
  110. </el-radio-group>
  111. </el-form-item>
  112. </el-col>
  113. <el-col :span="24">
  114. <el-form-item :label="$t('是否施工日志汇报:')" prop="logreport">
  115. <el-radio-group v-model="form.logreport">
  116. <el-radio :label="1">{{ $t("是") }}</el-radio>
  117. <el-radio :label="0">{{ $t("否") }}</el-radio>
  118. </el-radio-group>
  119. </el-form-item>
  120. </el-col>
  121. </el-form>
  122. </el-row>
  123. </div>
  124. <div class="fixed__btn__panel">
  125. <el-button size="small" @click="onCancel" class="normal-btn-width">{{
  126. $t("取 消")
  127. }}</el-button>
  128. <el-button
  129. :loading="loading"
  130. class="normal-btn-width"
  131. size="small"
  132. :type="title_btn == '编辑' ? 'warning' : 'primary'"
  133. @click="onSubmit"
  134. >{{ title_btn == "编辑" ? $t("保 存") : $t("确 定") }}
  135. </el-button>
  136. </div>
  137. </el-drawer>
  138. </div>
  139. </template>
  140. <script>
  141. export default {
  142. name: "add",
  143. props: {
  144. btn_size: String,
  145. title_btn: String,
  146. title_drawer: String,
  147. data: Object,
  148. },
  149. data() {
  150. return {
  151. loading: false,
  152. dialogFormVisible: false,
  153. currentData: {},
  154. form: {
  155. sc_workpresetid: 0,
  156. workname: "",
  157. remarks: "",
  158. fileupload: 0, //附件上传,0不需要 1可上传 11必须上传
  159. signature: 0, //客户签名,0不需要 1可填写 11必须填写
  160. additem: 0, //物料添加,0不添加 1添加 11必须添加
  161. passcheck: 0, //合格确认,0不需要 1需要 11必须
  162. formcheck: 0, //表单验证,0 不需要 1 需要
  163. panorama: 0, //全景影像,0不需要 1可上传 11必须上传
  164. servicenode: 0, //服务节点,0 不需要 1 需要
  165. logreport: 0, //是否施工日志汇报,0 不需要 1 需要
  166. },
  167. rules: {
  168. workname: [
  169. {
  170. required: true,
  171. message: this.$t("请输入工作名"),
  172. trigger: "blur",
  173. },
  174. ],
  175. },
  176. };
  177. },
  178. methods: {
  179. //初始化
  180. show() {
  181. this.dialogFormVisible = true;
  182. if (this.title_btn == "编辑") {
  183. this.form = Object.assign({}, this.form, this.data);
  184. }
  185. },
  186. onSubmit() {
  187. this.$refs["form"].validate(async (valid) => {
  188. if (!valid) return false;
  189. this.loading = true;
  190. const res = await this.$api.requested({
  191. id: "2026051416454302",
  192. content: this.form,
  193. });
  194. if (res.code === 0) {
  195. this.loading = false;
  196. this.$message.error(
  197. res.msg || (this.title_btn == "编辑" ? "编辑失败" : "新建失败")
  198. );
  199. return;
  200. }
  201. this.loading = false;
  202. this.$message.success(
  203. this.title_btn == "编辑" ? "编辑成功" : "新建成功"
  204. );
  205. this.$emit("onSuccess");
  206. this.$refs["form"].resetFields();
  207. this.dialogFormVisible = false;
  208. setTimeout(() => {
  209. this.$router.push({
  210. path: "/serviceWorkItemDetail",
  211. query: {
  212. id: res.data.sc_workpresetid,
  213. rowindex: res.data.rowindex,
  214. },
  215. });
  216. this.$store.dispatch("changeDetailDrawer", true);
  217. }, 500);
  218. });
  219. },
  220. onCancel() {
  221. this.dialogFormVisible = false;
  222. this.$refs["form"].resetFields();
  223. },
  224. },
  225. };
  226. </script>