dialog.edit.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  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 v-model="formData.type" maxlength="20"></el-input>
  34. </el-form-item>
  35. <el-form-item label="工作年度:" prop="year">
  36. <el-date-picker
  37. v-model="formData.year"
  38. :clearable="timeClearable"
  39. type="year"
  40. placeholder="请选择工作计划年度"
  41. value-format="yyyy"
  42. >
  43. </el-date-picker>
  44. </el-form-item>
  45. <el-form-item prop="userIds" label="参与人员:" v-if="false">
  46. <div>
  47. <el-input
  48. :readonly="true"
  49. v-model="joinedStringArray"
  50. placeholder="点击选择"
  51. ></el-input>
  52. <el-button @click="selectUser">选择</el-button>
  53. </div>
  54. </el-form-item>
  55. <el-form-item prop="date" label="文件日期:">
  56. <el-date-picker
  57. v-model="formData.date"
  58. value-format="yyyy-MM-dd"
  59. placeholder="请选择文件发布日期"
  60. type="date"
  61. :clearable="false"
  62. ></el-date-picker>
  63. </el-form-item>
  64. <el-form-item label="文件资料" prop="images">
  65. <!-- <imgs-upload
  66. :limit="5"
  67. v-model="formData.images"
  68. :fileSize="2"
  69. ></imgs-upload> -->
  70. <!-- <imgUpload
  71. ref="uploadimage"
  72. type="alone"
  73. :value="formData.images"
  74. @input="imageListChanged"
  75. :fileType="[
  76. 'pdf',
  77. 'jpg',
  78. 'png',
  79. 'jpg',
  80. 'bmp',
  81. 'zip',
  82. 'rar',
  83. '7z',
  84. ]"
  85. >
  86. </imgUpload> -->
  87. <W-file-upload
  88. :fileType="['docx','doc', 'pdf']"
  89. ref="upload"
  90. :defaultValue="formFileListDefualtValue"
  91. v-model="formData.images"
  92. :fileSize="25"
  93. @success="successHandler('form','images')"
  94. />
  95. </el-form-item>
  96. <div>
  97. <el-form-item label="内容:" prop="content" v-if="false">
  98. <Editor style="height: 150px" v-model="formData.content"></Editor>
  99. </el-form-item>
  100. </div>
  101. </el-form>
  102. </div>
  103. <div style="margin-top: 100px" slot="footer" class="dialog-footer">
  104. <el-button type="primary" @click="onSubmit">确定</el-button>
  105. <el-button @click="isShow = false">取消</el-button>
  106. </div>
  107. </DialogCom>
  108. <UserSelector
  109. ref="UserSelector"
  110. @select="onUserSelect"
  111. :clearSelectOnClose="false"
  112. ></UserSelector>
  113. </div>
  114. </template>
  115. <script>
  116. import { mapState, mapMutations } from "vuex";
  117. import { mapGetters } from "vuex";
  118. import { Add, edit, getaqbwbndjh } from "@/api/safetyBook/aqbwbndjh";
  119. import { deptTreeSelect } from "@/api/system/public";
  120. import UserSelector from "@/components/userSelector/index.vue";
  121. import ImgsUpload from "@/components/ImgsUpload";
  122. import Editor from "@/components/Editor";
  123. import imgUpload from "@/components/ImageUpload/index.vue";
  124. import WFileUpload from "@/components/W-FileUpload/index.vue";
  125. import {noAuto} from '@/utils/fieldMxins.js'
  126. export default {
  127. mixins:[noAuto],
  128. dicts: ["safety_book_type"],
  129. components: { UserSelector, ImgsUpload, Editor, imgUpload, WFileUpload },
  130. data() {
  131. return {
  132. formFileListDefualtValue: [],
  133. id: null,
  134. isShow: false,
  135. timeClearable: true,
  136. formData: this.reset(),
  137. //修改新增中的机构树
  138. deptOptions: [],
  139. formDataRules: {
  140. userIds: [{ required: true, message: "请选择参与人员" }],
  141. date: [{ required: true, message: "请选择日期" }],
  142. images: [{ required: true, message: "请上传年度工作计划文件" }],
  143. content: [{ required: true, message: "请输入内容" }],
  144. orgId: [{ required: true, message: "请选择机构" }],
  145. type: [{ required: true, message: "请输入文件种类" }],
  146. year: [{ required: true, message: "请选择年度" }],
  147. },
  148. };
  149. },
  150. watch: {},
  151. computed: {
  152. ...mapState([]),
  153. ...mapGetters(["orgId", "orgName"]),
  154. // joinedStringArray: {
  155. // get() {
  156. // if (this.formData.names == null || this.formData.names == undefined) {
  157. // this.formData.names = this.formData.userNames.split(", ");
  158. // }
  159. // return this.formData.names.join(", ");
  160. // },
  161. // set(value) {
  162. // this.formData.names = value.split(", ");
  163. // },
  164. // },
  165. },
  166. methods: {
  167. ...mapMutations([]),
  168. imageListChanged(list) {
  169. this.formData.images = list;
  170. console.log("images", this.formData.images);
  171. },
  172. /** 查询机构树数据 */
  173. getDeptTree() {
  174. deptTreeSelect().then((response) => {
  175. this.deptOptions = response.data;
  176. });
  177. },
  178. /** treeSelect组件自定义数据*/
  179. tenantIdnormalizer(node, instanceId) {
  180. if (node.children && !node.children.length) {
  181. delete node.children;
  182. }
  183. return {
  184. id: node.id,
  185. label: node.shortName,
  186. children: node.children,
  187. };
  188. },
  189. reset() {
  190. return {
  191. id: null,
  192. // names: [],
  193. // userIds: [],
  194. date: null,
  195. images: [],
  196. // content: null,
  197. title: null,
  198. orgId: null,
  199. type: "工作计划",
  200. year: null,
  201. };
  202. },
  203. async refresh(id) {
  204. this.formFileListDefualtValue = [];
  205. if (id != null && id != undefined) {
  206. await getaqbwbndjh(id).then((res) => {
  207. // this.formData.names = res.data.userNames.split(",");
  208. this.formData = res.data;
  209. this.formFileListDefualtValue = res.data.images;
  210. // this.formData.year=res.data.year;
  211. });
  212. }
  213. },
  214. async show(id) {
  215. // console.log(id, "id");
  216. this.getDeptTree();
  217. this.formData = this.reset();
  218. this.id = id;
  219. await this.refresh(id);
  220. if (id) {
  221. } else {
  222. // console.log(this.orgId,"this.orgId")
  223. this.formData.orgId = this.orgId;
  224. }
  225. this.isShow = true;
  226. },
  227. // 事件
  228. onHide() {
  229. this.formData = this.reset();
  230. this.$refs.form.resetFields();
  231. },
  232. onSubmit() {
  233. console.log(this.formData, "this.formData");
  234. this.$refs.form.validate(async (isValidate) => {
  235. if (!isValidate) return;
  236. if (this.id == null || this.id == undefined) {
  237. await Add(this.formData).then((res) => {
  238. this.$emit("success");
  239. this.isShow = false;
  240. });
  241. } else {
  242. await edit(this.formData).then((res) => {
  243. this.$emit("success");
  244. this.isShow = false;
  245. });
  246. this.$refs["UserSelector"].clearSelected();
  247. }
  248. });
  249. },
  250. //选择用户回调
  251. onUserSelect(data) {
  252. var ids = data.map((obj) => obj.id);
  253. var names = data.map((obj) => obj.name);
  254. this.formData.userIds = ids;
  255. this.formData.names = names;
  256. this.formData.userNames = names.join(",");
  257. // console.log(this.formData.userIds, "this.formData.userIds");
  258. },
  259. //用户选择
  260. selectUser(event) {
  261. // event.preventDefault();
  262. this.$refs.UserSelector.show();
  263. },
  264. // 事件
  265. //apimark//
  266. },
  267. mounted() {},
  268. };
  269. </script>
  270. <style lang="scss" scoped>
  271. .brand_info {
  272. .el-form {
  273. width: 600px;
  274. padding-top: 40px;
  275. }
  276. }
  277. </style>