dialog.edit.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <template>
  2. <div class="rule-type">
  3. <DialogCom
  4. :title="id ? '编辑安全保卫部年度工作计划' : '新增安全保卫部年度工作计划'"
  5. :visible.sync="isShow"
  6. @close="onHide"
  7. width="700px"
  8. >
  9. <div class="page-body">
  10. <el-form
  11. :model="formData"
  12. :rules="formDataRules"
  13. size="small"
  14. ref="form"
  15. label-position="right"
  16. label-width="130px"
  17. label-prefix=":"
  18. >
  19. <el-form-item prop="orgId" label="行社名称:">
  20. <tree-select
  21. v-model="formData.orgId"
  22. :options="deptOptions"
  23. :show-count="true"
  24. :normalizer="tenantIdnormalizer"
  25. :props="{ checkStrictly: true, label: 'name' }"
  26. placeholder="请选择机构"
  27. :noChildrenText="''"
  28. noOptionsText="没有数据"
  29. noResultsText="没有搜索结果"
  30. />
  31. </el-form-item>
  32. <el-form-item prop="type" label="文件种类:">
  33. <el-input
  34. v-model="formData.type"
  35. ></el-input>
  36. </el-form-item>
  37. <el-form-item label="工作年度:" prop="year">
  38. <el-date-picker
  39. v-model="formData.year"
  40. :clearable="timeClearable"
  41. type="year"
  42. placeholder="请选择工作计划年度"
  43. value-format="yyyy"
  44. >
  45. </el-date-picker>
  46. </el-form-item>
  47. <el-form-item prop="userIds" label="参与人员:" v-if="false">
  48. <div>
  49. <el-input
  50. :readonly="true"
  51. v-model="joinedStringArray"
  52. placeholder="点击选择"
  53. ></el-input>
  54. <el-button @click="selectUser">选择</el-button>
  55. </div>
  56. </el-form-item>
  57. <el-form-item prop="date" label="文件日期:">
  58. <el-date-picker
  59. v-model="formData.date"
  60. value-format="yyyy-MM-dd"
  61. placeholder="请选择文件发布日期"
  62. type="date"
  63. :clearable="false"
  64. ></el-date-picker>
  65. </el-form-item>
  66. <el-form-item label="上传附件(word、pdf文件格式)" prop="images">
  67. <imgs-upload
  68. :limit="5"
  69. v-model="formData.images"
  70. :fileSize="2"
  71. ></imgs-upload>
  72. </el-form-item>
  73. <div>
  74. <el-form-item label="内容:" prop="content" v-if="false">
  75. <Editor style="height: 150px" v-model="formData.content"></Editor>
  76. </el-form-item>
  77. </div>
  78. </el-form>
  79. </div>
  80. <div style="margin-top: 100px" slot="footer" class="dialog-footer">
  81. <el-button type="primary" @click="onSubmit">确定</el-button>
  82. <el-button @click="isShow = false">取消</el-button>
  83. </div>
  84. </DialogCom>
  85. <UserSelector ref="UserSelector" @select="onUserSelect"></UserSelector>
  86. </div>
  87. </template>
  88. <script>
  89. import { mapState, mapMutations } from "vuex";
  90. import { Add, edit, getaqbwbndjh } from "@/api/safetyBook/aqbwbndjh";
  91. import { deptTreeSelect } from "@/api/system/public";
  92. import UserSelector from "@/components/userSelector/index.vue";
  93. import ImgsUpload from "@/components/ImgsUpload";
  94. import Editor from "@/components/Editor";
  95. export default {
  96. dicts: ["safety_book_type"],
  97. components: { UserSelector, ImgsUpload, Editor },
  98. data() {
  99. return {
  100. id: null,
  101. isShow: false,
  102. timeClearable: true,
  103. formData: this.reset(),
  104. //修改新增中的机构树
  105. deptOptions: [],
  106. formDataRules: {
  107. userIds: [{ required: true, message: "请选择参与人员" }],
  108. date: [{ required: true, message: "请选择记录日期" }],
  109. images: [{ required: true, message: "请选择照片" }],
  110. content: [{ required: true, message: "请输入内容" }],
  111. orgId: [{ required: true, message: "请选择机构" }],
  112. },
  113. };
  114. },
  115. watch: {},
  116. computed: {
  117. ...mapState([]),
  118. joinedStringArray: {
  119. get() {
  120. if (this.formData.names == null || this.formData.names == undefined) {
  121. this.formData.names = this.formData.userNames.split(", ");
  122. }
  123. return this.formData.names.join(", ");
  124. },
  125. set(value) {
  126. this.formData.names = value.split(", ");
  127. },
  128. },
  129. },
  130. methods: {
  131. ...mapMutations([]),
  132. /** 查询机构树数据 */
  133. getDeptTree() {
  134. deptTreeSelect().then((response) => {
  135. this.deptOptions = response.data;
  136. });
  137. },
  138. /** treeSelect组件自定义数据*/
  139. tenantIdnormalizer(node, instanceId) {
  140. if (node.children && !node.children.length) {
  141. delete node.children;
  142. }
  143. return {
  144. id: node.id,
  145. label: node.shortName,
  146. children: node.children,
  147. };
  148. },
  149. reset() {
  150. return {
  151. id: null,
  152. // names: [],
  153. // userIds: [],
  154. date: null,
  155. images: [],
  156. // content: null,
  157. title: null,
  158. orgId:null,
  159. type:"工作计划",
  160. year:null,
  161. };
  162. },
  163. async refresh(id) {
  164. if (id != null && id != undefined) {
  165. await getaqbwbndjh(id).then((res) => {
  166. // this.formData.names = res.data.userNames.split(",");
  167. this.formData = res.data;
  168. // this.formData.year=res.data.year;
  169. });
  170. }
  171. },
  172. async show(id) {
  173. // console.log(id, "id");
  174. this.getDeptTree();
  175. this.formData = this.reset();
  176. this.id = id;
  177. await this.refresh(id);
  178. this.isShow = true;
  179. },
  180. // 事件
  181. onHide() {
  182. this.formData = this.reset();
  183. this.$refs.form.resetFields();
  184. },
  185. onSubmit() {
  186. console.log(this.formData, "this.formData");
  187. this.$refs.form.validate(async (isValidate) => {
  188. if (!isValidate) return;
  189. if (this.id == null || this.id == undefined) {
  190. await Add(this.formData).then((res) => {
  191. this.$emit("success");
  192. this.isShow = false;
  193. });
  194. } else {
  195. await edit(this.formData).then((res) => {
  196. this.$emit("success");
  197. this.isShow = false;
  198. });
  199. }
  200. });
  201. },
  202. //选择用户回调
  203. onUserSelect(data) {
  204. var ids = data.map((obj) => obj.id);
  205. var names = data.map((obj) => obj.name);
  206. this.formData.userIds = ids;
  207. this.formData.names = names;
  208. this.formData.userNames = names.join(",");
  209. // console.log(this.formData.userIds, "this.formData.userIds");
  210. },
  211. //用户选择
  212. selectUser(event) {
  213. // event.preventDefault();
  214. this.$refs.UserSelector.show();
  215. },
  216. // 事件
  217. //apimark//
  218. },
  219. mounted() {},
  220. };
  221. </script>
  222. <style lang="scss" scoped>
  223. .brand_info {
  224. .el-form {
  225. width: 600px;
  226. padding-top: 40px;
  227. }
  228. }
  229. </style>