addOrEditDialog.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <ele-modal
  3. custom-class="ele-dialog-form long-dialog-form"
  4. :centered="true"
  5. :visible.sync="addOrEditDialogFlag"
  6. :title="title"
  7. :append-to-body="false"
  8. :close-on-click-modal="false"
  9. width="1000px"
  10. :before-close="cancel"
  11. >
  12. <div class="switch_left" v-if="dialogType=='view'">
  13. <ul>
  14. <li
  15. v-for="item in tabOptions"
  16. :key="item.key"
  17. :class="{ active: activeComp == item.key }"
  18. @click="activeComp = item.key"
  19. >
  20. {{ item.name }}
  21. </li>
  22. </ul>
  23. </div>
  24. <el-form
  25. v-show="activeComp=='main'"
  26. ref="form"
  27. :rules="rules"
  28. class="el-form-box"
  29. :model="form"
  30. label-width="90px"
  31. style="margin-top:15px"
  32. >
  33. <el-row>
  34. <el-col :span="12" v-if="dialogType != 'add'">
  35. <el-form-item label="编码" prop="code">
  36. <el-input v-model="form.code" disabled></el-input>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="12">
  40. <el-form-item label="变更合同" prop="contractName">
  41. <el-input
  42. v-model="form.contractName"
  43. @click.native="selectContract"
  44. readonly
  45. ></el-input>
  46. </el-form-item>
  47. </el-col>
  48. <el-col :span="12">
  49. <el-form-item label="附件" prop="file">
  50. <fileMain v-model="form.file"></fileMain>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="24">
  54. <el-form-item label="变更原因" prop="reason">
  55. <el-input v-model="form.reason" type="textarea"></el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="24">
  59. <el-form-item label="变更描述" prop="remark">
  60. <el-input v-model="form.remark" type="remark"></el-input>
  61. </el-form-item>
  62. </el-col>
  63. </el-row>
  64. </el-form>
  65. <div slot="footer">
  66. <el-button type="primary" @click="handleSave()" v-click-once
  67. >保存</el-button
  68. >
  69. <el-button @click="cancel">返回</el-button>
  70. </div>
  71. <contractListDialog
  72. ref="selectContractRef"
  73. @changeParent="changeContract"
  74. :type="0"
  75. :isChange="true"
  76. ></contractListDialog>
  77. </ele-modal>
  78. </template>
  79. <script>
  80. import { mapGetters } from 'vuex';
  81. import {
  82. addInformation,
  83. UpdateInformation,
  84. getDetail
  85. } from '@/api/contractManage/contractChange.js';
  86. import fileMain from '@/components/addDoc/index.vue';
  87. import contractListDialog from '@/views/saleManage/saleOrder/components/contractListDialog.vue';
  88. const defForm = {
  89. name: '',
  90. code: '',
  91. file: [], //条件
  92. remark: '',
  93. type: '',
  94. describes: '',
  95. contractName: '',
  96. contractId: ''
  97. };
  98. export default {
  99. components: { fileMain, contractListDialog },
  100. computed: {
  101. ...mapGetters(['user'])
  102. },
  103. data() {
  104. return {
  105. activeComp: 'main',
  106. tabOptions: [
  107. { key: 'main', name: '变更详情' },
  108. { key: 'bpm', name: '流程详情' }
  109. ],
  110. addOrEditDialogFlag: false,
  111. dialogType: '',
  112. title: '',
  113. form: {
  114. ...defForm
  115. },
  116. rules: {
  117. name: { required: true, message: '请输入', trigger: 'change' }
  118. }
  119. };
  120. },
  121. created() {},
  122. methods: {
  123. //初始化
  124. async open(row = {}, type) {
  125. this.addOrEditDialogFlag = true;
  126. this.title = type == 'add' ? '新增' :type == 'view' ? '详情' : '修改';
  127. this.dialogType = type;
  128. if (type !== 'add') {
  129. this.getInfo(row.id);
  130. }
  131. },
  132. selectContract() {
  133. this.$nextTick(() => {
  134. this.$refs.selectContractRef.open();
  135. });
  136. },
  137. changeContract(data) {
  138. this.$set(this.form, 'contractName', data.contractName);
  139. this.$set(this.form, 'contractId', data.id);
  140. this.$set(this.form, 'contractNo', data.contractNo);
  141. this.$set(this.form, 'contractNumber', data.contractNumber);
  142. console.log(this.form);
  143. },
  144. //获取详情
  145. async getInfo(id) {
  146. this.form = await getDetail(id);
  147. },
  148. handleSave(type) {
  149. this.$refs.form.validate((valid) => {
  150. if (!valid) return this.$message.warning('有必填项未填,请检查');
  151. let api =
  152. this.dialogType == 'add' ? addInformation : UpdateInformation;
  153. api(this.form)
  154. .then((res) => {
  155. this.$message.success('操作成功');
  156. if (type === 'sub') {
  157. this.sendSubmit(res);
  158. return;
  159. }
  160. this.done();
  161. this.cancel();
  162. })
  163. .catch((e) => {});
  164. });
  165. },
  166. //刷新主列表数据
  167. done() {
  168. this.$emit('reload');
  169. },
  170. //关闭弹窗
  171. cancel() {
  172. this.form = {
  173. ...defForm
  174. };
  175. this.addOrEditDialogFlag = false;
  176. }
  177. }
  178. };
  179. </script>
  180. <style scoped lang="scss"></style>