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.

347 lines
12 KiB

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