You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

406 lines
13 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div style="display:flex;">
  3. <div> <!--overflow-y: scroll;height:200px;-->
  4. <el-form ref="form" :model="form" label-width="85px" :rules="rules" size="medium">
  5. <el-row>
  6. <el-col :span="8">
  7. <el-form-item label="上级单位" prop="parentId">
  8. <el-cascader v-model="form.parentId" :options="customerOrg.customerOrgTree" :props="{
  9. checkStrictly: true,
  10. expandTrigger: 'hover',
  11. ...customerOrg.treeprops,
  12. }" :show-all-levels="false" clearable filterable disabled
  13. :style="'width:' + Math.floor((window.pageWidth - 655) / 3) + 'px;'">
  14. </el-cascader>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="8">
  18. <el-form-item label="单位名称" prop="displayName">
  19. <el-input v-model="form.displayName" placeholder="请输入单位名称" />
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="单位简称" prop="shortName">
  24. <el-input v-model="form.shortName" placeholder="请输入单位简称" />
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="8">
  28. <el-form-item label="体检中心" prop="organizationUnitId">
  29. <el-select v-model="form.organizationUnitId" placeholder="请选择" filterable
  30. :style="'width:' + Math.floor((window.pageWidth - 655) / 3) + 'px;'">
  31. <el-option v-for="item in data.organizationdata" :key="item.id" :label="item.displayName"
  32. :value="item.id" />
  33. </el-select>
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="8">
  37. <el-form-item label="单位性质" prop="orgTypeId">
  38. <el-select v-model="form.orgTypeId" placeholder="请选择" filterable
  39. :style="'width:' + Math.floor((window.pageWidth - 655) / 3) + 'px;'">
  40. <el-option v-for="item in data.customerOrgType" :key="item.id" :label="item.displayName"
  41. :value="item.id" />
  42. </el-select>
  43. </el-form-item>
  44. </el-col>
  45. <!--
  46. <el-form-item label="显示顺序" prop="displayOrder">
  47. <el-input type="number" v-model="form.displayOrder" />
  48. </el-form-item>
  49. -->
  50. <!--
  51. <el-form-item label="单位简码" prop="simpleCode">
  52. <el-input v-model="form.simpleCode" placeholder="由系统自动生成" disabled />
  53. </el-form-item>
  54. -->
  55. <el-col :span="8">
  56. <el-form-item label="联系电话" prop="telephone">
  57. <el-input v-model="form.telephone" placeholder="请输入联系电话" />
  58. </el-form-item>
  59. </el-col>
  60. <el-col :span="8">
  61. <el-form-item label="传真" prop="fax">
  62. <el-input v-model="form.fax" placeholder="请输入传真" />
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="8">
  66. <el-form-item label="邮政编码" prop="postalCode">
  67. <el-input v-model="form.postalCode" placeholder="请输入邮政编码" />
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="4">
  71. <el-form-item label="加锁" prop="isLock" label-width="56px">
  72. <!--
  73. <el-radio v-model="form.isLock" label="Y" ></el-radio>
  74. <el-radio v-model="form.isLock" label="N" ></el-radio>
  75. -->
  76. <el-checkbox v-model="form.isLockBox" @change="changeBox" />
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="4">
  80. <el-form-item label="状态" prop="isActive" label-width="56px">
  81. <!--
  82. <el-radio v-model="form.isActive" label="Y">启用</el-radio>
  83. <el-radio v-model="form.isActive" label="N">停用</el-radio>
  84. -->
  85. <el-checkbox v-model="form.isActiveBox" @change="changeBox('isActive')" />
  86. </el-form-item>
  87. </el-col>
  88. </el-row>
  89. <el-row>
  90. <el-col :span="8">
  91. <el-form-item label="发票抬头" prop="invoiceName">
  92. <el-input v-model="form.invoiceName" placeholder="请输入发票抬头" />
  93. </el-form-item>
  94. </el-col>
  95. <el-col :span="8">
  96. <el-form-item label="开户银行" prop="bank">
  97. <el-input v-model="form.bank" placeholder="请输入开户银行" />
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="8">
  101. <el-form-item label="银行账号" prop="accounts">
  102. <el-input v-model="form.accounts" placeholder="请输入银行账号" />
  103. </el-form-item>
  104. </el-col>
  105. </el-row>
  106. <el-row>
  107. <el-col :span="12">
  108. <el-form-item label="地址" prop="address">
  109. <el-input v-model="form.address" placeholder="请输入地址" maxlength="50" show-word-limit />
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="12">
  113. <el-form-item label="备注" prop="remark">
  114. <el-input v-model="form.remark" maxlength="100" show-word-limit />
  115. </el-form-item>
  116. </el-col>
  117. </el-row>
  118. <el-row>
  119. <el-col :span="5">
  120. <el-form-item label="创建人员">
  121. <el-input v-model="form.creatorName" size="small" disabled />
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="7">
  125. <el-form-item label="创建时间">
  126. <el-date-picker v-model="form.creationTime" type="datetime" size="small" style="width: 100%" disabled />
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="5">
  130. <el-form-item label="修改人员">
  131. <el-input v-model="form.creatorName" size="small" disabled />
  132. </el-form-item>
  133. </el-col>
  134. <el-col :span="7">
  135. <el-form-item label="修改时间">
  136. <el-date-picker v-model="form.lastModificationTime" type="datetime" size="small" style="width: 100%"
  137. disabled />
  138. </el-form-item>
  139. </el-col>
  140. </el-row>
  141. </el-form>
  142. </div>
  143. <!-- 按钮区域 -->
  144. <div style="width:110px;margin-left: 10px; margin-top: 3%">
  145. <div class="btnList">
  146. <el-button type="primary" @click="add('form','')" class="btnClass">新增单位</el-button>
  147. </div>
  148. <div class="btnList">
  149. <el-button type="primary" @click="add('form','child')" class="btnClass">新增子单位</el-button>
  150. </div>
  151. <div class="btnList">
  152. <el-button type="success" @click="Onsubmit('form')" class="btnClass">保存</el-button>
  153. </div>
  154. <div class="btnList">
  155. <el-button type="danger" @click="del" class="btnClass">删除</el-button>
  156. </div>
  157. </div>
  158. </div>
  159. </template>
  160. <script>
  161. import { mapState, mapMutations } from "vuex";
  162. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  163. import { tcdate, objCopy, deepCopy } from "../../utlis/proFunc";
  164. export default {
  165. components: {},
  166. props: ['id'],
  167. data() {
  168. return {
  169. isActiveBox: false,
  170. customerOrgEditStyle: "height:400px;",
  171. data: {
  172. organizationdata: [], //体检中心数据
  173. customerOrgType: [], //单位类别
  174. },
  175. form:{
  176. id: "",
  177. displayName: "",
  178. shortName: "",
  179. invoiceName: "",
  180. parentId: null,
  181. telephone: "",
  182. fax: "",
  183. postalCode: "",
  184. address: "",
  185. bank: "",
  186. accounts: "",
  187. orgTypeId: null,
  188. remark: "",
  189. isLock: "N",
  190. isActive: "Y",
  191. isLockBox: false,
  192. isActiveBox: true,
  193. organizationUnitId: null,
  194. }, //初始化 单位 记录 目前新增与更新是一致
  195. rules: {
  196. displayName: [
  197. { required: true, message: "请输入单位名称", trigger: "blur" },
  198. ],
  199. shortName: [{ required: true, message: "请输入单位简写", trigger: "blur" }],
  200. organizationUnitId: [
  201. { required: true, message: "请输入体检中心", trigger: "blur" },
  202. ],
  203. },
  204. isshow: false,
  205. };
  206. },
  207. created() {
  208. },
  209. //挂载完成
  210. mounted() {
  211. //获取体中心字典数据
  212. this.getoraniztion();
  213. //获取单位类别列表
  214. this.getOrgType();
  215. this.getCustomerOrgRd(this.id);
  216. },
  217. computed: {
  218. ...mapState(["customerOrg", "window"]),
  219. },
  220. methods: {
  221. ...mapMutations(["setData"]),
  222. changeBox(type) {
  223. //赋值
  224. if(this.form[type + 'Box']){
  225. this.form[type] = 'Y';
  226. }else{
  227. this.form[type] = 'N';
  228. }
  229. },
  230. //获取单位信息
  231. getCustomerOrgRd(id) {
  232. if(!id) return;
  233. getapi(`/api/app/customer-org/${id}`).then((res) => {
  234. if (res.code != -1) {
  235. objCopy(res.data, this.form);
  236. if (res.data.isActive == 'Y') {
  237. this.form.isActiveBox = true;
  238. } else {
  239. this.form.isActiveBox = false;
  240. }
  241. if (res.data.isLock == 'Y') {
  242. this.form.isLockBox = true;
  243. } else {
  244. this.form.isLockBox = false;
  245. }
  246. }
  247. });
  248. },
  249. //获取组织体检中心数据
  250. getoraniztion() {
  251. getapi("/api/app/organization-units/organization-unit-by-is-peis").then(
  252. (res) => {
  253. this.data.organizationdata = res.data;
  254. }
  255. );
  256. },
  257. //获取单位类别列表
  258. getOrgType() {
  259. getapi("/api/app/customer-org-type/in-filter").then((res) => {
  260. this.data.customerOrgType = res.data.items;
  261. });
  262. },
  263. //更新获取单位树节点数据
  264. getCustomerOrgTree() {
  265. getapi("/api/app/customer-org/by-code-all").then((res) => {
  266. //customerOrgTree = res.data;
  267. console.log("res.data", res.data);
  268. this.setData({ key: "customerOrg.customerOrgTree", value: res.data });
  269. tcdate(this.customerOrg.customerOrgTree);
  270. });
  271. },
  272. //提交
  273. Onsubmit(formName) {
  274. let body = {};
  275. console.log("vuex data", this.customerOrg.customerOrgRd);
  276. this.$refs[formName].validate((valid, fields) => {
  277. if (!valid) {
  278. this.$message.warning(fields[Object.keys(fields)[0]][0].message);
  279. return false;
  280. }
  281. body = deepCopy(this.form);
  282. delete body.isActiveBox;
  283. delete body.isLockBox;
  284. if (typeof body.parentId === "string") {
  285. if (!body.parentId || body.parentId.length < 1) {
  286. body.parentId = null;
  287. }
  288. } else {
  289. if (body.parentId && body.parentId.length > 0) {
  290. body.parentId = body.parentId[body.parentId.length - 1];
  291. } else {
  292. body.parentId = null;
  293. }
  294. }
  295. console.log("body", body, "this.form", this.form);
  296. if (this.customerOrg.customerOrgRd.id.length < 1) {
  297. //id为空则新增
  298. postapi(`/api/app/customer-org`, body).then((res) => {
  299. if (res.code == 1) {
  300. this.$message.success("创健 操作成功");
  301. this.setData({ key: "customerOrg.customerOrgRd", value: res });
  302. this.customerOrg.customerOrgId = res.id;
  303. this.customerOrg.customerOrgRd = res;
  304. this.getCustomerOrgTree();
  305. }
  306. });
  307. } else {
  308. //id不为空则编辑
  309. putapi(
  310. `/api/app/customer-org/${this.customerOrg.customerOrgRd.id}`,
  311. body
  312. ).then((res) => {
  313. if (res.code == 1) {
  314. this.$message.success("更新 操作成功");
  315. this.getCustomerOrgTree();
  316. }
  317. });
  318. }
  319. });
  320. },
  321. //新增弹框
  322. async add(formName,child) {
  323. await this.$refs[formName].resetFields();
  324. if (child) {
  325. if (!this.customerOrg.customerOrgId) {
  326. this.$message.info("请先选择单位")
  327. return
  328. }
  329. this.customerOrg.customerOrgRd.id = '';
  330. this.customerOrg.customerOrgRd = { id: "", isLock: "N", isActive: "Y", parentId: this.customerOrg.customerOrgId };
  331. } else {
  332. this.customerOrg.customerOrgRd = { id: "", isLock: "N", isActive: "Y", parentId: null };
  333. }
  334. this.customerOrg.customerOrgId = "";
  335. },
  336. //删除
  337. del() {
  338. deletapi(
  339. `/api/app/customer-org/${this.customerOrg.customerOrgRd.id}`
  340. ).then((res) => {
  341. this.$message.success("删除 操作成功");
  342. this.setData({ key: "customerOrg.customerOrgRd", value: { id: "" } });
  343. this.getCustomerOrgTree();
  344. });
  345. },
  346. },
  347. watch: {
  348. 'id'(newVal, oldVal) {
  349. console.log("watch getCustomerOrgRd newVal:", newVal, " oldVal:", oldVal);
  350. if (newVal != oldVal && newVal != '') {
  351. this.getCustomerOrgRd(newVal);
  352. }
  353. },
  354. },
  355. };
  356. </script>
  357. <style scoped>
  358. ::v-deep .el-form-item {
  359. margin-bottom: 5px;
  360. }
  361. .btnList {
  362. margin-bottom: 10px;
  363. }
  364. .btnClass {
  365. width: 110px;
  366. }
  367. </style>